sklearn.preprocessing

sklearn中提供了数据预处理的模块,该模块包括了scaling(缩放),centering(中心化),normalization(归一化),binarization(二值化)和imputation(缺失值填补)操作。

实际上metric-based和gradient-based模型都假设输入的特征是标准正态分布的。而决策树是一个例外,它能接受任意scale的数据。sklearn提供的例子,比较各种scaling方法的区别

关于稀疏矩阵:
CSR: Compressed Sparse Rows(see scipy.sparse.csr_matrix)
CSC: Compressed Sparse Columns(see scipy.sparse.csc_matrix)
任何稀疏输入都可以转换成CSR表示

线性变换

函数 作用 重要参数 使用说明 备注
scale(X[, axis, with_mean, …]) 标准化数据集 axis:如果为0,则分别对每一个特征标准化,如果为1,则对每一个样本进行标准化;with_mean:如果为真,则再scaling前先中心化数据;with_std:如果为真,则将数据的方差变为1 不要用于稀疏矩阵,除非with_mean=False;对于NAN,会自动忽略,接受一维数据
StandarScaler([copy, …]) 标准化数据集 同scale 对于CSR和CSC矩阵,需将with_mean=False来避免破坏数据的稀疏结构,需先fit(data)再transform(data) 相当于scale有了API
MinMaxScaler([feature_range, copy]) 将特征缩放到所给的范围内 feature_range:需要缩放至的范围,默认是(0,1) 用于小方差的数据和保留稀疏数据中的0
MaxAbsScaler([copy]) 以每个特征最大值的绝对值来进行缩放,缩放后的数据范围是[-1,1] 适用于数据已经是标准化数据或是稀疏数据。用于小方差的数据和保留稀疏数据中的0,也可用于CSR和CSC矩阵
minmax_scale(X[, …]) 将特征scaling至给定范围 feature_range:同MinMaxScaler;axis:同scale 不产生object,一个简易入口
maxabs_scale(X[, axis, copy]) 在不破坏稀疏性的前提下,将数据,,接受一维数据缩放至[-1,1] axis:同scale 不产生object,一个简易入口,,接受一维数据
RobustScaler([with_centering, …]) 针对异常点的标准化 with_centering:如果为真,scaling钱中心化。如果输入的是稀疏矩阵,那么with_centering=False,否则会爆内存;with_scaling:如果为真,将数据缩放至四分位范围内;quantile_range:默认为(25.0,75.0,),缩放范围 该标准化将数据去掉中心值后将数据压缩至1/4分位点到3/4分位点之间。
robust_scale(X[, axis, …]) 针对异常点的标准化 基本同RobustScaler,axis:同scale
KernelCenterer 中心化一个核矩阵

非线性转换

函数 作用 重要参数 使用说明 备注
QuantileTransformer([…]) 利用分位点信息进行数据转换成均匀分布或是正态分布 n_quantiles:要计算的分位数的数目;output_distribution:选择是正态分布还是均匀分布;ignore_implicit_zeros:输入为稀疏矩阵时使用 会使不同大小的数据可比性更强。比起scaling,受异常点的影响更小,但是会扭曲特征间的关联和距离。
quantile_transform(X[, axis, …]) 利用分位点信息进行数据转换成均匀分布或是正态分布 基本同QuantileTransformer([…]) 不产生object,一个简易入口
PowerTransformer([method, …]) 利用power transformations将数据转换成高斯分布 method:转换方法,根据数据有无负数来选择;standardize:是否标准化 用于稳定方差和减少偏度 需要进行数据可视化来确定是否真得转换成高斯分布
power_transform(X[, method, …]) 基本同PowerTransformer

Normalization

函数 作用 重要参数 使用说明
Normalizer([norm,copy]) 将样本标准化 norm:用于标准化非零样本的准则,可选’l1’,'l2’以及‘max’ 常用于文本分类和聚类 ,接受CSR
normalize(X[, norm, axis, …]) 基本同Normalizer

对于分类特征进行编码

函数 作用 重要参数 使用说明
OrdinalEncoder([categories, dtype]) 将类别特征转换成一个数组 categories:赋予每一特征独特的值;dtype:可选择输出的类型 不建议使用该方法,因为会给模型引用排序信息
OneHotEncoder([n_values, …]) 独热码 sparse:如果为真时,返回一个稀疏矩阵,否则返回一个数组;handle_unknown:处理未出现过的特征的方法;categorical_features:需要被转换的分类特征 标签也要用LabelBinarizer进行转换

离散化

可以给线性模型引用非线性元素

函数 作用 重要参数 使用说明
KBinsDiscretizer([n_bins, …]) 将连续数据离散化 n_bins:区间个数;encode:编码方式;strategy:决定bins长度的策略
Binarizer([threshold, copy]) 二值化特征 threshold:阈值 如果特征理论上符合多变量伯努利分布时使用sklearn.neural_network.BernoulliRBM,也常用于文本分析
binarize(X[, threshold, copy]) 基本与Binarizer相同

生成多项式特征

函数 作用 重要参数 使用说明
PolynomialFeatures 生成多项式和相互作用的特征 degree:多项式的次数;interaction_only:是否生成交互的特征;include_bias:是否添加零次项 高次项会导致过拟合

定制转换法则

函数 作用
FunctionTransformer 可自我定制转换方式

其他

函数 作用 重要参数 使用说明
LabelBinarizer([neg_label, …]) 将标签进行独热编码 neg_label:用该值对负数进行编码;pos_label:用该值对正数进行编码;sparse_output:如果为真,输出为CSR 可将一个特征变成多个特征
LabelEncoder 将标签进行标号
MultiLabelBinarizer([classes, …]) 在iterables的iterable和多标签格式之间进行转换
add_dummy_feature(X[, value]) 增加一个额外的虚拟数据集
label_binarize(y, classes[, …]) 同LabelBinarizer

你可能感兴趣的:(sklearn.preprocessing)