[Stay Sharp]特征归一化

特征归一化

零均值归一化(Z-score normalization)

零均值归一化会把特征值映射到均值为0、标准差为1的分布上。 对应的归一化公式是


其中是原始特征的平均值,而是原始特征的标准差。

零均值归一化作用

零均值归一化适用于很多机器学习算法。比如一些使用梯度下降法的机器学习模型(SVM、神经网络等),在这类算法中,特征值会在求解过程中起到很重要的作用:


不同取值范围的特征会有不同的迭代速度,最终可能会导致走"之字形路线",需要较多的迭代才能找到最优解。

[Stay Sharp]特征归一化_第1张图片
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()

参考

About Feature Scaling and Normalization

百面机器学习

你可能感兴趣的:([Stay Sharp]特征归一化)