如何知道 scikit-learn 混淆矩阵标签顺序并更改它

2023-12-28

存在 27 个类别的多分类问题。

y_predict=[0 0 0 20 26 21 21 26 ....]

y_true=[1 10 10 20 26 21 18 26 ...]  

名为“answer_vocabulary”的列表存储了每个索引对应的 27 个单词。 answer_vocabulary=[0 1 10 11 2 3 农商东住北.....]

cm = 混淆矩阵(y_true=y_true, y_pred=y_predict)

我对混淆矩阵的顺序感到困惑。它是按索引升序排列的吗?如果我想用标签序列=[0 1 2 3 10 11农业商业生活东北...]重新排序混淆矩阵,我该如何实现呢?

这是我尝试绘制混淆矩阵的函数。

def plot_confusion_matrix(cm, classes,
                        normalize=False,
                        title='Confusion matrix',
                        cmap=plt.cm.Blues):
    """
    This function prints and plots the confusion matrix.
    Normalization can be applied by setting `normalize=True`.
    """
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=45)
    plt.yticks(tick_marks, classes)

    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
        print("Normalized confusion matrix")
    else:
        print('Confusion matrix, without normalization')

    print(cm)

    thresh = cm.max() / 2.
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, cm[i, j],
            horizontalalignment="center",
            color="white" if cm[i, j] > thresh else "black")

    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')

sklearn 的混淆矩阵不存储以下信息how矩阵已创建(类排序和标准化):这意味着您必须在创建混淆矩阵后立即使用它否则信息将会丢失。

默认情况下,sklearn.metrics.confusion_matrix(y_true,y_pred) https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html按照类在 y_true 中出现的顺序创建矩阵。

如果您将此数据传递给sklearn.metrics.confusion_matrix:

+--------+--------+
| y_true | y_pred |
+--------+--------+
| A      | B      |
| C      | C      |
| D      | B      |
| B      | A      |
+--------+--------+

Scikit-learn 将创建这个混淆矩阵(省略零):

+-----------+---+---+---+---+
| true\pred | A | C | D | B | 
+-----------+---+---+---+---+
| A         |   |   |   | 1 |
| C         |   | 1 |   |   |
| D         |   |   |   | 1 |
| B         | 1 |   |   |   |
+-----------+---+---+---+---+

它会将这个 numpy 矩阵返回给您:

+---+---+---+---+
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 0 |
+---+---+---+---+

如果您想选择类或对它们重新排序,您可以将 'labels' 参数传递给confusion_matrix().

对于重新排序:

labels = ['D','C','B','A']
mat = confusion_matrix(true_y,pred_y, labels=labels)

或者,如果您只想关注一些标签(如果您有很多标签,则很有用):

labels = ['A','D']
mat = confusion_matrix(true_y,pred_y, labels=labels)

另外,看看sklearn.metrics.plot_confusion_matrix https://scikit-learn.org/stable/modules/generated/sklearn.metrics.plot_confusion_matrix.html。它非常适合小班(

如果您有 >100 个类,则需要使用白色来绘制矩阵。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道 scikit-learn 混淆矩阵标签顺序并更改它 的相关文章

  • 为什么对数损失为负?

    我刚刚将 sklearn 中的对数损失应用于逻辑回归 http scikit learn org stable modules generated sklearn metrics log loss html http scikit lear
  • TensorFlow 中的 global_step 是什么意思?

    在这就是教程代码 https github com tensorflow tensorflow blob master tensorflow examples tutorials mnist mnist py来自 TensorFlow 网站
  • 在 GPU 上训练时如何处理非确定性?

    在调整超参数以使模型性能更好时 我注意到每次运行代码时获得的分数 以及创建的模型 都是不同的 尽管修复了随机操作的所有种子 如果我在CPU上运行就不会出现这个问题 我搜索了一下 发现这是使用 GPU 训练时的常见问题 这是一个非常好的 详细
  • 如何向通过 Seaborn 热图渲染的混淆矩阵添加工具提示?

    如何使我的 matplotlib 具有交互性 例如 当我将鼠标悬停在混淆矩阵的每个单元格上时 我想显示该预测的实例 confusion mat df pd DataFrame confusion mat columns pred spect
  • 如何将 sklearn.naive_bayes 与(多个)分类特征一起使用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想学习朴素贝叶斯模型来解决类为布尔值的问题 有些特征是布尔型的 但其他特征是分类型的 并且可以采用少量值 5 如果我所有的功能都是布尔值
  • Tensorflow推荐的系统规格?

    我开始在我的 RHEL 6 5 机器上安装 Tensorflow 但事实证明 Tensorflow 需要 glibc gt 2 17 而 rhel 6 5 上默认的 glibc 是 2 12 我想知道是否有人可以帮助我了解张量流的最低 推荐
  • 地图应用的聚类算法

    我正在研究地图上的聚类点 纬度 经度 对于快速且可扩展的合适算法有什么建议吗 更具体地说 我有一系列纬度 经度坐标和一个地图视口 我正在尝试将靠近的点聚集在一起以消除混乱 我已经有了解决问题的方法 see here http bouldr
  • 多输出回归问题的多重损失

    所以我试图训练一个 CNN 模型来预测 4 个实值输出 回归问题 我尝试使用均方误差作为损失函数 我的问题是我是否将输出层分支为 4 个不同的输出层 其中有 4 个不同的输出层由于最后一层的权重是单独更新的 loss 4 MSE 确实可以使
  • Scikit - 结合比例和网格搜索

    我是 scikit 的新手 在结合数据规模和网格搜索时遇到两个小问题 高效洁牙机 考虑使用 Kfolds 进行交叉验证 我希望每次我们在 K 1 折叠上训练模型时 数据缩放器 例如使用 preprocessing StandardScale
  • 如何在sklearn决策树中显示特征名称?

    我目前有一个决策树 将功能名称显示为X index i e X 0 X 1 X 2 etc from sklearn import tree from sklearn tree import DecisionTreeClassifier d
  • 如何在 python 中使用 libSVM 计算精度、召回率和 F 分数

    我想计算precision recall and f score using libsvm在Python中 但我不知道如何 我已经发现这个网站 http www csie ntu edu tw cjlin libsvmtools eval
  • 不使用 graphviz/web 可视化决策树

    由于某些限制 我无法使用 graphviz webgraphviz com 可视化决策树 工作网络与另一个世界是封闭的 问题 是否有一些替代实用程序或一些 Python 代码用于至少非常简单的可视化可能只是决策树的 ASCII 可视化 py
  • 如何向 scikit-learn KD 树添加/删除数据点?

    我想知道是否可以在创建 scikit learn KDTree 实例后添加或删除数据点 例如 from sklearn neighbors import KDTree import numpy as np X np array 1 1 2
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 在具有不平衡数据的管道中进行交叉验证的正确方法

    对于给定的不平衡数据 我创建了一种不同的标准化管道和一种热编码 numeric transformer Pipeline steps scaler StandardScaler categorical transformer Pipelin
  • sklearn ShuffleSplit 出现“__init__() 获得参数 'n_splits' 的多个值”错误

    我正进入 状态 init 获得参数 n splits 的多个值 该行的错误 cv ShuffleSplit n splits 10 test size 0 2 random state 0 在下面的代码中 import matplotlib
  • 对象检测 ARKit 与 CoreML

    我正在建设ARKitiPhone 的应用程序 我需要检测特定的香水瓶并根据检测到的内容显示内容 我使用来自developer apple com的演示应用程序来扫描现实世界的对象并导出 arobject我可以在资产中使用的文件 它工作正常
  • 如何在 Detectron2 中计算并集交集?

    我正在使用 Detectron2 进行对象检测 我已经注册了 pascalvoc 数据集并训练了一个检测模型 如何计算测试数据集的平均 IOU 我知道 detector2 有一个用于计算 IOU 的预定义函数 即 detectorron2
  • 辍学训练

    如何对由 dropout 产生的许多薄层进行平均 在测试阶段要使用哪些重量 我对这个问题真的很困惑 因为每个细化层都会学习一组不同的权重 那么反向传播是为每个稀疏网络单独完成的吗 这些细化网络之间的权重究竟是如何共享的 因为在测试时仅使用一
  • scikit-learn 适合大数据任务吗?

    我正在研究一项涉及使用机器学习技术的 TREC 任务 其中数据集由超过 5 TB 的 Web 文档组成 计划从中提取词袋向量 scikit learn有一组不错的功能似乎可以满足我的需求 但我不知道它是否能够很好地扩展以处理大数据 例如 是

随机推荐

  • 如何通过 Qt WebGL 流向多个用户提供 Qt 应用程序?

    Qt Quick WebGL 流媒体 https www qt io blog 2018 11 23 qt quick webgl release 512是一种技术 任何 Qt Quick QML 应用程序都可以向通过 Web 浏览器连接的
  • 如何在 MongoDB 中启用数据压缩

    在 MongoDB 中 WiredTiger 提供了 Zlib 压缩选项 为了启用 Zlib 压缩选项 我使用以下代码创建了一个集合 db createCollection questions storageEngine wiredTige
  • 错误:WebhookClient.handleRequest 上没有请求意图的处理程序

    调用云函数的默认意图会出现错误 Error No handler for requested intent at WebhookClient handleRequest user code node modules dialogflow f
  • Powershell Get-ChildItem 进度问题

    所以 我在一个文件夹中有一组目录 00 99 每个目录都有 100 个子目录 00 99 每个子目录都有数千张图像 我想做的基本上是在计算平均文件大小时获得进度报告 但我无法让它发挥作用 这是我当前的查询 get childitem
  • 有没有办法更新工作项的“部署”部分?

    有谁知道更新工作项的 部署 部分的方法 我还没有找到任何可以执行此操作的任务的工作示例 cli 命令或 API 调用 这似乎是Azure DevOps Releases产品的独有功能 但我希望能够使用多阶段 YAML 管道来实现类似的东西
  • 在 Python 中定义带有可选参数的类

    class class1 def setdata self value1 value2 self data value1 value2 def display self print self data 对于上面的代码 当我使用它的时候 它需
  • C# - SqlDataReader 和序列化

    SqlDataReader 可以传递到会话或发送到客户端吗 例如 如果我从数据库中检索了一些行 并希望将此数据发送到另一台客户端计算机 我可以简单地通过在服务器上使用 json 序列化它然后在客户端上反序列化来完成此操作吗 不 只有数据 没
  • 在没有 epmd 的情况下启动 erlang VM

    我正在尝试与 erlang 虚拟机分开启动 epmd 以便对连接处理进行监控 这工作得很好 除了虚拟机在 epmd 之前启动的情况 有没有办法让 erlang 虚拟机启动而不自行启动 epmd 从 Erlang OTP 19 0 开始 有a
  • getPathValue() 函数用于具有数组和打包 JSON 的深层对象

    有关背景 请参考这个问题 访问嵌入式 JSON 的深层对象成员 https stackoverflow com q 53819904 3566998 那里提供的解决方案与键值中包含的打包 JSON 配合得很好 但是 它们不处理 JSON 具
  • 从静态方法获取应用程序实例

    在 Android 中使用静态方法获取应用程序继承者的实例是否正确 我在一些开源项目中看到过这种方法 VLC https github com mstorsjo vlc android blob master vlc android src
  • 如何在 Docker 镜像中安装 grails?

    我正在致力于将基于 grails 构建的现有应用程序容器化 我已经能够在一段时间内成功构建该项目debian stretch图像 是的 我知道那很旧 但该项目最初是用几乎所有内容的旧版本构建的 gradle maven and defaul
  • Java NIO 窗口实现

    在使用 NIO 2 AIO 功能进行项目时 我查看了 旧的 NIO 选择器实现 发现在 Windows 上使用了默认的选择函数 由于内部实现不良 该函数在 Windows 上根本无法扩展 大家都知道 在 Windows 上 IOCP 是唯一
  • 将 App 与 Epub 格式关联

    我无法让我的应用程序在移动设备上注册 epub 文件 我的 android 清单中有一组意图过滤器 但它仍然无法使用 sd 卡上的 epub 文件打开 当我经过File Explorer应用程序 它显示该文件 但是当我单击它时 它显示 系统
  • RxJS 新手,范围不是函数

    我正在尝试创建一个简单的 TypeScript 文件来使用 RxJS 这是我所做的 npm 安装 rxjs 引用 跟踪器和系统js 在我的 索引 html 并创建了一个 test ts 文件如下 import Observable from
  • C 字符串比较与哈希比较

    我需要将一个字符串与 c 中的多个其他常量字符串进行比较 我很好奇哪个更快 对我要比较的字符串进行散列并将其与所有其他常量字符串散列进行比较 或者只是将字符串作为字符串进行比较 先感谢您 谢谢你的回答 我会做很多比较 谁能给我一个好的 快速
  • 价值迟到? “下面的值是刚刚评估的”

    let currComp this let projects let dataArr async function getData let getProject await axios get url auth username usern
  • 在ios中对简单字符串进行QRCode编码

    我已经从下载了示例代码github https github com myang git QR Code Encoder for Objective C用于 QRCode 编码 它工作正常 并为我指定的字符串生成带有 QRCode 的图像
  • 生成圆内的随机点(均匀)

    我需要在半径圆内生成均匀随机点R 我意识到 只需在区间 0 2 中选择均匀随机的角度 并在区间 0 2 中选择均匀随机的半径即可 R 我最终会得到更多朝向中心的点 因为对于两个给定的半径 较小半径中的点将比较大半径中的点彼此更接近 I fo
  • send_file 结束后清理 /tmp

    我有一个Redmine插件 我在 tmp 中创建一个临时文件 然后使用 File open 发送它 我想在用户下载临时文件后删除它 我能怎么做 我的代码 在控制器中 File open filelocation r do file send
  • 如何知道 scikit-learn 混淆矩阵标签顺序并更改它

    存在 27 个类别的多分类问题 y predict 0 0 0 20 26 21 21 26 y true 1 10 10 20 26 21 18 26 名为 answer vocabulary 的列表存储了每个索引对应的 27 个单词 a