「人口総数」を予測したいとして、「元号」をエンコードしたいとします。
import pandas as pd
X = pd.read_csv("../data/sample.csv")
TARGET_NAME = "人口総数"
FEATURE_NAME = "元号"
X.head()
元号 | 和暦 | 西暦 | 人口総数 | 町名 | |
---|---|---|---|---|---|
0 | 大正 | 9.0 | 1920.0 | 394748 | A町 |
1 | 大正 | 9.0 | 1920.0 | 31421 | B町 |
2 | 大正 | 9.0 | 1920.0 | 226993 | C町 |
3 | 大正 | 9.0 | 1920.0 | 253689 | D町 |
4 | 大正 | 9.0 | 1920.0 | 288602 | E町 |
from category_encoders.count import CountEncoder
from sklearn.compose import make_column_transformer
c_ce = CountEncoder()
y = X[TARGET_NAME]
X[f"{FEATURE_NAME}_ce"] = c_ce.fit_transform(X[FEATURE_NAME], y)
カテゴリ変数の列が CountEncoder
でエンコードされていることを確認します。
X[[FEATURE_NAME, f"{FEATURE_NAME}_ce"]]
元号 | 元号_ce | |
---|---|---|
0 | 大正 | 96 |
1 | 大正 | 96 |
2 | 大正 | 96 |
3 | 大正 | 96 |
4 | 大正 | 96 |
... | ... | ... |
975 | 平成 | 300 |
976 | 平成 | 300 |
977 | 平成 | 300 |
978 | 平成 | 300 |
979 | 平成 | 300 |
980 rows × 2 columns
X[FEATURE_NAME].value_counts()
昭和 584
平成 300
大正 96
Name: 元号, dtype: int64