特征处理-标准化 作者:马育民 • 2019-12-05 14:08 • 阅读:10110 # 概述 标准化,Standardization,有时也将 标准化 称为 归一化 在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。 # Z-score标准化(0均值归一化) 是最常见的标准化,又称:标准差标准化 结果:数据 **均值为0**、**标准差为1** ,符合正态分布,公式如下: [![](https://www.malaoshi.top/upload/0/0/1EF4YJWkuH6C.png)](https://www.malaoshi.top/upload/0/0/1EF4YJWkuH6C.png) ##### 解释: - x是原始数据 - u是原始数据的 **平均值** - σ原始数据的 [标准差](https://www.malaoshi.top/show_1EF3qVBL6toh.html "标准差") ### 原理 表示 **原始值** 与 **均值** 之间差多少个标准差,是一个相对值,所以也有 **去除量纲** 的功效。 1. x-μ,计算结果的 平均值变为0 2. (x-μ)/σ 除以标准差,计算结果的标准差为1 ### 均值为0,标准差为1 好处 可以使数据以0为中心左右分布,而数据以0为中心左右分布会带来很多便利。 比如:机器学习中很多函数如Sigmoid、Tanh、Softmax等都以0为中心左右分布(不一定对称) # 应用场景 1. 神经网络需要标准化处理,一般变量的取值在-1到1之间,这样做是为了弱化某些变量的值较大而对模型产生影响。 2. 在K近邻算法中,如果不对解释变量进行标准化,那么具有小数量级的解释变量的影响就会微乎其微。 # 实现 ### numpy实现标准化 ``` import numpy as np l=[ [7,180,300000,70], [3,172,200000,110], [5,168,250000,190], [8,185,60000,0], [4,178,36000,80], [6,175,48000,120] ] arr=np.array(l) def z_score(x): mn=np.mean(x,axis=0) std=np.std(x,axis=0) return (x-mn)/std ret=z_score(arr) print("标准化:\n",ret) ``` ### sklearn实现标准化 ``` import numpy as np l=[ [7,180,300000,70], [3,172,200000,110], [5,168,250000,190], [8,185,60000,0], [4,178,36000,80], [6,175,48000,120] ] arr=np.array(l) from sklearn import preprocessing ret = preprocessing.scale(arr) print("标准化:\n",ret) ``` 感谢: https://blog.csdn.net/zenghaitao0128/article/details/78361038 原文出处:http://malaoshi.top/show_1EF4YYUNDlOv.html