数据归一化可以提升模型收敛速度,加快梯度下降求解速度,提升模型精度,消除量纲得影响,简化计算
    常用的归一化方式有min_max标准化和Z-Score标准化

    当数据本身就服从正态分布时,使用z-score;
    当有离群值时,使用z-score;min-max比较容易受利群值得影响.

    1. #生成dataframe格式数据
    2. import numpy as np
    3. import pandas as pd
    4. data = pd.DataFrame(np.arange(12).reshape(3,4),columns = list('abcd'))
    5. data
    6. #数据结果:
    7. a b c d
    8. 0 0 1 2 3
    9. 1 4 5 6 7
    10. 2 8 9 10 11
    11. #最小最大归一化:min_max标准化
    12. #对所有列进行归一化
    13. min_max_norm1 = (data-data.min())/(data.max()-data.min())
    14. min_max_norm2 = data.apply(lambda x:(x-np.min(x))/(np.max(x)-np.min(x)))
    15. min_max_norm2
    16. #结果:
    17. a b c d
    18. 0 0.0 0.0 0.0 0.0
    19. 1 0.5 0.5 0.5 0.5
    20. 2 1.0 1.0 1.0 1.0
    21. #对某一列进行归一化
    22. data['min_max_norm_d'] = (data['d']-data['d'].min())/(data['d'].max()-data['d'].min())
    23. data
    24. #结果:
    25. a b c d min_max_norm_d
    26. 0 0 1 2 3 0.0
    27. 1 4 5 6 7 0.5
    28. 2 8 9 10 11 1.0
    29. #Z-Score 标准化 :将原来的数据转为符合均值为0,标准差为1的正态分布的新数据
    30. z_score1 = (data-data.mean())/data.std()
    31. z_score2 = data.apply(lambda x:(x-x.mean())/x.std())
    32. z_score2
    33. #结果:
    34. a b c d min_max_norm_d
    35. 0 -1.0 -1.0 -1.0 -1.0 -1.0
    36. 1 0.0 0.0 0.0 0.0 0.0
    37. 2 1.0 1.0 1.0 1.0 1.0
    38. #使用sklearn库中的StandardScaler()进行归一化
    39. from sklearn import preprocessing
    40. zscore = preprocessing.StandardScaler()
    41. z_score = zscore.fit_transform(data)
    42. z_score
    43. #结果:
    44. array([[-1.22474487, -1.22474487, -1.22474487, -1.22474487, -1.22474487],
    45. [ 0. , 0. , 0. , 0. , 0. ],
    46. [ 1.22474487, 1.22474487, 1.22474487, 1.22474487, 1.22474487]])