昨天介紹評估推論(或者測試)結果的方法,今天要來介紹混淆矩陣(Confusion Matrix)。混淆矩陣也是在分類問題上常被使用的評估方法,顯示預測結果和真實值的比較,再利用一些工具將混淆矩陣繪製出來,更能看出推論結果,幫助模型的改善。
一個二分類的混淆矩陣如下:
預測為真 | 預測為假 | |
---|---|---|
實際為真 | TP | FN |
實際為假 | FP | TN |
對角線就是預測正確的數量。由混淆矩陣可以更好分析預測結果,對於結果的判讀不會由單一準確度結果做評斷。接下來介紹兩種方法,來繪製混淆矩陣,建議延續昨天的程式碼使用。
Seaborn 為基於 Matplotlib 的 Python 視覺化工具庫,更專注於繪製統計圖表的功能。
import seaborn as sns
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
# 定義混淆矩陣
cm = confusion_matrix(y_true, y_pred)
# 使用 seaborn 繪製
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=['black', 'grizzly', 'panda', 'polar', 'teddy'],
yticklabels=['black', 'grizzly', 'panda', 'polar', 'teddy'])
plt.xlabel('Predicted Labels')
plt.ylabel('True Labels')
plt.title('Confusion Matrix')
使用 sklearn.metrics
中的 confusion_matrix
計算混淆矩陣:
(使用 Spyder 查看 cm 變數的結果)
使用 seaborn.heatmap()
繪製熱圖(Heat Map),annot
設定為 True
會顯示對應數值,fmt
設定 'd'
表示以整數顯示,cmap
用來設定顏色系統,xticklabels
和 yticklabels
分別為 x 軸和 y 軸的標籤。
來自 scikit-learn
的方法,功能是繪製混淆矩陣圖表:
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
# 定義混淆矩陣
cm = confusion_matrix(y_true, y_pred)
# 使用 ConfusionMatrixDisplay 繪製
disp = ConfusionMatrixDisplay(confusion_matrix=cm,
display_labels=['black', 'grizzly', 'panda', 'polar', 'teddy'])
disp.plot(cmap='Blues')
使用 ConfusionMatrixDisplay()
並設定混淆矩陣變數與標籤,再使用 plot()
設定顏色系統,就可以繪製混淆矩陣圖表了。
這樣推論結果是不是更一目了然了呢?顏色愈深表示數值愈大,也更方便分析推論結果。
模型的部分就在此告一段落,明天開始要介紹部署的方法了~