从ICEbox包中生成R中的ICE图

时间:2018-02-27 17:05:31

标签: r r-caret

我正在尝试根据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。

1 个答案:

答案 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)