You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从mlr3基准网格后的cv.glmnet学习器提取lambda值?

如何在mlr3中获取cv_glmnet选中的lambda.min值?

当你使用regr.cv_glmnet结合GraphLearner完成基准实验后,可以通过以下步骤提取交叉验证选中的lambda.min值:

步骤1:运行基准实验并保存结果

先执行基准网格并保存结果对象:

# 执行基准实验并保存结果
bmr <- benchmark_grid(tasks=task, learners=c(lm_learner, lasso_glrn), resamplings=resampling)
# 可选:查看聚合后的评估结果
bmr$aggregate()

步骤2:提取训练后的Lasso模型实例

从基准结果中定位到Lasso对应的重采样结果,再取出训练好的GraphLearner:

# 找到Lasso学习器对应的结果索引
lasso_idx <- which(bmr$learners$id == lasso_glrn$id)
# 获取Lasso的重采样结果
lasso_resample <- bmr$resample_results[[lasso_idx]]
# 取出训练后的GraphLearner(这里取第一个重采样折叠的模型,若要所有折叠可循环处理)
trained_lasso_glrn <- lasso_resample$learners[[1]]

步骤3:从GraphLearner中提取lambda.min

通过GraphLearner的管道结构,找到regr.cv_glmnet算子,进而获取底层的cv.glmnet模型对象,从中读取lambda.min:

# 获取管道中的cv_glmnet算子
lasso_po <- trained_lasso_glrn$graph$get_po("regr.cv_glmnet")
# 提取训练后的cv.glmnet模型
cv_model <- lasso_po$model
# 获取交叉验证选中的lambda.min
lambda_min <- cv_model$lambda.min
# 打印结果
cat("选中的lambda.min值为:", lambda_min, "\n")

补充说明

  • 除了lambda.min,cv.glmnet对象还包含lambda.1se(误差在最小误差1个标准差范围内的最大lambda,常用于更简洁的模型),可通过cv_model$lambda.1se获取。
  • 如果你的实验包含多个重采样折叠,需要遍历lasso_resample$learners来获取每个折叠的lambda值,再根据需求取均值或查看分布。

内容的提问来源于stack exchange,提问作者Tan YX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:17:22