代码之家  ›  专栏  ›  技术社区  ›  see24

使用pdp包获取所有类的概率尺度部分相关图

  •  0
  • see24  · 技术社区  · 8 年前

    我一直在遵循这个例子 here 创建部分依赖关系图,但我想将用于获取多类中所有级别图的方法与用于获取概率尺度预测的方法结合起来(参见第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]))
    }
    

    有没有关于如何绕过这个要求或其他方法的建议?

    1 回复  |  直到 8 年前
        1
  •  0
  •   see24    8 年前

    看起来自从我提到的文章发表以来,这个包实际上已经被更新了。现在你要做的就是 prob 论证为真,它将在概率尺度上进行预测。

    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]))
    }
    

    我希望这能帮助别人避免浪费一个下午!

    推荐文章