sklearn.preprocessing.MinMaxScaler でデータを正規化する
Python
Published: 2019-08-13

やったこと

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

参考