【问题标题】:r randomforest caret - seeing predictionsr randomforest caret - 查看预测
【发布时间】:2018-05-11 08:03:17
【问题描述】:

我的代码如下。我想看看实际的预测。

我怎么能这样做?我试过results,fit,finalModel。但我看不到实际的预测。我真正的问题有更多的预测变量,当我使用以下方法构建模型时,我没有收到任何警告。

yy=xx*10+runif(100)
xx=runif(100)
df=data.frame(xx,yy)
library(caret)
randomForestFit <- train(yy ~ ., method = "rf", data =df )
randomForestFit
randomForestFit$results

更新1

  1. randomForestFit$finalModel$mse 和 randomForestFit$finalModel$rsq 返回 500 个值?我期待看到 100 个值...
  2. randomForestFit$results 是否返回训练数据的 rsquared 和 rmse? rsquared 和 rmse 非常低。他们是正确的吗?我期待看到更好的结果,因为 yy 是 xx 的 10 倍 + 一些随机错误

【问题讨论】:

  • 预测在randomForestFit$finalModel$predicted
  • 谢谢...当我执行 randomForestFit$finalModel$mserandomForestFit$finalModel$rsq 时,为什么我会得到 500 个值?
  • randomForestFit$results 是否为训练数据返回 rsquared 和 rmse?
  • @user2543622 RF 是一种集成方法,在这种情况下,您对 500 棵树的结果进行平均。 randomForestFit$results 返回 RMSE 和 Rsquared,有关更多详细信息,请参阅 ?train

标签: r random-forest r-caret


【解决方案1】:

你可以使用predict:

# Sample data
set.seed(2017);
xx <- runif(100);
yy <- xx * 10 + runif(100);
df <- data.frame(xx, yy);

# Random forest model
library(caret);
randomForestFit <- train(yy ~ ., method = "rf", data = df);

# Predictions
df$pred <- predict(randomForestFit, data.frame(xx = xx));

# Show src data and predictions
require(ggplot2);
gg <- ggplot(df, aes(x = xx, y = yy)) + geom_point();
gg <- gg + geom_point(aes(x = xx, y = pred), col = "red");
gg <- gg + geom_segment(aes(x = xx, xend = xx, y = pred, yend = yy));
gg <- gg + labs(title = "RF predictions in red");

# Fit results
randomForestFit$results;
#  mtry      RMSE  Rsquared       MAE     RMSESD  RsquaredSD      MAESD
#1    2 0.3782246 0.9832667 0.3169568 0.03332236 0.003349397 0.03072483

【讨论】:

  • 谢谢。当我做randomForestFit$finalModel$mserandomForestFit$finalModel$rsq 时,为什么我会得到500 个值?我期待看到 100 个值...randomForestFit$results 是否返回 rsquaredrmse 用于训练数据? rsquaredrmse 非常低。他们是对的吗?
  • RF 是一种集成方法,在这种情况下,您对 500 棵树的结果进行平均。见randomForestFit$finalModel。评估模型的质量确实是一个完全不同的问题,存在许多不同的方法来实现。
  • 我现在明白了为什么有 500 个 rsq 和 mse 值......但是为什么 rsquare 这么糟糕?
  • @user2543622 在我的示例中,Rsquared 为 0.98,所以一点也不差。您的数字会有所不同,因为我们在生成测试数据时使用了不同的 RNG 种子,但您的值应该是相似的。顺便说一句,这是一个很好的例子,说明为什么在 SO 上共享代码时应该使用固定种子 set.seed(...),以确保结果的可重复性。
  • 我在我的代码之前使用了set.seed(1),然后我运行了上面在我的问题中给出的代码。 randomForestFit$results 给了我 Rsquared0.01191166...你是如何检查你的模型 rsquare 的?
猜你喜欢
  • 2014-09-27
  • 2015-07-24
  • 2016-11-23
  • 2016-04-24
  • 2017-01-11
  • 1970-01-01
  • 2016-08-14
  • 2019-04-27
  • 2017-05-25
相关资源
最近更新 更多