Standardize an RDD



>假设我有一个双精度的RDD,我想将其"标准化"如下:

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

这是否可以高效轻松地完成(无需在任何阶段将RDD转换为双阵列)?

感谢和问候,

你可以从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)
  }

相关内容

  • 没有找到相关文章

最新更新