我使用sklearn.metrics.confusion_matrix
创建了一个混淆矩阵。
现在,我想用 sklearn.metrics.plot_confusion_matrix
来绘制它,但第一个参数是训练好的分类器,如文档中所述。文档链接。问题是我没有一个分类器;结果是通过手动计算得到的。
是否仍然可以通过scikit-learn的一行代码绘制混淆矩阵,还是我必须使用matplotlib自己编写代码?
我使用sklearn.metrics.confusion_matrix
创建了一个混淆矩阵。
现在,我想用 sklearn.metrics.plot_confusion_matrix
来绘制它,但第一个参数是训练好的分类器,如文档中所述。文档链接。问题是我没有一个分类器;结果是通过手动计算得到的。
是否仍然可以通过scikit-learn的一行代码绘制混淆矩阵,还是我必须使用matplotlib自己编写代码?
plot_confusion_matrix
,这表明您安装了最新版本的scikit-learn(0.22)。因此,您只需查看plot_confusion_matrix()
的源代码即可了解它如何使用estimator
。
从最新的源代码中可以看到,估计器用于:
confusion_matrix
计算混淆矩阵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部分的编码方式此处。
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')
如果适合您的用例,您可以使用一行代码的“身份分类器”。
IC = type('IdentityClassifier', (), {"predict": lambda i : i, "_estimator_type": "classifier"})
plot_confusion_matrix(IC, y_pred, y_test, normalize='true', values_format='.2%');
(请查看我的原始答案:不带估计器的绘制混淆矩阵)