やったこと
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