Spark ML 正则化 标准化 归一化 ---- spark 中的归一化

本文详细介绍了Spark中用于数据预处理的归一化方法,包括MaxAbsScaler和MinMaxScaler。MaxAbsScaler将每个特征的绝对最大值作为缩放因子,而MinMaxScaler则将每个特征缩放到指定范围。文章通过代码示例展示了如何使用这两个方法,并讨论了处理单值情况的方法。同时,提供了相关参考文献和链接,帮助读者深入理解Spark中的特征归一化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


spark 中的归一化

MaxAbsScaler

  • http://spark.apache.org/docs/latest/api/scala/org/apache/spark/ml/feature/MaxAbsScaler.html

MinMaxScaler

  • http://spark.apache.org/docs/latest/api/scala/org/apache/spark/ml/feature/MinMaxScaler.html

Rescale each feature individually to a common range [min, max] linearly using column summary
statistics, which is also known as min-max normalization or Rescaling. The rescaled value for
feature E is calculated as:
R e s c a l e d ( e i ) = e i − E m i n E m a x − E m i n ∗ ( m a x − m i n ) + m i n Rescaled(e_i) = \frac{e_i - E_{min}}{E_{max} - E_{min}} * (max - min) + min Rescaled(ei)=EmaxEmineiEmin(maxmin)+min

For the case (E_{max} == E_{min}), (Rescaled(e_i) = 0.5 * (max + min)).
note :

Since zero values will probably be transformed to non-zero values, output of the
transformer will be DenseVector even for sparse input.

核心代码:主要就是计算 最大最小值

override def fit(dataset: Dataset[_]): MinMaxScalerModel = {
    transformSchema(dataset.schema, logging = true)

    val Row(max: Vector, min: Vector) = dataset
      .select(Summarizer.metrics("max", "min").summary(col($(inputCol))).as("summary"))
      .select("summary.max", "summary.min")
      .first()

    copyValues(new MinMaxScalerModel(uid, min.compressed, max.compressed).setParent(this))
  }

注意: 上面的计算方式, 我们发现只能支持Vector的形式,那么对于但一值的情况如何转换呢?

 val temp_mean = df_num.select(functions.mean(df_num.col("features"))).collect()(0)
        println(temp_mean.getDouble(0))
       val Row(mean2: Vector) =Row(Vectors.dense(temp_mean.getDouble(0)))

   val df_num = spark.createDataFrame(Seq(
            (0, 0.5, -1.0),
            (1, 1.0, 1.0),
            (2, 10.0, 2.0),
            (3, 10.0, 0.0)
        )).toDF("id", "features","result")
        df.show()


参考文献

系列文章:

spark 中的 特征相关内容处理的文档

  • http://spark.apache.org/docs/latest/api/scala/org/apache/spark/ml/feature/index.html

概念简介

  • https://blog.youkuaiyun.com/u014381464/article/details/81101551

参考:

  • https://segmentfault.com/a/1190000014042959
  • https://www.cnblogs.com/nucdy/p/7994542.html
  • https://blog.youkuaiyun.com/weixin_34117522/article/details/88875270
  • https://blog.youkuaiyun.com/xuejianbest/article/details/85779029
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shiter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值