やったこと
sklearn.preprocessing.MinMaxScaler を使いデータを正規化します。
データを 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())
print("MIN X: ", data[:, 0].min())
print("MIN Y: ", data[:, 1].min())
print("MAX X: ", data[:, 0].max())
print("MAX Y: ", data[:, 1].max())
from sklearn.preprocessing import MinMaxScaler
np.random.seed(seed=1)
data = np.random.multivariate_normal( [5, 5], [[5, 0],[0, 2]], 10 )
print("元データ")
print(data)
printout(data)
print("---")
scaler = MinMaxScaler()
print("正規化")
data_norm = scaler.fit_transform(data)
print(data_norm)
printout(data_norm)
出力結果
元データ
[[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
MIN X: 3.8189720581437347
MIN Y: 1.7451327605454043
MAX X: 8.901517712729385
MAX Y: 5.82422517959429
---
正規化
[[0.94700076 0.58584429]
[0. 0.4259429 ]
[0.6131058 0. ]
[1. 0.5340301 ]
[0.37273075 0.71148284]
[0.87562434 0.08369222]
[0.0905218 0.66478816]
[0.73117169 0.41660887]
[0.15650951 0.49358724]
[0.25094133 1. ]]
平均X: 0.5037605972566557
平均Y: 0.4915976632398656
標準偏差X: 0.35649417572610337
標準偏差Y: 0.2766754874651595
MIN X: 0.0
MIN Y: 0.0
MAX X: 1.0
MAX Y: 1.0