一、混淆矩陣
總結一下混淆矩陣,分類描述及其繪制;ROC曲線含義,及其繪制
1、矩陣圖示
如下圖就是CM混淆矩陣Confusion Matrix

左邊欄是資料的真實的類别,右欄是預測出的類别。簡介一下TP,TN,FP,FN含義。
TP 就是 Ture Positive :原來是+,判别為 + 簡記為—->“判對為正”
FP 就是 False Positive :原來是 -,判别為 + 簡記為—-> “錯判為正”
FN 就是False Negative :原來是 +,判别為 - 簡記為—-> “錯判成負”
TN 就是 True Negative:原來是 -,判别為 - 簡記為—-> “判對為負”
很顯然上述混淆矩陣适合而分類問題。
sensitivity: 正,判對的機率為 TP / (TP + FN)
specificity: 負,判對的機率為 TN/ (FP + TN)
precision : TP / (TP + FP) 在判為正的裡面,判對的機率
recall :TP / (TP + FN) 正的裡面判對的機率。== sensitivity
後兩者簡記,精确度就縱向求和;召回率橫向求和。
2、F-score
F-score:精度和召回率的評定函數。Precision高,Recall就低,Recall高,Precision就低。在保證召回率的條件下,盡量提升精确率。而像癌症檢測、地震檢測、金融欺詐等,則在保證精确率的條件下,盡量提升召回率。是以,很多時候我們需要綜合權衡這2個名額,這就引出了一個新的名額F-score。這是綜合考慮Precision和Recall的調和值。
β=1時,就是五五開,同等重要。精确率更重要的時候,就把β調小;召回率重要就把β調大。
3、混淆矩陣CM的繪制方法
# y:真實類别;yp:預測結果類别
def cm_plot(y, yp):
from sklearn.metrics import confusion_matrix #導入混淆矩陣函數
cm = confusion_matrix(y, yp) #混淆矩陣如下
#48 5
# 0 6
import matplotlib.pyplot as plt #導入作圖庫
plt.matshow(cm, cmap=plt.cm.Greens)#畫混淆矩陣圖
plt.colorbar() #顔色标簽
for x in range(len(cm)): #資料标簽
for y in range(len(cm)):
plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center',verticalalignment='center')
plt.ylabel('True label') #坐标軸标簽
plt.xlabel('Predicted label') #坐标軸标簽
return plt
#執行畫圖:第四列為真實的類别;前三列為預測集資料
plt = cm_plot(test[:, ], tree.predict(test[:, :]))
plt.show()
二、ROC曲線
首先列出下表資料,繪制TPR-FPR的關系圖(y-x)
設定門檻值,來确定最佳曲線
from sklearn.metrics import roc_curve # 導入ROC曲線函數
#擷取FPR,TPR的值
fpr, tpr, thresholds = roc_curve(test[:, ], tree.predict_proba(test[:, :])[:, ], pos_label=)
plt.plot(fpr, tpr, linewidth=, label='ROC of CART', color='green') # 作出ROC曲線
plt.xlabel('False Positive Rate') # 坐标軸标簽
plt.ylabel('True Positive Rate') # 坐标軸标簽
plt.ylim(, ) # 邊界範圍
plt.xlim(, ) # 邊界範圍
plt.legend(loc=) # 圖例
plt.show() # 顯示作圖結果
多個ROC曲線,越靠近左上角,效果越好!