【问题标题】:Extracting Class Probabilities from SparkR ML Classification Functions从 SparkR ML 分类函数中提取类概率
【发布时间】:2017-06-16 00:39:35
【问题描述】:

我想知道是否有可能(使用 SparkR 的内置功能或任何其他解决方法)提取 SparkR 中包含的某些分类算法的类概率。特别感兴趣的是。

spark.gbt()
spark.mlp()
spark.randomForest()

目前,当我在这些模型上使用预测功能时,我能够提取预测,但不能提取实际概率或“置信度”。

我还看到了其他几个与此主题类似的问题,但没有一个是特定于 SparkR 的,而且很多问题都没有关于 Spark 的最新更新的答案。

【问题讨论】:

    标签: r apache-spark machine-learning sparkr


    【解决方案1】:

    我遇到了同样的问题,现在按照this 的回答,现在使用SparkR:::callJMethod 将概率DenseVector(R 无法反序列化)转换为Array(R 读取为List)。它不是非常优雅或快速,但它可以完成工作:

      denseVectorToArray <- function(dv) {
        SparkR:::callJMethod(dv, "toArray")
      }
    

    例如: 开始你的火花会议

    #library(SparkR)
    #sparkR.session(master = "local") 
    

    生成玩具数据

    data <- data.frame(clicked = base::sample(c(0,1),100,replace=TRUE),
                      someString = base::sample(c("this", "that"),
                                               100, replace=TRUE), 
                      stringsAsFactors=FALSE)
    
    trainidxs <- base::sample(nrow(data), nrow(data)*0.7)
    traindf <- as.DataFrame(data[trainidxs,])
    testdf <- as.DataFrame(data[-trainidxs,])
    

    训练一个随机森林并运行预测:

    rf <- spark.randomForest(traindf, 
                            clicked~., 
                            type = "classification", 
                            maxDepth = 2, 
                            maxBins = 2,
                            numTrees = 100)
    
    predictions <- predict(rf, testdf)
    

    收集你的预测:

    collected = SparkR::collect(predictions)    
    

    现在提取概率:

    collected$probabilities <- lapply(collected$probability, function(x)  denseVectorToArray(x))     
    str(probs) 
    

    当然,SparkR:::callJMethod 周围的函数包装器有点矫枉过正。您也可以直接使用它,例如使用 dplyr:

    withprobs = collected %>%
                rowwise() %>%
                mutate("probabilities" = list(SparkR:::callJMethod(probability,"toArray"))) %>%
                mutate("prob0" = probabilities[[1]], "prob1" = probabilities[[2]])
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 2014-04-27
      • 2014-06-09
      • 2018-09-29
      • 2011-09-22
      • 2018-04-04
      • 2023-03-19
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多