没有适用于 "c('ksvm', 'vm')" R 中 iml::P redictor 的类 对象的"预测"方法适用



我在R中具有以下代码段,我尝试训练基于SVM的模型:

library(base)
library(caret)
library(iml)
library(tidyverse)
dataset <- read_csv("https://gist.githubusercontent.com/dmpe/bfe07a29c7fc1e3a70d0522956d8e4a9/raw/7ea71f7432302bb78e58348fede926142ade6992/pima-indians-diabetes.csv", col_names=FALSE)
X = dataset[, 1:8]
Y = as.factor(ifelse(dataset$X9 == 1, 'diabetes', 'nondiabetes'))
set.seed(88)
nfolds <- 3
cvIndex <- createFolds(Y, nfolds, returnTrain = T)
fit.control <- trainControl(method="cv",
                            index=cvIndex,
                            number=nfolds,
                            classProbs=TRUE,
                            savePredictions=TRUE,
                            verboseIter=TRUE,
                            summaryFunction=twoClassSummary,
                            allowParallel=FALSE)
model <- caret::train(X, Y,
                      method = "svmLinear",
                      trControl = fit.control,
                      preProcess=c("center","scale"),
                      tuneLength=10)
pred <- Predictor$new(model$finalMode, data=dataset)
pdp <- FeatureEffect$new(pred, "X1", method="pdp")

但是,标题上显示的预测变量和错误。有什么想法为什么会发生这种情况以及如何克服它?

您不需要选择模型$ finalModel(该行中有错别字吗?您正在运行一个行,例如:

pred <- predict(model, newdata, type = "prob")

和Caret将自动采用最佳分数。如果您选择type =" prob",则输出将为您提供糖尿病(第1列(或不(第2列(的互补概率。如果您想要从Caret"模型"对象中的特定模型,那么我相信您可以(从以前的折叠问题(中挑选出来 - 但是我从来没有做过,不确定如何。

对于您的部分依赖图,我使用了PDP软件包,所以类似的东西应该有效:

library(pdp)
varname = 'X1' # Change this to whatever your first variable is called, or subsequently variables you are interested in.
partial(model, pred.var = varname, 
        train = X, chull=T, prob = T, progress = "text")

x在哪里您在哪里训练了模型的数据(x我认为?(

相关内容

  • 没有找到相关文章

最新更新