Ranger预测R中的维数不正确

Ranger预测R中的维数不正确,r,predict,confusion-matrix,r-ranger,R,Predict,Confusion Matrix,R Ranger,评估护林员的问题。在这两种情况下,都无法子集数据(需要rf.trnprob的第一列) 错误: 所有参数必须具有相同的长度 似乎predict函数调用错误,它应该是response而不是type。使用示例数据集: library(ranger) traindata =iris traindata$Species = factor(as.numeric(traindata$Species=="versicolor")) rangerModel = ranger(Species~.

评估护林员的问题。在这两种情况下,都无法子集数据(需要rf.trnprob的第一列)

错误:

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


似乎
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)]
然后:

尝试
trainscore$score
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