我正在使用sklearn(Python 3)的SVM。预测类概率小于所有类中的最高概率。有人可以解释一下吗?
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",因为它具有最高的概率。请解释此输出
我已经阅读了一些关于预测的文档,我认为它以不同的方式工作,而不是与predict_proba同步。
所以使用predic_proba并取最高概率及其相应的类(从model.classes_)
我们可以关闭这张票。