カテゴリ変数の特徴量をラベリングする方法
クラスラベルを上手いことまとめる方法たち
名義特徴量などクラスラベルを整数値としてエンコードするために使用する。
scikit-learnのLabelEncoderを使用すれば簡単にラベルをエンコードしてくれる。
enumerateを使う
samples = ['Adam','Balgo','Clouse'] list(enumerate(samples)) # [(0,'Adam'),(1,'Balgo'),(2,'Clouse')]
LabelEncoderを使う
from sklearn.preprocessing import LableEncoder le = LabelEncoder() d = le.fit_transform(sample) d # array([0, 1, 2], dtype=int64)
※ちなみに変換したラベルを元の文字列に戻す際は、inverse_transformメソッドを使ってあげる。
OneHotEncoderを使う
from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer ohe = OneHotEncoder() ct = ColumnTransformer([("categorical", ohe, [0]), ("numeric", "passthrough", [1,2])]) result = ct.fit_transform(X) result
ある特徴量のみにOHEをかける場合は上記のように使用する。
ただ、特徴量の相関性が高いと多重共線性の問題が発生するケースもあるため、特徴量の列を削除して
簡単に判別できるように調整する必要がある。
参考文献
[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
- 作者:Sebastian Raschka,Vahid Mirjalili
- 発売日: 2018/03/16
- メディア: 単行本(ソフトカバー)