美文网首页
[Stay Sharp]特征归一化

[Stay Sharp]特征归一化

作者: 三千雨点 | 来源:发表于2018-12-16 12:27 被阅读0次

特征归一化

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

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

z = \frac{x - \mu}{\sigma}
其中u是原始特征的平均值,而{\sigma}是原始特征的标准差。

零均值归一化作用

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

\Delta w_j = - \eta \frac{\partial J}{\partial w_j} = \eta \sum_i (t^{(i)} - o^{(i)})x^{(i)}_{j}
不同取值范围的特征会有不同的迭代速度,最终可能会导致走"之字形路线",需要较多的迭代才能找到最优解。

image.png

零均值归一化适用的算法

  • 几何距离的K-近邻算法
  • K-平均算法
  • 逻辑回归、支持向量机、神经网络等
  • 线性判别分析、主成分分析、核主成分分析

线性函数归一化

线性函数归一化拥有类似于零均值归一化的功能,它能将特征值线性变换到[0,1]范围内,实现对原始数据的等比例缩放。和零均值归一化不同,它会获得更小的标准差,这样可以抑制偏离的数据带来的影响。
归一化公式:
X_{norm} = \frac{X - X_{min}}{X_{max}-X_{min}}

选择零均值归一化或者线性函数归一化?

随机应变

代码实例

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]特征归一化

      本文链接:https://www.haomeiwen.com/subject/hdntkqtx.html