微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

同时弹性净回归

如何解决同时弹性净回归

我正在尝试在 R 中同时为多个变量执行弹性网络。我有 15 个 Xi,我想找到使用每个变量作为回归量的弹性网络模型。对于一个 Xi,我可以执行 遵循并获得最优的 alphalambda 与以下

A<-matrix(rnorm(36),nrow=10,ncol = 15)
colnames(A) <- c("X1","X2","X3","X4","X5","X6","X7","X8","X9","X10","X11","X12","X13","X14","X15")
A #random data

library(glmnetUtils)
library(glmnet)
library(coefplot)
set.seed(1234)    
 
# Train model.
fit <- cva.glmnet(X1 ~ .,data=A)

# Get alpha.
get_alpha <- function(fit) {
  alpha <- fit$alpha
  error <- sapply(fit$modlist,function(mod) {min(mod$cvm)})
  alpha[which.min(error)]
}


# Get all parameters.
get_model_params <- function(fit) {
  alpha <- fit$alpha
  lambdamin <- sapply(fit$modlist,`[[`,"lambda.min")
  error <- sapply(fit$modlist,function(mod) {min(mod$cvm)})
  best <- which.min(error)
  data.frame(alpha = alpha[best],lambdamin = lambdamin[best])
}

get_model_params(fit) 

我想对所有 Xi 同时执行此过程,并能够创建 2 个包含 a.所有最优min.lambda,b。所有最优 alpha,以及一个包含使用最优 alphamin.lambda 生成的系数的列表。有人可以帮我做吗?

解决方法

您需要在所有行组合上循环该函数:

loop <- function(data) {
  #make an output dataframe
  output <- as.data.frame(matrix(NA,nrow = ncol(data),ncol = 2))
  colnames(output) <- c('alpha','lambdaMin')
  #loop over each column
  for(i in 1:ncol(data)) {
    fit <-  cva.glmnet(data[,-i],data[,i])
    #set the ith row to be the output
    output[i,] = get_model_params(fit)
  }
  output
}

loop(A)

我们使用 glmnet 的 x,y 输入而不是公式接口,并使用 data[,i]data[,-i] 对每列进行子集化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?