我有一个带有标签“A”、“B”、“C”、“D”的多类 SVM 分类器。
这是我正在运行的代码:
>>>print clf.predict([predict_this])
['A']
>>>print clf.decision_function([predict_this])
[[ 185.23220833 43.62763596 180.83305074 -93.58628288 62.51448055 173.43335293]]
如何使用决策函数的输出来预测概率最高的类别(A/B/C/D),如果可能的话,它的值?我访问了https://stackoverflow.com/a/20114601/7760998,但它适用于二元分类器,找不到很好的资源来解释具有 ovo 形状的多类分类器的决策函数输出(一对一)。
编辑:
上面的示例适用于“A”类。对于另一个输入,分类器预测“C”并在决策函数中给出以下结果
[[ 96.42193513 -11.13296606 111.47424538 -88.5356536 44.29272494 141.0069203 ]]
对于分类器预测为“C”的另一个不同输入,从 decision_function 给出以下结果,
[[ 290.54180354 -133.93467605 116.37068951 -392.32251314 -130.84421412 284.87653043]]
如果是 ovr(one-vs-rest),选择具有较高值的那个会变得更容易,但在 ovo(one-vs-one)(n * (n - 1)) / 2
中,结果列表中有值。
如何根据决策函数推断将选择哪个类?