混淆矩阵中的标签不正确
Incorrect labels in confusion matrix
我曾尝试在 python 中的 knn 分类器上创建混淆矩阵,但标记的 类 是错误的。
数据集的类属性是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
问题是您用 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)
我曾尝试在 python 中的 knn 分类器上创建混淆矩阵,但标记的 类 是错误的。
数据集的类属性是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
问题是您用 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)