データの正規化【Normalization】

→特徴量の値の範囲を一定の範囲に収めるスケーリング。
→機械学習では、主に[0,1]か[-1.1]のはんいないに収めることが多い。
→最大値、最小値があらかじめ決まっている場合、データの分布が一様分布である場合に有効。
・外れ値が存在する場合は、正規化することでデータに偏りが生まれる。

手順①(DataFrameにデータ変換)

 →データの確認を行いやすいように。

# ライブラリのインポート
import pandas as pd
from sklearn.datasets import load_wine

# データのロード
wine = load_wine()
df_wine = pd.DataFrame(data=wine.data,columns=wine.feature_names)
df_wine['target'] = wine.target


手順②(全columnの最大値、最小値を確認)

In [1]: df_wine.describe().loc[['min','max']]


手順③(正規化)

 →scikit-learnの中のpreprocessing.MinMaxScaler()を用いる。
 →今回は最小値-1、最大値1となる正規化。
 →正規化はMinMaxScaler()を使ってインスタンスを作成し、そのインスタンス.fit()として正規化したいデータを指定します。
 →データ適応させたインスタンスに対して、.transform()としてデータを指定すると正規化を行なったデータが返ってきます。

# ライブラリのインポート
       from sklearn.preprocessing import MinMaxScaler
       # インスタンスの作成
       ms = MinMaxScaler([-1,1])
       # データの適用
       ms.fit(df_wine)        
       # データの変換したものをDataFrame形式に変更
       df_wine_ms = pd.DataFrame(ms.transform(df_wine), columns=df_wine.columns)

       # 変換したデータの統計量確認
       df_wine_ms.describe().loc[['min','max']]
Out[2]:      alcohol  malic_acid  ash  alcalinity_of_ash  magnesium  total_phenols  \
       min     -1.0        -1.0 -1.0               -1.0       -1.0           -1.0   
       max      1.0         1.0  1.0                1.0        1.0            1.0   

            flavanoids  nonflavanoid_phenols  proanthocyanins  color_intensity  hue  \
       min        -1.0                  -1.0             -1.0             -1.0 -1.0   
       max         1.0                   1.0              1.0              1.0  1.0   

            od280/od315_of_diluted_wines  proline  target  
       min                          -1.0     -1.0    -1.0  
       max                           1.0      1.0     1.0  



この記事が気に入ったらサポートをしてみませんか?