One-hot
サンプルデータ
import pandas as pd
X = pd.read_csv("../data/sample.csv")
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町 |
---|
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()
| 0 | 1 | 2 |
---|
0 | 1.0 | 0.0 | 0.0 |
---|
1 | 1.0 | 0.0 | 0.0 |
---|
2 | 1.0 | 0.0 | 0.0 |
---|
3 | 1.0 | 0.0 | 0.0 |
---|
4 | 1.0 | 0.0 | 0.0 |
---|