sklearn中的数据预处理

xiaoxiao2021-02-28  91

在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))) """ 分类特征数值化 """ from sklearn.preprocessing import LabelEncoder le = LabelEncoder() data_pd['L1_index'] = le.fit_transform(data_pd['L1']) data_pd['topK_word_index'] = le.fit_transform(data_pd['topK_word']) """ 数据变换 """ #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等。 基于参数的模型或基于距离的模型,都是要进行特征的归一化。

转载请注明原文地址: https://www.6miu.com/read-53974.html

最新回复(0)