Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 混淆矩阵中的标签不正确_Python_Machine Learning_Scikit Learn_Confusion Matrix - Fatal编程技术网

Python 混淆矩阵中的标签不正确

Python 混淆矩阵中的标签不正确,python,machine-learning,scikit-learn,confusion-matrix,Python,Machine Learning,Scikit Learn,Confusion Matrix,我曾尝试在python中的knn分类器上创建一个混淆矩阵,但标记的类是错误的 数据集的classes属性是2(良性)和4(恶性),但当我绘制混淆矩阵时,所有标签都是2。我使用的代码是: 数据来源: UCI中威斯康星州乳腺癌(诊断)数据集的KNN分类器: data = pd.read_csv('/breast-cancer-wisconsin.data') data.replace('?', 0, inplace=True) data.drop('id', 1, inplace = True)

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

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

数据来源:

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,)

问题在于,您正在使用
Y
指定
display\u labels
参数,其中它应该只是用于打印的目标名称。现在它只使用出现在
Y
中的前两个值,它们恰好是
2,2
。还请注意,如中所述,如果提供了标签,则显示的标签将与
标签中指定的标签相同,因此您只需要:

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)