>假设我有一个双精度的RDD,我想将其"标准化"如下:
- 计算每个列的平均值和 sd 对于每个列,
- 从每个条目中减去列均值,然后将结果除以列 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)
}