机器学习中数据标准化相关方法 |
您所在的位置:网站首页 › 数据标准化的目的统一单位 › 机器学习中数据标准化相关方法 |
拿到一批原始数据后,经过对缺失值的填补、异常值的处理以及组合型数据的生成,可以得到一份较为完整的数据集。但是不同指标具有不同的性质(连续、离散)和不同的数量级,直接进行训练会削弱数量级较低数据带来的影响,所以还需要对数据进行标准化处理(目标值通常不需要缩放),才能让数据可以投入训练。 数据标准化就是把有量纲的数据变成无量纲的数据,把量级不同的数据处理到同一个量级,从而让不同纬度的数据之间具有可比性,对于机器学习来说,用来提升模型的预测效果。 具体常用的标准化方法有如下几种: 1.Min-max标准化(Min-max normalization) 2.z-score标准化(zero-mena normalization) 3.log函数转换 4.atan函数转换 1.Min-max标准化(Min-max normalization)min-max标准化也称为最小-最大缩放、归一化。归一化的逻辑是将数据缩放到0~1之间,实现方法很简单。是将值减去最小值并除以最大值和最小值之差。 公式为: Scikit-learn提供了一个名为MinMaxScaler的转换器,具体使用方法为: from sklearn.preprocessing import MinMaxScaler data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]] scaler = MinMaxScaler() print(scaler.fit(data)) print("*" * 30) print(scaler.data_max_) print("*" * 30) print(scaler.transform(data))结果为: MinMaxScaler() ****************************** [ 1. 18.] ****************************** [[0. 0. ] [0.25 0.25] [0.5 0.5 ] [1. 1. ]]MinMaxScaler可用参数: feature_rangetuple(min,max), default=(0,1):调整参数可以手动设定要缩放到的具体范围 2.z-score标准化(zero-mena normalization)z-score标准化方法为先减去平均值(所以标准化的均值总是0),然后除以方差,从而使得结果的分布具备单位方差,不同于最小最大缩放的是,标准化不将值绑定到特定范围,对于某些算法来说,可能是个问题(例如,神经网络期望输入的值范围是0~1)。但是标准化的方法受异常值的影响更小。Scikit-Learn提供了一个标准化转换器StandardScaler,具体使用方法为: from sklearn.preprocessing import StandardScaler data = [[0, 0], [0, 0], [1, 1], [1, 1]] scaler = StandardScaler() print(scaler.fit(data)) print("*"*30) print(scaler.mean_) print("*"*30) print(scaler.transform(data))结果为 StandardScaler() ****************************** [0.5 0.5] ****************************** [[-1. -1.] [-1. -1.] [ 1. 1.] [ 1. 1.]] 3.log函数转换通过以10为底的log函数转换的方法同样可以通过x=log10(x)实现归一化,但是要是需要数据一定落到[0,1]区间上,应该还要除以log10(max),max为样本数据最大值,并且所有的数据都要大于等于1。公式为 python中log10函数计算方法 import numpy as np y = np.log10(x) import math y = math.log10(x) 4.atan函数转换用反正切函数也可以实现数据的归一化,使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上,公式为 python中反正切函数计算方法 import math y = math.atan(x)参考链接:数据标准化方法 - 知乎 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |