数据预处理

数据预处理

让数据适应匹配模型

  • 数据类型不同–文字、数字、时间序列
  • 数据质量不行–噪声、异常、缺失、数据出错、量纲不一、重复、数据是偏态、数据量太大太小

特征工程

降低计算成本、提升模型上限

  • 特征之间的相关性
  • 特征和标签无关
  • 特征太多太小、无法表现应有数据现象无法展示数据真实面貌

sklearn

  • Dimensionality reduction(降维)
  • Preprocessing(预处理)

模块preprocessing几乎包含数据预处理所有内容

模块Impute填补缺失值专用

模块feature_selection包含特征选择的各种方法的实践

模块decomposition包含降维算法

数据科学专用特征工程书籍Feature Engineering for Machine Learning

大牛的翻译面向机器学习的特征工程
在这里插入图片描述

  • 数据无量纲化
    把不同规格数据转化到同一规格,把不同分布数据转化到同一分布,比如希望数据都在0-10之间,或者希望数据都符合标准正态分布等,这类需求统称为无量纲化

    • 梯度和矩阵为核心的算法中,可以加快逻辑回归,支持向量机、神经网络的求解速度
    • 距离模型k-means聚类,可以提升模型精度,避免某个取值范围特别大的特征对距离计算造成影响
    • 决策树和树的集成算法不用量钢化,因为局册数可以把任意数据处理的很好

数据预处理

1.数据无量钢化

  • 线性量钢化
  • 非线性量钢化
中心化(Zero -centered/Mean-subtraction)让所有记录减去一个固定值,即让数据样本数据平移到某个位置
缩放处理(Scale)通过除以一个固定值,将数据固定在某个范围之中,取对数算是一种
  • preprocessing.MinMaxScaler
    数据归一化(Normalization)
    (数据x-最小值)/极差
    归一化的数据服从正态分布

  • 注意:数据归一化不是数据正则化(regularization)正则化不是预处理手段

  • 归一化是以列进行的

from sklearn.preprocessing import MinMaxScaler
data = [[-1,2],[-0.5,6],[0,10],[1,18]]
#默认将数据归一化到[0,1]之间
scaler=MinMaxScaler()
#将数据归一化到[5,10]之间
#scaler=MinMaxScaler(feature_range=[5,10])
result=scaler.fit(data)#本质是生成min和max
result=scaler.transform(data)#通过接口导出结果
#result=scaler.fit_transform(data)#将上面两步一步到位
result

归一化到[0,1]结果

array([[0.  , 0.  ],
       [0.25, 0.25],
       [0.5 , 0.5 ],
       [1.  , 1.  ]])
#反归一化 
scaler.inverse_transform(result)

回到归一化前的矩阵

array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ]])
  • preprocessing.StandardScaler
    数据标准化
from sklearn.preprocessing import StandardScaler
data=[[-1,2],[-0.5,6],[0,10],[1,18]]
scaler=StandardScaler()
scaler.fit(data)#fit 本质是生成均值和方差
scaler.mean_#查看均值的属性mean_  以列为单位
scaler.var_

结果如下:

array([-0.125,  9.   ])
array([ 0.546875, 35.      ])
x_std=scaler.transform(data)#通过接口导出结果
x_std

结果如下

array([[-1.18321596, -1.18321596],
       [-0.50709255, -0.50709255],
       [ 0.16903085,  0.16903085],
       [ 1.52127766,  1.52127766]])
       #左列数据和右列一致是因为两列数据结构一致,归一化结果相同

查看数据的均值和标准差

x_std.mean()
x_std.std()
0.0
1.0
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值