本文主要介绍用python绘制混淆矩阵的详细说明。通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。
Summary
当涉及到分类问题时,我们往往需要通过可视化混淆矩阵来分析实验结果,以得到参数调整的思路。本文介绍了如何用python绘制混淆矩阵。本文仅提供代码和必要的注释。
Code
#-*-编码:utf-8-*-
来自sklearn.metrics导入混淆_矩阵
将matplotlib.pyplot作为plt导入
将numpy作为np导入
#labels表示不同类别的代码名称。例如,这里的演示中有13个类别。
labels=['A ',' B ',' C ',' F ',' G ',' H ',' I ',' J ',' K ',' L ',' M ',' N ',' O']
'''
具体解释一下re_label.txt和pr_label.txt这两个文件。例如,你有100个样本。
要做预测,这100个样本中有10个类别,所以首先你要有这100个样本的真实标签。
是的,有10个类别,用[0,9]表示,所以re_label.txt文件里应该有100个。
数字,第n个数字代表第n个样本的真实标签(100个样本自然有100个)
数字)。
同样,pr_label.txt也应该有1个数字,第n个数字代表第n个样本经过。
来自你训练过的网络的预测。
这样,两个文件re_label.txt和pr_label.txt分别代表你的样本的真实标签和预测标签,然后读取两个变量y_true和y_pred,计算背后的混淆矩阵。当然,你不必用这个txt格式的文件来读入,只要你最后把你的真实
并且预测标签可以分别保存在两个变量y_true和y_pred中。
'''
y_true=np.loadtxt('./Data/re_label.txt ')
y_pred=np.loadtxt('./Data/pr_label.txt ')
tick _ marks=NP . array(range(len(labels)))0.5
def plot_confusion_matrix(cm,title='混淆矩阵',cmap=plt.cm.binary):
plt.imshow(cm,interpolation='nearest ',cmap=cmap)
plt.title(标题)
plt.colorbar()
xlocations=NP . array(range(len(labels)))
PLT . x ticks(x位置,标签,旋转=90度)
plt.yticks(xlocations,标签)
plt.ylabel('真实标签')
plt.xlabel('预测标签')
cm=混淆矩阵(y_true,y_pred)
np.set_printoptions(精度=2)
cm _ normalized=cm . astype(' float ')/cm . sum(axis=1)[:np.newaxis]
打印cm _规格化
plt.figure(figsize=(12,8),dpi=120)
ind_array=np.arange(len(labels))
x,y=np.meshgrid(ind_array,ind_array)
对于x_val,zip中的y _ val(x . flatten()、y.flatten()):
c=cm _归一化[y_val][x_val]
如果c 0.01:
plt.text(x_val,y_val,' %0.2f' % (c,),color='red ',fontsize=7,va='center ',ha='center ')
#偏移刻度
plt.gca()。set_xticks(tick_marks,minor=True)
plt.gca()。set _ y ticks(tick _ mark,minor=True)
PLT . GCA(). xaxis . set _ ticks _ position(' none ')。
PLT . GCA()ya xis . set _ ticks _ position(' none ')。
plt.grid(True,其中='minor ',linestyle='-')
plt.gcf()。支线剧情_调整(bottom=0.15)
plot _ confusion _ matrix(cm _ Normalized,title=' Normalized confusion matrix ')
#显示混淆矩阵
' plt.savefig('./Data/confusion_matrix.png ',format='png ')
plt.show()
结果
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。