在没有分类器的情况下使用 scikit-learn 绘制混淆矩阵

新手上路,请多包涵

我有一个用 sklearn.metrics.confusion_matrix 创建的混淆矩阵。

现在,我想用 sklearn.metrics.plot_confusion_matrix 绘制它,但第一个参数是经过训练的分类器,如 文档 中所述。问题是我没有分类器;结果是通过手动计算获得的。

是否仍然可以通过 scikit-learn 在一行中绘制混淆矩阵,还是我必须自己使用 matplotlib 对其进行编码?

原文由 Irina 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 805
2 个回答

您可以导入 plot_confusion_matrix 的事实直接表明您安装了最新版本的 scikit-learn (0.22)。所以你可以看看 plot_confusion_matrix() 的源代码,看看它是如何使用 estimator 的。

此处的最新消息来源,估算器用于:

  1. 使用 confusion_matrix
  2. 获取标签(y 的唯一值对应于混淆矩阵中的 0,1,2..)

所以如果你已经有了这两件事,你只需要下面的部分:

 import matplotlib.pyplot as plt
from sklearn.metrics import ConfusionMatrixDisplay

disp = ConfusionMatrixDisplay(confusion_matrix=cm,
                              display_labels=display_labels)

# NOTE: Fill all variables here with default values of the plot_confusion_matrix
disp = disp.plot(include_values=include_values,
                 cmap=cmap, ax=ax, xticks_rotation=xticks_rotation)

plt.show()

请查看注释中的注释。

对于旧版本,您可以在 此处查看 matplotlib 部分的编码方式

原文由 Vivek Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

下面的代码是根据真实值和预测值创建混淆矩阵。如果你已经创建了混淆矩阵,你可以运行下面的最后一行。

 import seaborn as sns
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_true, y_pred)
f = sns.heatmap(cm, annot=True, fmt='d')

原文由 Omar Ismail 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题