PolynomialExpansion(多元展开)

  Polynomial expansion是一个将特征展开到多元空间的处理过程。
它通过n-degree结合原始的维度来定义。比如设置degree为2就可以将(x, y)转化为(x, x x, y, x y, y y)PolynomialExpansion提供了这个功能。
下面的例子展示了如何将特征展开为一个3-degree多项式空间。

  1. import org.apache.spark.ml.feature.PolynomialExpansion
  2. import org.apache.spark.ml.linalg.Vectors
  3. val data = Array(
  4. Vectors.dense(-2.0, 2.3),
  5. Vectors.dense(0.0, 0.0),
  6. Vectors.dense(0.6, -1.1)
  7. )
  8. val df = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features")
  9. val polynomialExpansion = new PolynomialExpansion()
  10. .setInputCol("features")
  11. .setOutputCol("polyFeatures")
  12. .setDegree(3)
  13. val polyDF = polynomialExpansion.transform(df)
  14. polyDF.select("polyFeatures").take(3).foreach(println)