从ICEbox包中生成R中的ICE图

问题描述 投票:0回答:1

我试图根据来自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对象时,使用下面的代码“ageardiagnosis”我得到一个错误。

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.

当我没有使用以下代码传递y时:

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。

r r-caret
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.