我如何知道樣本的概率,它屬於Scikit-Learn的支持向量機的預測()函數預測的類?我如何知道在支持向量機中通過predict()函數預測的類的概率?
>>>print clf.predict([fv])
[5]
有什麼功能?
我如何知道樣本的概率,它屬於Scikit-Learn的支持向量機的預測()函數預測的類?我如何知道在支持向量機中通過predict()函數預測的類的概率?
>>>print clf.predict([fv])
[5]
有什麼功能?
使用clf.predict_proba([FV]),以獲得與每個類的預測概率的列表。但是,該功能不適用於所有分類器。
關於你的評論,考慮以下因素:
>> prob = [ 0.01357713, 0.00662571, 0.00782155, 0.3841413, 0.07487401, 0.09861277, 0.00644468, 0.40790285]
>> sum(prob)
1.0
的概率之和爲1.0,所以乘以100得到百分比。
當創建SVC類設置probability=True
計算概率估計:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
然後調用fit
像往常一樣,然後predict_proba([fv])
。
肯定讀this section of the docs因爲有一些涉及微妙之處。又見Scikit-learn predict_proba gives wrong answers
基本上,如果你有充足的數據predict_proba的多類問題,因爲早先提出行之有效的。否則,您可能不得不使用不會從decision_function獲得概率分數的排序。
下面是使用predict_proba得到VS概率字典或類的列表一個很好的主題:
model = svm.SVC(probability=True)
model.fit(X, Y)
results = model.predict_proba(test_data)[0]
# gets a dictionary of {'class_name': probability}
prob_per_class_dictionary = dict(zip(model.classes_, results))
# gets a list of ['most_probable_class', 'second_most_probable_class', ..., 'least_class']
results_ordered_by_probability = map(lambda x: x[0], sorted(zip(model.classes_, results), key=lambda x: x[1], reverse=True))
它返回:預測值陣列 「[[0.01357713 0.00662571 0.00782155 0.3841413 0.07487401 0.09861277 0.00644468 0.40790285]」 不這個概率就像是:class 8:80%,class 4:40% – postgres 2013-02-22 12:00:17
這是你正在尋找的東西:第7類(假設第一類是「第0類」)爲40%,第3類爲38% 10%爲5級,7%爲4級。 – ogrisel 2013-02-24 14:59:47