本文共 1741 字,大约阅读时间需要 5 分钟。
通过一些转换函数将特征转换成更加适合算法模型的过程
数值型数据进行无量纲化,使不同规格的数据转换到同一规格
sklearn.preprocessing
特征的 单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果, 使得一些算法无法学习到其它的特征.
通过对原始数据进行变换把数据映射到(默认为[0,1])之间
作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0
from sklearn.preprocessing import MinMaxScalerdef mm(): """ 对二维数组进行归一化处理 """ # 数据取值范围为2~4 mm = MinMaxScaler(feature_range=(2, 4)) # 每列数据进行归一化对比计算 data = mm.fit_transform([[90,2,10,40],[60,90,15,45],[75,3,13,46]]) print(data) return Noneif __name__ == "__main__": mm() -------------------------[[4. 2. 2. 2. ] [2. 4. 4. 3.66666667] [3. 2.02272727 3.2 4. ]]
最大值与最小值非常容易受异常点影响,异常点如果过多,影响数据取值。所以这种方法鲁棒性较差,只适合传统精确小数据场景。
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
作用于每一列,mean为平均值,σ为标准差
对下面的数据进行计算
[[90,2,10,40],[60,4,15,45],[75,3,13,46]]
1、实例化StandardScaler
2、通过fit_transform转换from sklearn.preprocessing import StandardScalerdef std(): std = StandardScaler() # 每列数据进行标准化对比计算 data = std.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) print(data) return Noneif __name__ == "__main__": std()
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
转载地址:http://vsili.baihongyu.com/