前言
本篇文章主要讲解Python的sklearn库中常用的数据预处理方法,主要介绍工具中的内容,即该库中的相关方法包含的常用接口和基本使用,并不适合手把手入门学习,此外将涉及更少的原理和使用情况说明。
- 更多关于本文涉及的数据预处理方法的原理知识:【机器学习】数据预处理方法中的数学原理 (1) - 掘金 (juejin.cn)
sklearn中的数据预处理
sklearn.preprocessing
:sklearn中的数据预处理模块sklearn.impute
:sklearn中的缺失值填充模块
本文主要涉及的方法:
- 极差归一化:
sklearn.preprocessing.MinMaxScaler
- 数据标准化:
sklearn.preprocessing.StandardScaler
- 标签编码:
sklearn.preprocessing.LabelEncoder
- 特征编码:
sklearn.preprocessing.OrdinalEncoder
- 数据二值化:
sklearn.preprocessing.Binarizer
- 数据分箱:
sklearn.preprocessing.KBinsDiscretizer
- 缺失值处理:
sklearn.impute.SimpleImputer
ps:拟合的时候可以传入多个特征数据,sklearn中的方法大多都会自动分别对每一列进行处理,但sklearn一般不支持一维数据导入,至少为二维,若想传入一维数组进行处理可以使用
reshape(-1, 1)
转为二维数组,若想传入单个Series对象则需要先将其转为DataFrame对象。
数据无量纲化
极差归一化:统一量纲,将某特征下所有的值归一化在指定范围内,默认该范围为 [0,1][0, 1][0,1],也可以手动确定范围。
常用接口如下:
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
data = pd.DataFrame(np.random.randint(10, 100, (5, 2))) # 准备测试数据
# 常用接口
scaler = MinMaxScaler() # 默认范围为 [0,1]
scaler = MinMaxScaler(feature_range=[5, 10]) # 自定义归一化数据范围
scaler.fit(data) # 拟合数据
scaler.partial_fit(data) # 数据量大的时候fit()报错,可以使用partial_fit()
result = scaler.transform(data) # 变换数据
result = scaler.fit_transform(data) # 拟合和变换一步达成
data = scaler.inverse_transform(result) # 逆向变换
.partial_fit()
:该方法是一种增量学习的方式,可以逐步从流式数据中学习缩放参数,当数据量太大导致 .fit()
接口报错时,可以使用该接口
我们把大批量的数据想象成一个大湖,既然我们无法一次性将这个大湖中的所有水进行处理(学习),但我们可以将其延伸出来一条小河,对顺着小何流动的水(数据流)不断进行处理(学习)。
- 增量学习:是一种可以逐步从新数据中学习的机器学习方法。它不需要重新训练整个模型,而是可迭代地更新模型参数。
- 流式数据:指的是连续不断产生的数据流
Z-score标准化:统一量纲,且变换后的数据服从均值为0方差为1的标准正态分布。
常用接口如下:和MinMaxScaler基本一样
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
data = pd.DataFrame(np.random.randint(10, 100, (5, 2))) # 准备测试数据
# 常用接口
scaler = StandardScaler() # 创建对象