Sklearn.processing:scale, StandardScaler, MinMaxScaler, Normalizer
阿新 • • 發佈:2019-01-13
一、標準化
去除均值和方差縮放:通過(X-X_mean)/std計算每個屬性(每列),進而使所有資料聚集在0附近,方差為1.
(1)、sklearn.preprocessing.scale()
直接將給定資料進行標準化
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]])
X_scaled = preprocessing.scale(X)
array([[ 0. , -1.22474487, 1.33630621], [ 1.22474487, 0. , -0.26726124], [-1.22474487, 1.22474487, -1.06904497]])
X_scaled.mean(axis=0)
array([ 0., 0., 0.])
X_scaled.std(axis=0)
array([ 1., 1., 1.])
(2)、sklearn.preprocessing.StandardScaler()
可儲存訓練集中的均值、方差引數,然後直接用於轉換測試集資料。
scaler = preprocessing.StandardScaler().fit(X) scaler.transform(X) array([[ 0. , -1.22474487, 1.33630621], [ 1.22474487, 0. , -0.26726124], [-1.22474487, 1.22474487, -1.06904497]]) scaler.mean_ array([ 1. , 0. , 0.33333333]) scaler.var_ 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)
minmaxscaler = preprocessing.MinMaxScaler().fit(X)
minmaxscaler.transform(X)
array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])
minmaxscaler.scale_
array([ 0.5 , 0.5 , 0.33333333])
minmaxscaler.min_
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時,樣本各個特徵值除以樣本中特徵值最大的值
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]])
scaler= preprocessing.Normalizer(norm='l1').fit(X)
X_scaled = scaler.transform(X)
print(X)
print(X_scaled)
[[ 1. -1. 2.]
[ 2. 0. 0.]
[ 0. 1. -1.]]
[[ 0.25 -0.25 0.5 ]
[ 1. 0. 0. ]
[ 0. 0.5 -0.5 ]]
轉自:https://blog.csdn.net/u013402321/article/details/79043402