数据归一化(详解,含代码实现)

本文介绍了数据归一化的重要性,通过实例解释为何需要进行数据归一化,并详细讲解了最值归一化和均值方差归一化的原理与适用场景。最后,提供了使用Python的MinMaxScaler和标准Scaler进行数据归一化的代码示例。
摘要由CSDN通过智能技术生成

数据归一化


  对于初学的朋友,不知道有没有这样的疑惑,数据归一化是什么?我们为什么要对数据进行归一化处理?
  不急,让我们从接下来的例子,发现数据归一化的真面目。

肿瘤大小(厘米) 发现时间(天)
样本一 1 200
样本二 5 100

  不难计算,此时样本间的距离被发现时间所主导。

  那如果此时我们将发现时间使用年做单位又会有怎样的结果呢?

肿瘤大小(厘米) 发现时间(年)
样本一 1 0.55
样本二 5 0.27

  不难想象,此时样本间的距离又被肿瘤大小所主导。

  这两种方式都不能很好的同时反应样本中每个特征的重要程度,正是如此,我们需要对数据进行归一化处理。所谓的归一化处理就是将所有的数据映射到同一尺度。接下来,我将介绍两种归一化的方式。

 最值归一化

    最值归一化即将所有的数据映射到0-1之间,映射的方式为:

         
  其中X_max表示特征中的最大值,X_min表示特征中的最小值

  这相当于把整个数据先映射到了从0到X_max - X_min这个范围中,然后,再找出对于这个X而言,相比于整个范围的所占的比例是多少,这样就将整个长度映射到了0-1之间。

  那么最值归一化适用于什么情况呢?又有什么缺点呢?我们继续探讨。

  假设,我们以工资作为数据,此时有100个人,其中99个人工资为1万块,1个人工资为100万块,那么这种情况下还适用于最值归一化吗?

  显然,这样做是不合适的,此时1万块将会被映射到0的附近,100万块将会被映射到1,这时候映射的效果是不好的。

  因此,由于最值归一化其受outlier影响比较大,它更适用于有明显边界的情况
  百看不如一练,以下是对iris数据集采用MinMaxScaler的方法进行归一化。

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split

class  MinMaxScaler:
    def __init__(self):
        self.min_ = None
        self.max_ = None
    def fit(self,X):
        '''根据训练数据集X获得数据的最小值和最大值'''
        self.min_ = np.array([np.min(X[:,i
  • 18
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值