カテゴリ列を指定した値でダミー化したい(sklearnのLableBinarizerを使う)

カテゴリ列の種類が多い場合、いくつかを絞ってダミー化したい場合があります。
そんなときは、pandasのget_dummiesよりsklearnのLabelBinarizerの方が便利です。

コード

from sklearn.preprocessing import LabelBinarizer

lb = LabelBinarizer()

#ダミー化したいカテゴリの配列を渡す
#もちろん数値でもよい
lb.fit(['a','b','c'])

#実際にダミー化するデータ(dは上で渡していない)
lb.transform(['a','a','b','d'])

#結果
#[a,b,c]と一致する場合はそこに1がたつ
#array([[1, 0, 0],
#       [1, 0, 0],
#      [0, 1, 0],
#       [0, 0, 0]])

fitしたラベルが二つ以下の場合は、一列で帰ってきます。

また、 flgの立ち方を変えたい場合(True=1,False=-1とか)にしたい場合は以下みたいな書き方になります。

#初期化の際にneg_label,pos_labelに与える)
lb = LabelBinarizer(neg_label = -1,pos_label=1)

▼中身に関係なく、とりあえずダミー化したいなら、 pandasのget_dummiesを使いましょう。

esu-ko.hatenablog.com