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

如何用tidymodels提取类glmnet格式的PLSR系数?

从tidymodels的mixOmics引擎PLSR模型提取glmnet格式的整体系数

我用tidymodels调优了glmnet回归模型,能成功提取出系数,但用同样方法处理mixOmics引擎的PLSR模型时,得到的是每个项对应各个组件的单独值。因为后续外部使用需要,我需要glmnet格式的PLSR整体系数。

目前我可以通过pls包的plsr()函数结合coef()提取目标系数,但这个方法没法传入predictor_prop这类参数,可能导致结果偏差,所以想找更优雅的提取方式,或者从组件值计算得到目标系数。

library(tidymodels)
library(plsmod)

data(Chicago)
Chicago <- Chicago %>% select(ridership, Clark_Lake, Austin, Harlem)

# 创建交叉验证数据集
folds <- vfold_cv(Chicago)

# 创建预处理配方
rec <- recipe(ridership ~ ., Chicago) %>% 
  step_normalize(all_predictors()) %>%
  prep(training = Chicago)

# 定义PLSR模型
mod <- parsnip::pls(mode = "regression", 
                    num_comp = tune(), 
                    predictor_prop = tune()) %>% 
  set_engine("mixOmics")

# 构建工作流
wf <- workflow() %>%
  add_recipe(rec) %>%
  add_model(mod)

# 运行网格调优
set.seed(123)
res <- tune_grid(wf, resamples = folds, grid = 5)

# 筛选最优模型参数
res_best <- res %>% select_best("rmse")

# 拟合最优模型并提取组件对应值
wf %>% 
  finalize_workflow(res_best) %>%
  fit(Chicago) %>%
  extract_fit_parsnip() %>% 
  tidy()

# 使用pls包提取整体系数作为参考
p <- pls::plsr(ridership ~ ., data = Chicago, scale = T, center = T, ncomp = 3)
coef(p, intercept = T)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:05:47