我正试图理解SVC的实例方法decision_function和predict之间的关系(http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html)。目前为止,我了解到decision_function返回类之间的成对分数。我原本以为predict会选择最大化其成对分数的类别,但当我测试时得到了不同的结果。以下是我用来尝试理解两者关系的代码。首先我生成了成对分数矩阵,然后打印出具有最大成对分数的类别,这与clf.predict预测的类别不同。
result = clf.decision_function(vector)[0]
counter = 0
num_classes = len(clf.classes_)
pairwise_scores = np.zeros((num_classes, num_classes))
for r in xrange(num_classes):
for j in xrange(r + 1, num_classes):
pairwise_scores[r][j] = result[counter]
pairwise_scores[j][r] = -result[counter]
counter += 1
index = np.argmax(pairwise_scores)
class = index_star / num_classes
print class
print clf.predict(vector)[0]
有人知道这些predict和decision_function之间的关系吗?
decision_function
部分文档页面上的描述,应该是每个类别的得分:“样本 X 到分离超平面的距离”。请注意修改。 - justhalfsklearn.svm.SVC
默认使用一对一的方式进行分解,并返回每个样本到所有n(n-1)/2条超平面的距离。 - Fred Foovotes
中最高的投票基本上就是predict
所做的事情。 - Eric Platon