Python sklearn中的.fit與.predict的用法說明
我就廢話不多說了,大家還是直接看程式碼吧~
clf=KMeans(n_clusters=5) #建立分類器物件 fit_clf=clf.fit(X) #用訓練器資料擬合分類器模型 clf.predict(X) #也可以給新資料資料對其預測 print(clf.cluster_centers_) #輸出5個類的聚類中心 y_pred = clf.fit_predict(X) #用訓練器資料X擬合分類器模型並對訓練器資料X進行預測 print(y_pred) #輸出預測結果
補充知識:sklearn中呼叫某個機器學習模型model.predict(x)和model.predict_proba(x)的區別
model.predict_proba(x)不同於model.predict(),它返回的預測值為獲得所有結果的概率。(有多少個分類結果,每行就有多少個概率,對每個結果都有一個概率值,如0、1兩分類就有兩個概率)
我們直接上程式碼,通過具體例子來進一步講解:
python3 程式碼實現:
# -*- coding: utf-8 -*- """ Created on Sat Jul 27 21:25:39 2019 @author: ZQQ """ from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from xgboost import XGBClassifier import numpy as np import warnings warnings.filterwarnings("ignore") # 這個方法只是解決了表面,沒有根治 # 資料(特徵,屬性) x_train = np.array([[1,2,3],[1,5,4],[2,2],[4,6],[3,7,2]]) # 資料的標籤 y_train = np.array([1,1,0]) # 測試資料 x_test = np.array([[2,6,4]]) # 匯入模型 model = LogisticRegression() #model = RandomForestClassifier() #model=XGBClassifier() model.fit(x_train,y_train) # 返回預測標籤 print(model.predict(x_test)) print('---------------------------------------') # 返回預測屬於某標籤的概率 print(model.predict_proba(x_test))
執行結果:
分析結果:
使用model.predict() :
預測[2,2]為1類
預測[3,6]為1類
預測[2,4]為0類
使用model.predict_proba() :
預測[2,2]的標籤是0的概率為0.19442289,1的概率為0.80557711
預測[3,6]的標籤是0的概率為0.04163615,1的概率為0.95836385
預測[2,4]的標籤是0的概率為0.83059324,1的概率為0.16940676
預測為0類的概率值和預測為1的概率值和為1
同理,如果標籤繼續增加,3類:0,1,2
預測為0類的概率值:a
預測為1類的概率值:b
預測為2類的概率值:c
預測出來的概率值的和a+b+c=1
注:model.predict_proba()返回所有標籤值可能性概率值,這些值是如何排序的呢?
返回模型中每個類的樣本概率,其中類按類self.classes_進行排序。
通過numpy.unique(label)方法,對label中的所有標籤值進行從小到大的去重排序。
得到一個從小到大唯一值的排序。這也就對應於model.predict_proba()的行返回結果。
以上這篇Python sklearn中的.fit與.predict的用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。