StatsModels的predict函数如何与scikit-learn的roc_auc_score交互?

2024-01-05

我正在尝试理解predictPython statsmodels 中用于 Logit 模型的函数。它的文档是here https://www.statsmodels.org/stable/generated/statsmodels.discrete.discrete_model.LogitResults.predict.html.

当我构建 Logit 模型并使用predict,它返回从 0 到 1 的值,而不是 0 或 1。现在我读到这句话说这些是概率,我们需要一个阈值。Python statsmodel.api 逻辑回归 (Logit) https://stackoverflow.com/questions/26528019/python-statsmodel-api-logistic-regression-logit

现在,我想生成 AUC 数字,我使用roc_auc_score来自 sklearn (docs https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html).

这是我开始感到困惑的时候。

  1. 当我将 Logit 模型中的原始预测值(概率)放入roc_auc_score作为第二个参数y_score,我得到的合理 AUC 值约为 80%。如何roc_auc_score函数知道我的哪个概率等于 1,哪个概率等于 0?我没有机会设定门槛。
  2. 当我使用 0.5 的阈值手动将概率转换为 0 或 1 时,我得到的 AUC 约为 50%。为什么会出现这种情况呢?

这是一些代码:

m1_result = m1.fit(disp = False)

roc_auc_score(y, m1_result.predict(X1))

AUC: 0.80

roc_auc_score(y, [1 if X >=0.5 else 0 for X in m1_result.predict(X1)])

AUC: 0.50

为什么会这样呢?


你计算 AUC 的第二种方法是错误的;根据定义,AUC 需要概率,而不是阈值处理后生成的硬类预测 0/1,如您在此处所做的那样。所以,你的 AUC 是 0.80。

您在AUC计算中不自行设定阈值;粗略地说,正如我所解释的别处 https://stackoverflow.com/questions/47104129/getting-a-low-roc-auc-score-but-a-high-accuracy/47111246#47111246,AUC 衡量二元分类器的性能对所有可能的决策阈值进行平均.

如果在这里再次解释 AUC 计算的基本原理和细节就显得有些过分了;相反,这些其他 SE 线程(以及其中的链接)将帮助您了解这个想法:

  • 在分类中,测试准确率和 AUC 分数有什么区别? https://stackoverflow.com/questions/60905517/in-classification-what-is-the-difference-between-the-test-accuracy-and-the-auc
  • AUC 与标准准确度的优点 https://datascience.stackexchange.com/questions/806/advantages-of-auc-vs-standard-accuracy
  • ROC AUC 分数较低但准确率较高 https://stackoverflow.com/questions/47104129/getting-a-low-roc-auc-score-but-a-high-accuracy
  • 比较模型之间的 AUC、对数损失和准确度分数 https://stackoverflow.com/questions/58610117/comparing-auc-log-loss-and-accuracy-scores-between-models
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

StatsModels的predict函数如何与scikit-learn的roc_auc_score交互? 的相关文章

  • 为什么 scikit learn 的平均精度分数返回 nan?

    我的 Keras 模型旨在接收两个输入时间序列 将它们连接起来 通过 LSTM 提供它们 并在下一个时间步骤中进行多标签预测 有 50 个训练样本 每个样本有 24 个时间步 每个样本有 5625 个标签 有 12 个验证样本 每个样本有
  • 没有名为 pandas_datareader 的模块

    我刚刚安装了pandas datareader using pip install pandas datareader运行成功 现在我尝试将它用于教程 当我尝试导入时出现此错误 import pandas datareader as pdr
  • Discord-py Rewrite - Cog 中的基本 aiohttp Web 服务器

    我正在尝试将基本的 aiohttp 网络服务器集成到 Cog 中 使用 discord py 重写 我对齿轮使用以下代码 from aiohttp import web import discord from discord ext imp
  • Kubernetes Python 客户端连接问题

    我已经设置了官方 Kubernetes Python 客户端 https github com kubernetes client python https github com kubernetes client python 我正在运行
  • 使用 xlwings 排序(pywin32)

    我需要使用 python 按给定行对 Excel 电子表格进行排序 为了进行测试 我使用以下数据 在名为 xlwings sorting xlsx 的文件中 Numbers Letters Letters 2 7 A L 6 B K 5 C
  • 使用 imaplib 库连接到电子邮件时遇到 AUTHENTICATIONFAILED 错误

    如何连接到 imaplib 库而不遇到 AUTHENTICATIONFAILE 错误 通过网络浏览器登录时 我的 Gmail 收件箱显示严重的安全警报 登录尝试被阻止 IMAP SERVER imap gmail com USERNAME
  • 避免 Python 3 的多处理队列中的竞争条件

    我正在尝试找到大约 61 亿 自定义 物品的最大重量 并且我想通过并行处理来完成此操作 对于我的特定应用程序 有更好的算法不需要我迭代超过 61 亿个项目 但解释它们的教科书超出了我的能力范围 我的老板希望在 4 天内完成此任务 我认为我公
  • 在unittest.main()之后执行命令

    我从另一个 Python 脚本调用以下脚本 测试 py 日志文件 它应该运行测试并将结果保存在日志文件中 但由于某种原因 之后的命令unittest main testRunner runner 没有被执行 我什至不确定文件写入后是否会关闭
  • 除下一行的值并在数据框中创建列

    我有一个像这样的csv id value 1 100 1 150 1 200 1 250 2 300 2 350 2 400 2 450 我想根据每个唯一 ID 的值生成一列 例如 id 1 的前 2 行值为 100 150 我正在尝试创建
  • ValueError:未知标签类型:“连续”

    我看过其他帖子讨论过这个问题 但其中任何一个都可以帮助我 我在 Windows x6 机器上使用带有 Python 3 6 0 的 jupyter 笔记本 我有一个很大的数据集 但我只保留其中的一部分来运行我的模型 这是我使用的一段代码 d
  • 如何在sklearn决策树中显示特征名称?

    我目前有一个决策树 将功能名称显示为X index i e X 0 X 1 X 2 etc from sklearn import tree from sklearn tree import DecisionTreeClassifier d
  • Selenium Python Firefox webdriver:无法修改配置文件

    我想在 Webdriver Firefox 实例上使用 新选项卡而不是窗口 选项 1 我创建了一个启用此选项的配置文件 但是当我使用该配置文件时 很多选项都可以 但不是这个 2 加载配置文件后 我尝试更改代码中的选项 但它不起作用 我的代码
  • 互补DNA序列

    我在编写这个循环时遇到问题 它似乎在第二个序列之后停止了 我想返回给定 DNA 序列的互补 DNA 序列 例如 AGATTC gt TCTAAG 其中 A T 和 C G def get complementary sequence dna
  • 现在与出生日期之间的年、月、日、分钟差异

    import datetime birthday datetime datetime 1996 8 15 differnce datetime datetime now birthday This returns a timedelta o
  • 如何在 Django Admin 的“更改”页面中显示内嵌上传的图像?

    我正在尝试在中显示内联上传的图像 变更列表 页面在 Django 管理中 这是我的代码如下 models py from django db import models class Product models Model name mod
  • 如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

    Scikit learn 具有相当用户友好的用于机器学习的 python 模块 我正在尝试训练用于自然语言处理 NLP 的 SVM 标记器 其中我的标签和输入数据是单词和注释 例如 词性标记 而不是使用双精度 整数数据作为输入元组 1 2
  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P
  • 如何在Python中获取声音级别?

    对于我正在进行的项目 我需要获取麦克风的实时分贝级别 我见过阴谋家 Print out realtime audio volume as ascii bars import sounddevice as sd import numpy as
  • pandas 在单元格中缩写字典

    我有一个相当复杂的嵌套字典 它使用 pandas 很好地打印为 html 但是 有一个字典作为打印在单元格中的值之一 如下所示 pd set option display max colwidth 1 已设置 所以这不应该是问题 这是产生问
  • 无法使用 BeautifulSoup4 (Python 3) 抓取特定表

    我想从 Ligue 1 足球网站上抓取一张表格 具体来说 该表包含有关卡片和裁判的信息 http www ligue1 com LFPStats stats arbitre competition D1 http www ligue1 co

随机推荐

  • 组合两个聚合源

    有什么简单的组合方法feed and feed2 我想要的物品来自feed2要添加到feed 我也想避免重复feed当问题同时使用 WPF 和 Silverlight 标记时 可能已经有项目 Uri feedUri new Uri http
  • php+curl无法设置post方法

    我尝试使用 php 和curl 发出发布请求 这是我的代码 PHP 5 3 5 and curl 7 18 2 ch curl init if empty save cookie curl setopt ch CURLOPT COOKIEJ
  • Vuetify 多个 v-select 所需规则不起作用

    重现步骤 如果它的多个选择所需的规则不起作用 如果它不是多个也可以 预期行为 规则也适用于多重选择 实际行为 如果是多重选择 则规则不起作用 复制代码 div div
  • Json.NET - 控制类对象属性反序列化

    我有一个模特班Link它是用 JSON Net 反序列化的 public class Link JsonConstructor internal Link int id Id id public int Id get internal se
  • 迭代 std::set/std::map 的时间复杂度是多少?

    迭代一次的时间复杂度是多少std set std multiset std map std multimap 我相信它与集合 地图的大小是线性的 但不太确定 语言标准中有规定吗 在C 11工作草案中 可以找到答案 迭代器 要求 一般 p8
  • Visual Studio 2017 扩展开发

    您好 我想将我的扩展升级到 Visual Studio 2017 但我得到了Microsoft VisualStudio Shell RegistrationAttribute错误 但我已经添加了此引用 我在编译时收到此错误 是否有任何参考
  • JNI:拦截本机方法输出

    目前我正在开发一个项目 我需要拦截java本机方法调用的结果以进行进一步分析 有多种方法可以实现这一点 但我选择的方法是 在本机绑定时 将 java 本机方法的地址重新绑定到我自己的包装函数的地址 该函数将自行调用初始本机函数 然后返回其结
  • 将ListView的文本设置在中心 - android

    我尝试在中设置 ListView 的文本center的布局 我使用 LinearLayout 并设置重力 中心 但它总是显示在left 这是布局
  • GKE主节点

    在GKE中 当我们创建节点时 会有一个master节点 同时会创建很多worker节点 我怀疑主节点是我们创建的 提到的副本 还是GKE单独创建的主节点 gke 集群形成的拓扑结构 例如网状 星形 是什么 在 GKE 中 如果您创建一个标准
  • 将 freetype 位图复制到 opengl 纹理时出现问题

    我正在尝试生成字符的所有位图 to 并将它们添加到一个长纹理中 我打算将它们放置在固定宽度的纹理中 但现在我只想确保这个概念可行 But I am having problems Instead of getting the expecte
  • 在移动 Safari 中按 Tab 键浏览输入字段会使浏览器跳转

    有没有办法既能专注于球场 又不会出现这种不和谐的动画 当键盘可见时 这种行为尤其糟糕 Demo http plnkr co edit 9OydOFO0KUeKuaH8u70A p info http plnkr co edit 9OydOF
  • 设置graphql的最大文件上传大小(golang)

    我用 golang 编写了一个服务器 可以使用多部分形式将文件上传到该服务器 我想扩大最大上传大小 在我正在使用的实现的文档站点上 我发现了以下内容 上传最大尺寸 此选项指定用于将请求正文解析为 multipart form data 的最
  • 在显式结构中相互覆盖多个 CLR 引用字段?

    Edit 我很清楚这对于值类型非常有效 我的具体问题是关于将其用于引用类型 Edit2 我还知道您不能在结构中覆盖引用类型和值类型 这仅适用于相互覆盖多个引用类型字段的情况 我一直在修改 NET C 中的结构 我刚刚发现你可以这样做 usi
  • 确定代码圈复杂度的最佳工具[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • DataContractSerialiser 和 Serialized 的问题

    我有一些来自 Net 2 0 程序集的类 这些类被标记为可序列化 在我的项目中 我在我的 Classes 中使用这些类 它们标记有 DataContract IsReference true 和 DataMember 现在我遇到了问题 Da
  • 因为文档的框架是沙盒的并且未设置“允许脚本”权限

    我编写了一个程序 生成一个带有以下标头的 html 文件 但我没有iframe根本没有 更不用说在沙箱里了 当我在浏览器 托管在 Jenkins 服务器上 中打开页面时 我看不到 css 这些是错误 安全策略 我看过一些关于堆栈溢出的帖子
  • manifestPlaceholders 值不是字符串

    在我的 AndroidManifest xml 文件中 我有以下应动态填充的元数据标记
  • Redux Provider 不传递 Props/State

    我使用 create react app 创建了一个 React 应用程序 并向其中添加了 Redux 添加后
  • 为什么 wget 忽略 URL 中的查询字符串?

    我想使用wget下载以下18个HTML文件 http www ted com talks quick list sort date order desc page 18 http www ted com talks quick list s
  • StatsModels的predict函数如何与scikit-learn的roc_auc_score交互?

    我正在尝试理解predictPython statsmodels 中用于 Logit 模型的函数 它的文档是here https www statsmodels org stable generated statsmodels discre