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

  • Post author:
  • Post category:其他


数据归一化,以房价预测为案例,房价(y)通常与离市中心距离(x1)、面积(x2)、楼层(x3)有关,设y=ax1+bx2+cx3,那么abc就是我们需要重点解决的参数。但是有个问题,面积一般数值是比较大的,100平甚至更多,而距离一般都是几公里而已,b参数只要一点变化都能对房价产生巨大影响,而a的变化对房价的影响相对就小很多了。显然这会影响最终的准确性,毕竟距离可是个非常大的影响因素啊。 所以, 需要使用特征的归一化, 取值跨度大的特征数据, 我们浓缩一下, 跨度小的括展一下, 使得他们的

跨度尽量统一




归一化就是将所有特征值都等比地缩小到0-1或者-1到1之间的区间内。其目的是为了使特征都在相同的规模中。


MaxAbsScaler

转换由向量列组成的数据集,将每个特征调整到

[-1,1]

的范围,它通过每个特征内的最大绝对值来划分。 它不会移动和聚集数据,因此不会破坏任何的稀疏性。


MaxAbsScaler

计算数据集上的统计数据,生成

MaxAbsScalerModel

,然后使用生成的模型分别的转换特征到范围

[-1,1]

。下面是程序调用的例子。

// $example on$
import org.apache.spark.SparkConf
import org.apache.spark.ml.feature.MaxAbsScaler
import org.apache.spark.ml.linalg.Vectors
// $example off$
import org.apache.spark.sql.SparkSession
/*
所有值都扫描一遍,计算出最大最小值,比如1000的话那么absMax=1000。最后返回MaxAbsScalerModel
第一列1.0、2.0、4.0中最小为1.0,最大为4.0,2.0为0.5,第二列0.1、1.0、10.0依次类推
 */

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

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

    val scaler = new MaxAbsScaler()
      .setInputCol("features")
      .setOutputCol("scaledFeatures")

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

    // rescale each feature to range [-1, 1]
    val scaledData = scalerModel.transform(dataFrame)
    scaledData.select("features", "scaledFeatures").show()
    // $example off$

    spark.stop()
  }
}

结果:

+————–+—————-+

| features| scaledFeatures|

+————–+—————-+

|[1.0,0.1,-8.0]|[0.25,0.01,-1.0]|

|[2.0,1.0,-4.0]| [0.5,0.1,-0.5]|

|[4.0,10.0,8.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



版权声明:本文为linweidong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。