【问题标题】:Incorrect labels in confusion matrix混淆矩阵中的标签不正确
【发布时间】:2020-08-30 16:06:12
【问题描述】:

我试图在 python 中的 knn 分类器上创建混淆矩阵,但标记的类是错误的。

数据集的classes属性是2(良性)和4(恶性),但是当我绘制混淆矩阵时,所有标签都是2。我使用的代码是:

数据来源http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29

来自 UCI 的威斯康星州乳腺癌(诊断)数据集上的 KNN 分类器:

data = pd.read_csv('/breast-cancer-wisconsin.data')
data.replace('?', 0, inplace=True)
data.drop('id', 1, inplace = True)


X = np.array(data.drop(' class ', 1))
Y = np.array(data[' class '])

X_train, X_test, Y_train, Y_test = train_test_split(X,Y,test_size=0.2)
clf = neighbors.KNeighborsClassifier()
clf.fit(X_train, Y_train)

accuracy = clf.score(X_test, Y_test)

绘制混淆矩阵

from sklearn.metrics import plot_confusion_matrix

disp = plot_confusion_matrix(clf, X_test, Y_test,
                               display_labels=Y,
                               cmap=plt.cm.Blues,)

Confusion matrix

【问题讨论】:

    标签: python machine-learning scikit-learn confusion-matrix


    【解决方案1】:

    问题在于您使用Y 指定display_labels 参数,它应该只是用于绘图的目标名称。现在它只是使用出现在Y 中的前两个值,恰好是2, 2。另请注意,如docs 中所述,显示的标签将与labels 中指定的相同(如果提供),因此您只需要:

    from sklearn.metrics import plot_confusion_matrix
    fig, ax = plt.subplots(figsize=(8,8))
    disp = plot_confusion_matrix(clf, X_test, Y_test,
                                   labels=np.unique(y),
                                   cmap=plt.cm.Blues,ax=ax)
    

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 2019-11-23
      • 2020-01-22
      • 1970-01-01
      • 2020-07-31
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      相关资源
      最近更新 更多