修正基于glmnet的多数据集LASSO回归特征选择输出问题
修正glmnet LASSO回归的特征提取结果
- 问题背景:用
glmnet对n个数据集拟合LASSO回归(设置alpha=0),原特征提取逻辑返回全部30个候选特征及截距,未实现有效筛选;需得到类似enet函数输出的少量关键特征集合。 - 复现路径:使用
ten文件夹内的数据可复现当前问题。
解决方案:基于lambda值提取非零系数特征
glmnet的LASSO回归通过lambda值控制特征筛选强度,需指定对应lambda来提取非零系数的特征:
获取指定lambda下的系数矩阵
选择交叉验证得到的最优lambda(lambda.min对应最小MSE,lambda.1se对应更简洁的模型),提取系数:# fit为glmnet的拟合对象 coef_matrix <- coef(fit, s = "lambda.min")筛选非零系数的特征
过滤掉截距项和系数为0的特征,得到选中的特征名称:# 提取非零系数且非截距的特征名 selected_features <- rownames(coef_matrix)[coef_matrix != 0 & rownames(coef_matrix) != "(Intercept)"]验证结果
用ten文件夹的数据复现后,对比enet的输出,确认特征数量和匹配度。
内容的提问来源于stack exchange,提问作者Marlen
相关产品推荐
相关产品推荐

