数据预处理中的归一化和标准化

数据预处理中的归一化和标准化

由于近来在做kaggle的泰坦尼克号入门比赛,特此记录日常发现的疑惑。

一, 数据标准化和归一化的原因

维基百科给出的解释:
1)归一化后加快了梯度下降求最优解的速度;
2)归一化有可能提高精度。以下是我自己的理解。

1)归一化后加快了梯度下降求最优解的速度;

如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛; 而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。

因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

在这里插入图片描述

2) 归一化有可能提高精度;

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。

如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

二 ,标准化和归一化的区别

1.归一化其实就是标准化的一种方式,只不过归一化是将数据映射到了**[0,1]**这个区间中。
计算公式为:
在这里插入图片描述
1.1代码实现
使用sklearn实现归一化。

data = np.random.uniform(0, 100, 10)[:, np.newaxis]
mm = MinMaxScaler()
mm_data = mm.fit_transform(data)
origin_data = mm.inverse_transform(mm_data)
print('data is ',data)
print('after Min Max ',mm_data)
print('origin data is ',origin_data)

在这里插入图片描述
2.标准化则是将数据按照比例缩放,使之放到一个特定区间中。标准化后的数据的均值=0,标准差=1,因而标准化的数据可正可负。
计算公式为:(值-平均值)/方差
在这里插入图片描述
2.1代码实现
这里通过使用sklearn.preprocess模块进行处理。
在这里插入图片描述
可以看到生成的数据的标准差是1,均值接近0。但是当原始数据并不符合高斯分布的话,标准化后的数据效果并不好

3)非线性归一化
经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值