【发布时间】:2017-09-07 21:24:15
【问题描述】:
我正在尝试使用 Caret 来构建随机森林模型以进行二元分类。我过去曾使用 randomForest 源包来执行此操作,它运行良好,但使用 Caret 我的输出是二进制而不是概率。 type='prob' 会报错
[.data.frame(out, , obsLevels, drop = FALSE) 中的错误:选择了未定义的列
我对两者都使用相同的语法(我希望)。这是我过去通过 source randomForest 包获得的。
>fit = randomForest(x = a[,-1], y = as.factor(a[,1]),ntree=120)
>head(predict(fit, newdata = test_data[,-c(1:2)], type = "prob")[,2])
1 2 3 4 5 6
0.04166667 0.03333333 0.55833333 0.80000000 0.87500000 0.04166667
现在,使用 Caret 我正在尝试做同样的事情,但它在预测函数中不接受“type='prob'”,这给了我错误
>rf_model<-train(x = a[,-1], y = as.factor(a[,1]),method="rf",ntree=120)
>head(predict(rf_model, test_data[,-c(1:2)], type="prob"))
Error in `[.data.frame`(out, , obsLevels, drop = FALSE) :
undefined columns selected
当我拿出“类型”时,它给了我
>head(predict(rf_model, test_data[,-c(1:2)]))
[1] 0 0 1 1 1 0
Levels: 0 1
如何获得概率输出?
在此之后我需要创建多个算法,我认为 Caret 会更加同质化。我确定我在这里遗漏了一些东西,但是对 Caret 来说是新手,我不知道是什么。
【问题讨论】: