我正在尝试根据plot.ice examples中的示例代码从R中的ICEbox包生成ICE图。但是我收到了错误。
我正在使用插入符号包中的随机森林模型,如下所示。有1,118个预测变量和一个响应变量," grp"。
library(caret)
control <- trainControl(method="cv",
number=5,
summaryFunction = prSummary,
classProbs = T)
mtry <- sqrt(ncol(train[,2:1020]))
rf_fit <- train(grp~.,
data=train[,2:1020],
method="rf",
metric="AUC",
tuneGrid=expand.grid(.mtry=mtry),
trControl=control,
importance=TRUE,
ntree = 200)
使用预测变量创建ICE对象时,&#34; ageardiagnosis&#34;使用下面的代码我得到一个错误。
age.ice = ice(object = rf_fit, X = train[,2:1020],
predictor = "ageatdiagnosis", frac_to_build = .1)
我收到的错误是:
Error in ice(object = rf_fit, X = train[, 2:1019], y = train$grp,
predictor = "ageatdiagnosis", :
Do not pass y when it is categorical variable.
当我没有使用以下代码传递时:
age.ice = ice(object = rf_fit, X = train[,2:1020], predictor =
"ageatdiagnosis",frac_to_build = .1)
我收到以下错误:
Error in ice(object = rf_fit, X = train[, 2:1020], predictor =
"ageatdiagnosis", :
The predict function must return probabilities (not levels of a factor).
我应该输入预测的概率吗?此处列出的示例似乎并不建议plot.ice examples。
我会使用pdp软件包,但我在只有R版本3.2.3的服务器上使用RStudio。
答案 0 :(得分:0)
通过使用ICEbox包的参考手册,我能够找到问题的解决方案。问题是上面的例子是针对回归问题而我的是一个分类问题。
可以在此处找到分类问题的示例:ICEbox Reference Manual。
我的问题的工作代码可以在下面找到:
y = train$grp
X = train
X$grp = NULL
rf_age.ice = ice(object = pima_rf, X = X, predictor = "ageatdiagnosis",
logodds = TRUE,
predictfcn = function(object, newdata){
predict(object, newdata, type = "prob")[,2]
}
)
plot(rf_age.ice)