在 Python 中繪製混淆矩陣

Jay Shaw 2023年1月30日 2022年5月17日
  1. 在 Python 中使用 Matplotlib 繪製混淆矩陣
  2. 在 Python 中使用 Seaborn 繪製混淆矩陣
  3. 在 Python 中使用 Pretty Confusion Matrix 繪製混淆矩陣
在 Python 中繪製混淆矩陣

本文將討論使用不同的庫包在 Python 中繪製混淆矩陣。

在 Python 中使用 Matplotlib 繪製混淆矩陣

這個程式展示了我們如何使用 Matplotlib 繪製混淆矩陣。

下面是我們繪製混淆矩陣所需的兩個庫包。

from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt

匯入必要的包後,我們需要根據給定的資料建立混淆矩陣。

首先,我們宣告變數 y_truey_predy-true 填充實際值,而 y-pred 填充預測值。

y_true = ["bat", "ball", "ball", "bat", "bat", "bat"]
y_pred = ["bat", "bat", "ball", "ball", "bat", "bat"]

然後我們宣告一個變數 mat_con 來儲存矩陣。下面是我們將用來建立混淆矩陣的語法。

mat_con = (confusion_matrix(y_true, y_pred, labels=["bat", "ball"]))

它告訴程式用兩個引數 y_truey_pred 建立一個混淆矩陣。labels 告訴程式混淆矩陣將由兩個輸入值組成,bat 和 ball。

要繪製混淆矩陣,我們還需要指出指導程式建立繪圖所需的屬性。

fig, px = plt.subplots(figsize=(7.5, 7.5))
px.matshow(mat_con, cmap=plt.cm.YlOrRd, alpha=0.5)

plt.subplots() 在系統中建立一個空圖 px,而 figsize=(7.5, 7.5) 決定輸出視窗的 x 和 y 長度。相等的 x 和 y 值將在完全平方的視窗上顯示你的圖。

px.matshow 用於在空白圖中填充我們的混淆矩陣,而 cmap=plt.cm.YlOrRd 指示程式用黃紅色漸變填充列。

alpha=0.5 用於決定漸變的深度或黃色和紅色的深淺程度。

然後,我們執行一個巢狀迴圈,以 2X2 格式繪製我們的混淆矩陣。

for m in range(mat_con.shape[0]):
    for n in range(mat_con.shape[1]):
        px.text(x=m,y=n,s=mat_con[m, n], va='center', ha='center', size='xx-large')

for m in range(mat_con.shape[0]): 為行數執行迴圈,(shape[0] 代表行數)。for n in range(mat_con.shape[1]): 在現有迴圈內執行另一個迴圈以獲取存在的列數。

px.text(x=m,y=n,s=mat_con[m, n], va='center', ha='center', size='xx-large') 用行和列的值。

在最後一步中,我們使用 plt.xlabel()plt.ylabel() 來標記座標軸,並使用語法 plt.title() 放置標題圖。

plt.xlabel('Predictions', fontsize=16)
plt.ylabel('Actuals', fontsize=16)
plt.title('Confusion Matrix', fontsize=15)
plt.show()

綜上所述,我們生成了下面的完整程式碼。

# imports
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt

# creates confusion matrix
y_true = ["bat", "ball", "ball", "bat", "bat", "bat"]
y_pred = ["bat", "bat", "ball", "ball", "bat", "bat"]
mat_con = (confusion_matrix(y_true, y_pred, labels=["bat", "ball"]))

# Setting the attributes
fig, px = plt.subplots(figsize=(7.5, 7.5))
px.matshow(mat_con, cmap=plt.cm.YlOrRd, alpha=0.5)
for m in range(mat_con.shape[0]):
    for n in range(mat_con.shape[1]):
        px.text(x=m,y=n,s=mat_con[m, n], va='center', ha='center', size='xx-large')

# Sets the labels
plt.xlabel('Predictions', fontsize=16)
plt.ylabel('Actuals', fontsize=16)
plt.title('Confusion Matrix', fontsize=15)
plt.show()

輸出:

在 Python 中使用 Matplotlib 繪製混淆矩陣圖

在 Python 中使用 Seaborn 繪製混淆矩陣

使用 Seaborn 允許我們建立外觀不同的圖,而無需過多關注屬性或建立巢狀迴圈。

下面是繪製我們的混淆矩陣所需的庫包。

import seaborn as sebrn

如上一個程式所示,我們將使用 confusion_matrix() 方法建立一個混淆矩陣。

要建立繪圖,我們將使用以下語法。

fx = sebrn.heatmap(conf_matrix, annot=True, cmap='turbo')

我們使用了 seaborn 熱圖。annot=True 用資料填充繪圖;一個 False 值將導致一個沒有值的圖。

cmap='turbo' 代表顏色陰影;我們可以從數十種不同的陰影中選擇我們的圖。

下面的程式碼將標記我們的軸並設定標題。

fx.set_title('Plotting Confusion Matrix using Seaborn\n\n');
fx.set_xlabel('\nValues model predicted')
fx.set_ylabel('True Values ');

最後,我們使用以下語法標記這些框。此步驟是可選的,但不使用它會降低矩陣的可見邏輯清晰度。

fx.xaxis.set_ticklabels(['False','True'])
fx.yaxis.set_ticklabels(['False','True']

讓我們把所有東西放在一個工作程式中。

# imports
import seaborn as sebrn
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as atlas

y_true = ["bat", "ball", "ball", "bat", "bat", "bat"]
y_pred = ["bat", "bat", "ball", "ball", "bat", "bat"]
conf_matrix = (confusion_matrix(y_true, y_pred, labels=["bat", "ball"]))

# Using Seaborn heatmap to create the plot
fx = sebrn.heatmap(conf_matrix, annot=True, cmap='turbo')

# labels the title and x, y axis of plot
fx.set_title('Plotting Confusion Matrix using Seaborn\n\n');
fx.set_xlabel('Predicted Values')
fx.set_ylabel('Actual Values ');

# labels the boxes
fx.xaxis.set_ticklabels(['False','True'])
fx.yaxis.set_ticklabels(['False','True'])

atlas.show()

輸出:

在 Python 中使用 Seaborn 繪製混淆矩陣圖

在 Python 中使用 Pretty Confusion Matrix 繪製混淆矩陣

Pretty Confusion Matrix 是一個 Python 庫,用於繪製一個令人驚歎的混淆矩陣,其中包含大量與指標相關的資料。在為你的資料集建立高度詳細的混淆矩陣時,此 ​​Python 庫非常有用。

在下面的程式中,我們使用兩組陣列繪製了一個混淆矩陣:true_valuespredicted_values。正如我們所見,通過 Pretty Confusion Matrix 進行繪圖比其他繪相簿相對簡單。

from pretty_confusion_matrix import pp_matrix_from_data

true_values = [1,0,0,1,0,0,1,0,0,1]
predicted_values = [1,0,0,1,0,1,0,0,1,1]

cmap = 'PuRd'
pp_matrix_from_data(true_values, predicted_values)

輸出:

在 Python 中使用 Pretty Confusion Matrix 繪製混淆矩陣圖