カテゴリ変数のエンコーディング
メニューを表示するにはスワイプしてください
カテゴリ変数は、数値ではなくカテゴリを表すデータ内の特徴量。例として、"red"、"green"、"blue"などの色や、"yes"、"no"などのラベルが挙げられる。機械学習アルゴリズムは数値データを入力として必要とするため、これらのカテゴリ変数をモデルで使用する前に数値形式へ変換する必要がある。この処理はエンコーディングと呼ばれ、アルゴリズムがデータを正しく解釈し学習できるようにする。
定義
ワンホットエンコーディングは、カテゴリ変数の各カテゴリごとに新しいバイナリ列を作成する。各観測値は、自身のカテゴリに対応する列に1、それ以外の列に0が割り当てられる。
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
定義
ラベルエンコーディングは、変数内の各ユニークなカテゴリに整数値を割り当て、テキストラベルを数値に変換する手法。
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
定義
順序エンコーディングは、カテゴリの自然な順位に基づいて順序付きの整数値を割り当てる手法。この方法は、教育レベル("high school"、"bachelor"、"master"、"doctorate"など)のような順序付きカテゴリ変数における本来の順序を保持する。
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
注意
カテゴリ変数をエンコーディングする際は注意が必要です。ワンホットエンコーディングは、ダミー変数トラップ(特徴量間の高い相関が発生し、一部のモデルで混乱を招く状況)を引き起こす可能性があります。これを回避するには、ダミーカラムのうち1つを削除する方法があります。ラベルエンコーディングはカテゴリ間に順序関係を持たせるため、名義データには適切でない場合があります。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 6
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 6