sklearn-4.3.prepreocessing

来源:互联网 发布:todolist mac 破解版 编辑:程序博客网 时间:2024/05/29 10:05

4.3数据预处理

4.3.1

如果一个特征的方差比其他特征的方差大得多,要统一到均值为0方差为1,用scale函数:
scale:把特征们统一到均值为0方差为1
StandardScaler:记下scale的处理方式,有选择的沿用到其它数据如testing set中

4.3.1.1

MinMaxScaler:将数据等比例缩到[0,1]上,可以在test集上沿用此比例,会超出[0,1]范围

为保证稀疏矩阵的0值
MaxAbsScaler:将数据等比例缩到[-1,1]上,以绝对值最大的值和0值不动

4.3.1.2
MaxAbsScaler 和 maxabs_scale用来处理稀疏矩阵,
scale 和 StandardScaler可以设定with_mean=False来处理稀疏矩阵
RobustScaler不能用于稀疏矩阵

scalers接收以行压缩的稀疏矩阵(CSR)和以列压缩的稀疏矩阵(CSC),其他形式会转换为以上两种,建议输入CSR或CSC以减少内存消耗

4.3.1.3
如果存在异常值
robust_scale 和 RobustScaler:可以更好的给出均值和方差而不受异常值影响

有时候仅均值和缩放是不够的,下游模型可能要求特征们线性无关:
sklearn.decomposition.PCA 或 sklearn.decomposition.RandomizedPCA参数设置whiten=True去相关

4.3.1.4
KernelCenterer:可以对用核处理的矩阵接一步使均值为0的操作

4.3.2

normalize and Normalizer

要使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。
p-范数的计算公式:||X||p=(|x1|^p+|x2|^p+…+|xn|^p)^1/p

可用于稀疏矩阵,建议输入按行列压缩的稀疏矩阵以节省内存

4.3.3

Binarizer

数值通过 Binarizer 被替换成0,1两个值

与StandanScaler和Normalizer类相同,在API转换器不必要时,可以用函数binarize代替

可用于稀疏矩阵,建议输入按行列压缩的稀疏矩阵以节省内存

4.3.4

OneHotEncoder

对于比如[男/女,1/2/3班],[女,3班]=[1,3]的表示方式会导致班级1、2、3之间有1<2<3的数值关系,OneHotEncoder用来取消这一点,它将其转换[0,1,0,0,1],前2个向量表示女,后3个向量表示三班

4.3.5

Imputer

处理缺失值,用均值、中值、众数替换

4.3.6

PolynomialFeatures

从 (X_1, X_2) 到 (1, X_1, X_2, X_1^2, X_1X_2, X_2^2)

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
X = np.arange(6).reshape(3, 2)
X
array([[0, 1],
[2, 3],
[4, 5]])
poly = PolynomialFeatures(2)
poly.fit_transform(X)
array([[ 1., 0., 1., 0., 0., 1.],
[ 1., 2., 3., 4., 6., 9.],
[ 1., 4., 5., 16., 20., 25.]])
如果
poly = PolynomialFeatures(degree=2, interaction_only=True)
则从 (X_1, X_2) 到 (1, X_1, X_2, X_1X_2)

4.3.7

你也可以自定义转换,比如x到log(x)

FunctionTransformer

http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing-data

0 0
原创粉丝点击