特征归一化
零均值归一化(Z-score normalization)
零均值归一化会把特征值映射到均值为0、标准差为1的分布上。 对应的归一化公式是
其中是原始特征的平均值,而
是原始特征的标准差。
零均值归一化作用
零均值归一化适用于很多机器学习算法。比如一些使用梯度下降法的机器学习模型(SVM、神经网络等),在这类算法中,特征值会在求解过程中起到很重要的作用:
不同取值范围的特征会有不同的迭代速度,最终可能会导致走"之字形路线",需要较多的迭代才能找到最优解。
image.png
零均值归一化适用的算法
- 几何距离的K-近邻算法
- K-平均算法
- 逻辑回归、支持向量机、神经网络等
- 线性判别分析、主成分分析、核主成分分析
线性函数归一化
线性函数归一化拥有类似于零均值归一化的功能,它能将特征值线性变换到[0,1]范围内,实现对原始数据的等比例缩放。和零均值归一化不同,它会获得更小的标准差,这样可以抑制偏离的数据带来的影响。
归一化公式:
选择零均值归一化或者线性函数归一化?
随机应变
代码实例
data_path = "./data/"
results = pd.read_excel(data_path + 'house_prices.xls', usecols=[0,1])
print(results.columns.values)
# zscore normalization
from scipy import stats
df_std = stats.zscore(results)
# min max normalization
df_minmax = (results - results.min()) / (results.max() - results.min())
df_minmax = df_minmax.as_matrix()