統計処理や機械学習でカテゴリ変数を扱う場合、
そのままでは使えないことが多く、数値変換やフラグ変換が必要です。
pandas.get_dummies
はフラグ変換をかなり簡単にしてくれますが、
引数の渡し方で挙動が変わるので注意が必要です。
カテゴリ変数の扱い方
よく使われるものでは以下の二つが存在します。
種類 | 内容 |
---|---|
One-Hotエンコーディング | カテゴリすべてを列にし、該当に1を立てたもの |
ダミーエンコーディング | カテゴリを一つを除き列にし、該当に1を立てたもの |
この本では、
機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践 (オライリー・ジャパン)
- 作者:Alice Zheng,Amanda Casari
- 発売日: 2019/02/23
- メディア: 単行本(ソフトカバー)
pandas.get_dummies
はダミーエンコーディングをしてくれる
と書かれているのですが、ドキュメントを読むと違っていました。
get_dummiesを使ったエンコーディング
import pandas as pd a = pd.Series(['a','b','c']) # そのままだと、one-hotになる pd.get_dummies(a) #出力 # a b c #0 1 0 0 #1 0 1 0 #2 0 0 1 #drop_first = Trueにするとダミーエンコーディングになる pd.get_dummies(a,drop_first = True) #出力 # b c #0 0 0 #1 1 0 #2 0 1