gpt4 book ai didi

r - 随机森林模型预测结果的差异

转载 作者:行者123 更新时间:2023-12-02 21:24:55 26 4
gpt4 key购买 nike

我构建了一个随机森林模型,当我编写两行不同的代码来生成预测时,我得到了两个不同的预测结果。我想知道哪一个是正确的。这是我的示例数据框和使用的代码:

dat <- read.table(text = " cats birds    wolfs     snakes
0 3 9 7
1 3 8 4
1 1 2 8
0 1 2 3
0 1 8 3
1 6 1 2
0 6 7 1
1 6 1 5
0 5 9 7
1 3 8 7
1 4 2 7
0 1 2 3
0 7 6 3
1 6 1 1
0 6 3 9
1 6 1 1 ",header = TRUE)

我建立了一个随机森林模型:

model<-randomForest(snakes~cats+birds+wolfs,data=dat,ntree=20)
RF_pred<- data.frame(predict(model))
train<-cbind(train,RF_pred) # this gave me a predictive results named: "predict.model."

出于对这行代码的好奇,我尝试了另一种语法:

dat$RF_pred<-predict(model,newdata=dat,type='response') # this gave me a predictive results named: "RF_pred"

令我惊讶的是,我得到了其他预测结果:

 dat
cats birds wolfs snakes predict.model. RF_pred
1 0 3 9 7 3.513889 5.400675
2 1 3 8 4 5.570000 5.295417
3 1 1 2 8 3.928571 5.092917
4 0 1 2 3 4.925893 4.208452
5 0 1 8 3 4.583333 4.014008
6 1 6 1 2 3.766667 2.943750
7 0 6 7 1 5.486806 4.061508
8 1 6 1 5 3.098148 2.943750
9 0 5 9 7 4.575397 5.675675
10 1 3 8 7 4.729167 5.295417
11 1 4 2 7 4.416667 5.567917
12 0 1 2 3 4.222619 4.208452
13 0 7 6 3 6.125714 4.036508
14 1 6 1 1 3.695833 2.943750
15 0 6 3 9 4.115079 5.178175
16 1 6 1 1 3.595238 2.943750

为什么会有差异。两者之间?哪一个是正确的?有什么想法吗?

最佳答案

区别在于对预测的两次调用:

predict(model)

predict(model, newdata=dat)

第一个选项从随机森林中获取对您的训练数据的袋外预测。在将预测值与实际值进行比较时,这通常是您想要的。

第二个将您的训练数据视为一个新数据集,并沿着每棵树运行观察结果。这将导致预测与实际之间人为地密切相关,因为 RF 算法通常不会修剪单个树,而是依赖树的集合来控制过度拟合。因此,如果您想对训练数据进行预测,请不要这样做。

关于r - 随机森林模型预测结果的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25153276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com