大数据基础之算法——Spark ML归一化方法 MinMaxScaler
归一化是一种简化计算的方式,即通过某种算法将原始数据集限制在你需要的一定范围内,一方面是数据处理的方便,另一方面是为了后面放入模型计算的方便,使得运行时的收敛性更快。Spark ML机器学习库中包含了4种归一化的方法:NormalizerStandardScalerMinMaxScalerMaxAbsScaler在我的项目中只用到了MinMaxScaler方法,在这里我就着重分享该方法的用法。Mi
·
归一化是一种简化计算的方式,即通过某种算法将原始数据集限制在你需要的一定范围内,一方面是提升模型的精度,另一方面是为了后面放入模型计算的方便,使得运行时的收敛性更快。
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)
最终结果:
更多推荐
所有评论(0)