1

使用randomForest,我得到一个 RF 对象。
例如forest <- randomForest(as.formula(generic),data=train, mtry=2)

使用predictI 可以预测测试数据集上的响应。
响应为 A、B 或 C。

prediction <- predict(forest, newdata=test, type='class')
mytable <- table(test$class_w,prediction)
sum(mytable[row(mytable) != col(mytable)]) / sum(mytable)#show error

调用森林对象我得到混淆矩阵:

     A     B    C     class.error
A   498    79   170   0.3333333
B   115    353  237   0.4992908
C   96     99   967   0.1678141

例如测试数据集

id |class_w| valueA | valueB |
1  |  C    |  0.254 |  0.334 |
2  |  A    |  0.654 |  0.334 |
3  |  A    |  0.554 |  0.314 |
4  |  B    |  0.454 |  0.224 |
5  |  C    |  0.354 |  0.332 |
6  |  C    |  0.264 |  0.114 |
7  |  C    |  0.264 |  0.664 |

我想知道我是否可以创建一个包含 2 列的新数据集,其中包含前一个数据集的 id 和预测的响应(RF 给出)。例如

row id of test dataset  |  predicted response
1                       |  A  #failed
2                       |  B  #failed
3                       |  B  #failed
4                       |  B  #TRUE!

在此先感谢您的帮助。

4

2 回答 2

3

我认为您可能只是想创建一个新的数据框:

data.frame(id = test$id,response = prediction)

假设这id实际上是 中的一列test,而不是行名。如果它们是行名,那么你会想要这样做:

data.frame(id = rownames(id),response = prediction)
于 2013-04-22T21:40:20.243 回答
1

另一种方法是只写这样的东西:

yourNewDataSet$someNewColumnCreated= Predict(forest,yourNewDataSet,type="class")

这应该会在新数据集中为您提供一个名为“someNewColumnCreated”的新列

当应用于这个新数据集时,它将包含您模型的所有预测。

于 2017-08-03T05:30:37.647 回答