非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python/scikit-learn】on-hotエンコーディングの解説とプログラミング例

   

Scikit-learnでのone-hotエンコーディングはカテゴリ変数を機械学習モデルに適した形式に変換するために用いられます。カテゴリデータを数値に変換する際、単純なラベルエンコーディングでは、数値の大小に意味が生まれるため問題がある場合があります。そこで、各カテゴリをバイナリベクトルで表すone-hotエンコーディングが使われます。

Scikit-learnではOneHotEncoderクラスを使ってこのエンコーディングを行います。

import numpy as np
from sklearn.preprocessing import OneHotEncoder

# サンプルのカテゴリデータ(例えば動物の種類)
data = np.array([['cat'], ['dog'], ['rabbit'], ['cat'], ['dog']])

# OneHotEncoderのインスタンスを作成
encoder = OneHotEncoder(sparse_output=False)  # sparse=Falseで密な行列を出力

# データをエンコード
encoded_data = encoder.fit_transform(data)

print("元のデータ:")
print(data)
print("\n")
print("One-Hotエンコード後のデータ:")
print(encoded_data)
 

 

出力結果はこちら。 各カテゴリ(例: cat, dog, rabbit)がそれぞれ一意のベクトルで表されます。

元のデータ:
[['cat']
 ['dog']
 ['rabbit']
 ['cat']
 ['dog']]

One-Hotエンコード後のデータ:
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]
 

 

 

スポンサーリンク

 - Python