使用Caret训练glm模型时出现undefined columns selected错误求助
错误原因及解决方案
错误原因分析
第一种报错场景
train(training$type~.,method="glm",data=trainPC)报错的核心问题:
trainPC仅包含PCA处理后的2个主成分列,没有响应变量type- 公式中使用外部变量
training$type,但train函数默认期望响应变量和特征变量都在指定的data参数对应的数据集里,导致无法匹配列。
第二种报错场景
train(training$type~ .,method="glm",preProcess="pca",data=training)报错的核心问题:
- 公式写法错误,
training$type~.会让train函数在training数据框中寻找名为training$type的列,而该列实际不存在,因此触发"undefined columns selected"错误。
解决方案
方案1:手动PCA后训练
将响应变量合并到PCA处理后的数据集,再用正确公式训练:
# 合并响应变量到PCA处理后的训练集 trainPC_with_response <- cbind(trainPC, type = training$type) # 训练模型 modelFit <- train(type~., method="glm", data=trainPC_with_response)
方案2:使用caret内置preProcess参数
修正公式写法,直接引用数据框内的列名:
# 正确使用内置PCA预处理 modelFit <- train(type~., method="glm", preProcess="pca", data=training)
内容的提问来源于stack exchange,提问作者Abdelrahman
相关产品推荐
相关产品推荐

