本文提供一种通过Matplotlib绘制混淆矩阵并调整colorbar标签的程序。
直接上程序:
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
def cm_plot(cm,labels):
# 设置字体、字号
plt.rc('font',family='Times New Roman',size='14')
ind_array = np.arange(len(labels))
x, y = np.meshgrid(ind_array, ind_array)
for x_val, y_val in zip(x.flatten(), y.flatten()):
# 转换为百分数,需同时更改colorbar标签(当然也可以直接以样本数表示,后续colorbar无需变动)
c = round(cm[y_val][x_val]/sum(cm[y_val])*100,1)
plt.text(x_val, y_val, c, color='red', va='center', ha='center')
plt.imshow(cm, interpolation='nearest', cmap=plt.cm.binary)
# colorbar设置
cb = plt.colorbar()
tick_locator = ticker.MaxNLocator(nbins=5)
cb.locator = tick_locator
cb.set_ticks([0,np.max(cm)//2//2,np.max(cm)//2,(np.max(cm)+np.max(cm)//2)//2,np.max(cm)])
cb.set_ticklabels(['0.0%', '25.0%','50.0%', '75.0%', '100.0%'])
x_label = np.array(range(len(labels)))
plt.xticks(x_label, labels)
plt.yticks(x_label, labels, rotation=90)
plt.ylabel('Actual label')
plt.xlabel('Predict label')
ax = plt.gca()
tick_marks = np.array(range(len(labels))) + 0.5
ax.set_xticks(tick_marks, minor=True)
ax.set_yticks(tick_marks, minor=True)
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')
ax.grid(True, which='minor', linestyle='-')
plt.tight_layout()
plt.show()
if __name__ == '__main__':
# 简单示意
true_label = [0,1,0,0,1,1,0]
pred_label = [0,0,0,1,1,0,0]
cm = confusion_matrix(true_label,pred_label)
labels = ['A','B']
cm_plot(cm,labels)
最终绘制结果如下图所示:
一些参考文章:
python实现混淆矩阵 - 知乎
混淆矩阵的解析和python代码实现 - 知乎文章来源:https://www.toymoban.com/news/detail-501811.html
使用matplotlib的示例:调整字体-设置刻度、坐标、colormap和colorbar等_一懒百邪生的博客-CSDN博客_cm.jet文章来源地址https://www.toymoban.com/news/detail-501811.html
到了这里,关于Matplotlib绘制混淆矩阵及colorbar标签设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!