sklearn.preprocessing.StandardScaler でデータを標準化する
Python
Published: 2019-08-13

やったこと

sklearn.preprocessing.StandardScaler を使いデータを標準化します。

平均が0、標準偏差が1の分布に従うように調整されます。

確認環境

$ ipython --version
6.1.0
$ jupyter --version
4.3.0
$ python --version
Python 3.6.2 :: Anaconda custom (64-bit)
import sklearn
print(sklearn.__version__)

出力結果

0.21.2

調査

def printout(data):
    print("平均X: ", data[:, 0].mean())
    print("平均Y: ", data[:, 1].mean())
    print("標準偏差X: ", data[:, 0].std())
    print("標準偏差Y: ", data[:, 1].std())

from sklearn.preprocessing import StandardScaler
np.random.seed(seed=1)
data = np.random.multivariate_normal( [5, 5],  [[5, 0],[0, 2]],  10 )
print("元データ")
print(data)
printout(data)

print("---")

scaler = StandardScaler()
print("標準化")
data_std = scaler.fit_transform(data)
print(data_std)
printout(data_std)

出力結果

元データ
[[8.63214665 4.13484578]
 [3.81897206 3.48259322]
 [6.93511029 1.74513276]
 [8.90151771 3.92349088]
 [5.71339311 4.64733703]
 [8.26937274 2.08652107]
 [4.27905321 4.45686512]
 [7.53518554 3.44451885]
 [4.61443881 3.75852072]
 [5.09439281 5.82422518]]
平均X:  6.3793582926820225
平均Y:  3.7504050618892877
標準偏差X:  1.8118979237218
標準偏差Y:  1.128584883455787
---
標準化
[[ 1.24333073  0.34063962]
 [-1.41309629 -0.2372988 ]
 [ 0.30672368 -1.77680238]
 [ 1.39199863  0.15336535]
 [-0.36755116  0.79474037]
 [ 1.04311309 -1.47431001]
 [-1.15917406  0.62596981]
 [ 0.63790969 -0.27103518]
 [-0.97407225  0.007191  ]
 [-0.70918205  1.83754022]]
平均X:  -1.554312234475219e-16
平均Y:  -5.10702591327572e-16
標準偏差X:  0.9999999999999999
標準偏差Y:  1.0000000000000002

参考