标准化与归一化
归一化
特点:
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量。对不同特征维度的伸缩表换的目的是使各个特征维度对目标函数的影响权重是一致的,即使得那些扁平分布的数据伸缩变换成类圆形。这也就改变了原始数据的一个分布。
好处:
1)提高迭代求解的收敛速度
2)提高迭代求解的精度
方法:
1)min-max标准化
也成为离差标准化,对原始数据的的线性变换,结果值映射到[0-1]之间。转换函数如下:
其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
2)Z-score标准化方法
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
1. <span style="font-size:18px;"># ...
2. def standardize(X):
3. """特征标准化处理
4.
5. Args:
6. X: 样本集
7. Returns:
8. 标准后的样本集
9. """
10. m, n = X.shape
11. # 归一化每一个特征
12. for j in range(n):
13. features = X[:,j]
14. meanVal = features.mean(axis=0)
15. std = features.std(axis=0)
16. if std != 0:
17. X[:, j] = (features-meanVal)/std
18. else
19. X[:, j] = 0
20. return X
21.
22. def normalize(X):
23. """Min-Max normalization sklearn.preprocess 的MaxMinScalar
24.
25. Args:
26. X: 样本集
27. Returns:
28. 归一化后的样本集
29. """
30. m, n = X.shape
31. # 归一化每一个特征
32. for j in range(n):
33. features = X[:,j]
34. minVal = features.min(axis=0)
35. maxVal = features.max(axis=0)
36. diff = maxVal - minVal
37. if diff != 0:
38. X[:,j] = (features-minVal)/diff
39. else:
40. X[:,j] = 0
41. return X</span>
标准化
特点:
对不同特征维度的伸缩变换的目的是使得不同度量之间的特征具有可比性。同时不改变原始数据的分布。
好处:
1)使得不同度量之间的特征具有可比性,对目标函数的影响体现在几何分布上,而不是数值上。
2)不改变原始数据的分布。