Pythonでカテゴリをエンコードする方法


  1. ラベルエンコーディング: ラベルエンコーディングは、カテゴリを数値に変換する方法です。各カテゴリに一意の数値を割り当てます。Pythonのscikit-learnライブラリを使用すると、次のように実装できます。
from sklearn.preprocessing import LabelEncoder
categories = ["cat", "dog", "rabbit", "cat", "dog"]
encoder = LabelEncoder()
encoded_categories = encoder.fit_transform(categories)
print(encoded_categories)

出力:

[0 1 2 0 1]
  1. ワンホットエンコーディング: ワンホットエンコーディングは、各カテゴリをバイナリベクトルに変換する方法です。各カテゴリに対して、新しい列を作成し、そのカテゴリに対応する列の値を1に設定し、他の列の値を0に設定します。Pandasライブラリを使用して次のように実装できます。
import pandas as pd
categories = ["cat", "dog", "rabbit", "cat", "dog"]
df = pd.DataFrame({"category": categories})
encoded_categories = pd.get_dummies(df["category"])
print(encoded_categories)

出力:

   cat  dog  rabbit
0    1    0       0
1    0    1       0
2    0    0       1
3    1    0       0
4    0    1       0
  1. カテゴリの埋め込み: カテゴリの埋め込みは、カテゴリを連続値のベクトルに変換する方法です。これは主に深層学習モデルで使用されます。例えば、PythonのTensorFlowライブラリを使用して次のように実装できます。
import tensorflow as tf
from tensorflow.keras.layers import Embedding
categories = ["cat", "dog", "rabbit", "cat", "dog"]
encoder = tf.keras.preprocessing.text.Tokenizer()
encoder.fit_on_texts(categories)
encoded_categories = encoder.texts_to_sequences(categories)
print(encoded_categories)

出力:

[[1], [2], [3], [1], [2]]

これらは、Pythonでカテゴリをエンコードするためのシンプルで一般的な方法です。あなたの特定の要件や使用環境に応じて、最適な方法を選択できます。