首页 > 解决方案 > 使用 pdp 包获取所有类的概率尺度偏依赖图

问题描述

我一直在按照此处的示例创建部分依赖图,但我想将用于获取多类中所有级别的图的方法与获得概率尺度预测的方法结合起来(参见第 430-431 页)。这是我的方法,但它不起作用,因为pred.fun不允许有第三次争论

library(e1071)

iris.svm <- svm(Species ~ ., data = iris, kernel = "radial", gamma = 0.75,
                cost = 0.25, probability = TRUE)

pred.prob <- function(object, newdata,i) { # see ?predict.svm
  pred <- predict(object, newdata, probability = TRUE)
  prob.class <- attr(pred, which = "probabilities")[, i]
  mean(prob.class)
}

pred.prob(iris.svm,iris,"setosa")

pd <- NULL

for (i in 1:3) {
  tmp <- partial(iris.svm, pred.var = c("Petal.Width", "Petal.Length"),
                 pred.fun = pred.prob,
                 which.class = i, grid.resolution = 101, progress = "text")
  pd <- rbind(pd, cbind(tmp, Species = levels(iris$Species)[i]))
}

有关如何解决此要求或其他方法的任何建议?

标签: rmachine-learning

解决方案


自从我提到的文章发表以来,该软件包似乎实际上已经更新。现在您需要做的就是将prob参数设置为 TRUE,它将在概率尺度上进行预测。

pd <- NULL    
for (i in 1:3) {
  tmp <- partial(iris.svm, pred.var = c("Petal.Width", "Petal.Length"),
                 prob = T,
                 which.class = i, grid.resolution = 101, progress = "text")
  pd <- rbind(pd, cbind(tmp, Species = levels(iris$Species)[i]))
}

我希望这可以帮助其他人避免浪费一个下午!


推荐阅读