当前位置:   article > 正文

Sklearn.processing:scale, StandardScaler, MinMaxScaler, Normalizer_sklearn processing

sklearn processing

一、标准化
去除均值和方差缩放:通过(X-X_mean)/std计算每个属性(每列),进而使所有数据聚集在0附近,方差为1.

(1)、sklearn.preprocessing.scale() 
直接将给定数据进行标准化

  1. from sklearn import preprocessing
  2. import numpy as np
  3. X = np.array([[ 1., -1.,  2.],[ 2.,  0.,  0.],[ 0.,  1., -1.]])
  4. X_scaled = preprocessing.scale(X)

 

  1. array([[ 0.        , -1.22474487,  1.33630621],
  2.        [ 1.22474487,  0.        , -0.26726124],
  3.        [-1.22474487,  1.22474487, -1.06904497]])

 

  1. X_scaled.mean(axis=0)
  2. array([ 0.,  0.,  0.])
  3. X_scaled.std(axis=0)
  4. array([ 1.,  1.,  1.])


(2)、sklearn.preprocessing.StandardScaler() 
可保存训练集中的均值、方差参数,然后直接用于转换测试集数据。

  1. scaler = preprocessing.StandardScaler().fit(X)
  2. scaler.transform(X)  
  3. array([[ 0.        , -1.22474487,  1.33630621],
  4.        [ 1.22474487,  0.        , -0.26726124],
  5.        [-1.22474487,  1.22474487, -1.06904497]])
  6. scaler.mean_
  7. array([ 1.        ,  0.        ,  0.33333333])
  8. scaler.var_
  9. array([ 0.66666667,  0.66666667,  1.55555556])


二、缩放到指定范围
将属性缩放到一个指定的最大和最小值(通常是1-0)之间,这样处理可对方差非常小的属性增强其稳定性,也可维持稀疏矩阵中为0的条目。 
preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True) 
计算公式: 
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) 
X_scaled = X_std * (max - min) + min 
其中 
feature_range : tuple (min, max), default=(0, 1)

  1. minmaxscaler = preprocessing.MinMaxScaler().fit(X)
  2. minmaxscaler.transform(X)
  3. array([[ 0.5       ,  0.        ,  1.        ],
  4.        [ 1.        ,  0.5       ,  0.33333333],
  5.        [ 0.        ,  1.        ,  0.        ]])
  6. minmaxscaler.scale_
  7. array([ 0.5       ,  0.5       ,  0.33333333])
  8.  minmaxscaler.min_ 
  9.  array([ 0.        ,  0.5       ,  0.33333333])


也可直接应用fit_transform(X)实现fit和transform功能。

三、正则化 (这个是对行进行正则化)
对每个样本计算其p-范数,再对每个元素除以该范数,这使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。如果后续要使用二次型等方法计算两个样本之间的相似性会有用。 
preprocessing.Normalizer(norm=’l2’, copy=True)

norm:可以为l1、l2或max,默认为l2

若为l1时,样本各个特征值除以各个特征值的绝对值之和

若为l2时,样本各个特征值除以各个特征值的平方之和

若为max时,样本各个特征值除以样本中特征值最大的值

  1. from sklearn import preprocessing
  2. import numpy as np
  3. X = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]])
  4. scaler= preprocessing.Normalizer(norm='l1').fit(X)
  5. X_scaled = scaler.transform(X)
  6. print(X)
  7. print(X_scaled)
  8. [[ 1. -1. 2.]
  9. [ 2. 0. 0.]
  10. [ 0. 1. -1.]]
  11. [[ 0.25 -0.25 0.5 ]
  12. [ 1. 0. 0. ]
  13. [ 0. 0.5 -0.5 ]]

转自:https://blog.csdn.net/u013402321/article/details/79043402
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/412055
推荐阅读
相关标签
  

闽ICP备14008679号