【问题标题】:How to know my labels are arranged properly in confusion matrix in python?如何知道我的标签在 python 的混淆矩阵中正确排列?
【发布时间】:2020-05-19 08:17:36
【问题描述】:

我为我的数据创建了一个混淆矩阵,如下所示:

knn = KNeighborsClassifier(n_neighbors = 85).fit(x_train, y_train)
accuracy = knn.score(x_test, y_test)
knn_pred = knn.predict(x_test)
print(knn_pred)

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, knn_pred)

在上面的代码中,y_test 是一个包含情绪的标签列表['neutral', 'happy','sad', 'angry','fearful','surprised','calm', '厌恶']。 现在,当我运行上面的代码来打印混淆矩阵时,我得到的输出如下:

[[31  2  0  0  6  0  0  9]
 [ 0 38  5  0  0  1  4  0]
 [ 8  6 13  1  3  0  0 17]
 [12  5  6 13  2  0  1  9]
 [ 5 10  4  4 10  0  1 14]
 [ 0 16  5  0  1  0  1  1]
 [ 5 24  6  2  2  1  2  6]
 [ 6  8  2  2  7  0  0 23]]

现在我怀疑上面矩阵中的行对应于哪种情绪。如何在我上面得到的混淆矩阵中找到对应于一行的情感标签。还告诉我如何在带有标签的热图上绘制混淆矩阵。

【问题讨论】:

    标签: python matplotlib machine-learning


    【解决方案1】:

    confusion_matrix 的第三个参数仅用于此目的。引用自documentation:

    labels: 类似数组的形状(n_classes),默认=None 用于索引矩阵的标签列表。这可用于重新排序或选择标签子集。如果给出 None,则在 y_true 或 y_pred 中至少出现一次的将按排序顺序使用。

    因此,您的行和列是按字母顺序排列的。如果您想要不同的顺序,只需将标签作为列表传递给confusion_matrix,它将使用您指定的顺序。

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2020-01-22
      • 2020-12-18
      • 2019-07-19
      相关资源
      最近更新 更多