首页 > 学习笔记 > 数据预处理
2018
04-15

数据预处理

对数据预处理,是为了更好的从数据中学习特征,有的样本的影响因子(属特征性)是非连续名词性值,如:性别、地区等,是名词性的属性值,有的是离散值,如:0,3,4等,有的是连续值,但范围很大。这时候我们需要对属性进行处理,为了更好的进行学习。

一、处理方法

1.为类别进行特征编码

用于类别形的变量

例:性别:[男,女]   地区:[上海,北京,秦皇岛]  职业:[学生,员工,创业者,其他]

对其进行整数编码,有性别:[0,1] 地区:[0,1,2] 职业:[0,1,2,3]

一个随机样本[男,北京,其他]就表示为[0,1,3],但是这种表征的方式仍然不能直接为scikit-learn的模型所用,因为模型会把它们当成序列型的连续变量。

使用one-hot encoder(独热编码)对其进行编码,独热编码又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征(如成绩这个特征有好,中,差变成one-hot就是100, 010, 001)。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。

上述的[0,1,3]就可以用one-hot编码后表示为:[1,0,0,1,0,0,0,0,1]

2.标准化(归一化)

2.1将特特征规范到一定范围内

使得特征的分布是在一个给定最小值和最大值的范围内的。一般情况下是在[0,1]之间,或者是特征中绝对值最大的那个数为1,其他数以此维标准分布在[[-1,1]之间以上两者分别可以通过MinMaxScaler 或者 MaxAbsScaler方法来实现。

 

MinMaxScaler:

公式表示:X = (x-Min)/(Max-Min),将样本的特征数据规范到[0,1]之间。

MaxAbsScaler:

原理与上面的很像,只是数据会被规模化到[-1,1]之间。也就是特征中,所有数据都会除以最大值。这个方法对那些已经中心化均值维0或者稀疏的数据有意义。

2.2去均值,方差规模化

Standardization标准化:将特征数据的分布调整成标准正太分布,也叫高斯分布,也就是使得数据的均值维0,方差为1.

标准化的原因在于如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征。

标准化的过程为两步:去均值的中心化(均值变为0);方差的规模化(方差变为1)。

3.正则化

正则化是将样本在向量空间模型上的一个转换,经常被使用在分类与聚类中。

当我们拿到一批原始的数据

  1. 首先要明确有多少特征,哪些是连续的,哪些是类别的。
  2. 检查有没有缺失值,对确实的特征选择恰当方式进行弥补,使数据完整。
  3. 对连续的数值型特征进行标准化,使得均值为0,方差为1。
  4. 对类别型的特征进行one-hot编码。
  5. 将需要转换成类别型数据的连续型数据进行二值化。
  6. 为防止过拟合或者其他原因,选择是否要将数据进行正则化。
  7. 在对数据进行初探之后发现效果不佳,可以尝试使用多项式方法,寻找非线性的关系。
  8. 根据实际问题分析是否需要对特征进行相应的函数转换。

 

参考链接:https://blog.csdn.net/sinat_33761963/article/details/53433799

最后编辑:
作者:admin
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。