我一直在参考这里的示例来创建偏依赖图,但我希望将用于获取多类别所有级别的图的方法与用于获取概率尺度预测的方法结合起来(参见第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 <- NULLfor (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]))}
有什么建议可以绕过这个要求或采用不同的方法吗?
回答:
看起来自从我参考的那篇文章发布以来,该包实际上已经更新了。现在你只需将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]))}
希望这能帮助其他人避免浪费一个下午的时间!