random-forest - 如何仅获得概率大于 x 的预测
问题描述
我使用随机森林将文本分类到某些类别。当我使用我的测试数据时,我得到了 0.98 的准确度。但是使用另一组数据,整体准确度下降到 0.7。我认为,大多数行仍然具有很高的准确性。
所以现在我只想显示具有高置信度的预测类别。random-forrest 给了我一列“概率”,它是一个概率数组。如何获得所选预测的实际概率?
val randomForrest = new RandomForestClassifier()
.setLabelCol(labelIndexer.getOutputCol)
.setFeaturesCol(vectorAssembler.getOutputCol)
.setProbabilityCol("probability")
.setSeed(123)
.setPredictionCol("prediction")
解决方案
我最终想出了以下 udf 以获得最佳预测及其概率。如果有更方便的方法,请评论。
def getBestPrediction = udf((
rawPrediction: org.apache.spark.ml.linalg.Vector, probability: org.apache.spark.ml.linalg.Vector) => {
val bestPrediction = probability.argmax
val bestProbability = probability(bestPrediction)
(bestPrediction, bestProbability)
})
推荐阅读
- c# - 只能从代码中验证内存用户
- amazon-web-services - 如何通过 gitlab-ci 在 AWS EC2 实例上拉取 docker 容器?
- python - 从白色到红色的颜色图
- java - 如何从 mvn clean deploy 生成的 Maven 工件中删除日期时间后缀并增加 #?
- sql-server - 如果身份但不是主要的,则获取字段的值
- c# - 值 -1 超出 [0,2147483647] 的可接受范围。参数名称:值
- javascript - 确保不同的元素从随机列表中选择相同的类
- node.js - 如何从 Buffer.from 获得与 fs.readFile 相同的输出?
- android - 我想请求一个可变地址
- flutter - 我想在我的颤振应用程序中添加一个应用程序抽屉,但在脚手架之外