sklearn中的数据预处理

在sklearn中有这么几个常用的预处理方法。另外为了将数据预处理的各个阶段连接起来还可以使用pipeline。

功能 说明
StandardScaler 无量纲化 标准化,基于特征矩阵的列,将特征值转换至服从标准正态分布
MinMaxScaler 无量纲化 区间缩放,基于最大最小值,将特征值转换到[0, 1]区间上
Normalizer 归一化 基于特征矩阵的行,将样本向量转换为“单位向量”
Binarizer 二值化 基于给定阈值,将定量特征按阈值划分
OneHotEncoder 哑编码 将定性数据编码为定量数据
Imputer 缺失值计算 计算缺失值,缺失值可填充为均值等
PolynomialFeatures 多项式数据转换 多项式数据转换
FunctionTransformer 自定义单元数据转换 使用单变元的函数来转换数据函数来转换数据

具体代码实现

首先准备数据

from sklearn.datasets import load_iris
iris = load_iris()
train_data = iris.data 
target_data = iris.target

然后是sklearn的具体实现

"""
        缺失值计算
"""
#缺失值计算,返回值为计算缺失值后的数据
#参数missing_value为缺失值的表示形式,默认为NaN
#参数strategy为缺失值填充方式,默认为mean(均值)
from sklearn.preprocessing import Imputer
Imputer().fit_transform(train_data)


"""
        无量纲化
"""
#1.标准化
#根据【均值】和【标准差】调整
from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(train_data)


#2.区间缩放
#利用最大最小值缩放
#区间缩放,返回值为缩放到[0, 1]区间的数据
from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(train_data)

#3.正则化
#正则化和标准化的区别是正则化是根据【特征均值】和【特征值标准差】调整
from sklearn.preprocessing import Normalizer
Normalizer().fit_transform(train_data)


"""
        对定量特征二值化
"""
#主要是阈值设定 threshold=n
#阈值设置为3,返回值为二值化后的数据
from sklearn.preprocessing import Binarizer
Binarizer(threshold=3).fit_transform(train_data)

"""
        对定性特征哑编码
        TODO iris数据都是定量的,没必要做
"""
#哑编码,对IRIS数据集的目标值,返回值为哑编码后的数据
from sklearn.preprocessing import OneHotEncoder
OneHotEncoder().fit_transform(target_data.reshape((1,-1)))

"""
        数据变换
"""
#1.多项式转换
#参数degree为度,默认值为2
from sklearn.preprocessing import PolynomialFeatures
PolynomialFeatures().fit_transform(train_data)

#2.自定义转换函数
#第一个参数是单变元函数
#本例为对数函数的数据变换
from numpy import log1p
from sklearn.preprocessing import FunctionTransformer
FunctionTransformer(log1p).fit_transform(train_data)

注:
基于树的方法是不需要进行特征的归一化,例如随机森林,bagging 和 boosting等。
基于参数的模型或基于距离的模型,都是要进行特征的归一化。

你可能感兴趣的:(sklearn中的数据预处理)