下記のようなDFがあり、CountryカラムのみOne-Hotエンコーディングしたい。
Country | Age
--------------------------
Germany | 23
Spain | 25
Germany | 24
Italy | 30
scikitlearn version 0.20まではOne-Hotエンコーディングしたいカラムのインデックスを categorical_features
に指定するだけでよかった。
つまりこんな感じ。
from sklearn.preprocessing import OneHotEncoder
onehotencoder = OneHotEncoder(categorical_features=[0])
X = onehotencoder.fit_transform(X)
scikitlearn version 0.23からはこのような列ごとに処理が異なるパターンにはColumnTransformer
を使う。
remainder="passthrough"
を指定して対象外のカラムを残すのをお忘れなく。
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
column_trans = ColumnTransformer(transformers=[('categorical', OneHotEncoder(), [0])],
remainder="passthrough")
X = column_trans.fit_transform(X)