淺談sklearn中predict與predict_proba區(qū)別
predict_proba 返回的是一個(gè) n 行 k 列的數(shù)組,列是標(biāo)簽(有排序), 第 i 行 第 j 列上的數(shù)值是模型預(yù)測(cè) 第 i 個(gè)預(yù)測(cè)樣本為某個(gè)標(biāo)簽的概率,并且每一行的概率和為1。
predict 直接返回的是預(yù)測(cè) 的標(biāo)簽。
具體見(jiàn)下面示例:
# 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ù)測(cè)標(biāo)簽
print(clf.predict(x_test))
# 返回預(yù)測(cè)屬于某標(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ù)是測(cè)試樣本個(gè)數(shù) 因此為3行
# 預(yù)測(cè)[2,2,2]的標(biāo)簽是2的概率為0.56651809,3的概率為0.43348191
#
# 預(yù)測(cè)[3,2,6]的標(biāo)簽是2的概率為0.15598162,3的概率為0.84401838
#
# 預(yù)測(cè)[1,7,4]的標(biāo)簽是2的概率為0.86852502,3的概率為0.13147498
補(bǔ)充知識(shí):sklearn中predict與predict_proba的識(shí)別結(jié)果不一致
今天訓(xùn)練了好久的決策樹(shù)模型在測(cè)試的時(shí)候發(fā)現(xiàn)個(gè)bug,使用predict得到的結(jié)果居然不是predict_proba中最大數(shù)值的索引!因?yàn)槟_本中需要模型的置信度,所以希望拿到predict_proba的類別概率。
經(jīng)過(guò)胡亂分析發(fā)現(xiàn)predict_proba得到的維度比總類別數(shù)少了幾個(gè),經(jīng)過(guò)測(cè)試發(fā)現(xiàn)就是這個(gè)造成的,即訓(xùn)練集中有部分類別樣本數(shù)為0。這個(gè)問(wèn)題比較隱蔽,記錄一下方便天涯淪落人繞坑。
Tip:在sklearn的train_test_split中有一個(gè)參數(shù)可以強(qiáng)制測(cè)試集和訓(xùn)練集的數(shù)據(jù)分布一致,也就不會(huì)導(dǎo)致缺類別的問(wèn)題。
以上這篇淺談sklearn中predict與predict_proba區(qū)別就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu?20.04系統(tǒng)下如何切換gcc/g++/python的版本
這篇文章主要給大家介紹了關(guān)于ubuntu?20.04系統(tǒng)下如何切換gcc/g++/python版本的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ubuntu具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12
python區(qū)塊鏈實(shí)現(xiàn)簡(jiǎn)版網(wǎng)絡(luò)
這篇文章主要為大家介紹了python區(qū)塊鏈實(shí)現(xiàn)簡(jiǎn)版網(wǎng)絡(luò)的詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python多線程并發(fā)讓兩個(gè)LED同時(shí)亮的方法
今天小編就為大家分享一篇python多線程并發(fā)讓兩個(gè)LED同時(shí)亮的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python的matplotlib繪圖如何修改背景顏色的實(shí)現(xiàn)
這篇文章主要介紹了Python的matplotlib繪圖如何修改背景顏色的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
pandas如何篩選某個(gè)列值是否位于某個(gè)列表內(nèi)
這篇文章主要介紹了pandas如何篩選某個(gè)列值是否位于某個(gè)列表內(nèi)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02

