[机器学习与scikit-learn-47]:特征工程-sklearn中的数据预处理和特征工程概述

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[机器学习与scikit-learn-47]:特征工程-sklearn中的数据预处理和特征工程概述相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123966627


目录

前言:

第1章 机器学习/数据挖掘的一般处理流程

第2章 数据预处理该概述

2.1 什么是数据预处理

2.2 数据预处理的意义

2.3 数据预处理的方法

第3章 sklearn中的数据预处理和特征工程

3.1 总体概述

3.2 数据预处理与缺失填补(数据预处理)

3.3 特征选择与特征降维(特征工程)


前言:

数据预处理和特征提取,都是在把数据送到模型之前,对数据进行处理的过程,以适应模型对数据需求,最大可能得发挥模型的效果。

粗略得讲:数据预处理包含了特征提取,即特征提取也属于数据预处理,只是特征提取相对功能独特,因此给这部分的数据预处理取了一个专门的名称:特征提取或特征工程。

本文就探讨sklearn中的数据预处理和特征工程

第1章 机器学习/数据挖掘的一般处理流程

(1)获取原始数据

(2)数据预处理

(3)特征工程

(4)建模,测试模型并预测出结果

(5)上线,验证模型效果

第2章 数据预处理该概述

2.1 什么是数据预处理

数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。

数据的预处理是指对所收集数据进行分类或分组前所做的审核筛选排序等必要的处理工作。

数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。
也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太大或太小等。

2.2 数据预处理的意义

现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行模型训练,或模型训练的结果差强人意。为了提高模型训练的质量产生了数据预处理技术,这些数据处理技术在模型训练之前使用,大大提高了模型训练的质量,降低实际模型训练所需要的时间。

另外,还有一些数据无法直接用于模型训练,如文本字符串数据,需要对他们进行编码预处理,使得原始的数据转换成适合模型训练的特征。

数据预处理的目的:去除噪音,让数据适应模型,匹配模型的需求。

数据预处理位于现实问题模型训练之间,在实际的工程中,数据预处理是多变的,而模型是相对稳定的。因此,是实际的工程应用中,大量的工作是花在数据预处理上,而不是模型算法上

2.3 数据预处理的方法

数据预处理有多种方法:

数据清理数据集成,数据变换,数据编码、数据归约、特征工程(特征提取)等。

(1)数据清理/洗

数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。

数据清洗(Data cleaning)– 对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性

数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,这些错误的或有冲突的数据显然是我们不想要的,称为“脏数据”。我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗。而数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。数据清洗是与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。

(2)数据集成

数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为模型训练提供全面的多维度的数据集。

(3)数据变换

数据转换 data transfer,是将数据从一种表示形式变为另一种表现形式的过程。正则化和归一化就是一种数据变化。 

(4)数据归约(特征工程)

数据归约是指在对挖掘任务和数据本身内容理解的基础上、寻找依赖于发现目标的数据的有用特征,以缩减数据规模,从而在尽可能保持数据原貌的前提下,最大限度地精简数据量。

特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。
可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数据现象或无法展示数据的真实面貌

特征工程的目的:

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

2.4  特征工程的分类

(1)特征提取(特征编码

数据编码就是把原始数据(如文本)编码成模型所需要的数据格式的过程,如oneHot编码,字符串种类到离散数值的编码等等。

(2)特征创造(特征升维

在现有的少量特征的基础之上,创造的特征。

(3)特征选择(特征降维

在现有的海量特征的基础之上,选择有限的、少部分的特征。

第3章 sklearn中的数据预处理和特征工程

3.1 总体概述

sklearn中包含众多数据预处理和特征工程相关的模块。

klearn六大板块中有两块都是关于数据预处理和特征工程的,两个板块互相交互,为建
模之前的全部工程打下基础。

(1)模块preprocessing:几乎包含数据预处理的所有内容。

(2)模块Impute:填补缺失值专用。

(3)模块feature_selection:包含特征选择的各种方法的实践》

(4)模块decomposition:包含降维算法

3.2 数据预处理与缺失填补(数据预处理)

(1)数据无量纲化

  • preprocessing.MinMaxScaler:归一化,数值限制在[0,1]之间
  • preprocessing.StandardScaler:标准化,数值服从正态分布。

(2)缺失值填补

  • impute.SimpleImputer:

(3)对分类数据重新编码

  • preprocessing.LabelEncoder:标签专用,能够将分类转换为分类离散数值
  • preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类离散数值
  • preprocessing.OneHotEncoder:把离散数值转换成独热编码,创建哑变量

(4)对连续数据重新编码

  • sklearn.preprocessing.Binarizer:将连续型变量根据阈值转换成二进制离散变量
  • preprocessing.KBinsDiscretizer:将连续型变量根据阈值转换成K进制离散变量

3.3 特征选择与特征降维(特征工程)

(1)特征提取(特征编码)

把非数值数据转换成适合模型训练的数值数据。

(2)特征创作(特征升维)

对现有的少量特征进行组合,得到新的特征。

(3)特征选择(特征降维)

在众多的特征中,选择部分特征,用来表征特定业务应用的样本。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123966627

以上是关于[机器学习与scikit-learn-47]:特征工程-sklearn中的数据预处理和特征工程概述的主要内容,如果未能解决你的问题,请参考以下文章

Python 与金融数据|生成机器学习的标签和特征

机器学习实战 | 机器学习特征工程最全解读

机器学习 - 特征筛选与降维

如何使用机器学习模型(或其特征系数)来解释该特征是不是与特定类别相关?

[机器学习与scikit-learn-42]:特征提取-1-从字典中提取特征

机器学习特征筛选:相关系数法(correlation)