R 随机森林模型预测结果的差异
我建立了一个随机森林模型,当我编写两行不同的代码来生成预测时,我得到了两个不同的预测结果。我不知道哪一个是对的。 以下是我的示例数据帧和usedcode:R 随机森林模型预测结果的差异,r,random-forest,R,Random Forest,我建立了一个随机森林模型,当我编写两行不同的代码来生成预测时,我得到了两个不同的预测结果。我不知道哪一个是对的。 以下是我的示例数据帧和usedcode: dat <- read.table(text = " cats birds wolfs snakes 0 3 9 7 1 3 8 4 1 1 2 8
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)
为什么两者之间有区别?哪一个是正确的?
有什么想法吗?区别在于两个预测电话:
predict(model)
及
第一个选项从随机林中获取训练数据的现成预测。当比较预测值和实际值时,这通常是您想要的
第二种方法将训练数据视为一个新的数据集,并沿每棵树运行观察结果。这将导致预测和实际之间的人为紧密关联,因为RF算法通常不会修剪单个树,而是依赖树的集合来控制过度拟合。因此,如果您希望对训练数据进行预测,请不要这样做。不同之处在于两个预测调用:
predict(model)
及
第一个选项从随机林中获取训练数据的现成预测。当比较预测值和实际值时,这通常是您想要的
第二种方法将训练数据视为一个新的数据集,并沿每棵树运行观察结果。这将导致预测和实际之间的人为紧密关联,因为RF算法通常不会修剪单个树,而是依赖树的集合来控制过度拟合。所以,如果你想得到训练数据的预测,就不要这样做。你从来没有第一次定义过
train
(但你在cbind
中引用过它)——这可能是差异的根源。或者你是说“dat
”?你从来没有第一次定义过train
(但您在cbind
)中引用了它——这可能是差异的来源。或者您是指“dat
”?谢谢Hong Ooi,如果我想在新的数据集上使用预测,我应该使用:predict(model,newdata=dat1)#dat1是新的数据集?如果你在预测真正的新数据,那么一定要使用predict(model,newdata=dat1)
。谢谢Hong Ooi,如果我想在新数据集上使用预测,我应该使用:predict(model,newdata=dat1)#dat1是新的数据集吗?如果你预测的是真正的新数据,那么一定要使用predict(model,newdata=dat1)
。
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)