r - 在 R 中为多个弹性网使用特定的 alpha 参数
问题描述
alpha
我正在尝试在 R 中同时执行多个弹性网络。我有一个 10x15 矩阵,每列称为 Xi 例如 X1、X2、...、X15并执行弹性网络以获得最佳lambda
参数。然后我将alpha
值保存在我的环境中调用的数据框中,alphas
如下所示
alpha
1 0.001
2 0.000
3 0.000
4 0.064
5 0.729
6 0.729
7 1.000
8 0.001
9 0.000
10 0.000
11 0.001
12 0.000
13 0.000
14 0.064
15 0.729
我的目标是使用我已经找到的相应 alpha 执行多个cv.glmnet
(每个 Xi 一个)。例如alpha=0.001
用于cv.glmnet
Xi 的模型等。如何替换下面代码中的 alpha 值以使用所有获得的 alpha 值?
data<-matrix(rnorm(36),nrow=10,ncol = 15)
colnames(data) <- c("X1", "X2", "X3", "X4", "X5", "X6","X7","X8","X9","X10","X11","X12","X13","X14","X15")
data #random data
library(glmnet)
library(coefplot)
A <- as.matrix(data)
set.seed(1234)
results <- lapply(seq_len(ncol(A)), function(i) {
list(
cvfit = cv.glmnet(A[, -i] , A[, i] , standardize = TRUE , type.measure = "mse" , nfolds = 10 , alpha = 1)
)
})
解决方案
如果我们想做多个集合,请使用相同的列索引序列来对 alpha 进行子集化,因为alphaset 的列数与'A'length
的列数相同matrix
alphaset <- c( 0.001, 0, 0, 0.064, 0.729, 0.729, 1.0,
0.001, 0, 0, 0.001, 0, 0, 0.064, 0.729)
lst_out <- lapply(seq_len(ncol(A)), function(i) {
list(
cvfit = cv.glmnet(A[, -i] , A[, i] , standardize = TRUE ,
type.measure = "mse" , nfolds = 10 , alpha = alphaset[i])
)
})
推荐阅读
- linux - 如何根据日志消息重新启动脚本
- android - 为什么在Android Android Studio的布局中删除按钮后,它仍然可以看到它?
- java - 如何在每个子枚举中实现具有不同第一个参数的功能接口
- heroku - Webpacker:编译失败:错误命令“webpack”未找到
- python - 为什么 html 会跳过我的变量,我该如何修复它?
- python-3.x - pyarrow PlasmaStoreFull 的导入问题
- java - System.out.print 不会打印到控制台,否则会打印新行
- ios - 当数组中存在数据时,无法将 UITableViewRowAction 的标题从收藏夹更改为删除
- java - Kafka 流聚合功能是否将数据同时存储在 ram 和主题中?
- java - 在 typeahead 中选择具有更改 ID java-selenium 的元素