淺談sklearn中predict與predict_proba區(qū)別
predict_proba 返回的是一個 n 行 k 列的數(shù)組,列是標簽(有排序), 第 i 行 第 j 列上的數(shù)值是模型預測 第 i 個預測樣本為某個標簽的概率,并且每一行的概率和為1。
predict 直接返回的是預測 的標簽。
具體見下面示例:
# conding :utf-8 from sklearn.linear_model import LogisticRegression import numpy as np x_train = np.array([[1,2,3], [1,3,4], [2,1,2], [4,5,6], [3,5,3], [1,7,2]]) y_train = np.array([3, 3, 3, 2, 2, 2]) x_test = np.array([[2,2,2], [3,2,6], [1,7,4]]) clf = LogisticRegression() clf.fit(x_train, y_train) # 返回預測標簽 print(clf.predict(x_test)) # 返回預測屬于某標簽的概率 print(clf.predict_proba(x_test)) # [2 3 2] # # [[0.56651809 0.43348191] # [0.15598162 0.84401838] # [0.86852502 0.13147498]] # 分析結果: # 標簽是 2,3 共兩個,所以predict_proba返回的為2列,且是排序的(第一列為標簽2,第二列為標簽3), # 返回矩陣的行數(shù)是測試樣本個數(shù) 因此為3行 # 預測[2,2,2]的標簽是2的概率為0.56651809,3的概率為0.43348191 # # 預測[3,2,6]的標簽是2的概率為0.15598162,3的概率為0.84401838 # # 預測[1,7,4]的標簽是2的概率為0.86852502,3的概率為0.13147498
補充知識:sklearn中predict與predict_proba的識別結果不一致
今天訓練了好久的決策樹模型在測試的時候發(fā)現(xiàn)個bug,使用predict得到的結果居然不是predict_proba中最大數(shù)值的索引!因為腳本中需要模型的置信度,所以希望拿到predict_proba的類別概率。
經過胡亂分析發(fā)現(xiàn)predict_proba得到的維度比總類別數(shù)少了幾個,經過測試發(fā)現(xiàn)就是這個造成的,即訓練集中有部分類別樣本數(shù)為0。這個問題比較隱蔽,記錄一下方便天涯淪落人繞坑。
Tip:在sklearn的train_test_split中有一個參數(shù)可以強制測試集和訓練集的數(shù)據分布一致,也就不會導致缺類別的問題。
以上這篇淺談sklearn中predict與predict_proba區(qū)別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決webdriver.Chrome()報錯:Message:''chromedriver'' executable n
這篇文章主要介紹了解決webdriver.Chrome()報錯:Message:'chromedriver' executable needs to be in Path ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06Python連接SQLite數(shù)據庫操作實戰(zhàn)指南從入門到精通
在Python中使用SQLite進行數(shù)據庫操作時,我們將深入研究SQLite數(shù)據庫的創(chuàng)建、表格管理、數(shù)據插入、查詢、更新和刪除等關鍵主題,幫助你全面了解如何使用SQLite進行數(shù)據庫操作2023-11-11