03、sklearn中的数据预处理和特征工程

文章目录

  • 1.概述
    • 1.1 数据预处理与特征工程
    • 1.2 sklearn中的数据预处理和特征工程![在这里插入图片描述](https://img-blog.csdnimg.cn/40b474c3c37e407fab9e88e45b7c8b2a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluXzQ0OTUzOTI4,size_20,color_FFFFFF,t_70,g_se,x_16)
  • 2 数据预处理 Preprocessing & Impute
    • 2.1 数据无量纲化
      • (1)、preprocessing.MinMaxScaler :归一化 (适合图像)
      • (3)、preprocessing.StandardScaler :数据标准化
      • (4)StandardScaler和MinMaxScaler选哪个?
    • 2.2 缺失值
      • (1)impute.SimpleImputer
      • (2)代码
      • BONUS:用Pandas和Numpy进行填补其实更加简单
    • 2.3 处理分类型特征:编码与哑变量
      • (1)preprocessing.LabelEncoder:标签专用,能够将分类转换为分类数值
      • (2)preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值
      • (3)preprocessing.OneHotEncoder:独热编码,创建哑变量
    • 2.4 处理连续型特征:二值化与分段
      • (1)sklearn.preprocessing.Binarizer
      • (2)preprocessing.KBinsDiscretizer
  • 4、具体函数介绍
    • 4.1 fit_transform,fit,transform区别和作用

1.概述

1.1 数据预处理与特征工程

03、sklearn中的数据预处理和特征工程_第1张图片

1.2 sklearn中的数据预处理和特征工程03、sklearn中的数据预处理和特征工程_第2张图片

  • 模块preprocessing:几乎包含数据预处理的所有内容
  • 模块Impute:填补缺失值专用
  • 模块feature_selection:包含特征选择的各种方法的实践
  • 模块decomposition:包含降维算法

2 数据预处理 Preprocessing & Impute

2.1 数据无量纲化

在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”。

数据的无量纲化可以是线性的,也可以是非线性的。线性的无量纲化包括中心化(Zero-centered或Mean-subtraction)处理和缩放处理(Scale)。
中心化的本质是让所有记录减去一个固定值,即让数据样本数据平移到某个位置。
缩放的本质是通过除以一个固定值,将数据固定在某个范围之中,取对数也算是一种缩放处理。
03、sklearn中的数据预处理和特征工程_第3张图片

(1)、preprocessing.MinMaxScaler :归一化 (适合图像)

03、sklearn中的数据预处理和特征工程_第4张图片
03、sklearn中的数据预处理和特征工程_第5张图片
03、sklearn中的数据预处理和特征工程_第6张图片
03、sklearn中的数据预处理和特征工程_第7张图片
03、sklearn中的数据预处理和特征工程_第8张图片

(3)、preprocessing.StandardScaler :数据标准化

在这里插入图片描述
03、sklearn中的数据预处理和特征工程_第9张图片
对于StandardScaler和MinMaxScaler来说,**空值NaN会被当做是缺失值,**在fit的时候忽略,在transform的时候保持缺失NaN的状态显示。并且,尽管去量纲化过程不是具体的算法,但在fit接口中,依然只允许导入至少二维数组,一维数组导入会报错。通常来说,我们输入的X会是我们的特征矩阵,现实案例中特征矩阵不太可能是一维所以不会存在这个问题。

(4)StandardScaler和MinMaxScaler选哪个?

多数机器学习算法中,会选择StandardScaler来进行特征缩放,因为MinMaxScaler对异常值非常敏感。在PCA,聚类,逻辑回归,支持向量机,神经网络这些算法中,StandardScaler往往是最好的选择

MinMaxScaler在不涉及距离度量、梯度、协方差计算以及数据需要被压缩到特定区间时使用广泛,比如数字图像
处理中量化像素强度时,都会使用MinMaxScaler将数据压缩于[0,1]区间之中

sklearn中也提供了各种其他缩放处理(中心化只需要一个pandas广播一下减去某个数就好了,因此sklearn不提供任何中心化功能)。比如,在希望压缩数据,却不影响数据的稀疏性时(不影响矩阵中取值为0的个数时),我们会使用MaxAbsScaler;在异常值多,噪声非常大时,我们可能会选用分位数来无量纲化,此时使用RobustScaler。
03、sklearn中的数据预处理和特征工程_第10张图片

2.2 缺失值

(1)impute.SimpleImputer

03、sklearn中的数据预处理和特征工程_第11张图片

(2)代码

03、sklearn中的数据预处理和特征工程_第12张图片
03、sklearn中的数据预处理和特征工程_第13张图片
03、sklearn中的数据预处理和特征工程_第14张图片
03、sklearn中的数据预处理和特征工程_第15张图片
03、sklearn中的数据预处理和特征工程_第16张图片

BONUS:用Pandas和Numpy进行填补其实更加简单

03、sklearn中的数据预处理和特征工程_第17张图片

03、sklearn中的数据预处理和特征工程_第18张图片
03、sklearn中的数据预处理和特征工程_第19张图片

2.3 处理分类型特征:编码与哑变量

03、sklearn中的数据预处理和特征工程_第20张图片

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

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

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

03、sklearn中的数据预处理和特征工程_第21张图片

2.4 处理连续型特征:二值化与分段

(1)sklearn.preprocessing.Binarizer

根据阈值将数据二值化(将特征值设置为0或1),用于处理连续型变量。大于阈值的值映射为1,而小于或等于阈
值的值映射为0。默认阈值为0时,特征中所有的正值都映射到1。

(2)preprocessing.KBinsDiscretizer

03、sklearn中的数据预处理和特征工程_第22张图片
03、sklearn中的数据预处理和特征工程_第23张图片

4、具体函数介绍

4.1 fit_transform,fit,transform区别和作用

  • fit和transform没有任何关系,仅仅是数据处理的两个不同环节,之所以出来fit_transform这个函数名,仅仅是为了写代码方便,会高效一点。
  • sklearn里的封装好的各种算法使用前都要fit,fit相对于整个代码而言,为后续API服务。fit之后,然后调用各种API方法,transform只是其中一个API方法,所以当你调用transform之外的方法,也必须要先fit。
  • fit原义指的是安装、使适合的意思,其实有点train的含义,但是和train不同的是,它并不是一个训练的过程,而是一个适配的过程,过程都是确定的,最后得到一个可用于转换的有价值的信息。

1. 数据预处理中方法

  • fit() :简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。
  • transform():在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。
  • fit_transform() :fit_transform是fit和transform的组合,既包括了训练又包含了转换。
    transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)

fit_transform(trainData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。

你可能感兴趣的:(菜菜-机器学习,sklearn,机器学习,python)