[机器学习与scikit-learn-8]:数据预处理-1-意义与概述

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

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


目录

第1章 什么是数据预处理

1.1 数据挖掘的五大流程

1.2 为什么需要数据预处理这个过程?

1.3 sklearn中的数据预处理

 1.4 参考文档

1.5 数据预处理API函数分类

第2章 数据预处理的常见方法

2.1 缺失值的处理

2.2 数据无量纲转换

2.3  连续型特征的二值化与分段

2.4 分类型特征的编码

2.5 创造新的特征


第1章 什么是数据预处理

1.1 数据挖掘的五大流程

(1)获取数据(原始数据)

获取用于模型训练的原始样本数据。

(2)数据预处理 (数据合法性检查与初步处理)

数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程。

(3)特征工程(特征的有效性选择)

特征工程是将预处理后的数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。

特征工程是理解难度较大的一部分,它涉及到利用一定的数学原理来从众多特征中选择部分有意义的特征。

(4)算法与模型训练

建模、训练模型、测试模型并预测出结果。

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

1.2 为什么需要数据预处理这个过程?

获取到的原始数据可能会出现如下的问题异常:

(1)缺失:缺少、丢失

(2)错误:噪声、异常、错误

(3)不平衡:过大、过小、偏离

(3)重复:重复

(4)数据类型不匹配(格式)

这是比较常见的情形,原始数据有可能是字符串、文字,并非是数字,因此需要对字符串进行编码,编码成数字。

(5)数值相差较大:原始数据的不同特征值数据数值相差较大,数值大的特征值很容易把数值小的特征值掩盖掉。

(7)不符合特定模型训练的要求

每个模型对输入数据都有一些限制要求,需要把原始数据映射到模型的输入数据要求的范围内。

原始数据分布关系不定,需要进行正态分布映射,提升模型训练效率。

数据预处理的目的:消除原始数据中的异常让数据适应模型、匹配模型的需求。

1.3 sklearn中的数据预处理

sklearn中包含众多数据预处理和特征工程相关的模块,虽然刚接触sklearn时,大家都会为其中包含的各种算法的广度深度所震惊,但其实sklearn六大板块中有两块都是关于数据预处理和特征工程的,两个板块互相交互,为建模之前的全部工程打下基础。

其中数据预处理Preprocessing提供了大量数据预处理的函数和类,因此数据预处理大部分的工作,只需要调用sklearn提供的API函数就可以完成,不需要自己再编写数据预处理函数。

[机器学习与scikit-learn-8]:数据预处理-1-意义与概述_第1张图片

模块preprocessing:几乎包含数据预处理的所有内容
模块Impute:填补缺失值专用

 1.4 参考文档

http://sklearn.apachecn.org/cn/0.19.0/modules/preprocessing.html#preprocessing

1.5 数据预处理API函数分类

数据预处理的api有两种接口:

(1)一种是接口(首字母大写)=》 推荐方法

sklearn.preprocessing.StandardScaler.fit_transform(data)

(2)第二种是API函数接口(首字母小写)

sklearn.preprocessing.scale(data)

第2章 数据预处理的常见方法

2.1 缺失值的处理

(1)缺失值插补:impute.SimpleImputer

2.2 数据无量纲转换

(1)归一化:preprocessing.MinMaxScaler

(2)特征的标准化:preprocessing.StandardScaler

(3)数据的正则化:sklearn.preprocessing.scale

2.3  连续型特征的二值化与分段

(1)特征的二值化:sklearn.preprocessing.Binarizer

(2)特征的分段:preprocessing.KBinsDiscretizer

2.4 分类型特征的编码

在机器学习中,大多数算法,譬如逻辑回归,支持向量机SVM,k近邻算法等都只能够处理数值型数据,不能处理文字,在sklearn当中,除了专用来处理文字的算法,其他算法在fit的时候全部要求输入数组或矩阵,也不能够导入文字型数据(其实手写决策树和普斯贝叶斯可以处理文字,但是sklearn中规定必须导入数值型)。

然而在现实中,许多标签和特征在数据收集完毕的时候,都不是以数字来表现的。比如说,学历的取值可以是["小学",“初中”,“高中”,"大学"],付费方式可能包含["支付宝",“现金”,“微信”]等等。在这种情况下,为了让数据适应算法和库,我们必须将数据进行编码,即是说,将文字型数据转换为数值型。

(1)preprocessing.LabelEncoder:标签专用,能够将分类转换为分类数值

(2)preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值

(3)preprocessing.OneHotEncoder:独热编码,创建哑变量

2.5 创造新的特征

(1)非线性转换

(2)生成多项式特征


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

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

你可能感兴趣的:(机器学习,scikit-learn,数据挖掘,数据预处理)