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

MinMaxScaler转换由向量行组成的数据集,将每个特征调整到一个特定的范围(通常是[0,1])。它有下面两个参数:

  • min:默认是0。转换的下界,被所有的特征共享。
  • max:默认是1。转换的上界,被所有特征共享。

  MinMaxScaler计算数据集上的概要统计数据,产生一个MinMaxScalerModel。然后就可以用这个模型单独的转换每个特征到特定的范围。 特征E被转换后的值可以用下面的公式计算:

$$\frac{e_{i} – E_{min}}{E_{max} – E_{min}} * (max – min) + min$$

  对于E_{max} == E_{min}的情况,Rescaled(e_i) = 0.5 * (max + min)

  注意,由于0值有可能转换成非0的值,所以转换的输出为DenseVector,即使输入为稀疏的数据也一样。下面的例子展示了如何将特征转换到[0,1]。例子:

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

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

    // $example on$
    val dataFrame = spark.createDataFrame(Seq(
      (0, Vectors.dense(1.0, 0.1, -1.0)),
      (1, Vectors.dense(2.0, 1.1, 1.0)),
      (2, Vectors.dense(3.0, 10.1, 3.0))
    )).toDF("id", "features")

    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()
    // $example off$

    spark.stop()
  }
}

结果:

+————–+————–+
| features|scaledFeatures|
+————–+————–+
|[1.0,0.1,-1.0]| [0.0,0.0,0.0]|
| [2.0,1.1,1.0]| [0.5,0.1,0.5]|
|[3.0,10.1,3.0]| [1.0,1.0,1.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/87278878