2017-11-08 9 views
-1

sklearn (Python 3)의 SVM을 사용하고 있습니다. 예측 된 클래스 확률은 모든 클래스 중에서 가장 높은 확률보다 적습니다. 누군가가 이것을 설명 할 수 있습니까?predict가 가장 높은 확률을 제공하지 않습니다.

clf = Pipeline([('vect', TfidfVectorizer()), ('clf', svm.SVC())]) 
    parameters = {'vect__ngram_range': [(1, 2)], 'vect__stop_words': ['english'], 
        'vect__lowercase': [True], 'clf__C': [1,2, 5, 10, 20, 100], 
        'clf__kernel': [str('linear')], 'clf__class_weight':['balanced'], 
        'clf__probability': [True]} 
    vec_clf = GridSearchCV(clf, parameters, scoring='f1_weighted') 
    vec_clf.fit(x_train, y_train) 

인쇄 문.

pred_data = model.predict(input_series) 
    probability_lst = model.predict_proba(input_series)[0] 
    print ("probability lst: ", probability_lst) 
    print ("predicted data: ", pred_data) 
    print ("classes: ", model.best_estimator_.classes_) 

이것은 내가 사용하고있는 코드입니다. 아래의 출력물을 찾으십시오.

probability lst: [ 0.29004279 0.38866277 0.04441053 0.1173824 0.0300703 0.0983329 0.03109831] 
    predicted data: ['1'] 
    classes: ['1' '2' '3' '4' '5' '6' '7'] 

논리적으로 클래스 "2"는 가장 높은 확률을 갖기 때문에 예측해야합니다. 이 출력을 설명하십시오.

+0

왜'model.predict_proba (input_series) [0]'에 액세스하고'[0]'을 강조합니까? – erip

+3

[scikit-learn svm의 predict \ _proba의 혼란스러운 확률]의 가능한 중복 (https://stackoverflow.com/questions/30674164/confusing-probabilities-of-the-predict-proba-of-scikit-learns-svm)) –

+0

목록 목록 이었으므로 [0] – user2550098

답변

0

예측에서 일부 문서를 읽었습니다. 예측 방법이 다른 방식으로 작동하지 않습니다. predict_proba와 동기화되지 않았습니다.

그래서 predic_proba를 사용하여 우리는이 티켓을 닫을 수 있습니다

가장 높은 확률 (model.classes_에서) 해당 수업을.