1

假设我有一个双打 RDD,我想将它“标准化”如下:

  1. 计算每个 col 的均值和 sd
  2. 对于每个 col,从每个条目中减去列平均值,然后将结果除以列 sd

这可以有效且轻松地完成(无需在任何阶段将 RDD 转换为双数组)吗?

谢谢并恭祝安康,

4

1 回答 1

5

您可以使用 Spark 本身的 StandardScaler

/**
 * Standardizes features by removing the mean and scaling to unit variance 
 * using column summary
 */

  import org.apache.spark.mllib.feature.StandardScaler
  import org.apache.spark.mllib.linalg.Vector
  import org.apache.spark.rdd.RDD

  val data: RDD[Vector] = ???
  val scaler = new StandardScaler(true, true).fit(data)

  data.foreach { vector =>
    val scaled = scaler.transform(vector)
  }
于 2014-12-12T18:52:15.207 回答