Matplotlib繪製混淆矩陣的實現

2022-09-25 14:42:09 字數 1963 閱讀 5734

對於機器www.cppcns.com學習多分類模型來說,其評價指標除了精度之外,常用的還有混淆矩陣和分類報告,下面來展示一下如何繪製混淆矩陣,這在**中經常會用到。

**如下:

import itertools

import matplotlib.pyplot as plt

import numpy as np

# 繪製混淆矩陣

def plot_confusion_matrix(cm, classes, normalize=false, title='confusion matrix', cmap=plt.cm.blues):

"""- cm : 計算出的混淆矩陣的值

- classes : 混淆矩陣中每一行每一列對應的列

- normalize : true:顯示百分比, false:顯示個數

"""if normalize:

cm = cm.astype('float') / cm.sum(axiswww.cppcns.com=1)[:, np.newaxis]

print("顯示百分比:")

np.set_printoptions(formatter='.format})

print(cm)

else:

print('顯示具體數字:')

print(cm)

plt.imshow(cm, interpolation='nearest', cmap=cmap)

plt.title(title)

plt.colorbar()

tick_marks = np.arange(len(classes))

plt.xticks(tick_marks, classes, rotation=45)

plt.yticks(tick_marks, classes)

# matplotlib版本問題,如果不加下面這行**,則繪製的混淆矩陣上下只能顯示一半,有的版本的matplotlib不需要下面的**,分別試一下即可

plt.ylim(len(classes) - 0.5, -0.5)

fmt = '.2f' if normalize else 'd'

thresh = cm.max() / 2.

for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):

plt.text(j, i, format(cm[i, j], fmt),

akdzchuyl horizontalalignment="center",

color="white" if cm[i, j] > thresh else "black")

plt.tight_layout()

plt.ylabel('true label')

plt.xlabel('predicted label')

plt.show()

測試資料:

www.cppcns.comcnf_matrix = np.array([[8707, 64, 731, 164, 45],

[1821, 5530, 79, 0, 28],

[266, 167, 1982, 4, 2],

[691, 0, 107, 1930, 26],

[30, 0, 111, 17, 42]])

attack_types = ['normal', 'dos', 'probe', 'r2l', 'u2r']

plot_confusion_matrix(cnf_matrix, classes=attack_types, normalize=true, title='normalized confusion matrix')

效果:plot_confusion_matrix(cnf_matrix, classes=attack_types, normalize=false, title='normalized confusion matrix')

效果:

繪製 混淆矩陣

參考文獻 從而二分類的角度來看,在二分類的模型中,把 情況與實際情況的所有結果進行組合,就會有真正 true positive 假正 false positive 真負 true negative 和假負 false negative 四種情形,分別由tp fp tn fn 表示 t代表 正確,f代...

matplotlib繪製等直線

利用contour contourf 描繪等值線 contourf 帶有填充效果 def fig2 y,x np.ogrid 2 2 200j,3 3 300j z x np.exp x 2 y 2 extent np.min x np.max x np.min y np.max y plt.fig...

Python使用matplotlib繪製三維曲線

本文主要演示如何使用matplotlib繪製三維圖形 如下 coding utf 8 import matplotlib as mpl from mpl toolkits.mplot3d import axes3d import numpy as np import matplotlib.pyplo...