我做了一个SVC,但我很难解释概率的结果。让我们说猫,狗和鱼有3个类别,我想知道每个类别的可能性,所以我使用.predict
来查找预测和.predict_proba
,但它没有出来适用于小样本。
from sklearn import svm
X = [[1,2,3], [2,3,4], [1,1,3], [2,3,5], [3,4,6], [2,3,4],[1,2,3]]
y = ['cat', 'dog', 'cat','dog','fish','dog','cat']
clf =svm.SVC(probability=True)
clf.fit(X, y)
a=clf.decision_function([3,4,6])
b=clf.predict_proba([3,4,6])
c=clf.score(X, y)
print clf.classes_
print 'accuracy', c
print 'Fish prediction'
print clf.predict([3,4,6])
print 'decision function', a
print 'predict', b
如果我预测鱼类样本数量少的东西是准确的,但有人可以解释为什么预测概率如此之低:0.027。 (我知道它正在使用Platt Scaling,但为什么没有以0.71的概率选择狗?是否有办法获得SVM预测结果为鱼的概率?
['cat' 'dog' 'fish']
accuracy 1.0
Fish prediction
['fish']
decision function [[-0.25639624 -0.85413901 -0.25966687]]
predict [[ 0.26194797 0.71056399 0.02748803]]
让我们说我想预测猫:
#predict cat
d=clf.decision_function([1,2,3])
e=clf.predict_proba([1,2,3])
print 'Cat prediction'
print clf.predict([1,2,3])
print 'decision function', d
print 'predict', e
它打印出0.61
的正确概率Cat prediction
['cat']
decision function [[ 0.99964652 0.99999999 0.54610562]]
predict [[ 0.61104793 0.19764548 0.19130659]]
此外,我认为我使用score
错误,因为它针对自身进行测试并产生值1,这意味着它是100%准确的。如何正确使用score
?