如何提取 Tidymodels 生成的 GLMNET 系数

2024-03-10

我估计了一个glmnet逻辑回归使用整洁的模型。但我无法弄清楚有两件事是密切相关的:整洁的模型:

  • a) 如何提取估计系数
  • b) 保存估计模型以供将来生产使用。

以下是伪模型的代码。我试过tidy(), coef(), and predict()但他们都失败了。任何帮助都感激不尽。谢谢。

library(tidymodels)
#> -- Attaching packages --------------------------------------------------------------------------------------------------------------------------- tidymodels 0.1.0 --
#> v broom     0.7.0      v recipes   0.1.13
#> v dials     0.0.8      v rsample   0.0.7 
#> v dplyr     1.0.0      v tibble    3.0.3 
#> v ggplot2   3.3.2      v tune      0.1.1 
#> v infer     0.5.2      v workflows 0.1.2 
#> v parsnip   0.1.2      v yardstick 0.0.7 
#> v purrr     0.3.4
#> -- Conflicts ------------------------------------------------------------------------------------------------------------------------------ tidymodels_conflicts() --
#> x purrr::discard() masks scales::discard()
#> x dplyr::filter()  masks stats::filter()
#> x dplyr::lag()     masks stats::lag()
#> x recipes::step()  masks stats::step()

set.seed(1234)

train <- tibble(y = factor(sample(c(0,1), 1000, replace = TRUE)),
                x1 = rnorm(1000),
                x2 = rnorm(1000)
                )

test <- tibble(y = factor(sample(c(0,1), 300, replace = TRUE)),
               x1 = rnorm(300),
               x2 = rnorm(300)
               )

lr_cv <- vfold_cv(train)

lr_mod <- logistic_reg(penalty = tune(), mixture = 1) %>%
  set_mode("classification") %>%
  set_engine("glmnet")

lr_wf <- workflow() %>%
  add_model(lr_mod) %>%
  add_formula(y ~ .)

lr_grid <- tibble(penalty = 10^seq(-4,1, length.out = 5))

lr_tune <- tune_grid(lr_wf, resamples = lr_cv, grid = lr_grid, metrics = metric_set(roc_auc))

lr_best <- select_best(lr_tune)
lr_best
#> # A tibble: 1 x 2
#>   penalty .config
#>     <dbl> <chr>  
#> 1  0.0001 Model1

lr_wf_final <- lr_wf %>% finalize_workflow(lr_best)

final_mod <- lr_wf_final %>% fit(train)

# the followings were tried but didn't work
lambda <- lr_best[1]
lambda
#> # A tibble: 1 x 1
#>   penalty
#>     <dbl>
#> 1  0.0001

predict(final.mod , s = lambda, type ="coefficients")[1:3 ,]
#> Error in predict(final.mod, s = lambda, type = "coefficients"): object 'final.mod' not found

tidy(final_mod)
#> # A tibble: 35 x 5
#>    term         step estimate  lambda dev.ratio
#>    <chr>       <dbl>    <dbl>   <dbl>     <dbl>
#>  1 (Intercept)     1  -0.0560 0.0183   1.71e-14
#>  2 (Intercept)     2  -0.0561 0.0167   1.65e- 4
#>  3 (Intercept)     3  -0.0562 0.0152   3.02e- 4
#>  4 (Intercept)     4  -0.0562 0.0139   4.16e- 4
#>  5 (Intercept)     5  -0.0563 0.0126   5.10e- 4
#>  6 (Intercept)     6  -0.0564 0.0115   5.89e- 4
#>  7 (Intercept)     7  -0.0564 0.0105   6.54e- 4
#>  8 (Intercept)     8  -0.0565 0.00956  7.08e- 4
#>  9 (Intercept)     9  -0.0565 0.00871  7.53e- 4
#> 10 (Intercept)    10  -0.0566 0.00794  7.90e- 4
#> # ... with 25 more rows

coef(final_mod)
#> NULL

Created on 2020-07-25 by the reprex package https://reprex.tidyverse.org (v0.3.0)


我们最近添加了一些更新的支持来获取估计系数。

library(tidymodels)
#> ── Attaching packages ─────────────────────────────────────────────── tidymodels 0.1.1 ──
#> ✓ broom     0.7.0          ✓ recipes   0.1.13    
#> ✓ dials     0.0.8          ✓ rsample   0.0.7     
#> ✓ dplyr     1.0.0          ✓ tibble    3.0.3     
#> ✓ ggplot2   3.3.2          ✓ tidyr     1.1.0     
#> ✓ infer     0.5.3          ✓ tune      0.1.1.9000
#> ✓ modeldata 0.0.2          ✓ workflows 0.1.2     
#> ✓ parsnip   0.1.2.9000     ✓ yardstick 0.0.7     
#> ✓ purrr     0.3.4
#> ── Conflicts ────────────────────────────────────────────────── tidymodels_conflicts() ──
#> x purrr::discard() masks scales::discard()
#> x dplyr::filter()  masks stats::filter()
#> x dplyr::lag()     masks stats::lag()
#> x recipes::step()  masks stats::step()

set.seed(1234)
train <- tibble(y = factor(sample(c(0,1), 1000, replace = TRUE)),
                x1 = as.numeric(y) + rnorm(1000),
                x2 = rnorm(1000),
                x3 = rnorm(1000)
)

lr_cv <- vfold_cv(train)
lr_grid <- tibble(penalty = 10^seq(-4,1, length.out = 5))
lr_mod <- logistic_reg(penalty = tune(), mixture = 1) %>%
  set_mode("classification") %>%
  set_engine("glmnet")

lr_wf <- workflow() %>%
  add_model(lr_mod) %>%
  add_formula(y ~ .) 

lr_best <- lr_wf %>%
  tune_grid(
    resamples = lr_cv,
    grid = lr_grid
  ) %>%
  select_best("roc_auc")

lr_wf %>% 
  finalize_workflow(lr_best) %>%
  fit(train) %>%
  pull_workflow_fit() %>%
  tidy()
#> Loading required package: Matrix
#> 
#> Attaching package: 'Matrix'
#> The following objects are masked from 'package:tidyr':
#> 
#>     expand, pack, unpack
#> Loaded glmnet 4.0-2
#> # A tibble: 4 x 3
#>   term        estimate penalty
#>   <chr>          <dbl>   <dbl>
#> 1 (Intercept)   -1.30   0.0316
#> 2 x1             0.834  0.0316
#> 3 x2             0      0.0316
#> 4 x3             0      0.0316

Created on 2020-07-30 by the reprex package https://reprex.tidyverse.org (v0.3.0.9001)

提取系数的步骤是pull出拟合的对象,然后tidy it.

如果您想保存此对象以供将来使用,您可以只保存这些系数(毕竟它是一个线性模型),也可以将最终确定的拟合工作流程保存为二进制对象,可以从中进行预测。

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

如何提取 Tidymodels 生成的 GLMNET 系数 的相关文章

  • 将所有 0 值替换为 NA

    我有一个包含一些数字列的数据框 某些行具有 0 值 在统计分析中应将其视为空 在R中将所有0值替换为NULL的最快方法是什么 将所有零替换为 NA df df 0 lt NA 解释 1 它不是NULL你应该用什么来替换零 正如它所说 NUL
  • 如何从 data.frame 中删除列?

    不是 你怎么 但更多的是 你怎么 如果有人给你一个包含 200 列的文件 并且你想将其减少到分析所需的少数列 你会如何做呢 一种解决方案是否比另一种解决方案更有优势 假设我们有一个包含列 col1 col2 到 col200 的数据框 如果
  • 使用 ggplot 2 使用线条或线段将堆栈条形图与多个组连接起来

    我正在对一些患有某种疾病的患者进行一项研究 并在 3 个不同的时间点使用顺序量表评估功能状态 我想在这些时间点的堆叠条形图中连接多个组 我查看了这些主题 但尚未使用这些建议使其发挥作用 如何将线条放置在堆积条形图的边缘 https stac
  • 事后如何使用保存的.rds h2o模型进行预测?

    我使用 mlr 和 h2o 包创建了一个 R 模型 如下所示 library h2o rfh20 lrn makeLearner classif h2o randomForest predict type prob 完成模型调整 模型启动
  • 使用 Rgraphviz 中的 pos 参数来固定节点位置

    基于这个问题当弧与另一弧重叠时自动弯曲 https stackoverflow com questions 45721802 automatically curving an arc when it is overlapping with
  • 如何扩展 ggplot y 轴限制以包含最大值

    通常 在图中 Y 轴值标签会在绘制的最大值下方被截断 For example library tidyverse mtcars gt ggplot aes x mpg y hp geom point 我知道scale y continous
  • 尝试使用 movie3d 制作 3D PCA 图(rgl)的电影

    我已经使用 pca3d 包在 R 中制作了 rgl 3D PCA 图 并且我正在尝试使用 movie3d 制作一个包含旋转图电影的 gif 文件 pca3d 包 makeMoviePCA 中有一个函数 它将其参数传递给 movie3d 这是
  • 计算横截面积作为高度的函数

    我试图弄清楚如何计算不同水位的河流横截面的充满水的面积 对于横截面 我有 5 m 宽河流上每 25 cm 的深度 并且可以根据之前很好回答的问题来计算面积计算不同高度的横截面积 https stackoverflow com questio
  • 使用 rvest 进行抓取 - 当标签不存在时,使用 NA 完成抓取

    我想解析这个 HTML 并从中获取这个元素 a p标签 与class normal encontrado b div with class price 有时 p某些产品中不存在标签 如果是这种情况 NA应添加到从该节点收集文本的向量中 这个
  • 在两个向量之间交换元素(交叉)

    假设我有 chromosome 1 lt c 0010000001010000 chromosome 2 lt c 0100000001001010 我该如何实施step 3 5 Evaluate NC1 否 中 1 个chromosome
  • 使用 R 将图例添加到绘图中

    我使用 R 在一个图中创建了 4 条线 这是代码 Define 2 vectors cars lt c 123 07 110 51 96 14 98 71 101 3 trucks lt c 110 31 89 91 89 81 89 31
  • 写入抓取数据的 csv 文件时如何拆分项目名称

    我有兴趣使用 R 从网上抓取的数据创建 csv 或类似的 Excel 兼容文件 到目前为止 我通过执行以下操作来存储数据 require textreadr spiegel lt read html http www spiegel de
  • 计算网格中物种的出现次数

    我有大约500 000点R美国各地候鸟物种的出现数据 我试图在这些点上覆盖网格 然后计算每个网格中出现的次数 统计完计数后 我想将它们引用到网格单元 ID 在 R 中 我使用了over 函数只获取范围图中的点 这是一个形状文件 Read i
  • 如何使用“downloadHandler”在闪亮的可反应内部创建下载按钮?

    我创建downloadlinksa 的行内reactable 我这样做是为了DT datatable and a reactable reactable 我还创建了相应的output downloadHandler在 ids 上使用 app
  • 连接路径的函数?

    是否有现有的函数来连接路径 我知道实施起来并不困难 但仍然 除了照顾尾随 or 我需要注意正确的操作系统路径格式检测 即我们是否编写C dir file or dir file 正如我所说 我相信我知道如何实施它 问题是 我应该这样做吗 现
  • 如何通过在R闪亮循环中读取.csv文件来动态生成dataTableOutput?

    我有一个函数可以生成 n 个数据帧并将其作为 csv 文件保存在某个位置 并且该函数返回已保存 CSV 的文件名 我希望获取这些 csv 文件 使用以下命令读取它read csv 然后使用 renderUI 和 renderDataTabl
  • 省略 RColorBrewer 调色板上较亮的颜色以在 ggplot2 中使用

    我想在 RColorBrewer 的 Oranges 调色板中使用较深的颜色 以便在我的 ggplot 条形图 中使用 然而我却做不到 帮助 下面是示例代码 my palette brewer pal n 9 Oranges 4 9 Bar
  • 包什么时候需要为它自己的对象使用 :::

    考虑这个 R 包有两个函数 一个是导出函数 另一个是内部函数 hello R export hello lt function internalFunctions hello internal 你好 内部 R hello internal
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa

随机推荐

  • java中如何初始化动态数组?

    如果我有一个类需要返回可变维度的字符串数组 并且该维度只能在运行该类的某些方法时确定 那么如何在类的构造函数中声明动态数组 如果问题还不够清楚 在 php 中我们可以简单地声明一个字符串数组为 my string array array 并
  • 如何在 Kotlin 数据类字段上列出(java)注释?

    我使用 Firestore 的基于 Java 的注释来标记字段和将文档字段映射到 Java 类元素的方法 Retention RetentionPolicy RUNTIME Target ElementType METHOD Element
  • javascript - 迄今为止的字符串 - php iso 字符串格式

    我有一个日期格式为 2010 11 30T08 32 22 0000 2010 11 27T20 59 17 0000来自 feed 以字符串格式转换为 javascript 现在我想将其转换为 Date 对象 我怎样才能用 JavaScr
  • 使用 JavaScript 将字符串分成多个变量

    使用 JavaScript 我想获取这样的字符串var hashStr modal 123456 并分配左边的字符串 到一个变量和右边的字符串 到另一个变量 如果字符串不包含 然后忽略它 我怎样才能最好地实现这一目标 var hashStr
  • 添加文本时的转换表单元格宽度

    我有一个表格单元格 其中包含一些文本 td Text in here td 我无法使用 CSS 设置宽度 因为我不知道同一列中的其他单元格中有多少数据 但是 当我的 Javascript 将新代码插入表中时 我想为 CSS 中的宽度属性设置
  • Oh-my-posh 主题无法与 Powerline 字体和 ConEmu 一起正常工作

    I use PowerShell as my shell on Windows 7 I find that ConEmu is a really good terminal Since I am not on Windows 10 I ca
  • 如何使用 IntelliJ 设置 libgdx?

    我跟着this https github com libgdx libgdx wiki Gradle and Intellij IDEA教程 但似乎有点过时了 我不知道 不幸的是 我对 Java 的经验不是很丰富 但对 C Python 所
  • Javascript:如何检查 URL 是否包含单词

    我想检查浏览器中的 URL 是否包含单词 桌面 我从桌面启动 html 文件 它的网址是 file C Users Joe Desktop TestAlert html 但应该会出现一个警报 但这不起作用 这是我的代码 h1 Test001
  • 动态设置用户任务受让人

    我必须在 activiti 中创建需要以下用例的流程 1 表单有一个人员搜索字段 2 当有人填写表单并使用填充姓名的人员搜索字段完成任务时 我需要将分配的下一个任务的名称设置为可以对下一个任务执行操作的用户 如何使用 activiti 引擎
  • android中什么时候绘制视图?

    我想获取活动中视图的大小 但无法在任何活动生命周期回调 onCreate onStart onResume 中获取该信息 我假设这是因为视图尚未绘制 在什么时候绘制视图 是否有回调我可以放置我的代码以便获得视图的大小 findViewByI
  • Quarkus 替代 spring-data-jdbc

    默认DAO层 ORM框架中Quarkus is Panache 在 Hibernate 之上 这很奇怪 因为我没有找到任何可插入外部 L2 缓存实现 如 Redis 的内置集成 夸库斯被称为cloud native但在实际系统中 使用默认的
  • 如何使用 cURL 在 php 中发布表单数据?

    我有以下命令 它使用 form F 选项 我知道它正在工作 curl form file home USERNAME import csv https apiprovider com api v0 imports token KEY 我需要
  • mongodb聚合获取数组中负序的最大数量

    我需要通过聚合从数组中获取负序列的最大计数 示例文档 id 1 x 1 1 1 1 1 1 1 1 1 1 1 id 2 x 1 1 1 1 1 1 1 预期结果 id 1 x 4 id 2 x 2 请指教 您可以使用 reduce htt
  • 如何为 Cloudfront 上的静态托管网站的子目录设置默认根对象?

    如何为 Cloudfront 上静态托管网站上的子目录设置默认根对象 具体来说 我想www example com subdir index html每当用户请求时提供服务www example com subdir 请注意 这是为了交付保
  • quartz:xml 文件的文档?

    quartz xml 文件 特别是 jobs xml 的文档在哪里 我找到了javadoc http www quartz scheduler org docs api index html在线 但我似乎找不到如何编写 xml 文件的文档
  • 如何在 sed 中转义斜杠、双引号和单引号?

    据我所知 当您使用单引号时 里面的所有内容都被视为文字 我想要那个来代替我 但我也想找到一个带有单引号或双引号的字符串 例如 sed i s http www fubar com URL FUBAR g 我想用 URL FUBAR 替换 h
  • Oracle 查询 - 仅获取选择字段中的字符串

    也许这听起来有点疯狂 但我需要提出一个查询来仅检索字母数字字段中的字母 例如 TABLE 1234ADD 3901AC 1812OPA82711AUU 预期结果 ADD AC OPA AUU 谢谢你 看起来您只想删除数字 您可以使用REGE
  • 无法在 Android 上使用 AlarmManager 安排通知(使用 Qt)

    我正在 qt 5 5 中执行以下操作 项目 我正在尝试使用 android 中的警报管理器安排本地通知 这是安排通知的代码 class ScheduledNotifications static public int notificatio
  • 是否可以让 Visual Studio 或 Resharper 用不同的颜色突出显示枚举?

    我认为如果用与类属性不同的颜色突出显示枚举属性 代码会更具可读性 对于 VS2010 VS2013 VS2015 VS2017 VS2019 工具 gt 选项 gt 环境 gt 字体和颜色 显示文本编辑器的设置 显示项目 用户类型 枚举 更
  • 如何提取 Tidymodels 生成的 GLMNET 系数

    我估计了一个glmnet逻辑回归使用整洁的模型 但我无法弄清楚有两件事是密切相关的 整洁的模型 a 如何提取估计系数 b 保存估计模型以供将来生产使用 以下是伪模型的代码 我试过tidy coef and predict 但他们都失败了 任