性能度量 | 分類模型的評估指標

分類模型的評估指標

1.準確率(accuracy)

準確率就是用來衡量模型對數據集中樣本預測正確的比例,即等於所有預測正確的樣本數目與所有參加預測的樣本總數目的比。

例3 準確率計算

from sklearn.metrics import accuracy_score

y_true = [1,0,2,0,1,0,2,0,0,2]
y_pred = [1,0,1,0,0,0,2,0,2,1]
accuracy1 = accuracy_score(y_true,y_pred,normalize=True)
print(accuracy1)
accuracy2 = accuracy_score(y_true,y_pred,normalize=False)
print(accuracy2)

輸出:
在這裏插入圖片描述

其中,y_true是驗證集的實際類別,y_pred是驗證集的預測類別,參數normalize選擇輸出結果的類型(選擇True,輸出爲準確率;選擇False,輸出爲驗證集被正確分類的數目)。

2.精度(precision)

在這裏插入圖片描述

  • P(Positive)和N(Negative) 表示模型的判斷結果。
  • T(True)和F(False) 表示模型的判斷結果是否正確。
    在這裏插入圖片描述

精度指的是所有預測爲正例的樣本(TP+FP)中真正爲正例的樣本(TP)的比率。一般來說,就是你找出的這些信息中真正是我想要的有多少,又叫“查準率”。

其中,y_true是驗證集的實際類別,y_pred是驗證集的預測類別;參數averageNonebinarymacroweightedmicro幾種選擇,默認選擇爲binary,適用於二分類情況。
在多分類問題中,不同的參數表示選用不同的計算方式:
● 當選擇None時,會直接返回各個類別的精度列表。
● 當選擇macro時,直接計算各個類別的精度值的平均(這在類別不平衡時不是一個好的選擇)。
● 當選擇weight時,可通過對每個類別的score進行加權求得。
● 當選擇micro時,在多標籤問題中大類將被忽略。

注意:查準率在購物推薦中比較重要。

例4 精度計算

from sklearn.metrics import precision_score

y_true = [1,0,2,0,1,0,2,0,0,2]
y_pred = [1,0,1,0,0,0,2,0,2,1]
precision = precision_score(y_true,y_pred,average=None)
print(precision)

輸出:
在這裏插入圖片描述
表示類別0、類別1、類別2的查準率分別爲0.8、0.33333333、0.5。

3. 召回率

召回率指的是所有爲正例的樣本(TP+FN)中真的正例(TP)的比率,用來評判你有沒有把樣本中所有的真的正例全部找出來,所以又叫“查全率”。通俗地講,就是你有沒有把所有我感興趣的都給找出來,計算公式爲

注意:查全率在犯罪檢索等行爲中可能比較重要。

例5 召回率計算

from sklearn.metrics import recall_score

y_true = [1,0,2,0,1,0,2,0,0,2]
y_pred = [1,0,1,0,0,0,2,0,2,1]
recall = recall_score(y_true,y_pred,average='weighted')
print(recall)
  • 參數與precision_score中一樣。

輸出:
在這裏插入圖片描述

4. F1值

在這裏插入圖片描述
在這裏插入圖片描述

  • P爲precision; R爲recall。

5. ROC曲線

很多學習器是爲了測試樣本產生一個實值或概率,然後將這個預測值與一個分類閾值進行比較,大於閾值就取1,小於閾值就取0。在不同應用中,我們可以根據任務需要選取不同的閾值點;ROC曲線就是從這個角度來研究學習器的泛化性能的。
我們根據學習器預測結果(概率)對樣例進行排序,按此順序逐個把樣本作爲正例進行預測,每次計算出兩個重要的值(縱軸:真正率TP;橫軸:假正率FP),分別以它們爲橫軸和縱軸作圖就可得到ROC曲線。具體如下:
(1)假如已經得到了所有樣本的概率輸出prob值,我們就可以根據每個測試樣本屬於正樣本的概率值從大到小排序。
(2)接下來,我們從高到低,依次將prob值作爲閾值(threshold),當測試樣本屬於正樣本的概率大於或等於這個 threshold 時,我們認爲它爲正樣本,否則爲負樣本。
(3)每次選取一個不同的threshold,我們就可以得到一組FP和TP,即ROC曲線上的一點。這樣我們可以得到很多組FP和TP的值,將它們畫在ROC曲線上的結果如圖2-2所示。
在這裏插入圖片描述
在這裏插入圖片描述

7. AUC

  • 當兩條ROC曲線發生交叉時,誰的性能更優就難以判定了,這時就要根據兩條ROC曲線下面的面積大小來比較判斷,即面積大者相對更優。這個ROC曲線下面的面積就是AUC。

6. 混淆矩陣

混淆矩陣Confusion Matrix)是一種評估分類模型好壞的形象化展示工具。例如,有150個樣本數據,把這些數據平均分成3類,每類50個。
分類結束後得到的混淆矩陣如圖2-3所示。

每行之和爲50,表示50個樣本,第一行說明類1的50個樣本有43個分類正確, 5個錯分爲類2, 2個錯分爲類3。
由此可以看出,如果混淆矩陣中非對角線元素全爲0,則表示是一個完美的分類器。

  • 其中,y_true是驗證集的實際類別;y_pred是驗證集的預測類別;labels參數是一個字符類別的形式,可以用來指定各個類別顯示的名稱,默認爲None

例9 混淆矩陣計算

from sklearn.metrics import confusion_matrix

y_true = [1,0,2,0,1,0,2,0,0,2]
y_pred = [1,0,1,0,0,0,2,0,2,1]
ans = confusion_matrix(y_true,y_pred,labels=[0,1,2])
print(ans)

輸出:
在這裏插入圖片描述

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