数据特征归一化(Feature Scaling)学习及实现

为什么需要特征归一化

不同特征指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
常用的两种归一化方法
1最值归一法(normaization):
最值归一法将数据映射到0-1之间。
适用于分布有明显边界的特征指标,受outlier影响较大。
KaTeX parse error: Got function '\min' with no arguments as subscript at position 19: … = \frac{X - X_\?m?i?n?}{X_\max - X_\m…
【数据特征归一化(Feature Scaling)学习及实现】均值方差归一法(standardization)
将数据归一到均值为0,方差为一的分布中
适用于数据分布没有明显边界,有可能存在极端数据值(对outlier的处理更好些)。
X s = X ? X ˉ S X_s = \frac{X - \bar X}{S} Xs?=SX?Xˉ?
实现最值归一化&封装
import numpy as np class MinMaxScaler1(): def __init__(self): '''初始化MinmaxScaler ''' self.min_ = None self.max_ = None def fit(self, X): '''装载X,并得到''' self.min_ = X.min(axis=0) self.max_ = X.max(axis=0) return selfdef transform(self, X): '''转换X为(0-1)的数据''' return (X - self.min_) / (self.max_ - self.min_)def __repr__(self): return 'MinMaxScale(0-1)'

实现均值方差归一化&封装
import numpy as np class StandardScaler1: def __init__(self): '''初始化StandardScaler''' self.mean_ = None self.std_ = Nonedef fit(self, X): self.mean_ = X.mean(axis=0) self.std_ = X.std(axis=0) return selfdef transform(self, X): return (X - self.mean_) / self.std_def __repr__(self): return 'StandardScaler1(均值0,方差1)'

学习笔记参考:
《机器学习实战》和《Python3入门机器学习 经典算法与应用》

    推荐阅读