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

使用caret包训练Elastic Net模型时出现“未定义列选择”错误

Caret包拟合Elastic Net时出现“undefined columns selected”错误的解决

我尝试在一个包含28个变量、1675条数据的数据集上拟合Elastic Net回归模型,使用caret包进行alpha和lambda的参数调优。交叉验证完成并选出最优参数后,在全量训练集上拟合时抛出了undefined columns selected错误,最初误以为是模型未收敛,后来排查出了问题根源。

出错代码

trc = trainControl(method = "repeatedcv", 
                   number = 5, 
                   repeats = 10, 
                   search = "random",
                   verboseIter = TRUE)

elastic = train([to be predicted] ~ ., 
                data = [log transformed data], 
                method = "glmnet",
                tuneLength = 10,
                trControl = trc)

错误输出

Aggregating results
Selecting tuning parameters
Fitting alpha = 0.432, lambda = 2.78 on full training set
Error in `[.data.frame`(data, , all.vars(Terms), drop = FALSE) : 
  undefined columns selected

解决方法

错误源于公式的写法问题:
最初我将待预测变量写成了data$price ~ .(例如指定数据集为data时,在公式里用data$price作为因变量),这种写法会导致caret无法正确识别数据集中的列名。

只需将公式修改为price ~ .(直接使用变量名,不带数据集前缀),模型就能正常完成全量数据的拟合,输出预期的Elastic Net模型结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:55:04