2013-02-22 25 views

回答

12

使用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得到百分比。

5

當創建SVC類設置probability=True計算概率估計:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

然後調用fit像往常一樣,然後predict_proba([fv])

+0

它返回:預測值陣列 「[[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

+3

這是你正在尋找的東西:第7類(假設第一類是「第0類」)爲40%,第3類爲38% 10%爲5級,7%爲4級。 – ogrisel 2013-02-24 14:59:47

11

肯定讀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))