confusion_matrix混淆矩陣的使用

混淆矩陣

       混淆矩陣也稱誤差矩陣,是表示精度評價的一種標準格式,用n行n列的矩陣形式來表示。具體評價指標有總體精度、製圖精度、用戶精度等,這些精度指標從不同的側面反映了圖像分類的精度。 在人工智能中,混淆矩陣(confusion matrix)是可視化工具,特別用於監督學習,在無監督學習一般叫做匹配矩陣。在圖像精度評價中,主要用於比較分類結果和實際測得值,可以把分類結果的精度顯示在一個混淆矩陣裏面。混淆矩陣是通過將每個實測像元的位置和分類與分類圖像中的相應位置和分類相比較計算的。

1.簡介

        混淆矩陣(Confusion Matrix):
        混淆矩陣的每一列代表了預測類別,每一列的總數表示預測爲該類別的數據的數目;每一行代表了數據的真實歸屬類別,每一行的數據總數表示該類別的數據實例的數目。每一列中的數值表示真實數據被預測爲該類的數目:如下圖,第一行第一列中的43表示有43個實際歸屬第一類的實例被預測爲第一類,同理,第一行第二列的2表示有2個實際歸屬爲第一類的實例被錯誤預測爲第二類。

2.舉例

        如有150個樣本數據,預測爲1,2,3類各爲50個。分類結束後得到的混淆矩陣爲:
在這裏插入圖片描述
每一行之和表示該類別的真實樣本數量,每一列之和表示被預測爲該類別的樣本數量,第一行說明有43個屬於第一類的樣本被正確預測爲了第一類,有兩個屬於第一類的樣本被錯誤預測爲了第二類

3.confusion_matrix函數的使用

def confusion_matrix(y_true, y_pred, labels=None, sample_weight=None):

y_true: 是樣本真實分類結果,y_pred: 是樣本預測分類結果
labels:是所給出的類別,通過這個可對類別進行選擇
sample_weight : 樣本權重

3.1實現例子1

from sklearn.metrics import confusion_matrix
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
x = confusion_matrix(y_true, y_pred)
print(x)

在這裏插入圖片描述
        結果:第一行第一列2表示標籤爲0,預測爲0 有兩個,第一行第二列0表示標籤爲0,把1預測爲0的有0個。。。。依次類推。對角線之和就是預測對的數目。

3.2實現例子2

y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
a = confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
print(a)

在這裏插入圖片描述

3.3實現例子3

        我們通過樣本的採集,能夠直接知道真實情況下,哪些數據結果是positive,哪些結果是negative。同時,我們通過用樣本數據跑出分類型模型的結果,也可以知道模型認爲這些數據哪些是positive,哪些是negative。

因此,我們就能得到這樣四個基礎指標,我稱他們是一級指標(最底層的):

        1.真實值是positive,模型認爲是positive的數量(True Positive=TP)
        2.真實值是positive,模型認爲是negative的數量(False Negative=FN):這就是統計學上的第一類錯誤(Type I Error)
        3.真實值是negative,模型認爲是positive的數量(False Positive=FP):這就是統計學上的第二類錯誤(Type II Error)
        4.真實值是negative,模型認爲是negative的數量(True Negative=TN)
將這四個指標一起呈現在表格中,就能得到如下這樣一個矩陣,我們稱它爲混淆矩陣(Confusion Matrix):
在這裏插入圖片描述

from sklearn.metrics import confusion_matrix
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
print(tn, fp, fn, tp)

在這裏插入圖片描述
        tn表示:真實值是negative,模型認爲是negative的數量,可以看出我們的真實值有兩個negative也就是0,模型任認爲是negative的數量也爲0,所以tn=0

        fn表示;2.真實值是positive,模型認爲是negative的數量,可以看出真實值有兩個1,模型任認爲是negative的數量也爲一個0,所以fn=0

        以此類推…

個人微信公衆號,專注於學習資源、筆記分享,歡迎關注。我們一起成長,一起學習。一直純真着,善良着,溫情地熱愛生活,,如果覺得有點用的話,請不要吝嗇你手中點讚的權力,謝謝我親愛的讀者朋友
五角錢的程序員,專注於學習資源、筆記分享。
Courage is not the absence of fear, but rather the judgement that something else is more important than fear.
擁有勇氣並不是不再恐懼,而是知道把恐懼拋在後頭,去追求更重要的東西。

XL
2020年3月23日於重慶城口
好好學習,天天向上,終有所獲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章