混淆矩阵中的标签错误

我在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_matrixdisp = plot_confusion_matrix(clf, X_test, Y_test,                               display_labels=Y,                               cmap=plt.cm.Blues,)

混淆矩阵


回答:

问题在于你使用display_labels参数指定了Y,而实际上它应该只是用于绘图的目标名称。现在它只是使用了Y中出现的前两个值,恰好是2, 2。还要注意,正如文档中提到的,如果提供了labels,显示的标签将与labels中指定的相同,因此你只需要:

from sklearn.metrics import plot_confusion_matrixfig, 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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注