归一化是一种简化计算的方式,即通过某种算法将原始数据集限制在你需要的一定范围内,一方面是提升模型的精度,另一方面是为了后面放入模型计算的方便,使得运行时的收敛性更快。
Spark ML机器学习库中包含了4种归一化的方法:

  • Normalizer
  • StandardScaler
  • MinMaxScaler
  • MaxAbsScaler
    在这里插入图片描述

如图所示,左边的图代表没有经过归一化处理的数据集,右边的图代表经过归一化处理的数据集。我们很清楚的可以看出,左边的椭圆要想遍历完整,必须从短轴开始,已短轴为半径画圆,只能遍历到圆与椭圆重叠的部分,圆外面的部分还需要不断的增加轴的长度,继续画圆,慢慢的遍历。而经过归一化,他的数据集就是一个很正规的一个圆,如果需要遍历只需要以半径为圆就可以遍历整个数据集,大大减少了迭代的次数,节省运行时间和复杂度。

在我的项目中只用到了MinMaxScaler方法,在这里我就着重分享该方法的用法。

MinMaxScaler作用是将每一维度的特征向量映射到指定的区间内,通常是[0,1]。他一般有两个参数可以设置:

  • min:默认为0。指定区间的下限
  • max:默认为1。指定区间的上限

原始数据集:
在这里插入图片描述
从图中可以看出数据之间的差距很大,这不利于后期的数据处理和运行时的收敛速度。

val mmScaler = new MinMaxScaler().setInputCol("orign_feature").setOutputCol("feature")
//    fit产生模型 transform将数据带到模型里计算  ofdf为处理前的数据集
val resdf = mmScaler.fit(ofdf).transform(ofdf).select("cust_id","feature").show(false)

最终结果:
在这里插入图片描述

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐