【Scikit-learn Preprocessing 預處理】
均值:
方差:s才是方差,s^2是標準差
概率論中方差用來度量隨機變數和其數學期望(即均值)之間的偏離程度
標準化:
方法一:使用sklearn.preprocessing.scale()函式
方法說明:
- X.mean(axis=0)用來計算資料X每個特徵的均值;
- X.std(axis=0)用來計算資料X每個特徵的方差;
- preprocessing.scale(X)直接標準化資料X。
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
# calculate mean
print(X)
#求第一列的均值
X_mean = X.mean(axis=0)
print(X_mean)
# calculate variance
#求第一列的方差
X_std = X.std(axis=0)
print(X_std)
#標準化處理
# standardize X
X1 = (X-X_mean)/X_std
print(X1)
# use function preprocessing.scale to standardize X
X_scale = preprocessing.scale(X)
print(X_scale)
-----------------------------------------------執行結果-------------------------------
方法二:sklearn.preprocessing.StandardScaler類
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler = preprocessing.StandardScaler()
X_scaled = scaler.fit_transform(X)
X_scaled
----------------------------------執行結果------------------------------------
最大值小化:
公式:X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) ;
X_scaler = X_std/ (max - min) + min
Max,min分別是[1, 0 ]
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.],
[ -3., -2., -1.]
])
min_max_scaler = preprocessing.MinMaxScaler()
X_minMax = min_max_scaler.fit_transform(X)
print(X_minMax)
----------------------------執行結果------------------------
使用這種標準化方法的原因是,有時資料集的標準差非常非常小,有時資料中有很多很多零(稀疏資料)需要儲存住0元素
以同樣的方式對test資料進行處理:
>>> X_test = np.array([[ -3., -1., 4.]])
>>> X_test_minmax = min_max_scaler.transform(X_test)
>>> X_test_minmax
array([[-1.5 , 0. , 1.66666667]])
然後他下面還有很多的屬性:
min_max_scaler.data_min_:找出每一列中的最小值