predict.randomForest()返回正确数据下方的空行,并选择type =“prob”

时间:2014-11-11 07:24:21

标签: r statistics random-forest

这是与iris数据集相关的一些虚拟代码,它产生了我遇到的问题。

iris <- read.csv("~/Rdata/iris.csv")
library(randomForest)
fit <- randomForest(Species ~ ., data=iris)

iris$guess <- predict(fit, type="prob")
View(iris)  

您会看到新的GUESS列长度为450条记录,而iris只有150条记录长度。但预测似乎是正确的,如果我从代码中删除type="prob",这个问题就会消失。

1 个答案:

答案 0 :(得分:1)

type ?predict.randomForest参数的解释表明,对于type='prob',您将收到不同潜在响应类别的预测概率矩阵。

当您单独查看predict结果时,您会看到这一点:

head(predict(fit, type="prob"), 10)

#       setosa  versicolor virginica
# 1  1.0000000 0.000000000         0
# 2  1.0000000 0.000000000         0
# 3  1.0000000 0.000000000         0
# 4  1.0000000 0.000000000         0
# 5  1.0000000 0.000000000         0
# 6  1.0000000 0.000000000         0
# 7  1.0000000 0.000000000         0
# 8  1.0000000 0.000000000         0
# 9  0.9945355 0.005464481         0
# 10 1.0000000 0.000000000         0

由于有3个类别(物种)和150个观测值,因此有450个预测值。当您对data.frame进行此预测矩阵时,R会从中删除维度并将其添加为单个长列。

如果您将type保留为默认'response',则R将返回具有最高预测概率的类。例如,比较:

levels(iris$Species)[apply(predict(fit,type="prob"), 1, which.max)]

predict(fit)