Sklearn中plot_confusion_matrix已弃用,求混淆矩阵绘制替代方案
解决sklearn混淆矩阵绘图报错问题
问题原因
sklearn.metrics.plot_confusion_matrix在新版本scikit-learn中已被弃用并移除,官方推荐使用ConfusionMatrixDisplay类作为替代方案。
替代实现步骤
- 导入必要工具:从
sklearn.metrics导入ConfusionMatrixDisplay和confusion_matrix - 计算混淆矩阵数据:先通过
confusion_matrix计算验证集的混淆矩阵数值 - 绘制并可视化:用
ConfusionMatrixDisplay封装矩阵数据,调用plot()方法生成可视化图
修改后的完整代码
from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix, roc_auc_score import matplotlib.pyplot as plt # 假设models、X、Y、X_val、Y_val已提前定义 for i in range(3): models[i].fit(X, Y) print(f'{models[i]} : ') train_preds = models[i].predict_proba(X) print('Training Accuracy : ', roc_auc_score(Y, train_preds[:,1])) val_preds = models[i].predict_proba(X_val) print('Validation Accuracy : ', roc_auc_score(Y_val, val_preds[:,1])) print() # 替换原弃用的绘图代码 y_pred = models[2].predict(X_val) # 获取模型对验证集的预测结果 cm = confusion_matrix(Y_val, y_pred) # 计算混淆矩阵 disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=models[2].classes_) disp.plot(cmap=plt.cm.Blues) # 指定配色方案绘制 plt.show()
额外提示
如果需要在循环中绘制当前迭代模型的混淆矩阵,只需将代码中的models[2]替换为models[i]即可。
内容的提问来源于stack exchange,提问作者John.R
相关产品推荐
相关产品推荐

