使用randomForest
,我得到一个RF对象
例如。 forest <- randomForest(as.formula(generic),data=train, mtry=2)
)
使用predict
我可以预测测试数据集的响应
答案是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
E.g 测试数据集:
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给出)。 E.g。
row id of test dataset | predicted response
1 | A #failed
2 | B #failed
3 | B #failed
4 | B #TRUE!
提前感谢您的帮助。
答案 0 :(得分:3)
我认为您可能只是想创建一个新的数据框:
data.frame(id = test$id,response = prediction)
假设id
实际上是test
中的一列,而不是行名。如果他们是rownames,那么你想做:
data.frame(id = rownames(id),response = prediction)
答案 1 :(得分:1)
另一种方法是写下这样的东西:
yourNewDataSet$someNewColumnCreated= Predict(forest,yourNewDataSet,type="class")
这应该会在新数据集中为您提供名为“someNewColumnCreated”的新列
将包含模型在应用于此新数据集时的所有预测。