どうもニコイチです。実際に特徴量を作成してましょう。今回は、ダミー変数化について、実践的に解説していきます。
import pandas as pd
import numpy as np
# サンプルデータの読み込み
df = pd.read_csv('bank_data.csv')
# 基本的なダミー変数化
print("===== 基本的なダミー変数化の例(学歴) =====")
education_dummies = pd.get_dummies(df['education'], prefix='education')
print(education_dummies.head())
# 複数列の一括ダミー変数化
columns_to_dummy = ['job', 'marital', 'education']
print("\n===== 複数列の一括ダミー変数化 =====")
df_with_dummies = pd.get_dummies(df, columns=columns_to_dummy)
print(df_with_dummies.head())
# ダミー変数化前後での比較
print("\n===== 変換前のユニークな値 =====")
print("職業(job)の種類:", df['job'].unique())
print("\n===== 変換後のカラム名 =====")
job_columns = [col for col in df_with_dummies.columns if col.startswith('job_')]
print("職業関連のダミー変数:", job_columns)
# データ型の確認
print("\n===== データ型の確認 =====")
print("変換前の education カラムの型:", df['education'].dtype)
print("変換後のダミー変数の型:", education_dummies.dtypes.iloc[0])
# 相関分析の例
target = df['y'] # 目的変数(定期預金の申込有無)
correlations = education_dummies.apply(lambda x: x.corr(target))
print("\n===== 学歴と定期預金申込の相関 =====")
print(correlations.sort_values(ascending=False))
目次
ダミー変数化とは?(One-Hot表現)
ダミー変数化は、「カテゴリーデータを機械が理解できる形に変換する」作業です。
例えば、「赤・青・緑」という色の情報を考えてみましょう:
変換前: 色
赤
青
緑
変換後: 赤 青 緑
1 0 0
0 1 0
0 0 1
これは、「部屋の電気のスイッチ」のようなものです:
- 赤い電気がついている → [1, 0, 0]
- 青い電気がついている → [0, 1, 0]
- 緑の電気がついている → [0, 0, 1]
なぜダミー変数化が必要?
質的データを量的データとして活用するためです。具体的には、
- 数値の大小関係を避けるため
- 例えば、学歴を「小学校=1、中学校=2、高校=3」とすると
- 「高校は小学校の3倍の価値がある」という誤った解釈をモデルがしてしまう
- カテゴリーの公平な扱い
- すべてのカテゴリーを対等に扱える
- どれか一つのカテゴリーが特別扱いされない
つまずきやすいポイントと解決策
- ダミー変数のわな
education_dummies = pd.get_dummies(df['education'], prefix='education')
- 全てのカテゴリーをダミー変数化すると、情報が重複する
- 例:3つの選択肢があれば、2つの変数だけで十分
- drop_first=True オプションで一つのカテゴリーを除外できる
- メモリ使用量の増加
- カテゴリーが多いと、列数が大幅に増える
- 必要なカテゴリーだけを選択することも検討する
実践的なTips
- prefix(接頭辞)の活用
job_dummies = pd.get_dummies(df['job'], prefix='job')
- 元のカラム名を接頭辞として付けることで、どの変数から作られたか分かりやすくなる
- 複数列の一括変換
df_with_dummies = pd.get_dummies(df, columns=['job', 'marital', 'education'])
- 複数のカラムを一度にダミー変数化できる
- 相関分析との組み合わせ
- ダミー変数化後、目的変数との相関を確認
- どのカテゴリーが予測に重要かを把握できる
実際の使用例
- 職業と定期預金申込の関係分析
- 職業をダミー変数化することで
- 「どの職業の人が定期預金を申し込みやすいか」を分析できる
- 学歴と申込の関係
- 学歴をダミー変数化して
- 「特定の学歴と申込率の関係」を調べられる
このように、ダミー変数化は「カテゴリーデータを分析可能な形に変換する」重要な前処理技術です。適切に使用することで、より精度の高い分析が可能になります。
コメント