特征工程 - 数据规范化
一、基本概念
规范化包括对数据进行标准化、区间化和归一化等等。
标准化是让数据变为正态分布。
区间化是让数据限定在指定区间。
归一化是让数据限定在指定单位中。(这个描述可能有点抽象,不太准确)
因为不同特征的量纲不同,所以不能进行直接比较,如:A标准满分为100,但B标准满分为10,A和B就不能直接进行比较。
二、标准化
1、Z-Score
能够将不同量级的数据,转化为无量纲的分值进行比较。通过
将两组或多组数据转化为无单位的Z-Score分值,使得数据标准统一化,提高了数据可比性,削弱了数据解释性。是一种中心化方法,会改变原有数据得分布结构。
:总体的平均值 :总体的标准差 :个体的观测值
Z-Score也有风险,估算Z-Score需要总体的平均值与方差,但是在真实的分析与挖掘中很难得到,大多数情况下,用样本的均值与标准差替代。
from sklearn.preprocessing import StandardScaler data_std = StandardScaler().fit_transform(data)
# 使用mean和std查看,其mean为0,std为1。 import numpy as np np.mean(data) np.std(data)
二、区间化
1、Min-Max
特征的值经过变换后,被限定在指定的区间。通常限定在0~1之间,为此使用特征值max和min,称为Min-Max标准化,也称作极差标准化。
- 分母可能为0,导致计算过程出错。
- 对异常值(离群点)的存在非常敏感。
from sklearn.preprocessing import MinMaxScaler data_mm = MinMaxScaler().fit_transform(data)
MinMaxScaler中有一个参数feature_range,这个参数的默认值为(0,1),可以给定(a,b)来设置区间范围。
2、分位数
将特征值区间化到四分位距,能最大限度地保留数据集中的离群点。
from sklearn.preprocessing import RobustScaler robust = RobustScaler() robust_scaled = robust.fit_transform(data)
RobustScaler中有一个参数quantile_range,这个参数的默认值为(25.0,75.0),分别表示公式中的
三、归一化
1、Normalizer
from sklearn.preprocessing import Normalizer norma = Normalizer() norma.fit_transform(data)
Normalizer中有一个参数norm,这个参数的默认值为‘l2’,表示L2范数。当这个参数为‘max’时,表示依据数据中的最大值进行归一化。
2、MaxAbsScaler
# sklearn中有指定的方法,来实现根据最大值进行归一化。 from sklearn.preprocessing import MaxAbsScaler mas = MaxAbsScaler() mas.fit_transform(data)
除了上述提到的方法,还有其他方法可以将数据标准化,如:小数定标、中心化、比例法。比例法,是所有数据求和,计算每个值占总和的比值。
本文作者:paramotor
本文链接:https://www.cnblogs.com/paramotor/p/17898199.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步