混淆矩阵中的标签不正确

时间:2020-05-14 07:48:01

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

我试图在python的knn-classifier上创建一个混淆矩阵,但是标记的类是错误的。

数据集的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

1 个答案:

答案 0 :(得分:1)

问题是您要使用display_labels指定Y参数,该参数应该只是用于绘图的目标名称。现在,它仅使用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)

enter image description here