1. 标准化: 去均值的中心化(均值变为0);方差的规模化(方差变为1)
注:标准化是针对每一列而言的,将每一列特征标准化为标准正态分布
参数:with_mean,with_std.这两个都是布尔型的参数,默认情况下都是true,但也可以自定义成false.即不要均值中心化或者不要方差规模化为1.
from sklearn import preprocessing
import numpy as np
x = np.array([[1., -1., 2.],[2., 0., 0.],[0., 1., -1.]])
x_scale = preprocessing.scale(x) #标准化X,但是不保存
print(x_scale,x_scale.mean(axis=0),x_scale.std(axis=0))
scaler = preprocessing.StandardScaler().fit_transform(x) #标准化X,但是保存,可以按此均值,方差,训练测试集
scaler.transform(test_x)
2.归一化: MinMaxScaler 或者 MaxAbsScaler
使得特征的分布是在一个给定最小值和最大值的范围内的。一般情况下是在[0,1]之间(MinMaxScaler),或者是特征中绝对值最大的那个数为1,其他数以此维标准分布在[[-1,1]之间(MaxAbsScaler)
min_max_scaler = preprocessing.MinMaxScaler()
x_minmax = min_max_scaler.fit_transform(x)
x_minmax
max_abs_scaler = preprocessing.MaxAbsScaler()
x_train_maxsbs = max_abs_scaler.fit_transform(x)
x_train_maxsbs
3. 归一化有异常的数据
RobustScaler: 和标准化一样,区别在于,它会根据中位数或者四分位数去中心化数据。
4. 正则化
正则化是将样本在向量空间模型上的一个转换,经常被使用在分类与聚类中。
from sklearn import preprocessing
import numpy as np
x = np.array([[1., -1., 2.],
[2., 3., 1],
[0., 1., -1.]])
normalizer = preprocessing.Normalizer().fit(x)
normalizer.transform(x)
特征的二值化是指将数值型的特征数据转换成布尔类型的值。可以使用实用类Binarizer。
默认是根据0来二值化,大于0的都标记为1,小于等于0的都标记为0。当然也可以自己设置这个阀值,只需传出参数threshold即可。
binarizer = preprocessing.Binarizer(threshold=1.5).fit(x)
binarizer.transform(x)