標籤:就是 上傳 函數 -- 資料集 strong lib new 1.5
【火爐煉AI】機器學習016-如何知道SVM模型輸出類別的信賴度
(本文所使用的Python庫和版本號碼: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )
一般的,對於未知樣本,我們通過模型預測出來屬於某種類別,往往會給出是這種類別的機率。
比如通過AI模型識別某一種圖片是“狗”的機率是95.8%,是”貓“的機率是4.2%,那用SVM能不能得到類似的屬於某種類別的機率值了?
1. 準備資料集
本部分代碼和上一篇文章(【火爐煉AI】機器學習014-用SVM構建非線性分類模型 )幾乎一樣,故此不再贅述。
2. 計算新樣本的信賴度
此處,我們自己構建了非線性SVM分類模型,並使用該模型對新樣本資料進行類別的分類。如下代碼
# 計算某個新樣本的信賴度new_samples=np.array([[2,1.5], [8,9], [4.8,5.2], [4,4], [2.5,7], [7.6,2], [5.4,5.9]])classifier3=SVC(kernel=‘rbf‘,probability=True) # 比上面的分類器增加了 probability=True參數classifier3.fit(train_X,train_y)# 使用訓練好的SVM分類器classifier3對新樣本進行預測,並給出信賴度for sample in new_samples: print(‘sample: {}, probs: {}‘.format(sample,classifier3.predict_proba([sample])[0]))
-------------------------------------輸---------出--------------------------------
sample: [2. 1.5], probs: [0.08066588 0.91933412]
sample: [8. 9.], probs: [0.08311977 0.91688023]
sample: [4.8 5.2], probs: [0.14367183 0.85632817]
sample: [4. 4.], probs: [0.06178594 0.93821406]
sample: [2.5 7. ], probs: [0.21050117 0.78949883]
sample: [7.6 2. ], probs: [0.07548128 0.92451872]
sample: [5.4 5.9], probs: [0.45817727 0.54182273]
--------------------------------------------完-------------------------------------
將該新樣本資料點繪製到2D分布圖中,可以得到如下結果。
########################小**********結###############################
1. 從中可以看出,如果要輸出每一個類別的不同機率,需要設定參數probability=True,同時,需要用classifier.predict_proba()函數來擷取類別機率值。
2. 模型輸出的樣本類別的機率,就是該樣本屬於這個類別的信賴度。
#################################################################
註:本部分代碼已經全部上傳到(我的github)上,歡迎下載。
參考資料:
1, Python機器學習經典執行個體,Prateek Joshi著,陶俊傑,陳小莉譯
【火爐煉AI】機器學習016-如何知道SVM模型輸出類別的信賴度