无法使用R';使用glmnet的lasso回归的未来软件包
我最近发现了R的无法使用R';使用glmnet的lasso回归的未来软件包,r,future,purrr,glmnet,R,Future,Purrr,Glmnet,我最近发现了R的future软件包,并且已经成功地使用了它。 然而,我无法将此软件包与套索回归预测一起使用 在下面的玩具示例中,我首先创建一些玩具数据,然后拟合套索回归,最后预测新数据。 我执行此过程两次:一次不使用future包,然后使用future包: library(tidyverse) library(glmnet) set.seed(1) a <- tibble(id = rep(letters[1:2], each = 100), x1 = rnorm(200), x2 =
future
软件包,并且已经成功地使用了它。
然而,我无法将此软件包与套索回归预测一起使用
在下面的玩具示例中,我首先创建一些玩具数据,然后拟合套索回归,最后预测新数据。
我执行此过程两次:一次不使用future
包,然后使用future
包:
library(tidyverse)
library(glmnet)
set.seed(1)
a <- tibble(id = rep(letters[1:2], each = 100), x1 = rnorm(200), x2 = rnorm(200),
y = 1 + 2*x2 + rnorm(200))
newdata <- as.matrix(data.frame(x1 = rnorm(200), x2 = rnorm(200)))
pred_func <- function(z) predict(z, newx = newdata)[,1]
b1 <- a %>%
group_by(id) %>%
nest(.key = data) %>%
mutate(lasso = map(data, function(z){glmnet(x = as.matrix(select(z, x1, x2)), y = z$y,
intercept = T, alpha = 1)})) %>%
mutate(myprediction = map(lasso, pred_func))
在
glmnet
包中有一个predict.glmnet()
只需定义一个新函数
pred_func2 <- function(z) predict.glmnet(z, newx = newdata)[,1]
pred_func2%
嵌套(.key=data)%>%
变异(套索=地图)(数据,
函数(z){
glmnet(x=as.matrix(选择(z,x1,x2)),y=z$y,
截距=真,α=1)
})) %>%
突变(myprediction\u future=map(套索,~future(pred\u func2(.x)))%>%
突变(myprediction=值(myprediction\u future))
屈服
>b2
#一个tibble:2x5
id数据套索myprediction\u未来myprediction
1A
2 b
请在控制台中键入Sys.setenv(“Language”=“EN”)
,然后重新运行代码,然后将英文错误消息粘贴到您的问题中。请参阅“缺少软件包”下的“@Roland”。感谢您指出这一点:)请注意,有了一些使用R进行并行计算的经验,问题的根源是显而易见的。我花了更长的时间来研究(与我不相似的)未来方案,而不是找出问题所在。我在并行软件包中也看到过类似的错误。
pred_func2 <- function(z) predict.glmnet(z, newx = newdata)[,1]
plan(multiprocess)
b2 <- a %>%
group_by(id) %>%
nest(.key=data) %>%
mutate(lasso=map(data,
function(z) {
glmnet(x=as.matrix(select(z, x1, x2)), y=z$y,
intercept=TRUE, alpha=1)
})) %>%
mutate(myprediction_future=map(lasso, ~future(pred_func2(.x)))) %>%
mutate(myprediction=values(myprediction_future))
> b2
# A tibble: 2 x 5
id data lasso myprediction_future myprediction
<chr> <list> <list> <list> <list>
1 a <tibble [100 x 3]> <S3: elnet> <S3: MultisessionFuture> <dbl [200]>
2 b <tibble [100 x 3]> <S3: elnet> <S3: MultisessionFuture> <dbl [200]>