问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

数据归一化方法详解:(0,1)标准化、Z-score标准化和Sigmoid函数

创作时间:
作者:
@小白创作中心

数据归一化方法详解:(0,1)标准化、Z-score标准化和Sigmoid函数

引用
CSDN
1.
https://blog.csdn.net/Han_kin/article/details/77718435

数据归一化是数据挖掘和机器学习中非常重要的预处理步骤,特别是在特征向量表达时。当不同特征的数值范围差异较大时,容易导致数值较小的特征在模型训练中被忽视。因此,对特征向量进行归一化处理,可以确保每个特征都能被分类器平等对待。本文将介绍三种常见的归一化方法,并提供相应的Python实现代码。

1. (0,1)标准化

这是最简单也是最容易想到的方法,通过遍历feature vector里的每一个数据,将最大值(Max)和最小值(Min)记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理:

$$
{x}_{normalization}=\frac{x-Min}{Max-Min}
$$

Python实现:

def MaxMinNormalization(x, Max, Min):
    x = (x - Min) / (Max - Min)
    return x

在实现时,建议使用numpy库中的np.max()np.min()函数来寻找最大值和最小值,而不是使用Python内置的max()min()函数,除非你更倾向于使用列表来管理数字。

2. Z-score标准化

这种方法通过原始数据的均值(mean)和标准差(standard deviation)来进行数据的标准化。经过处理的数据将符合标准正态分布,即均值为0,标准差为1。这种方法在一定程度上改变了特征的分布,因此在使用时需要谨慎。

转化函数为:

$$
{x}_{normalization}=\frac{x-\mu }{\sigma }
$$

Python实现:

def Z_ScoreNormalization(x, mu, sigma):
    x = (x - mu) / sigma
    return x

在实现时,可以使用numpy库中的np.average()函数来计算均值(mu),使用np.std()函数来计算标准差(sigma)。

3. Sigmoid函数

Sigmoid函数是一个具有S形曲线的函数,是良好的阈值函数,在(0, 0.5)处中心对称,在(0, 0.5)附近有比较大的斜率,而当数据趋向于正无穷和负无穷的时候,映射出来的值就会无限趋向于1和0。虽然Sigmoid函数主要用于阈值分割,但在这里我们将其作为一种归一化方法来使用,只考虑(0, 0.5)作为分割阈值的情况。

公式为:

$$
{x}_{normalization}=\frac{1}{1+{e}^{-x}}
$$

Python实现:

def sigmoid(X, useStatus):
    if useStatus:
        return 1.0 / (1 + np.exp(-float(X)))
    else:
        return float(X)

在这个实现中,useStatus参数用于控制是否使用Sigmoid函数进行归一化,这在调试时非常有用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号