我选择了一个拉索通过多次运行和平均拉姆达,我使用glmnet。我知道我想对这个套索和兰达做10倍的交叉验证。
这是我迄今为止尝试过的代码的一个例子:
library(caret)
library(glmnet)train.control = trainControl(method = "cv", number = 10)
lm.out = lm(outcome ~ 0 +., data = df)
x = model.matrix(lm.out)
y = df$outcome
model = train(glmnet(x, y, lambda = mean(Lambda_LASSO)),
data = df, trControl = train.control)这里,Lambda_LASSO是从cv.glmnet的迭代运行中取出的Lambdas向量。
发布于 2021-02-27 10:45:21
首先,我要说,这听起来真的很奇怪:
,我已经选择了一个羔羊,通过多次运行套索和平均拉姆达。
拿出你的兰达价值的平均值是什么目的呢?
下一次提供一个示例数据集,并指定它是分类还是回归。假设您的df是这样的,我们从glmnet获得了lambdas:
df = data.frame(matrix(runif(50*30),ncol=30))
df$outcome = rnorm(50)
x = model.matrix(outcome ~ 0 +., data = df)
y = df$outcome
Lambda_LASSO = glmnet(x,y)$lambda您可以使用tuneGrid =将其输入插入符号,并在1时修复alpha,因为您正在做lasso:
train.control = trainControl(method = "cv", number = 10)
model = train(x=x,y=y,
tuneGrid = data.frame(alpha=1,lambda = mean(Lambda_LASSO)),
trControl = train.control,
method = "glmnet")
glmnet
50 samples
30 predictors
No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 43, 46, 46, 45, 46, 45, ...
Resampling results:
RMSE Rsquared MAE
1.519513 0.3486916 1.286363
Tuning parameter 'alpha' was held constant at a value of 1
Tuning
parameter 'lambda' was held constant at a value of 0.03752899https://stackoverflow.com/questions/66384564
复制相似问题