Rak*_*san 7 python confusion-matrix scikit-learn
我正在尝试使用 plot_confusion_matrix,
from sklearn.metrics import confusion_matrix
y_true = [1, 1, 0, 1]
y_pred = [1, 1, 0, 0]
confusion_matrix(y_true, y_pred)
Run Code Online (Sandbox Code Playgroud)
输出:
array([[1, 0],
[1, 2]])
Run Code Online (Sandbox Code Playgroud)
现在,在使用以下内容时;使用“类”或不使用“类”
from sklearn.metrics import plot_confusion_matrix
plot_confusion_matrix(y_true, y_pred, classes=[0,1], title='Confusion matrix, without normalization')
Run Code Online (Sandbox Code Playgroud)
或者
plot_confusion_matrix(y_true, y_pred, title='Confusion matrix, without normalization')
Run Code Online (Sandbox Code Playgroud)
除了里面的数字,我希望得到类似的输出,
绘制简单的图表,应该不需要估计器。
使用 mlxtend.plotting,
from mlxtend.plotting import plot_confusion_matrix
import matplotlib.pyplot as plt
import numpy as np
binary1 = np.array([[4, 1],
[1, 2]])
fig, ax = plot_confusion_matrix(conf_mat=binary1)
plt.show()
Run Code Online (Sandbox Code Playgroud)
它提供相同的输出。
基于此
它需要一个分类器,
disp = plot_confusion_matrix(classifier, X_test, y_test,
display_labels=class_names,
cmap=plt.cm.Blues,
normalize=normalize)
Run Code Online (Sandbox Code Playgroud)
我可以在没有分类器的情况下绘制它吗?
plot_confusion_matrix期望一个训练有素的分类器。如果您查看源代码,它的作用是执行y_pred为您生成的预测:
y_pred = estimator.predict(X)
cm = confusion_matrix(y_true, y_pred, sample_weight=sample_weight,
labels=labels, normalize=normalize)
Run Code Online (Sandbox Code Playgroud)
因此,为了在不指定分类器的情况下绘制混淆矩阵,您必须使用其他工具,或者自己完成。一个简单的选择是使用 seaborn:
import seaborn as sns
cm = confusion_matrix(y_true, y_pred)
f = sns.heatmap(cm, annot=True)
Run Code Online (Sandbox Code Playgroud)
我来晚了一点,但我认为其他人可能会从我的回答中受益。
正如其他人提到的,如果plot_confusion_matrix没有分类器,则不能选择使用,但仍然可以使用 sklearn 在没有分类器的情况下获得外观相似的混淆矩阵。下面的函数正是这样做的。
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
def confusion_ma(y_true, y_pred, class_names):
cm = confusion_matrix(y_true, y_pred, normalize='true')
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=class_names)
disp.plot(cmap=plt.cm.Blues)
return plt.show()
Run Code Online (Sandbox Code Playgroud)
该confusion_matrix函数返回一个简单的 ndarry 矩阵。通过将其与预测标签一起传递给函数,ConfusionMatrixDisplay可以获得类似的矩阵。在定义中,我添加了class_names要显示的 ,而不是 0 和 1,选择标准化输出并指定颜色图 - 根据您的需要进行更改。
| 归档时间: |
|
| 查看次数: |
3605 次 |
| 最近记录: |