如何用ConfusionMatrixDisplay生成指定尺寸且标签正确的混淆矩阵图?
解决混淆矩阵图尺寸与标签不匹配的问题
你的问题出在调用ConfusionMatrixDisplay.from_predictions时未指定自定义坐标轴对象,导致该方法默认创建了一张新图(即标签正确但尺寸为默认值的图),后续调用cmp.plot(ax=ax)又在你指定尺寸的坐标轴上重复绘制,但未传递分类标签信息,因此出现标签错误的情况。
修正后的代码
import matplotlib.pyplot as plt from sklearn import datasets, svm from sklearn.metrics import ConfusionMatrixDisplay # 导入数据 iris = datasets.load_iris() X, y = iris.data, iris.target # 训练分类器 classifier = svm.SVC(kernel="linear") y_pred = classifier.fit(X, y).predict(X) # 绘制混淆矩阵 fig, ax = plt.subplots(figsize=(8, 6)) # 直接在from_predictions中指定ax,复用已创建的自定义尺寸坐标轴 ConfusionMatrixDisplay.from_predictions( y, y_pred, normalize="true", values_format=".0%", ax=ax # 关键:指定使用预先定义好尺寸的坐标轴 ) plt.show()
关键说明
- 移除了单独创建
cmp对象再调用plot的步骤,直接在from_predictions中传入ax=ax,让混淆矩阵绘制在你预先设置好8x6英寸尺寸的坐标轴上。 - 这样既保留了自定义尺寸,又能正确显示分类标签,且只会生成一张符合要求的混淆矩阵图。
内容的提问来源于stack exchange,提问作者Manojit
相关产品推荐
相关产品推荐

