DataFrameの指定カラムを標準化しDataFrameで受け取る

スポンサーリンク
python Python

みなさんこんにちは。

簡単ですが、scikit-learnのStandardScalerを指定のカラムにのみ適応し、結果をDataFrameで受け取りたい場合のソースコードを書き留めておきます!

カテゴリ変数などが入っている場合、それらを避けて標準化したい場合に有効です。

Pythonコード

# ライブラリの読み込み
from sklearn.preprocessing import StandardScaler

# 標準化したいカラムを用意
scaling_columns = ["A", "B", "C"] 

# trainと言うDataFrameにfit
sc = StandardScaler().fit(train[scaling_columns])

# 標準化したカラムのみ元のDataFrameに戻す
scaled_train = pd.DataFrame(sc.transform(train[scaling_columns]), columns=scaling_columns, index=train.index)
train.update(scaled_train)

# 検証データ(validation)およびテストデータ(test)には、trainにfitしたStandardScalerを使いましょう。
scaled_test = pd.DataFrame(sc.transform(test[scaling_columns]), columns=scaling_columns, index=test.index)
test.update(scaled_test)

まとめ

scikit-learnあたりのライブラリは結果をnumpyで返してきたりするのでpandasに慣れていると使いづらいですよね^^;

また、深層学習ではデータを標準化した方が学習に良いと言われ、決定木の場合は不要と言われています。

参考になればと思います。

それでは!

追記: 標準化を元に戻す方法

標準化を元に戻す方法もアップしました!

コメント

タイトルとURLをコピーしました