matlab画混淆矩阵加入值,混淆矩阵的绘制(Plotaconfusionmatrix)文艺数学君

matlab画混淆矩阵加⼊值,混淆矩阵的绘制
(Plotaconfusionmatrix)⽂艺数学君
摘要这⼀篇简单介绍⼀下混淆矩阵的计算和绘制,混淆矩阵可以⽤来判断模型预测的结果。
介绍
这⼀篇主要介绍⼀下绘制混淆矩阵(confusion matrix)的⽅式。通常在看model的效果的时候,我们会使⽤混淆矩阵来进⾏检测。
主要参考资料 :
具体绘制⽅式
混淆矩阵的计算
混淆矩阵就是我们会计算最后分类错误的个数, 如计算将class1分为class2的个数,以此类推。
我们可以使⽤下⾯的⽅式来进⾏混淆矩阵的计算。
# 绘制混淆矩阵
def confusion_matrix(preds, labels, conf_matrix):
preds = torch.argmax(preds, 1)
for p, t in zip(preds, labels):
conf_matrix[p, t] += 1
return conf_matrix
conf_matrix = s(10, 10)
for data, target in test_loader:
output = (device))
conf_matrix = confusion_matrix(output, target, conf_matrix)
最后得到的conf_matrix就是混淆矩阵的值。
混淆矩阵的可视化
有了上⾯的混淆矩阵中具体的值,下⾯就是进⾏可视化的步骤。可视化我们使⽤seaborn来进⾏完成。因为我这⾥conf_matrix的值是tensor, 所以需要先转换为Numpy.
import seaborn as sn
df_cm = pd.DataFrame(conf_matrix.numpy(),
index = [i for i in list(Attack2Index.keys())],
columns = [i for i in list(Attack2Index.keys())])
plt.figure(figsize = (10,7))
sn.heatmap(df_cm, annot=True, cmap="BuPu")
陈露教你学滑冰最终的混淆矩阵的图如下所⽰:
混淆矩阵的可视化(进⾏美化)
当然, 我们还可以对混淆矩阵做更多的处理, 使得显⽰的时候能更加好看⼀些. 下⾯的绘制混淆矩阵的函数我是在下⾯的链接⾥看到的, 最终的效果很是不错。
这⾥简单贴⼀下代码,可以⽅便直接进⾏使⽤。
import itertools
# 绘制混淆矩阵
def plot_confusion_matrix(cm, classes, normalize=False, title='Confusion matrix', Blues):
"""
This function prints and plots the confusion matrix.羊吃了毒蜘蛛怎么办
Normalization can be applied by setting `normalize=True`.
Input
- cm : 计算出的混淆矩阵的值
- classes : 混淆矩阵中每⼀⾏每⼀列对应的列
- normalize : True:显⽰百分⽐, False:显⽰个数
"""
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("Normalized confusion matrix")
看球记else:
print('Confusion matrix, without normalization')
print(cm)
plt.imshow(cm, interpolation='nearest', cmap=cmap)
长江三峡水利枢纽安全保卫条例plt.title(title)
tick_marks = np.arange(len(classes))
fmt = '.2f' if normalize else 'd'
thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
<(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')
测试数据如下所⽰:
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']
我们分别测试normalize=True/False的效果。
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')

本文发布于:2024-09-20 19:50:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/158972.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   混淆   时候   计算   绘制   可视化   使得   长江三峡
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议