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

如何让随机森林输出连续型的预测值?

解决方案:将随机森林从分类改为回归以输出连续预测值

核心问题分析

你当前的模型属于分类任务,因为把Linear_weight转成了因子(as.factor()),所以只能输出离散的类别值。要输出连续预测值,需要切换为回归型随机森林,同时修正数据类型(你的示例数据里所有变量都是字符型,无法开展数值计算)。

具体步骤与修正代码


1. 修正数据类型

先把所有数值型变量从字符格式转换为数值格式,这是回归模型运行的基础:

library(randomForest)
# 创建数据集时直接转换为数值,或后续批量处理
Pitches <- data.frame(
  Linear_weight = as.numeric(c("1.39", "1.01", "-0.04", "-0.21", "-0.11", "-0.33")),
  Vel = as.numeric(c("93.5", "95.0", "97.1", "90.0", "80.1", "100.3")),
  HorzBrk = as.numeric(c("5.0", "8.1", "10.0", "9.1", "3.0", "6.0"))
)

2. 划分训练/测试集(保留你的逻辑,大数据集可换更稳定的划分方式)

set.seed(1234)
sample <- sample(1:nrow(Pitches), 0.5*nrow(Pitches)) 
training <- Pitches[sample,]
testing <- Pitches[-sample,]

3. 训练回归型随机森林

无需将响应变量转成因子,randomForest会自动识别数值型响应变量,默认执行回归任务:

# 回归模型:响应变量Linear_weight为数值型
RFM_reg <- randomForest(Linear_weight ~ Vel + HorzBrk, data = training)

4. 生成连续型预测值

预测时默认输出连续数值,直接赋值即可:

# 训练集预测
training$Weight_pred <- predict(RFM_reg, training)
# 测试集预测
testing$Weight_pred <- predict(RFM_reg, testing)

针对大数据集的优化提示

  • 调参提升精度:可以调整ntree(树的数量,默认500)、mtry(每棵树随机选取的特征数,回归任务默认是总特征数的1/3)等参数,示例:
    RFM_reg_tuned <- randomForest(Linear_weight ~ Vel + HorzBrk, data = training, 
                                  ntree = 1000, mtry = 2, importance = TRUE)
    
  • 查看特征重要性:添加importance = TRUE参数后,用importance(RFM_reg_tuned)查看特征对预测的贡献度,辅助特征筛选。
  • 稳定划分数据集:大数据集可使用caret包的createDataPartition替代sample,避免随机划分的偏差:
    library(caret)
    set.seed(1234)
    train_idx <- createDataPartition(Pitches$Linear_weight, p = 0.5, list = FALSE)
    training <- Pitches[train_idx,]
    testing <- Pitches[-train_idx,]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:25:31