预测不是给出最高概率

时间:2017-11-08 11:29:47

标签: python machine-learning scikit-learn svm

我正在使用sklearn的SVM(Python 3)。预测的类概率小于所有类中的最高概率。有人可以解释一下。

    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"因为它的概率最高。请解释一下这个输出

1 个答案:

答案 0 :(得分:0)

我已经阅读了一些关于预测的文档,我认为它以不同的方式工作,不与predict_proba同步。

所以使用predic_proba并获取最高概率及其相应的类(来自model.classes _)

我们可以关闭这张票。