python - 如何知道我的标签在 python 的混淆矩阵中正确排列?
问题描述
我为我的数据创建了一个混淆矩阵,如下所示:
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','disgust']。现在,当我运行上面的代码来打印混淆矩阵时,我得到的输出如下:
[[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]]
现在我在这里怀疑上面矩阵中的行对应于哪种情绪。如何在我上面得到的混淆矩阵中找到对应于一行的情感标签。还告诉我如何在带有标签的热图上绘制混淆矩阵。
解决方案
第三个参数 ofconfusion_matrix
仅用于此目的。引用文档:
labels
:形状类似数组(n_classes),默认=无标签列表来索引矩阵。这可用于重新排序或选择标签子集。如果给出 None ,那些在 y_true 或 y_pred 中至少出现一次的将按排序顺序使用。
因此,您的行和列按字母顺序排列。如果您想要不同的顺序,只需将标签作为列表传递给confusion_matrix
它,它将使用您指定的顺序。
推荐阅读
- c# - 如何检索
进行 lgrouping 后从列表中 - python - 重新调整训练集
- r - 如何用 ggplot2 (R) 绘制单个置信区间?
- c - 使用 printf 时出现意外的双值输出
- java - Kotlin 中的 Sealed 类和继承原理有什么区别?
- python - 如何使用 Python Pandas 从 1 行中的特定列中获取值?
- r - “shinyFeedback”不适用于“dateRangeInput”组件
- php - 发布到公司页面链接时验证失败 [/author] | php
- java - 为什么当我的 Raspberry pi 上有 7.5G 未使用时,我的 java 告诉我我没有 3G ram?
- python - 创建具有命名颜色值的 pcolormesh