从 ICEbox 包在 R 中生成 ICE 图
Producing ICE plot in R from the ICEbox package
我正在尝试根据 plot.ice examples 中的示例代码从 R 中的 ICEbox 包生成 ICE 图,但是我遇到了错误。
我正在使用 caret 包中的随机森林模型,如下所示。有 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。
通过使用 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)
我正在尝试根据 plot.ice examples 中的示例代码从 R 中的 ICEbox 包生成 ICE 图,但是我遇到了错误。
我正在使用 caret 包中的随机森林模型,如下所示。有 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。
通过使用 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)