1. 程式人生 > >【Scikit-learn Preprocessing 預處理】

【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

Maxmin分別是[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_:找出每一列中的最小值