データの正規化【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
この記事が気に入ったらサポートをしてみませんか?