如何从 LogisticRegressionCV 和 GridSearchCV 获得可比较且可重复的结果

2024-01-22

我想用不同的参数对不同的分类器进行评分。

为了加速LogisticRegression I use LogisticRegressionCV(至少快 2 倍)并计划使用GridSearchCV为他人。

但问题是它给了我平等C参数,但不是AUC ROC得分。

我会尝试修复许多参数,例如scorer, random_state, solver, max_iter, tol... 请看例子(真实数据无所谓):

测试数据及公共部分:

from sklearn import datasets
boston = datasets.load_boston()
X = boston.data
y = boston.target
y[y <= y.mean()] = 0; y[y > 0] = 1

import numpy as np
from sklearn.cross_validation import KFold
from sklearn.linear_model import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.linear_model import LogisticRegressionCV

fold = KFold(len(y), n_folds=5, shuffle=True, random_state=777)

网格搜索简历

grid = {
    'C': np.power(10.0, np.arange(-10, 10))
     , 'solver': ['newton-cg']
}
clf = LogisticRegression(penalty='l2', random_state=777, max_iter=10000, tol=10)
gs = GridSearchCV(clf, grid, scoring='roc_auc', cv=fold)
gs.fit(X, y)

print ('gs.best_score_:', gs.best_score_)

gs.best_score_:0.939162082194

Logistic回归CV

searchCV = LogisticRegressionCV(
    Cs=list(np.power(10.0, np.arange(-10, 10)))
    ,penalty='l2'
    ,scoring='roc_auc'
    ,cv=fold
    ,random_state=777
    ,max_iter=10000
    ,fit_intercept=True
    ,solver='newton-cg'
    ,tol=10
)
searchCV.fit(X, y)

print ('Max auc_roc:', searchCV.scores_[1].max())

最大auc_roc:0.970588235294

Solver newton-cg仅用于提供固定值,其他也尝试过。 我忘记了什么?

附:在这两种情况下我也收到警告“/usr/lib64/python3.4/site-packages/sklearn/utils/optimize.py:193:UserWarning:行搜索失败 warnings.warn('行搜索失败')“我也无法理解。如果有人也描述它的含义,我会很高兴,但我希望它与我的主要问题无关。

编辑更新

通过 @joeln 评论添加max_iter=10000 and tol=10参数也。它不会改变任何数字的结果,但警告消失了。


这是一份汤姆的回答 https://github.com/scikit-learn/scikit-learn/issues/6619#issuecomment-205222633在 scikit-learn 问题跟踪器上:

LogisticRegressionCV.scores_给出所有折叠的分数。GridSearchCV.best_score_给出所有折叠的最佳平均分数。

要获得相同的结果,您需要更改代码:

print('Max auc_roc:', searchCV.scores_[1].max())  # is wrong
print('Max auc_roc:', searchCV.scores_[1].mean(axis=0).max())  # is correct

也可以使用默认的tol=1e-4而不是你的tol=10, I get:

('gs.best_score_:', 0.939162082193857)
('Max auc_roc:', 0.93915947999923843)

剩余的(小)差异可能来自于热启动LogisticRegressionCV(这实际上使它比GridSearchCV).

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

如何从 LogisticRegressionCV 和 GridSearchCV 获得可比较且可重复的结果 的相关文章

随机推荐

  • 关于“==”运算符行为的解释

    在下面的非常简单的示例中 我无法理解 运算符的行为 A lt c 10 20 10 10 20 30 B lt c 40 50 60 70 80 90 df lt data frame A B df df A c 10 20 it retu
  • mongodb ISODate 问题

    我正在使用java IDE是eclipse 在mongodb上查询 下面是我的java代码 DBObject query new BasicDBObject ObjectId id new ObjectId 529f280b90ee58cb
  • SpringBoot:配置生产环境与开发环境

    我在使用 SpringBoot 1 5 1 时遇到问题 我已经创建了application properties and application dev properties对于我的开发环境 主要区别在于持久性 在生产中 applicati
  • GruntJS - grunt 构建后错误的图像路径

    Grunt 弄乱了我的缩小 CSS 我不知道为什么以及如何避免它 简而言之 在缩小之前我有一些像这样的背景图像 head image height 380px background url images head1 bg png repea
  • MYSQL排序与主义

    如本文所述question https stackoverflow com questions 41126279 doctrine orm order by annotations object fields并回答 不可能 我提出了一个新问
  • 倒计时栏 Android 示例

    有什么帮助可以在进度条上显示这个简单的倒计时吗 new CountDownTimer 30000 1000 public void onTick long millisUntilFinished mTextField setText sec
  • 内部函数(python)的文档字符串是否必要? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在Python中 我们用以下划线开头来指定内部函数 私有方法 这些函数是否应该使用文档字符串进行记录 是否必需 我的意思是正式文档 而不是帮助代
  • 无法使用 ssl 与 PDO 连接,但使用 ssl 的 mysqli 可以工作

    我们通过创建证书 更新 my cnf 创建具有正确权限的用户并需要 ssl 重新启动服务来设置带有 SSL 的 mysql 并通过远程连接验证它在服务器端和客户端 通过 mysql 命令行 是否正常工作 我还验证了 PDO 在完全相同的设置
  • 如何绘制参数的不同值的分布?

    我有以下脚本 library ggplot2 values lt c 0 1 0 15 0 2 0 3 0 5 1 1 5 2 2 5 colours lt palette 1 length values p lt ggplot data
  • 如何在 UipageViewController 中快速预加载下一个和上一个视图

    由于经过大量搜索和 RND 以及许多不同的代码实现后 滑动延迟问题尚未解决 因此我猜预加载下一个和上一个视图控制器将解决我的滑动延迟问题 如何在滑动之前加载下一个和上一个视图 经过长时间的 rnd 和搜索后没有找到解决方案 在显示可见控制器
  • 如何添加 favicon gatsby-config.js?

    所以我尝试在我的博客中添加图标 代码如下 在我的 gatsby config js 中 module exports siteMetadata title Chatbiz Blog plugins gatsby plugin react h
  • 是否有任何解决方法可以禁用 Google 地球插件的“缩放时自动倾斜”功能?

    最新版本的 Google 地球附带了一项名为 缩放时自动倾斜 的功能 如果启用 当您放大到靠近地面时 Google 地球会自动将相机向地平线倾斜 可以从 GUI 中禁用此功能 首选项 gt 导航选项卡 不幸的是 到目前为止我还没有找到一种方
  • 使用 PowerShell 将文件上传到 SFTP

    我们被要求设置从我们的一台服务器到 SFTP 站点的自动上传 每个星期一早上都会有一个文件从数据库导出到文件管理器 他们希望在星期二将该文件上传到 SFTP 我们当前使用的身份验证方法是用户名和密码 我相信也可以选择拥有密钥文件 但选择了用
  • 如何在 MongoDB 查询中使用正则表达式变量

    我想根据我构造的正则表达式查询 MongoDB 文档 例如 我构建了一个简单的正则表达式 如下所示 它是 Nodejs 中随机字母和随机数字的组合 var randnum Math floor Math random 10 1 var al
  • DropDownList 的行为不符合预期

    我的 DropDownListFor 遇到问题 希望您能帮助我 我猜这是你要么知道要么不知道的事情之一 问题是我的数据库中有一个国家 地区表 其中包含国家 地区列表 我希望从下拉列表中获得的行为是在地址表中创建一个外键引用 指向下拉列表中选
  • 使用异步而不等待?

    考虑使用异步而不等待 https stackoverflow com questions 12016567 using async without await 认为您可能误解了 async 的作用 警告是 完全正确 如果您将方法标记为异步但
  • Scala 中的列表和元组

    来自 Martin Odersky 的 Scala 编程 一书 另一个有用的容器对象是元组 像列表一样 元组是不可变的 但与列表不同的是 元组可以包含不同类型的元素 但我可以拥有 val oneTwoThreee List 1 2 Thir
  • 在 Bash 中捕获 stdout 和 stderr [重复]

    这个问题在这里已经有答案了 我知道这个语法 var myscript sh or var myscript sh 将捕获结果 stdout of myscript sh into var 我可以重定向stderr into stdout如果
  • Oracle 数据库中的 sysdate 和 dbtimezone 不同

    通过这个查询 select sysdate from dual 结果是 27 09 2018 07 50 50 这UK time with Select dbtimezone from dual output 10 00 我想要sysdat
  • 如何从 LogisticRegressionCV 和 GridSearchCV 获得可比较且可重复的结果

    我想用不同的参数对不同的分类器进行评分 为了加速LogisticRegression I use LogisticRegressionCV 至少快 2 倍 并计划使用GridSearchCV为他人 但问题是它给了我平等C参数 但不是AUC