在我的sklearn逻辑回归模型中,我使用[az,el] = view;
scatter3(x,y,z);
view(az,el);
drawnow
命令获得了混淆矩阵。该数组看起来像这样
metrics.confusion_matrix
忽略模型做得很差的事实,我试图理解以漂亮方式制表这个矩阵的最佳方法是什么
我正在尝试使用tabulate package,此代码部分适用于我
array([[51, 0],
[26, 0]])
因为它提供了输出
print tabulate(cm,headers=['Pred True', 'Pred False'])
修改
要插入行名,我意识到插入元素而不是zip会有帮助
Pred True Pred False
----------- ------------
51 0
26 0
给出
cm_list=cm.tolist()
cm_list[0].insert(0,'Real True')
cm_list[1].insert(0,'Real False')
print tabulate(cm_list,headers=['Real/Pred','Pred True', 'Pred False'])
然而,仍然想知道是否有更快或更替的美化混淆矩阵的方法。 (我在网上找到了一些绘图示例,但我不需要)
谢谢,
答案 0 :(得分:4)
您是否考虑过创建数字而不是表格?调整scikit-learn example中的一些代码,你可以得到一个体面的图形,显示你想要的东西。
import numpy as np
from matplotlib import pyplot as plt
def plot_confusion_matrix(cm, target_names, title='Confusion matrix', cmap=plt.cm.Blues):
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(len(target_names))
plt.xticks(tick_marks, target_names, rotation=45)
plt.yticks(tick_marks, target_names)
plt.tight_layout()
width, height = cm.shape
for x in xrange(width):
for y in xrange(height):
plt.annotate(str(cm[x][y]), xy=(y, x),
horizontalalignment='center',
verticalalignment='center')
plt.ylabel('True label')
plt.xlabel('Predicted label')
cm = np.array([[13, 0, 0],[ 0, 10, 6],[ 0, 0, 9]])
plot_confusion_matrix(cm, ['A', 'B', 'C'])
答案 1 :(得分:2)