我试图通过随机森林来预测蘑菇是否可食用或有毒。我的准确度约为99.5%。是否可以说: 如果您不确定/不可能预测出错误(并杀死某人),则将蘑菇归类为有毒蘑菇,以确保没有人会吃掉他。 我是一个初学者,不知道在哪里可以找到可以解决我问题的任何东西。
yt131415 回答:R中的分类概率
是的。 randomForest
函数内置了允许进行此类决策的功能。您只需要输出每个答案的概率而不是分类即可。需要一些设置。 Mushroom数据在cba
包中可用,但是许多名称不能与R一起使用。在这里,我更改名称。此外,还有一些缺失值。我只使用完整的案例来简化插图。
library(cba) ## For Mushroom data
data(Mushroom)
## Fix variable names
names(Mushroom) = gsub("-",".",names(Mushroom))
names(Mushroom) = gsub("\\?","",names(Mushroom))
## Use only complete cases
MR = Mushroom[complete.cases(Mushroom),]
现在,我们可以建立randomForest模型
MushRF = randomForest(class~.,data=MR)
并获得预测可食用的树木比例
PredMRF = predict(MushRF,type="prob")
有些食物被食用的几率远高于50%,但并不像您想的那么确定。
PredMRF[37,]
edible poisonous
0.96354167 0.03645833
sum((PredMRF[,1] > 0.5) & (PredMRF[,1] < 0.99)) ## 173
sum((PredMRF[,1] > 0.995) & (PredMRF[,1] < 1.0)) ## 3
获取至少99%的树木同意的点
SafeBet = ifelse(PredMRF[,1] > 0.99,1,0)