Matplotlib繪制混淆矩陣的實現(xiàn)
對于機器學習多分類模型來說,其評價指標除了精度之外,常用的還有混淆矩陣和分類報告,下面來展示一下如何繪制混淆矩陣,這在論文中經(jīng)常會用到。
代碼如下:
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:顯示個數(shù)
"""
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("顯示百分比:")
np.set_printoptions(formatter={'float': '{: 0.2f}'.format})
print(cm)
else:
print('顯示具體數(shù)字:')
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),
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()
測試數(shù)據(jù):
cnf_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')
效果:


第二種情況:顯示數(shù)字
plot_confusion_matrix(cnf_matrix, classes=attack_types, normalize=False, title='Normalized confusion matrix')
效果:


到此這篇關(guān)于Matplotlib繪制混淆矩陣的實現(xiàn)的文章就介紹到這了,更多相關(guān)Matplotlib 混淆矩陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 利用python中的matplotlib打印混淆矩陣實例
- Python使用matplotlib繪制正弦和余弦曲線的方法示例
- Python matplotlib繪制圖形實例(包括點,曲線,注釋和箭頭)
- matplotlib 曲線圖 和 折線圖 plt.plot()實例
- Python matplotlib 繪制雙Y軸曲線圖的示例代碼
- 使用matplotlib動態(tài)刷新指定曲線實例
- Python使用matplotlib繪制三維參數(shù)曲線操作示例
- Python使用matplotlib繪制Logistic曲線操作示例
- Python matplotlib畫曲線例題解析
- matplotlib畫混淆矩陣與正確率曲線的實例代碼
相關(guān)文章
Python OpenCV利用筆記本攝像頭實現(xiàn)人臉檢測
這篇文章主要為大家詳細介紹了Python OpenCV利用筆記本攝像頭實現(xiàn)人臉檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
Python報錯:OSError:?[Errno?22]?Invalid?argument解決方案及應用實例
最近跑別人的項目遇到一個這樣的問題一開始以為是沒有用管理員的權(quán)限運行,導致創(chuàng)建不了日志文件后來發(fā)現(xiàn)是和windows的命名規(guī)則沖突了,這篇文章主要給大家介紹了關(guān)于Python報錯:OSError:?[Errno?22]?Invalid?argument的解決方案及應用實例,需要的朋友可以參考下2024-07-07
用Python和MD5實現(xiàn)網(wǎng)站掛馬檢測程序
系統(tǒng)管理員通常從svn/git中檢索代碼,部署站點后通常首先會生成該站點所有文件的MD5值,如果上線后網(wǎng)站頁面內(nèi)容被篡改(如掛馬)等,可以比對之前生成MD5值快速查找去那些文件被更改,為了使系統(tǒng)管理員第一時間發(fā)現(xiàn),可結(jié)合crontab或nagios等工具2014-03-03
Python工程師面試題 與Python Web相關(guān)
這篇文章主要為大家分享了Python工程師面試題,面試題的內(nèi)容主要與Python Web相關(guān),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-01-01

