Pythonでカテゴリ変数を数値化するには、scikit-learnライブラリのsklearn.preprocessing.LabelEncoderを用いる。
sklearn.preprocessing.LabelEncoderの使い方
sklearn.preprocessing.LabelEncoderを用いると、カテゴリ変数を0~n_class-1の値に変換することができる。
基本的な使い方は、fit()に変換したいカテゴリ変数を指定することで、カテゴリ変数と数値を適合させる。以下の場合、’amsterdam’ =0、’paris’=1 ‘tokyo’=2になる。classes_をみることで数値の順番が確認できる。fit()実行後に、transform()に変換したいカテゴリ変数を指定することで数値に変換される。
fit_transform()は、fit()とtransform()を同時に実行する。
from sklearn.preprocessing import LabelEncoder
category_label = ["paris", "paris", "tokyo", "amsterdam"]
le = LabelEncoder()
le.fit(category_label)
print(le.classes_)
# ['amsterdam' 'paris' 'tokyo']
print(le.transform(category_label))
# [1 1 2 0]
print(le.fit_transform(category_label))
# [1 1 2 0]
pandas Dataframeの列を置換する方法
pandas Dataframeの列におけるカテゴリ変数をラベルエンコードしたい場合は、以下のように書く。
import pandas as pd
d = {'city': ["paris", "paris", "tokyo", "amsterdam"], 'id': [3, 4, 0, 1]}
df = pd.DataFrame(data=d)
print(df)
# city id
# 0 paris 3
# 1 paris 4
# 2 tokyo 0
# 3 amsterdam 1
encoded = le.fit_transform(df['city'])
df['city'] = encoded
print(df)
# city id
# 0 1 3
# 1 1 4
# 2 2 0
# 3 0 1
コメント