我估计一个randomForest,然后对某些保留数据运行randomForest.predict
函数。
我想做的是(最好)将每行的预测追加到包含保持数据的数据框中作为新列,或者(第二选择)保存(测试数据中的行号,对该行的预测)作为.csv文件。
我不能做的是以允许我这样做的方式访问结果对象的内部。我是R的新手,因此感谢您的帮助。
我有:
res <-predict(forest_tst1,
test_d,
type="response")
这成功地给了我很多预测。
以下是无效的R,但理想情况下,我会做类似的事情:
test_d$predicted_value <- results[some_field_of_the_results]
或
for i = 1:nrow(test_d)
test_d[i, new_column] = results[prediction_for_row_i]
end
基本上,我只想要与test_d中的行相对应的预测1或0的列。我一直在尝试使用以下命令来访问res
对象的内部,但是我没有找到任何对我有帮助的东西。
attributes(res)
names(res)
最后-如果有人可以解释,我对以下内容感到困惑!
typeof(res) = "integer"
编辑:我可以做
res != test_d$gold_label
这有点令人困惑,因为我正在比较列和非列对象(??),并且
length(res) = 2053
和res
似乎可索引
attributes(res[1])
$names
[1] "6836"
$levels
[1] "0" "1"
$class
[1] "factor"
但我无法以明智的方式选择子部分
> res[1][1]
6836
0
Levels: 0 1
> res[1]["levels"]
<NA>
<NA>
Levels: 0 1
答案 0 :(得分:0)
如果理解正确,您要做的就是在测试数据中添加预测吗?
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2))
TestData = iris[ind == 2,] ## Generate Test Data
iris.rf <- randomForest(Species ~ ., data=iris[ind == 1,]) ## Build Model
iris.pred <- predict(iris.rf, iris[ind == 2,]) ## Get Predictions
TestData$Predictions <- iris.pred ## Append the Predictions Column
OutPut:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Predictions
9 4.4 2.9 1.4 0.2 setosa setosa
16 5.7 4.4 1.5 0.4 setosa setosa
17 5.4 3.9 1.3 0.4 setosa setosa
32 5.4 3.4 1.5 0.4 setosa setosa
42 4.5 2.3 1.3 0.3 setosa setosa
46 4.8 3.0 1.4 0.3 setosa setosa