MinMaxScaler

MinMaxScaler作用是每一列,即每一维特征。将每一维特征线性地映射到指定的区间,通常是[0, 1]。
MinMaxScaler计算数据集的汇总统计量,并产生一个MinMaxScalerModel
注意因为零值转换后可能变为非零值,所以即便为稀疏输入,输出也可能为稠密向量。
该模型可以将独立的特征的值转换到指定的范围内。
它也有两个参数可以设置:

  • min: 默认为0。指定区间的下限。
  • max: 默认为1。指定区间的上限。
object MinMaxScalerExample {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().master("local[*]").appName("QuantileDiscretizerExample").getOrCreate()

    val dataFrame = spark.createDataFrame(Seq(
      (0, Vectors.dense(1.0, 0.5, -1.0)),
      (1, Vectors.dense(2.0, 1.0, 1.0)),
      (2, Vectors.dense(4.0, 10.0, 2.0))
    )).toDF("id", "features")
    dataFrame.show()
    val scaler = new MinMaxScaler()
      .setInputCol("features")
      .setOutputCol("scaledFeatures")

    // Compute summary statistics and generate MinMaxScalerModel
    val scalerModel = scaler.fit(dataFrame)

    // rescale each feature to range [min, max].
    val scaledData = scalerModel.transform(dataFrame)
    println(s"Features scaled to range: [${scaler.getMin}, ${scaler.getMax}]")
    scaledData.select("features", "scaledFeatures").show(false)
  }
}
  • 原始数据
+---+--------------+
| id|      features|
+---+--------------+
|  0|[1.0,0.5,-1.0]|
|  1| [2.0,1.0,1.0]|
|  2|[4.0,10.0,2.0]|
+---+--------------+
  • 默认特征范围
Features scaled to range: [0.0, 1.0]
  • 结果数据
+--------------+-----------------------------------------------------------+
|features      |scaledFeatures                                             |
+--------------+-----------------------------------------------------------+
|[1.0,0.5,-1.0]|[0.0,0.0,0.0]                                              |
|[2.0,1.0,1.0] |[0.3333333333333333,0.05263157894736842,0.6666666666666666]|
|[4.0,10.0,2.0]|[1.0,1.0,1.0]                                              |
+--------------+-----------------------------------------------------------+

你可能感兴趣的:(MinMaxScaler)