在没有分类器的情况下使用 scikit-learn 绘制混淆矩阵
Plot Confusion Matrix with scikit-learn without a Classifier
我有一个使用 sklearn.metrics.confusion_matrix
创建的混淆矩阵。
现在,我想用 sklearn.metrics.plot_confusion_matrix
绘制它,但第一个参数是训练过的分类器,如 documentation 中指定的那样。问题是我没有分类器;结果是通过手工计算得到的。
是否仍然可以通过 scikit-learn 在一行中绘制混淆矩阵,还是我必须自己用 matplotlib 编写代码?
您可以直接导入 plot_confusion_matrix
表明您安装了最新版本的 scikit-learn (0.22)。所以你可以看看 plot_confusion_matrix()
的源代码,看看它是如何使用 estimator
.
来自 latest sources here,估算器用于:
- 使用
confusion_matrix
计算混淆矩阵
- 获取标签(对应于混淆矩阵中的 0,1,2.. 的唯一 y 值)
因此,如果您已经拥有这两件事,则只需要以下部分:
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部分是怎么编码的here
如果适合您的用例,您可以使用单行“身份分类器”。
IC = type('IdentityClassifier', (), {"predict": lambda i : i, "_estimator_type": "classifier"})
plot_confusion_matrix(IC, y_pred, y_test, normalize='true', values_format='.2%');
(请参阅我的原始答案:)
下面的代码是根据真实值和预测值创建混淆矩阵。如果您已经创建了混淆矩阵,您可以 运行 下面的最后一行。
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')
我有一个使用 sklearn.metrics.confusion_matrix
创建的混淆矩阵。
现在,我想用 sklearn.metrics.plot_confusion_matrix
绘制它,但第一个参数是训练过的分类器,如 documentation 中指定的那样。问题是我没有分类器;结果是通过手工计算得到的。
是否仍然可以通过 scikit-learn 在一行中绘制混淆矩阵,还是我必须自己用 matplotlib 编写代码?
您可以直接导入 plot_confusion_matrix
表明您安装了最新版本的 scikit-learn (0.22)。所以你可以看看 plot_confusion_matrix()
的源代码,看看它是如何使用 estimator
.
来自 latest sources here,估算器用于:
- 使用
confusion_matrix
计算混淆矩阵
- 获取标签(对应于混淆矩阵中的 0,1,2.. 的唯一 y 值)
因此,如果您已经拥有这两件事,则只需要以下部分:
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部分是怎么编码的here
如果适合您的用例,您可以使用单行“身份分类器”。
IC = type('IdentityClassifier', (), {"predict": lambda i : i, "_estimator_type": "classifier"})
plot_confusion_matrix(IC, y_pred, y_test, normalize='true', values_format='.2%');
(请参阅我的原始答案:
下面的代码是根据真实值和预测值创建混淆矩阵。如果您已经创建了混淆矩阵,您可以 运行 下面的最后一行。
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')