一、最大-最小规范化
最大-最小规范化也被称为离差标准化。这种方法是通过将原始数据按比例进行缩放,使其固定在一定的范围内。具体来说,就是将原始数据$x$进行归一化得到新的数值$y$,公式如下:
y = (x-min)/(max-min)
其中,$min$和$max$分别是数据集中最小值和最大值。
最大-最小规范化可以保留原始数据的分布情况,而且其归一化结果的数值范围固定在[0,1]之间,方便比较不同特征的大小。
二、z-score标准化
z-score标准化也被称为标准差标准化。这种方法旨在通过将原始数据按照标准差的大小进行缩放,使其能够符合正态分布的特征。具体来说,就是将原始数据$x$进行归一化得到新的数值$y$,公式如下:
y = (x-mean)/std
其中,$mean$是数据集的均值,$std$是数据集的标准差。
z-score标准化可以将原始数据转换为具有相同单位的分数,并保留了原始数据的大小关系。此外,其归一化结果符合标准正态分布,便于计算。
三、小数定标标准化
小数定标标准化是一种通过移动小数点的位置来缩放数据的方法。具体来说,就是将原始数据$x$除以一个固定的基数$10^j$,得到新的数值$y$,公式如下:
y = x/10^j
其中,$j$是一个常数,是使得归一化后的数据的绝对值最大值小于1的最小整数。
小数定标标准化方法能够处理数据的动态范围差异,减小不同数值之间的量纲影响,缩小了数据的差异性,方便进行比较和处理。
四、其他归一化方法
除了上述三种常见的数据归一化方法外,还有一些其他的归一化方法。
1.范数归一化
范数归一化利用矩阵或向量的范数进行缩放,使得矩阵或向量的范数等于1。具体来说,就是将向量$x$进行归一化得到新的数值$y$,公式如下:
y = x/||x||
其中,$||x||$表示向量$x$的范数。
2.秩标准化
秩标准化是一种通过给数据进行排序来进行归一化的方法。具体来说,就是将原始数据$x$按其大小进行排名得到新的数据$y$,公式如下:
y = rank(x)/(N+1)
其中,$N$为数据集大小,$rank(x)$表示$x$在数据集中的排名。
五、代码示例
1.最大-最小规范化
def min_max_normalization(x): """进行最大-最小规范化""" x_min = min(x) x_max = max(x) return [(i-x_min)/(x_max-x_min) for i in x]
2.z-score标准化
def z_score_normalization(x): """进行z-score标准化""" mean_x = sum(x)/len(x) std_x = math.sqrt(sum([(i-mean_x)**2 for i in x])/len(x)) return [(i-mean_x)/std_x for i in x]
3.小数定标标准化
def decimal_scaling_normalization(x): """进行小数定标标准化""" j = math.ceil(max([abs(i) for i in x])) return [i/(10**j) for i in x]