国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

這篇具有很好參考價(jià)值的文章主要介紹了機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.這里介紹由?sklearn.metrics.ConfusionMatrixDisplay?所給出的關(guān)于混淆矩陣的一個小例子,來進(jìn)行理解混淆矩陣及如何應(yīng)用混淆矩陣來對數(shù)據(jù)進(jìn)行分析

2.先了解混淆矩陣的一些基本信息,這里規(guī)定正類為1,負(fù)類為0

TP(True Positives): 預(yù)測為1,而真實(shí)的也為1 (即正類判斷為正類,1判斷為1)

TN(True Negatives): 預(yù)測為0,真實(shí)的也為0? ?(即負(fù)類判斷為負(fù)類,0判斷為0)

FP(False Positives): 預(yù)測為1,真實(shí)的為0? ? ? ?(即負(fù)類判斷為正類,將0判斷為了1)

FN(False Negatives): 預(yù)測為0,真實(shí)為1? ? ? ? (即正類判斷為負(fù)類,將1判斷為了0)?

樣本總數(shù)=25? 預(yù)測為:0 預(yù)測為:1
真實(shí)為:0 TN = 12 FP = 1 真實(shí)的0總數(shù):13
真實(shí)為:1 FN = 2 TP = 10 真實(shí)的1總數(shù):12
預(yù)測的0總數(shù):14 預(yù)測的1總數(shù):11

上方表格中,說明一下FN = 2 ,即表示預(yù)測為0的樣本總的有14個,但是其中有2個樣本咱預(yù)測成了0不過其真實(shí)的情況是為1,所以得到了FN = 2,即將本來是1的預(yù)測成了0(正類預(yù)測成了負(fù)類)。

為了便于理解,還可以將1理解成患病的情況,0是沒病的情況,那么上面FN=2,則可理解成,將本來是患病的2個人預(yù)測成了沒病,所以自然預(yù)測出問題了,他倆本來有病,但計(jì)算機(jī)預(yù)測他倆沒病。

這個預(yù)測的數(shù)據(jù),并非人為的憑空捏造,而是通過相關(guān)模型的建立及訓(xùn)練后,傳入相關(guān)測試數(shù)據(jù)后,得到的預(yù)測數(shù)據(jù)。

而我們會想如果預(yù)測的數(shù)據(jù)和真實(shí)的數(shù)據(jù)情況一樣的情況呢,即假設(shè)咱建立的模型很牛掰,預(yù)測的很準(zhǔn)達(dá)到了100%正確,那么TN、FP、FN、TP的取值又該如何呢?即如下表情況:我們規(guī)定其真實(shí)的0的個數(shù)和上表一樣還是13個,真實(shí)的1的個數(shù)仍舊為12,然后預(yù)測情況如下:

樣本總數(shù)=25? 預(yù)測為:0 預(yù)測為:1
真實(shí)為:0 13 0 真實(shí)的0總數(shù):13
真實(shí)為:1 0 12 真實(shí)的1總數(shù):12
預(yù)測的0總數(shù):13 預(yù)測的1總數(shù):12

可以看到預(yù)測情況和真實(shí)的情況一樣,即這種情況毫無疑問,預(yù)測準(zhǔn)確率達(dá)到了100%,當(dāng)然一般情況下,預(yù)測能力可達(dá)不到100%正確。

除上述外還需了解召回率(recall score)的相關(guān)信息,可從sklearn.metrics.recall_score 中進(jìn)行了解,即使用TN、FP、FN、TP的相關(guān)值來計(jì)算的一個分?jǐn)?shù),進(jìn)而評估該預(yù)測效果

3.接下來了解通過代碼及運(yùn)行結(jié)果來進(jìn)行相關(guān)信息的理解及應(yīng)用

3.1? 基于SVC的方式來進(jìn)行訓(xùn)練及預(yù)測

# 混淆矩陣 confusion matrix

import matplotlib.pyplot as plt
import numpy as np

from sklearn.datasets import make_classification
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

from sklearn.metrics._classification import recall_score





X, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y,random_state=0)

print("真實(shí)的 Y值:",y_test)


# SVC 方式

clf = SVC(random_state=0)


clf.fit(X_train, y_train)


predictions = clf.predict(X_test)


print("預(yù)測的 Y值:",predictions)

# SVC
#Y: [1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0]
#p: [1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0]
#      x             x                       x     





cm = confusion_matrix(y_test, predictions)

disp = ConfusionMatrixDisplay(confusion_matrix=cm)

r = recall_score(y_test,predictions,average='macro')


print("\n","recall score:" , r)



disp.plot()

plt.show()




控制臺輸出:recall score =?0.8782051282051282

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

?混淆矩陣圖像:

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

為了方便理解,不妨將混淆矩陣的各個模塊添加上坐標(biāo),所以可以看到下圖的各個模塊坐標(biāo),坐標(biāo)為(0,0)的模塊樣本數(shù)量有12個,(0,1)的有1個,(1,0)的有2個,(1,1)的有10個

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

首先通過對控制臺輸出的真實(shí)的 Y 值及預(yù)測的Y值進(jìn)行分析,可以看到下圖中打上紅叉的地方,預(yù)測的Y值與真實(shí)值并不一樣,所以可以看到混淆矩陣圖上(1,0)的地方有2個,其代表的意思就是預(yù)測為0但實(shí)際為1的樣本數(shù)量有2個,即 FN = 2;

又有(0,1)的模塊有1個樣本,即 FP = 1,表示為預(yù)測為 1但實(shí)際上是 0(將負(fù)類預(yù)測成了正類,0預(yù)測成了1);

又有(0,0)的模塊為12個,即 TN = 12,表示為預(yù)測為0,真實(shí)的也為0的有12個樣本(負(fù)類預(yù)測成負(fù)類,0預(yù)測成了0);

之后有(1,1)的模塊為10個,即?TP = 10,表示為預(yù)測成1,真實(shí)的也為1的有10個樣本(正類預(yù)測成正類,1預(yù)測成了1)。

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

3.2 基于邏輯回歸的方式訓(xùn)練及預(yù)測

# 添加如下代碼,且將SVC方式注釋掉使用邏輯回歸方式即可


from sklearn.linear_model import LogisticRegression



# SVC 方式
# clf = SVC(random_state=0)

# 邏輯回歸方式
clf = LogisticRegression(random_state=0)

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

?可以發(fā)現(xiàn)recall score 分?jǐn)?shù)較SVC的提高了些

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

?可以發(fā)現(xiàn)對比之前的混淆矩陣,邏輯回歸方式,(1,1)即 TP = 11,從TP = 10 提高到了 11,略有上升。

3.3 線性回歸的方式訓(xùn)練及預(yù)測

# 添加線性回歸的庫,即調(diào)用線性回歸的代碼

from sklearn.linear_model import LinearRegression


# SVC 方式
# clf = SVC(random_state=0)

# 邏輯回歸方式
# clf = LogisticRegression(random_state=0)

# 采用線性回歸
clf = LinearRegression()


clf.fit(X_train, y_train)


predictions = clf.predict(X_test)

predictions = predictions.astype(int)   # 將預(yù)測數(shù)據(jù)轉(zhuǎn)為int類型

機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

可以看到線性回歸方式進(jìn)行預(yù)測效果有些不太理想,recall score 降低了很多

?機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix

?從混淆矩陣來看,預(yù)測的效果,在預(yù)測為1且實(shí)際為1時的情況即TP的值下降了許多,該方式進(jìn)行預(yù)測有點(diǎn)不太理想。

4.以上便為混淆矩陣的一些簡單理解,總體來說,混淆矩陣表示相關(guān)數(shù)據(jù)情況,還是比較直觀的。文章來源地址http://www.zghlxwxcb.cn/news/detail-413025.html

到了這里,關(guān)于機(jī)器學(xué)習(xí)之混淆矩陣 confusion_matrix的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包