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

R中用caret做线性回归预测年龄遇“inputs must be factors”错误求助

问题原因与解决方案

你的报错完全是因为选错了模型评估的汇总函数。

核心问题

twoClassSummary是专门为二分类任务设计的汇总函数,它会计算敏感度(sensitivity)、特异性这类分类任务指标,而敏感度的计算要求输入必须是分类因子。但你的任务是回归任务(预测连续数值型的年龄),两者完全不匹配,所以才会出现"inputs must be factors"的错误,这和线性回归需要数值型数据的逻辑并不冲突。

修正方案

只需要修改trainControl中的summaryFunction参数,回归任务可以:

  • 直接移除该参数,让caret自动使用回归任务默认的评估指标(RMSE、R²等)
  • 或者明确指定回归专用的汇总函数regressionSummary

修正后的代码示例

DEX = createDataPartition(y = age_pred$age, p=0.8, list = FALSE)
age_trn = age_pred[DEX, ]
age_tst = age_pred[-DEX,]

# 方案1:移除summaryFunction参数
ctrlCV = trainControl(method = 'cv', number = 5 , classProbs = FALSE , savePredictions = TRUE)

# 方案2:指定回归专用的汇总函数
# ctrlCV = trainControl(method = 'cv', number = 5 , classProbs = FALSE , savePredictions = TRUE, summaryFunction = regressionSummary)

ageModel <- caret::train(age ~ ., data = age_trn, 
                       method = 'lm',
                       trControl = ctrlCV)

额外说明

classProbs = FALSE这个参数设置是正确的,因为回归任务不需要计算类别概率,保持默认即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:45:57