One-hot

サンプルデータ

import pandas as pd

X = pd.read_csv("../data/sample.csv")
X.head()
元号和暦西暦人口総数町名
0大正9.01920.0394748A町
1大正9.01920.031421B町
2大正9.01920.0226993C町
3大正9.01920.0253689D町
4大正9.01920.0288602E町

OneHotEncoder

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import make_column_transformer

c_oh = OneHotEncoder()

ct = make_column_transformer(
    (c_oh, ["元号"]),  # カテゴリ変数にonehotを適用するように指定
    sparse_threshold=0,  # 結果の行列をdenseな行列にする
)

結果を確認する

元号(大正・昭和・平成)が三次元のベクトルになっていることが確認できます。

# 変換方法を求めて、変換した結果を返す
X_transform = ct.fit_transform(X)

# 変換後のテーブルを表示
pd.DataFrame(X_transform).head()
012
01.00.00.0
11.00.00.0
21.00.00.0
31.00.00.0
41.00.00.0