Scikit 学习如何打印混淆矩阵标签?

2024-02-07

所以我使用 sci-kit learn 对一些数据进行分类。我有 13 个不同的类值/类别来对数据进行分类。现在我已经能够使用交叉验证并打印混淆矩阵。但是,它只显示 TP 和 FP 等,没有类标签,所以我不知道哪个类是什么。下面是我的代码和输出:

def classify_data(df, feature_cols, file):
    nbr_folds = 5
    RANDOM_STATE = 0
    attributes = df.loc[:, feature_cols]  # Also known as x
    class_label = df['task']  # Class label, also known as y.
    file.write("\nFeatures used: ")
    for feature in feature_cols:
        file.write(feature + ",")
    print("Features used", feature_cols)

    sampler = RandomOverSampler(random_state=RANDOM_STATE)
    print("RandomForest")
    file.write("\nRandomForest")
    rfc = RandomForestClassifier(max_depth=2, random_state=RANDOM_STATE)
    pipeline = make_pipeline(sampler, rfc)
    class_label_predicted = cross_val_predict(pipeline, attributes, class_label, cv=nbr_folds)
    conf_mat = confusion_matrix(class_label, class_label_predicted)
    print(conf_mat)
    accuracy = accuracy_score(class_label, class_label_predicted)
    print("Rows classified: " + str(len(class_label_predicted)))
    print("Accuracy: {0:.3f}%\n".format(accuracy * 100))
    file.write("\nClassifier settings:" + str(pipeline) + "\n")
    file.write("\nRows classified: " + str(len(class_label_predicted)))
    file.write("\nAccuracy: {0:.3f}%\n".format(accuracy * 100))
    file.writelines('\t'.join(str(j) for j in i) + '\n' for i in conf_mat)

#Output
Rows classified: 23504
Accuracy: 17.925%
0   372 46  88  5   73  0   536 44  317 0   200 127
0   501 29  85  0   136 0   655 9   154 0   172 67
0   97  141 78  1   56  0   336 37  429 0   435 198
0   135 74  416 5   37  0   507 19  323 0   128 164
0   247 72  145 12  64  0   424 21  296 0   304 223
0   190 41  36  0   178 0   984 29  196 0   111 43
0   218 13  71  7   52  0   917 139 177 0   111 103
0   215 30  84  3   71  0   1175    11  55  0   102 62
0   257 55  156 1   13  0   322 184 463 0   197 160
0   188 36  104 2   34  0   313 99  827 0   69  136
0   281 80  111 22  16  0   494 19  261 0   313 211
0   207 66  87  18  58  0   489 23  157 0   464 239
0   113 114 44  6   51  0   389 30  408 0   338 315

正如您所看到的,您无法真正知道哪一列是什么,并且打印也“未对齐”,因此很难理解。

有没有办法也打印标签?


来自doc http://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html,似乎没有这样的选项来打印混淆矩阵的行和列标签。但是,您可以使用参数指定标签顺序labels=...

Example:

from sklearn.metrics import confusion_matrix

y_true = ['yes','yes','yes','no','no','no']
y_pred = ['yes','no','no','no','no','no']
print(confusion_matrix(y_true, y_pred))
# Output:
# [[3 0]
#  [2 1]]
print(confusion_matrix(y_true, y_pred, labels=['yes', 'no']))
# Output:
# [[1 2]
#  [0 3]]

如果你想打印带有标签的混淆矩阵,你可以尝试pandas并设置index and columns of the DataFrame.

import pandas as pd
cmtx = pd.DataFrame(
    confusion_matrix(y_true, y_pred, labels=['yes', 'no']), 
    index=['true:yes', 'true:no'], 
    columns=['pred:yes', 'pred:no']
)
print(cmtx)
# Output:
#           pred:yes  pred:no
# true:yes         1        2
# true:no          0        3

Or

unique_label = np.unique([y_true, y_pred])
cmtx = pd.DataFrame(
    confusion_matrix(y_true, y_pred, labels=unique_label), 
    index=['true:{:}'.format(x) for x in unique_label], 
    columns=['pred:{:}'.format(x) for x in unique_label]
)
print(cmtx)
# Output:
#           pred:no  pred:yes
# true:no         3         0
# true:yes        2         1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scikit 学习如何打印混淆矩阵标签? 的相关文章

  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 在谷歌C​​olab中使用cv2.imshow()

    我正在尝试通过输入视频来对视频进行对象检测 cap cv2 VideoCapture video3 mp4 在处理部分之后 我想使用实时对象检测来显示视频 while True ret image np cap read Expand di
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu

随机推荐

  • 如何制作便携式 Jupyter 幻灯片

    如何使 Jupyter 幻灯片放映变得便携 我可以在本地提供幻灯片放映 但我无法将其发送给任何人并让它与所有图像 幻灯片动画功能等一起使用 我在用jupyter nbconver my notebook ipynb to slides并获取
  • IE 6 与位置:固定

    位置 已修复 不适用于 Internet Explorer 6 我无法真正理解在 google 上找到的修复程序 我需要它在 IE6 IE7 IE8 和 FireFox 3 0 中工作
  • 在react-admin中自动完成带有两个字段的输入?

    我正在使用react admin创建一个网站 并使用以下代码创建一个包含id和描述的AutocompleteInput 以便您可以搜索两者并且它会过滤选项 const choices number 102 description Furni
  • iPhone:如何获取iPhone上所有通讯录的名称?

    一些用户的 iPhone 通讯录中有多个地址簿 这是由于他们与例如联系人建立的不同同步连接造成的 交换服务器 如何获得所有这些不同的地址簿 我有兴趣获取保存这些不同地址簿的名称并访问他们的联系信息 谢谢你 ABAddressBookRef
  • 使用 Stripe 的 Apple Pay 将令牌发送到服务器并收取购买费用

    我在用Apple Pay在我的 iPhone 应用程序中与支付提供商Stripe 我使用 test key 实现了 Apple Pay 它返回令牌并获取PKPaymentAuthorizationStatusSuccess在模拟器中 事实上
  • SQL Server 事务表是否应该始终具有代理主键

    对于已经有主键 4列的自然组合键 的大型事务表 1亿行 20GB 添加标识列并将其作为主键是否有助于性能 当前主键 4 列的自然复合主键 可以完成这项工作 但我被告知您应该始终有一个代理键 那么 可以通过创建标识列并将其设为主键来提高性能吗
  • 在一台机器上运行多个版本的.net

    我对 net 的各个版本很好奇 我们有一个开发各种版本 1 1 和 2 0 应用程序的环境 现在 我正在尝试在 3 5 中进行开发 最大的问题是这些版本是否能够在同一 IIS 安装上很好地协同工作 另一个需要注意的是 我正在使用 Visua
  • 如何存根仍然需要从 RSpec 中的数据库加载的对象?

    我想检查一个对象的关联是否收到某个方法调用 问题是我可以存根对象的关联 但是当稍后从数据库加载关联时 加载的对象与我的存根对象不是同一个 物理 对象 它具有相同的 ID 但它不是相同的 物理 对象 因此存根不再起作用 我目前拥有的是 并且这
  • C 中“tail -f”功能的自定义实现

    EDIT 我最后使用了inotify 正如 stefanB 所说 inotify 是最适合使用的东西 我发现了一个尾部克隆 它使用inotify来实现 f模式 inotail http distanz ch inotail 问题原文 我正在
  • 如何下载 Cassini 网络服务器源代码?

    如何下载 Cassini 网络服务器源代码 MSDN 说它可以在http www asp net Projects Cassini Download http www asp net Projects Cassini Download 但这
  • 房间多表同一个对象(多语言数据库)

    我正在开发一个 android 项目 该项目必须在本地数据库 房间 中存储一些数据 我必须提供的功能之一是以不同语言将数据存储在本地数据库中 例如 如果我有食物信息 则该信息必须以英语 德语 法语等存储 我的数据库的结构是这样的 Entit
  • 将父范围值传递到 Angular 中的 ng-repeat 循环中

    这应该是一个非常简单的问题 但我发现的所有解决方法都很复杂 我在模板中使用 ng repeat 循环遍历对象数组 如下所示 div class row fluid message subject campaign name div 由于 n
  • CakePHP 与 Google 的 OAuth

    我想在我的 cakePHP 应用程序中使用 Google OAuth 让用户使用他们的 google 帐户登录 我查看了以下组件 http code 42dh com oauth http code 42dh com oauth 不知怎的
  • 适用于 Android 的 VoIP 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在我的 Android 应用程序中集成 VoIP 服务 有没有免费的 最好的开源 库 我需要图书馆至少允许通过互联网进行语音通话 而
  • 重写 Android 方法时,Eclipse 插入 arg0、arg1 等而不是正确的参数名称

    当我在 Eclipse 中重写 Android 类的方法时 我得到无用的参数名称 如 arg0 arg1 等 例如 当重写来自SQLiteOpenHelper I get Override public void onCreate SQLi
  • 如何防止浏览器标题中出现 blob + guid

    基本上 我正在做的是在服务器上生成一个 PDF 文件并通过 javascript 在浏览器中显示它 如下所示 file new window Blob data type application pdf var fileUrl URL cr
  • Safari 添加尾部斜杠

    我有一个 ASP NET 网站 它使用 URLRewrite 2 删除 URL 中的尾部斜杠 我们注意到 Mac 上的 Safari 不遵守此规则 它始终在 URL 中留下尾部斜杠 SEO Moz 显示两个 URL 这似乎是潜在的重复内容问
  • 为什么不再有 PECL 扩展(例如 pecl_http)的 Windows 二进制文件?

    我正在开发一个在 Windows 上运行的 PHP 项目 能够使用 pecl http 而不是使用 cURL 并重新发明轮子来完成 pecl 扩展所做的所有很酷的事情 例如解析标头 会非常方便等等 我在所有地方 包括 PHP 站点 都读到
  • Kafka简单消费者间歇性丢失消息

    我有一个 Kafka 应用程序 我一直在其中使用 kafka console consumer sh 消费消息 如下所示 kafka console consumer sh zookeeper zookeeperhost 2181 topi
  • Scikit 学习如何打印混淆矩阵标签?

    所以我使用 sci kit learn 对一些数据进行分类 我有 13 个不同的类值 类别来对数据进行分类 现在我已经能够使用交叉验证并打印混淆矩阵 但是 它只显示 TP 和 FP 等 没有类标签 所以我不知道哪个类是什么 下面是我的代码和