淺談sklearn中predict與predict_proba區(qū)別
predict_proba 返回的是一個(gè) n 行 k 列的數(shù)組,列是標(biāo)簽(有排序), 第 i 行 第 j 列上的數(shù)值是模型預(yù)測 第 i 個(gè)預(yù)測樣本為某個(gè)標(biāo)簽的概率,并且每一行的概率和為1。
predict 直接返回的是預(yù)測 的標(biāo)簽。
具體見下面示例:
# 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) # 返回預(yù)測標(biāo)簽 print(clf.predict(x_test)) # 返回預(yù)測屬于某標(biāo)簽的概率 print(clf.predict_proba(x_test)) # [2 3 2] # # [[0.56651809 0.43348191] # [0.15598162 0.84401838] # [0.86852502 0.13147498]] # 分析結(jié)果: # 標(biāo)簽是 2,3 共兩個(gè),所以predict_proba返回的為2列,且是排序的(第一列為標(biāo)簽2,第二列為標(biāo)簽3), # 返回矩陣的行數(shù)是測試樣本個(gè)數(shù) 因此為3行 # 預(yù)測[2,2,2]的標(biāo)簽是2的概率為0.56651809,3的概率為0.43348191 # # 預(yù)測[3,2,6]的標(biāo)簽是2的概率為0.15598162,3的概率為0.84401838 # # 預(yù)測[1,7,4]的標(biāo)簽是2的概率為0.86852502,3的概率為0.13147498
補(bǔ)充知識:sklearn中predict與predict_proba的識別結(jié)果不一致
今天訓(xùn)練了好久的決策樹模型在測試的時(shí)候發(fā)現(xiàn)個(gè)bug,使用predict得到的結(jié)果居然不是predict_proba中最大數(shù)值的索引!因?yàn)槟_本中需要模型的置信度,所以希望拿到predict_proba的類別概率。
經(jīng)過胡亂分析發(fā)現(xiàn)predict_proba得到的維度比總類別數(shù)少了幾個(gè),經(jīng)過測試發(fā)現(xiàn)就是這個(gè)造成的,即訓(xùn)練集中有部分類別樣本數(shù)為0。這個(gè)問題比較隱蔽,記錄一下方便天涯淪落人繞坑。
Tip:在sklearn的train_test_split中有一個(gè)參數(shù)可以強(qiáng)制測試集和訓(xùn)練集的數(shù)據(jù)分布一致,也就不會導(dǎo)致缺類別的問題。
以上這篇淺談sklearn中predict與predict_proba區(qū)別就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pycharm實(shí)現(xiàn)增加運(yùn)行時(shí)內(nèi)存
這篇文章主要介紹了pycharm實(shí)現(xiàn)增加運(yùn)行時(shí)內(nèi)存方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02解決webdriver.Chrome()報(bào)錯:Message:''chromedriver'' executable n
這篇文章主要介紹了解決webdriver.Chrome()報(bào)錯:Message:'chromedriver' executable needs to be in Path ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06python輸入、數(shù)據(jù)類型轉(zhuǎn)換及運(yùn)算符方式
這篇文章主要介紹了python輸入、數(shù)據(jù)類型轉(zhuǎn)換及運(yùn)算符方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Python學(xué)習(xí)之模塊化程序設(shè)計(jì)示例詳解
程序設(shè)計(jì)的模塊化指的是在進(jìn)行程序設(shè)計(jì)時(shí),把一個(gè)大的程序功能劃分為若干個(gè)小的程序模塊。每一個(gè)小程序模塊實(shí)現(xiàn)一個(gè)確定的功能,并且在這些小程序模塊實(shí)現(xiàn)的功能之間建立必要的聯(lián)系。本文將利用示例詳細(xì)介紹一下Python的模塊化程序設(shè)計(jì),需要的可以參考一下2022-03-03使用Python解析JSON的實(shí)現(xiàn)示例
本文主要介紹了使用Python解析JSON的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Python連接SQLite數(shù)據(jù)庫操作實(shí)戰(zhàn)指南從入門到精通
在Python中使用SQLite進(jìn)行數(shù)據(jù)庫操作時(shí),我們將深入研究SQLite數(shù)據(jù)庫的創(chuàng)建、表格管理、數(shù)據(jù)插入、查詢、更新和刪除等關(guān)鍵主題,幫助你全面了解如何使用SQLite進(jìn)行數(shù)據(jù)庫操作2023-11-11python實(shí)現(xiàn)的簡單窗口倒計(jì)時(shí)界面實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的簡單窗口倒計(jì)時(shí)界面,實(shí)例分析了Python基于Tkinter操作windows窗口界面的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05