Spark ML机器学习:多项式转化-PolynomialExpansion

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

// $example on$
import org.apache.spark.SparkConf
import org.apache.spark.ml.feature.PolynomialExpansion
import org.apache.spark.ml.linalg.Vectors
// $example off$
import org.apache.spark.sql.SparkSession

object PolynomialExpansionExample {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf();
    sparkConf.setMaster("local[*]").setAppName(this.getClass.getSimpleName)
    val spark = SparkSession
      .builder
      .config(sparkConf)
      .appName("PolynomialExpansionExample")
      .getOrCreate()

    // $example on$
    val data = Array(
      Vectors.dense(2.0, 1.0),
      Vectors.dense(0.0, 0.0),
      Vectors.dense(3.0, -1.0)
    )
    val df = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features")
    //setDegree表示多项式最高次幂 比如1.0,5.0可以是 三次:1.0^3 5.0^3 1.0+5.0^2 二次:1.0^2+5.0 1.0^2 5.0^2 1.0+5.0 一次:1.0 5.0
    val polyExpansion = new PolynomialExpansion()
      .setInputCol("features")
      .setOutputCol("polyFeatures")
      .setDegree(3)

    val polyDF = polyExpansion.transform(df)
    polyDF.show(false)
    // $example off$

    spark.stop()
  }
}

输出结果为:

+---+---------+-----------------------------------------------+
|id |features |Polynomial_features                            |
+---+---------+-----------------------------------------------+
|0  |[1.0,5.0]|[1.0,1.0,1.0,5.0,5.0,5.0,25.0,25.0,125.0]      |
|1  |[2.0,1.0]|[2.0,4.0,8.0,1.0,2.0,4.0,1.0,2.0,1.0]          |
|2  |[4.0,8.0]|[4.0,16.0,64.0,8.0,32.0,128.0,64.0,256.0,512.0]|
+---+---------+-----------------------------------------------+

Spark ML机器学习:SQLTransformer

Spark ML机器学习:Tokenizer分词器

Spark ML机器学习:多项式转化-PolynomialExpansion

Spark ML机器学习:N-gram

Spark ML机器学习:归一化之最小最大值标准化-MinMaxScaler

Spark ML机器学习:绝对值最大标准化-MaxAbsScaler

Spark ML机器学习:标准化-StandardScaler

Spark ML机器学习:连续型数据处理之给定分位数离散化-QuantileDiscretizer

Spark ML机器学习:连续型数据处理之二值化-Binarizer

Spark ML机器学习:连续型数据处理之给定边界离散化-Bucketizer

Spark ML机器学习:元素智能乘积-ElementwiseProduct

猜你喜欢

转载自blog.csdn.net/linweidong/article/details/87278655