机器学习之数据归一化(Feature Scaling)

数据归一化的原因

如下图所示:
在这里插入图片描述

样本间的距离被发现时间所主导。这样就会使数据不准确,因此我们的解决方案就是将所有的数据映射到同一尺寸,接下来我们介绍两种方法。

最值归一化(normalization)

定义:把所有数据映射到0-1之间。
在这里插入图片描述
注:适用于分布有明显边界的情况,但是受outlier影响较大。
代码:

import numpy as np
import matplotlib.pyplot as plt
X = np.random.randint(0, 100, (50, 2))
X = np.array(X, dtype = float)
X[:,0] = (X[:,0] - np.min(X[:,0])) / (np.max(X[:,0]) - np.min(X[:,0]))
X[:,1] = (X[:,1] - np.min(X[:,1])) / (np.max(X[:,1]) - np.min(X[:,1]))

注:由于numpy只能存在一种数据类型,所以我们需要将数据类型转化为float,否则归一化完的数据无法正确显示。

然后我们将归一化的数据绘图:

plt.scatter(X[:,0], X[:,1])
plt.show()

在这里插入图片描述
可以明显的看出所有数据在0-1之间。

均值方差归一化(standardization)

定义:把所有数据归一到均值为0方差为1的分布中
!](https://img-blog.csdnimg.cn/4533d2d4ed1043fa86c949e960b559f4.png)
适用条件:数据分布没有明显的边界;有可能存在极端数据值。
代码:

X2 = np.random.randint(0, 100, (50, 2))
X2 = np.array(X, dtype = float)
X2[:,0] = (X2[:,0] - np.mean(X2[:,0])) / np.std(X2[:,0])
X2[:,1] = (X2[:,1] - np.mean(X2[:,1])) / np.std(X2[:,1])

然后我们绘图可得:

plt.scatter(X2[:,0],X2[:,1])
plt.show()

在这里插入图片描述
可以看出数据并不是在0-1之间。
接下来我们看下他的均值与标准差:
在这里插入图片描述
可以很明确的看出均值几乎等于0,而标准差就是为1。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天一道题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值