机器学习:数据归一化方法

理解一:
一、为什么要进行数据归一化

    原则:样本的所有特征,在特征空间中,对样本的距离产生的影响是同级的;
    问题:特征数字化后,由于取值大小不同,造成特征空间中样本点的距离会被个别特征值所主导,而受其它特征的影响比较小;
    例:特征1 = [1, 3, 2, 6, 5, 7, 9],特征2 = [1000, 3000, 5000, 2000, 4000, 8000, 3000],计算两个样本在特征空间的距离时,主要被特征2所决定;
    定义:将所有的数据(具体操作时,对每一组特征数据进行分别处理)映射到同一个尺度中;
    归一化的过程,是算法的一部分;

 
二、数据归一化的方法
1)最值归一化(normalization)

1、思路:把所有数据映射到0~1之间;

2、公式:

# x为数据集中每一种特征的值;

# 将数据集中的每一种特征都做映射;

3、特点:多适用于分布有明显边界的情况;如考试成绩、人的身高、颜色的分布等,都有范围;而不是些没有范围约定,或者范围非常大的数据;

# 明显边界:同一特征的数据大小相差不大;不会出现大部分数据在0~200之间,有个别数据在100000左右;

4、缺点:受outlier影响较大;

 

2)Z-score(standardization)

1、思路:把所有数据归一到均值为0方差为1的分布中;

2、公式:Xscale = (X - Xmean ) / σ

# Xmean:特征的均值(均值就是平均值);

# σ:每组特征值的标准差;

# X:每一个特征值;

# Xscale:归一化后的特征值;

3、特点1:使用于数据分布没有明显的边界;(有可能存在极端的数据值)

# 归一化后,数据集中的每一种特征的均值为0,方差为1;

4、优点(相对于最值归一化):即使原数据集中有极端值,归一化有的数据集,依然满足均值为0方差为1,不会形成一个有偏的数据;

三、训练数据集的归一化
1)最值归一化:

import numpy as np

# 对一维向量做归一化
x = np.random.randint(0, 100, size = 100)
x = np.array(x, dtype=float)
x = (x - np.min(x)) / (np.max(x) - np.min(x))

# 对二维矩阵做归一化
X = np.random.randint(0, 100, (50, 2))
X = np.array(X, dtype=float)
# 分别对每一列进行最值归一化,方式与向量做最值归一化一样

2)均值方差归一化:

 

import numpy as np

X2 = np.random.randint(0, 100, (50, 2))
X2 = np.array(X2, 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])

# np.mean(array):求向量的平均值;
# np.std(array):求向量的标准差;


四、测试数据集的归一化
1)问题

    训练数据集归一化,用于训练模型,测试数据集如何归一化?

2)方案

    不能直接对测试数据集按公式进行归一化,而是要使用训练数据集的均值和方差对测试数据集归一化;

3)原因

    原因1:真实的环境中,数据会源源不断输出进模型,无法求取均值和方差的;
    原因2:训练数据集是模拟真实环境中的数据,不能直接使用自身的均值和方差;
    原因3:真实环境中,无法对单个数据进行归一化;

# 对数据的归一化也是算法的一部分;
4)方式

    (X_test - mean_train) / std_train
    X_test:测试数据集;
    mean_train:训练数据集的均值;
    std_train:训练数据集的标准差;

五、使用scikit-learn中的Scaler类
1)调用的步骤

  •     scikit-learn中将训练数据集的均值和方差封装在了类Scalar中;


 

  •     fit:根据训练数据集获取均值和方差,scikit-learn中返回一个Scalar对象;
  •     transform:对训练数据集、测试数据集进行归一化;

 

理解二:

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:
一、min-max标准化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

 

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
二、Z-score标准化方法

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

参考:
https://www.cnblogs.com/chaosimple/archive/2013/07/31/3227271.html
http://www.cnblogs.com/volcao/p/9089716.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值