0

评估游侠的问题。在两者中,无法对数据进行子集化(想要 rf.trnprob 的第一列)

rangermodel= ranger(outcome~., data=traindata, num.trees=200, probability=TRUE)
rf.trnprob= predict(rangerModel, traindata, type='prob')


trainscore <- subset(traindata, select=c("outcome"))
trainscore$score<-rf.trnprob[, 1]  

错误:

维数不正确

table(pred = rf.trbprob, true=traindata$outcome)

错误:

所有参数必须具有相同的长度

4

1 回答 1

0

似乎该predict函数被错误地调用,它应该response代替type. 使用示例数据集:

library(ranger)
traindata =iris
traindata$Species = factor(as.numeric(traindata$Species=="versicolor"))
rangerModel = ranger(Species~.,data=traindata,probability=TRUE)
rf.trnprob= predict(rangerModel, traindata, response='prob')

概率存储在这里,每个类别一列:

head(rf.trnprob$predictions)
             0           1
[1,] 1.0000000 0.000000000
[2,] 0.9971786 0.002821429
[3,] 1.0000000 0.000000000
[4,] 1.0000000 0.000000000
[5,] 1.0000000 0.000000000
[6,] 1.0000000 0.000000000

但似乎你想做一个混淆矩阵,所以你可以通过以下方式获得预测:

pred = levels(traindata$Species)[max.col(rf.trnprob$predictions)]

然后:

table(pred,traindata$Species)
pred   0   1
   0 100   2
   1   0  48
于 2020-09-25T08:40:48.030 回答