当前位置:  开发笔记 > 开发工具 > 正文

使用dplyr在group_by之后拟合几个回归模型,并将得到的模型应用到测试集中

如何解决《使用dplyr在group_by之后拟合几个回归模型,并将得到的模型应用到测试集中》经验,为你挑选了1个好方法。

我有一个大数据集,我想根据特定变量的值(在我的生命周期中)进行分区,然后对每个分区运行逻辑回归.根据@tchakravarty在使用dplyr拟合几个回归模型的答案后,我编写了以下代码:

lifetimemodels = data %>% group_by(lifetime) %>% sample_frac(0.7)%>%
     do(lifeModel = glm(churn ~., x= TRUE, family=binomial(link='logit'), data = .))

我现在的问题是如何使用最终的逻辑模型来计算其余数据(未选择的0.3分数)的AUC,这应该再次按寿命分组?

非常感谢提前!



1> Jake Kaupp..:

您可以调整您的dplyr方法来使用tidyrpurrr框架.你看看分组/嵌套,以及mutatemap函数来创建列表框来存储您的工作流程的碎片.

您正在寻找的测试/培训拆分是为modelr帮助在purrr框架内进行建模而构建的软件包的一部分.具体是cross_vmccross_vkfold功能.

使用的玩具示例mtcars(仅用于说明框架).

library(dplyr)
library(tidyr)
library(purrr)
library(modelr)

analysis <- mtcars %>%
  nest(-cyl) %>%
  unnest(map(data, ~crossv_mc(.x, 1, test = 0.3))) %>%
  mutate(model = map(train, ~lm(mpg ~ wt, data = .x))) %>%
  mutate(pred = map2(model, train, predict)) %>%
  mutate(error = map2_dbl(model, test, rmse))

这个:

    需要mtcars

    窝成称为列表框data通过cyl

    分隔每个data到由映射设定的训练crossv_mc到每个元素,然后使用unnest以使testtrain列表列.

    lm模型映射到每个train,存储在中model

    地图的predict功能,modeltrain与存储在pred

    rmse函数映射到modeltest设置并存储错误.

可能有些用户比我更熟悉工作流程,所以请更正/详细说明.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有