有人可以解释为什么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.]])
答案 0 :(得分:0)
OneVsRest为您提供了所有类的X_pred概率,因此第一个和最后一个测试用例具有多个类的值(总和为1)。分类器适用于所有课程。
OneVsOne训练所有班级对的分类器。对于所有类对,预测最多的类是赢家,因此每个实例只能获得一个预测。