如何正确手动重新创建 sklearn (python) 逻辑回归 Predict_proba 结果以进行多重分类

2023-11-30

如果我运行 4 个类的基本逻辑回归,我可以获得 Predict_proba 数组。

如何使用系数和截距手动计算概率?获得与 Predict_proba 生成的相同答案的确切步骤是什么?

网上似乎有很多关于此的问题和一些建议,这些建议要么不完整,要么不匹配。

例如,我无法从我的 sklearn 模型复制这个过程,那么缺少什么?

https://stats.idre.ucla.edu/stata/code/manually-generate-predicted-probabilities-from-a-multinomial-logistic-regression-in-stata/

Thanks,


因为我有同样的问题,但找不到给出相同结果的答案,所以我查看了sklearn GitHub 存储库寻找答案。使用他们自己的包中的函数,我能够创建与我得到的相同的结果predict_proba().

看来 sklearn 使用了一种特殊的softmax()其代码中的函数与通常的 softmax 函数不同。

假设您构建了一个如下所示的模型:

from sklearn.linear_model import LogisticRegression

X = ...
Y = ...
model = LogisticRegression(multi_class="multinomial", solver="saga")
model.fit(X, Y)

然后你可以计算概率model.predict(X)或者使用上面提到的 sklearn 函数来手动计算它们,如下所示。

from sklearn.utils.extmath import softmax, 
import numpy as np

scores = np.dot(X, model.coef_.T) + model.intercept_
softmax(scores)  # Sklearn implementation

在自己的文档中softmax()函数,他们注意到

softmax 函数的计算方式为

np.exp(X) / np.sum(np.exp(X),轴=1)

当大值求幂时,这将导致溢出。因此 从每个数据点中减去每行中的最大值 防止这种情况发生。

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

如何正确手动重新创建 sklearn (python) 逻辑回归 Predict_proba 结果以进行多重分类 的相关文章

随机推荐

  • 大数的质因数分解[关闭]

    Closed 这个问题是无关 目前不接受答案 我想求小于10 12的大数的质因数分解 我得到了这个代码 用java public static List
  • 类工厂方法实现

    因此 我正在研究 Objective C 的 Apple 文档 在开始 iphone 开发之前 其中一项练习指出 我应该创建一个指定的初始值设定项 具有 3 个参数 和合适的工厂方法 现在我根据我的理解这样做了 但我无法实现工厂方法 因为我
  • 以编程方式清除 Android 上 PhoneGap/Cordova 应用程序的缓存以模拟全新安装?

    这与我之前的问题有关 每次安装应用程序时 如何清除 Android 模拟器上应用程序的 localStorage 它还建立在 如何清除 Android 应用程序缓存 and 如何以编程方式清除应用程序数据 上述问题都没有给出适用于 Andr
  • 新线程的异步等待行为

    我试图理解 async await 的精确行为 但在理解它时遇到了一些麻烦 考虑这个例子 public async void StartThread while true SomeOtherClass SomeSynchronousStuf
  • win 秒更新后 MS-access 无法捕获树视图事件

    使用 TreeView MSComctlLib TreeCtrl 2 的 Access 2010 应用程序按预期显示和填充 但在 Windows 安全补丁之后突然不会将事件触发回 VBA 尝试回滚 syswow64 中的 MSCOMCTL
  • 获取远程PC的日期时间?

    是否有任何类可用于获取 net 中远程 PC 的日期时间 为此 我可以使用计算机名称或时区 对于每种情况 是否有不同的方法来获取当前日期时间 我使用的是 Visual Studio 2005 我给你一个解决方案 使用WMI 您可能需要也可能
  • 如何使用请求模块下载,然后上传文件而无需中间文件

    我想先下载一个图像文件到服务器 然后将该文件上传到其他服务器 如果没有download file step 这将非常简单 var fs require fs var path tmp test png var formData method
  • 带 bo​​otstrap.css 的 webpack 不起作用

    这是我的webpack config js file var ExtractTextPlugin require extract text webpack plugin webpack require webpack module expo
  • 括号可以使用任意标识符作为参数吗? C++

    例如 是 const int someInt 有效代码 如果是这样 该声明与 const int someInt 您可以在两边放置任意多个括号表达式而不改变含义 但你不能对类型做同样的事情 特别是 正如其他人指出的那样 代码中的括号将含义从
  • 在 R 中创建地形图

    我正在尝试创建一个脚本 该脚本将为给定的一组坐标生成二维地形或等高线图 我的目标类似于 contour volcano 但对于用户设置的任何位置 事实证明 这具有惊人的挑战性 我努力了 library elevatr library tid
  • 我可以使用 Order By 和 ToLower 对 DocumentDB 执行不区分大小写的字符串排序吗?

    我想按标题的字母顺序对 DocumentDB 集合中的记录进行排序 起初我认为这是有效的 SELECT c Title FROM c ORDER BY c Title 但正如预期的那样 这会将小写字母排在大写字母之后 我希望我的搜索不区分大
  • android:对话框或弹出窗口内的webview

    如何在对话框或弹出窗口中添加 Web 视图 我的网络视图保留 URL WebView loadurl 当视图添加到对话框内时 它仍然移动到浏览器 我去过android 在对话框中加载webview但没有例子说明如何做吗 谢谢 这是示例 Al
  • 适用于 Java 8 的 Tomcat 8 Maven 插件

    Is the tomcat7 maven plugin使用 tomcat 8 服务器和 java 8 我找不到任何tomcat8 maven plugin 是的你可以 In your pom xml 添加tomcat插件 您可以将其用于 T
  • 是否可以防止 TeamCity 中的构建链被中断?

    我在 TeamCity 7 1 3 中进行了以下设置 项目A 构建和部署 A 测试 A 快速 测试 A 慢速 测试 A 非常慢 项目B 构建和部署 B 测试 B 快速 测试 B 慢速 A 的所有测试都依赖于 构建和部署 A B 的所有测试都
  • printf C 中十六进制值的最后一个字节

    我有一个简单的问题 代码非常短 所以我只是将其发布在这里 include
  • 动态设置 ui-sref Angularjs 的值

    我搜索过类似的问题 但出现的问题似乎略有不同 我正在尝试动态更改链接的 ui sref 此链接指向向导表单的下一部分 下一部分取决于下拉列表中所做的选择 我只是想根据选择框中的某些选择来设置 ui sref 属性 我可以通过绑定到在进行选择
  • 如何防止gcc优化破坏rep movsb代码? [复制]

    这个问题在这里已经有答案了 我尝试使用以下命令创建我的 memcpy 代码rep movsb操作说明 当禁用优化时 它可以完美地适应任何尺寸 但是 当我启用优化时 它无法按预期工作 问题 如何防止gcc优化破坏rep movsb代码 我的代
  • 使用 Ruby 驱动程序的 MongoDB Group

    我正在尝试带回一个包含用于描述博客文章的计数的年 月组合列表 我们的想法是 它们将像这样显示 2010 年 1 月 1 篇文章 2009 年 12 月 2 个职位 我已经设法使用 MongoDB JS shell 让它工作 并且它以有用的格
  • PHP-PDO从数据库获取元数据

    我想从带有 朋友 表的数据库中获取元数据 id name 1 Herbert 2 LG 3 Levins 这是我试图获取数据的代码
  • 如何正确手动重新创建 sklearn (python) 逻辑回归 Predict_proba 结果以进行多重分类

    如果我运行 4 个类的基本逻辑回归 我可以获得 Predict proba 数组 如何使用系数和截距手动计算概率 获得与 Predict proba 生成的相同答案的确切步骤是什么 网上似乎有很多关于此的问题和一些建议 这些建议要么不完整