数据预处理

为什么需要数据预处理:

1)在真实数据中,我们拿到的数据可能包含了大量的缺失值,可能包含大量的噪音,也可能因为人工录入错误导致有异常点存在,非常不利于算法模型的训练。
2)数据预处理的目的是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。

数据处理如何做

1)标准化:去平均值 和方差缩放(Standardization, or mean removal and variance scaling)
对很多学习算法来说数据集的标准化是共同的要求,有时候单个特征如果不是或多或少的近似正态分布时,那么学习算法可能表现的十分糟糕。
将特征数据的分布调整成标准正太分布,也叫高斯分布,也就是使得数据的均值维0,方差为1
标准化的原因在于如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征。

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

scale 函数提供了标准化功能

>>> from sklearn import preprocessing
>>> import numpy as np
>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
>>> X_scaled = preprocessing.scale(X_train)

>>> X_scaled                                          
array([[ 0.  ..., -1.22...,  1.33...],
       [ 1.22...,  0.  ..., -0.26...],
       [-1.22...,  1.22..., -1.06...]])
>>> X_scaled.mean(axis=0)
array([0., 0., 0.])

>>> X_scaled.std(axis=0)
array([1., 1., 1.])

2 规模化特征到一定的范围内( Scaling features to a range)

也就是使得特征的分布是在一个给定最小值和最大值的范围内的。一般情况下是在[0,1]之间,或者是特征中绝对值最大的那个数为1,其他数以此维标准分布在[[-1,1]之间

之所以要将特征缩放到一定的范围内,目的是对付那些标准差相当小的特征并保留下稀疏数据中的0

3 归一化 Normalization
归一化是将单个的样本特征向量变成具有单位长度(unit norm)的特征向量的过程。经常被使用在分类与聚类中

4 二值化

这里的二值化,指的是特征二值化,即,将数量特征按阈值转换为二值的过程

5 缺失值

由于各种各样的原因,很多真实世界的数据集包括缺失值,可以丢弃那些包括缺失值的行或列,然而,这样做可能损失了有价值的数据。一个更好的策略是填补这些缺失值,即,根据已知的数据推断它们的值。

可以使用缺失值所在的行或列的均值、中位数、频数最大的值来填补缺失值

6 产生多项式特征
为输入数据添加非线性特征可以增加模型的复杂度,实现这一点的常用的简单方法是使用多项式特征,他可以引入特征的高阶项和互乘积项。

Sklearn的类PolynomialFeatures可以用来在输入数据的基础上构造多项式特征

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值