机器学习--归一化

归一化是一种简单的计算方式,即将有量纲的表达式,经过变换,转换为无量纲的表达式,称为标量。归一化是机器学习中的一项基础工作。
归一化有两种方式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。

归一化的作用:不仅能够提高求解速度,还可能提高计算精度。
比如:计算样本距离时,如果特征向量取值范围相差很大,如果不进行归一化处理,则值范围更大的特征向量对距离的影响更大,实际情况是,取值范围更小的特征向量对距离影响更大,这样的话,精度就会收到影响

从集合的角度可以做维度的归一,即抽象化归一。还有一种是向量的归一化。
维度的归一化方法一般包含:
1.线性函数归一化(Min-Max scaling)
线性函数将原始数据线性化的方法转换到[0 1]的范围,
Xnorm = (X-Xmax)/(Xmax-Xmin)
Xnorm为归一化后的数据,X为原始数据,Xmax、Xmin分别为原始数据集的最大值和最小值。
2.欧式距离标准化(用的比较多)
标准欧式距离的思路:既然数据各维分量的分布不一样,那么先将各个分量都“标准化”到均值、方差等。
标准化后的值=(标准化前的值-分量的均值)/分量的标准差
3、非线性归一化(Nonlinear Scaling)
包括对数log,指数e,正切等。
应用场景:数据分化比较大,有些很大,有些很小,可能用此方法将数值映射到一个比较小的范围进行处理。log(V,2),log(V,10).

个人认为:机器学习中一般做维度的归一化。由于样本的数量一般比较多,做向量的归一化处理过程与样本的数据有关系,样本太大,归一化过程应该也比较长。

mat=mat([[5000,25550],[3200,25550],[0.25,15],[0.3,10]])
print mat

[m,n]=shape(mat)
for i in xrange(n): #维度的归一化
    mat[:,i]=(mat[:,i]-mean(mat[:,i]))/std(mat[:,i])
print mat

#行向量归一化
def cal2NF(X):
    return linalg.norm(X)

for i in xrange(m):
    two_NF = cal2NF(mat[i,:])
    for j in xrange(n):
        mat[i,j]=mat[i,j]/two_NF

print mat

#结果
[[  5.00000000e+03   2.55500000e+04]
 [  3.20000000e+03   2.55500000e+04]
 [  2.50000000e-01   1.50000000e+01]
 [  3.00000000e-01   1.00000000e+01]]

[[ 1.3743447   0.99999999]
 [ 0.5357224   0.99999999]
 [-0.9550452  -0.9998042 ]
 [-0.9550219  -1.00019578]]

[[ 0.80860269  0.58835508]
 [ 0.47222698  0.88147699]
 [-0.69073555 -0.72310746]
 [-0.6905853  -0.72325096]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值