综述
特征处理中,归一化和标准化是不变的话题。最近看了不少归一化和标准化相关的文献,发现还是有点坑的。但是我不管也不打算讲清楚这俩的区别,当工业界模型要求不高,数据量又大的时候,冲上去一通操作就行了。不过我们还是要掌握最基础的知识:
概念
归一化:归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
标准化:在机器学习中,我们处理的数据可能是高维度的,再这样的前提下,我们会考虑标准化方法,使之变成每个特征数值平均为0,标准差为1的状态。这个方法被广泛的使用在许多机器学习算法中(ex:SVM,LR和类神经网络)。
区别:归一化的核心是统一量纲,构建了原数据到[0,1](或[-1,1])区间内的一个映射。而标准化则是通过特征矩阵的列处理数据,通过z-score将样本整体转换。有一说标准化是将数据转换为标正态分布,但我认为标准化数据不会改变数据的分布,如果原来的数据不是正态分布,标准化后是得不到标准正态分布的。
两者相同点是都能消除量纲产生的误差,都是线性变换。只是线性变换的具体形式不一样。
公式
现有的资料一般会列出如下四条公式:
Rescaling (min-max normalization)
x
′
=
x
−
min
(
x
)
max
(
x
)
−
min
(
x
)
x^{\prime}=\frac{x-\min (x)}{\max (x)-\min (x)}
x′=max(x)−min(x)x−min(x)
Mean normalization
x
′
=
x
−
mean
(
x
)
max
(
x
)
−
min
(
x
)
x^{\prime}=\frac{x-\operatorname{mean}(x)}{\max (x)-\min (x)}
x′=max(x)−min(x)x−mean(x)
Standardization(Z-score normalization)
x
′
=
x
−
mean
(
x
)
σ
x
x^{\prime}=\frac{x-\operatorname{mean}(x)}{\sigma_{x}}
x′=σxx−mean(x)
Scaling to unit length
x
′
=
x
∥
x
∥
x^{\prime}=\frac{x}{\|x\|}
x′=∥x∥x
一般把第一种叫做归一化,第三种叫做标准化,其实怎么翻译都有点微妙。个人认为在ML里面,两个都是值得尝试的对象。
代码
其实就几行,到处都能找到的,但是还是写了一哈练练手。
standardize
def standardize(X): # 特征标准化处理
m, n = X.shape # X:样本集
for j in range(n): # 归一化每个特征
features = X[:, j]
meanVal = features.mean(axis=0) # axis:轴位置;axis=0按列求和;
std = features.std(axis=0) # axis=1:按行求和,此处均为axis=0
if std != 0: # 标准差是否为0
X[:, j] = (features - meanVal) / std
else:
X[:, j] = 0
return X
normalize
def normalize(X): # max-min归一法
m, n = X.shape
for j in range(n):
features = X[:, j]
minVal = features.min(axis=0)
maxVal = features.max(axis=0)
diff = maxVal - minVal
if diff != 0:
X[:, j] = (features - minVal) / diff
else:
X[:, j] = 0
return X
不带特征
实际上如果不考虑多特征情况,根本就不用写那么复杂:
def normalization(data):
_range = np.max(data) - np.min(data)
return (data - np.min(data)) / _range
def standardization(data):
mu = np.mean(data, axis=0)
sigma = np.std(data, axis=0)
return (data - mu) / sigma
参考文献
1、标准化和归一化什么区别?
2、数据标准化/归一化normalization(本篇个人认为全面但略有谬误)
3、Python 归一化和标准化 代码实现
4、Wiki百科_Feature_scaling
560

被折叠的 条评论
为什么被折叠?



