【问题标题】:How to calculate median and mode using Apache spark in java?如何在 java 中使用 Apache spark 计算中位数和众数?
【发布时间】:2015-08-10 13:58:19
【问题描述】:

此页面包含均值、最大值、方差等,但不包含中值和众数。https://spark.apache.org/docs/1.1.1/mllib-statistics.html

我用这段代码解析数据

JavaRDD<Vector> parseData = data .map(new Function<String, Vector>() { 
  /** * */
  private static final long serialVersionUID = 1L;
  public Vector call(String line) {
    // del = " " String[] sArray = line.trim().split(delimiterFinal);
    double[] values = new double[sArray.length];
    for (int i = 0; i < sArray.length; i++) {
      if (columnsSet.contains(i)) {
         values[i] = Double.parseDouble(sArray[i]);
      }
    }
  return Vectors.dense(values);
} 

【问题讨论】:

  • afaik:你必须自己编写代码。但这很容易。

标签: java apache-spark apache-spark-mllib


【解决方案1】:

是的,同意,您必须自己编写代码(不过是很好的练习)。例如中位数非常简单,您只需排序并找到中间点(查看中位数定义以获取详细信息)然后您有两种情况,一种分裂恰好发生在一个点(nvalues%%2=1)然后就是值或秒 (nvalues%%2=0) 然后是这两个值的平均值。

Mode 更简单,只是显示最多的值。

【讨论】:

  • 计算精确中位数很简单,但在大型数据集上可能会非常昂贵。
猜你喜欢
  • 2015-05-02
  • 2015-03-25
  • 2019-03-07
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2021-05-12
  • 2020-01-06
相关资源
最近更新 更多