数据预处理

数据预处理

让数据适应匹配模型

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

特征工程

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

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

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
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"数据预处理 ipynb" 是一个用于数据预处理的 Jupyter Notebook 文件。在数据分析和机器学习项目中,数据预处理是一个非常重要的步骤,它涉及到对数据进行清洗、转换和规范化的过程,以便更好地适应后续的分析和建模工作。 这个 ipynb 文件中可能包含以下常见的数据预处理步骤: 1. 数据导入:使用适当的库将数据从外部源(如 CSV、Excel、数据库)导入到 Notebook 中,以便进行后续的数据处理。 2. 数据清洗:对数据进行初步的清洗和处理,包括去除缺失值、处理异常值、去除重复值等。这一步骤旨在提高数据的质量和一致性。 3. 特征选择:根据特定领域知识或统计方法,选择对问题有意义和相关的特征。这有助于减少维度,并提高后续建模的效果。 4. 特征转换:对数据进行转换,以使其适应特定的模型算法。例如,对连续变量进行归一化或标准化,并对分类变量进行独热编码等。 5. 数据集划分:将数据集分成训练集、验证集和测试集,以便进行模型训练、调参和评估。这样有助于评估模型的泛化性能。 6. 数据可视化:使用适当的图表和可视化工具,对数据进行可视化探索。这有助于发现数据中的模式和趋势,并支持后续的数据分析和建模决策。 7. 其他处理步骤:根据具体问题的需求,可能还包括特征工程、缺失值填充、异常值处理、样本平衡等其他处理步骤。 通过完成这些数据预处理步骤,可以使原始数据变得更加干净、可靠和适应后续的分析和建模需求。而 "数据预处理 ipynb" 这个 Jupyter Notebook 文件,则提供了一个结构化和可交互的环境,方便数据科学家和分析师进行数据预处理的工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值