みなさんこんにちは。
簡単ですが、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に慣れていると使いづらいですよね^^;
また、深層学習ではデータを標準化した方が学習に良いと言われ、決定木の場合は不要と言われています。
参考になればと思います。
それでは!
追記: 標準化を元に戻す方法
標準化を元に戻す方法もアップしました!
コメント