一VS-rest算法和开箱即用的多类算法给出了不同的结果



有人可以解释为什么OneVsRestClassifier给出的结果不同于开箱即用的算法?

from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier
X = [[1,2],[1,3],[4,2],[2,3],[1,4]]
y = [1,2,3,2,1]
X_pred = [[2,4], [5,4], [3,7]]
dummy_clf = OneVsRestClassifier(SGDClassifier(verbose=0, class_weight="auto", loss='modified_huber', random_state=0)) # first case
#dummy_clf = SGDClassifier(verbose=0, class_weight="auto", loss='modified_huber', random_state=0) # second case
dummy_clf.fit(X, y)
dummy_clf.predict_proba(X_pred)

第一种情况:

array([[ 0.5,  0.5,  0. ],
       [ 0. ,  1. ,  0. ],
       [ 0.5,  0.5,  0. ]])

第二种情况:

array([[ 0.,  1.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  1.,  0.]])

Onevsrest为您提供了所有类的X_pred概率,因此第一个和最后一个测试用例具有多个类别的值(总和为1)。分类器在所有课程上都接受过培训。

OneVsone在所有类对上训练分类器。对于所有班级对,班级最预测的是获胜者,因此您只能获得一个预测。

相关内容

  • 没有找到相关文章

最新更新