▶ いろんな前処理を紹介しています。数値データのカテゴリ化に関する投稿は以下をどうぞ。
はじめに
今回は対数変換を扱います。Pythonで対数変換すること自体は簡単なのですが、そもそも対数変換する意味ってなんでしょう?まずは対数変換とは何かを整理します。そのあとに、pythonで対数変換をどのようにやるかを確認することにしましょう。
対数変換とは
偏りがある数値データの場合に利用することが多いのが対数変換です。分布の裾の長いデータによく使います。たとえば常用対数ではその数が10の何乗であるか、をあらわします。このように表すことで、非常に小さいデータから非常に大きいデータまで、大きくばらついているデータを表現することができます。
100なら10の「2」乗、10000000なら10の「7」乗、なので2とか7として扱えるわけです。
変数の値を変換するという意味では、前回あつかったスケール変換と同じですが、標準化や正規化のようなスケール変換と対数変換では、意味が異なります。スケール変換は、変数のばらつきを基にしており、変換後も分布は変わりませんが、対数変換ではデータの分布が変化することに注意してください。
実際に対数変換してみる
対数変換をすれば、裾が大きく広がる分布をしている場合でも、容易に数値データを扱える、ということがわかりました。それでは、実際に試してみましょう。コードは、シンプルで簡単です。
常用対数であれば、次のようにします。
df_tmp[‘columns_log’] = np.log10(df_tmp[‘columns’] + 1)
ここでdf_tmpはデータフレーム名で、そこに’columns’という列があったときに、これを対数変換したものを’columns_log’としています。
自然対数のときは、eの何乗であるか、をあらわします。コードでは次のようになります。
df_tmp[‘columns_log’] = np.log(df_tmp[‘columns’] + 1)
対数の底を表していた10の部分が、自然対数の場合は数字を書く必要がありません。非常に簡単ですね。
まとめ
いかがでしたか?対数変換は、数値データの変換としては最初に思い浮かべるものかもしれませんね。変換自体は簡単ですので、特徴量エンジニアリングの工程ではいろいろ試してみるとよいかもしれません。
▶ 相関関係を可視化する方法をご紹介します。以下の記事をどうぞ。
コメント