R随机森林 - 训练集使用目标列进行预测

时间:2014-06-13 13:24:09

标签: r random-forest

我正在学习如何使用各种随机森林包并从示例代码中编码以下内容:

library(party)
library(randomForest)

set.seed(415)

#I'll try to reproduce this with a public data set; in the mean time here's the existing code
data = read.csv(data_location, sep = ',')
test = data[1:65]  #basically data w/o the "answers"

m = sample(1:(nrow(factor)),nrow(factor)/2,replace=FALSE)
o = sample(1:(nrow(data)),nrow(data)/2,replace=FALSE)

train2 = data[m,]
train3 = data[o,]

#random forest implementation
fit.rf <- randomForest(train2[,66] ~., data=train2, importance=TRUE, ntree=10000)
Prediction.rf <- predict(fit.rf, test) #to see if the predictions are accurate -- but it errors out unless I give it all data[1:66]

#cforest implementation
fit.cf <- cforest(train3[,66]~., data=train3, controls=cforest_unbiased(ntree=10000, mtry=10))
Prediction.cf <- predict(fit.cf, test, OOB=TRUE) #to see if the predictions are accurate -- but it errors out unless I give it all data[1:66]

数据[,66]是我试图预测的目标因素,但似乎是通过使用“〜”。解决它导致公式在预测模型本身中使用因子。

如何在高维度数据上求解我想要的维度,而不必明确说明在公式中使用哪个维度(所以我最终不会得到某种类型的cforest(数据[,66] ] ~data [,1] + data [,2] + data [,3} ......等等?

编辑: 在很高的层面上,我基本上相信一个

  • 加载完整数据
  • 将其分解为多个子集以防止过度拟合
  • 通过子集数据进行训练
  • 生成拟合公式,以便在给定数据[1:65]的情况下预测目标值(在我的情况下为数据[,66])。

所以我的问题现在是,如果我给它一组新的测试数据,让我们说test = data {1:65],它现在说“eval中的错误(expr,envir,enclos):”它在哪里期待数据[66]。我想基本上预测数据[,66]给出其余的数据!

1 个答案:

答案 0 :(得分:1)

我认为如果答案在train3,则会将其用作功能。

我相信这更像你想要的:

crtl <- cforest_unbiased(ntree=1000, mtry=3)

mod <- cforest(iris[,5] ~ ., data = iris[,-5], controls=crtl)