【问题标题】:how to quantile-discretize on spark?如何对火花进行分位数离散化?
【发布时间】:2017-09-14 14:16:48
【问题描述】:
我想在没有 Spark.ML 的情况下将 RDD[Float] 分位数离散化为 10 个,所以我需要计算 10th-Percentile, 20th-Percentile...80th-Percentile,90th-Percentile
数据集很大,无法收集到本地!
有什么有效的算法来解决这个问题?
【问题讨论】:
标签:
apache-spark
machine-learning
feature-engineering
bigdata
【解决方案1】:
如果您使用的是 Spark 版本 > 2.0,则已提供此功能。您必须将您的 RDD[Float] 转换为数据框。使用来自DataFrameStatFunctions 的approxQuantile(String col, double[] probabilities, double relativeError)。
从文档中说:
此方法实现了 Greenwald-Khanna 算法的变体
(有一些速度优化)。该算法最早出现在
Greenwald 的分位数摘要的节省空间的在线计算
和卡纳