逻辑回归绘制混淆矩阵时plot_confusion_matrix缺X、y_true参数如何解决
问题根源
你先后导入了两个同名的plot_confusion_matrix工具,后导入的sklearn.metrics.plot_confusion_matrix覆盖了先导入的mlxtend.plotting.plot_confusion_matrix:
mlxtend版本的plot_confusion_matrix支持直接传入预计算好的混淆矩阵作为入参sklearn版本的plot_confusion_matrix需要传入「训练好的模型、测试集特征、测试集真实标签」三个入参,自动计算混淆矩阵再绘制,不支持直接传入混淆矩阵,所以触发参数缺失报错
解决方法
方案1:保留你原有的逻辑,使用mlxtend版本的绘图工具
删掉sklearn版本的同名导入即可,修改导入部分代码:
from sklearn.metrics import confusion_matrix from mlxtend.plotting import plot_confusion_matrix # 移除下面这行冲突导入 # from sklearn.metrics import plot_confusion_matrix
修改后原有plot_confusion_matrix(cm)调用可正常运行。
方案2:适配sklearn版本的绘图工具,无需预计算混淆矩阵
无需提前调用confusion_matrix计算cm,直接传入对应参数即可:
plt.rcParams.update({'font.size': 16}) plt.figure() # 依次传入训练好的逻辑回归模型、测试集特征、测试集真实标签 plot_confusion_matrix(reg, x_test, y_test) plt.title("Logistic Regression Model - Confusion Matrix") plt.xticks(range(2), ["Existing Customer","Attrited Customer"], fontsize=16) plt.yticks(range(2), ["Existing Customer","Attrited Customer"], fontsize=16) plt.show()
补充说明
如果你的scikit-learn版本≥1.0,sklearn.metrics.plot_confusion_matrix已被弃用,可使用官方推荐的ConfusionMatrixDisplay实现相同需求:
from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix cm = confusion_matrix(y_test, log_reg_pred) disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=["Existing Customer","Attrited Customer"]) disp.plot() plt.title("Logistic Regression Model - Confusion Matrix") plt.show()
内容的提问来源于stack exchange,提问作者Amir Wassim
相关产品推荐
相关产品推荐

