使用ConfusionMatrixDisplay时遇TypeError:__init__仅接受2个位置参数却传入4个
解决ConfusionMatrixDisplay的TypeError错误
错误原因
ConfusionMatrixDisplay的构造函数仅接受2个位置参数(self和confusion_matrix),display_labels需要以关键字参数传递。你可能沿用了旧方法confusion_matrix_plot的调用习惯,直接传入3个以上位置参数,触发了该错误。
正确实现方式
方式1:先计算混淆矩阵,再初始化Display
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay # 计算混淆矩阵 cm = confusion_matrix(y_true, y_pred) # 用关键字参数指定分类标签 disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=class_names) # 绘制混淆矩阵 disp.plot()
方式2:直接用from_predictions类方法(推荐,sklearn 1.0+支持)
无需手动计算混淆矩阵,直接传入真实标签和预测结果:
from sklearn.metrics import ConfusionMatrixDisplay disp = ConfusionMatrixDisplay.from_predictions(y_true, y_pred, display_labels=class_names) disp.plot()
方式3:从训练好的模型直接生成(适用于测试集)
基于模型和测试数据直接生成混淆矩阵:
from sklearn.metrics import ConfusionMatrixDisplay disp = ConfusionMatrixDisplay.from_estimator(trained_model, X_test, y_test, display_labels=class_names) disp.plot()
内容的提问来源于stack exchange,提问作者Ridwan Satrio Hadikusuma
相关产品推荐
相关产品推荐

