14.Pythonでデータ分析を始めよう!初心者向けガイド-特徴量編-

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。前回まではデータ確認する工程を行いました。今回からはデータの前処理に関する特徴量のステップに取り掛かっていきましょう。特徴量(説明変数)の基礎と作成方法について、実践的に解説していきます。

import pandas as pd
import numpy as np

# データの読み込み
df = pd.read_csv('bank_data.csv')

# 年齢を年代層に変換する関数
def age_to_generation(age):
    if age < 20: return '10代以下'
    elif age < 30: return '20代'
    elif age < 40: return '30代'
    elif age < 50: return '40代'
    elif age < 60: return '50代'
    else: return '60代以上'

# 特徴量の作成例
df_processed = df.copy()

# 1. 年齢を年代層に変換
df_processed['age_generation'] = df_processed['age'].apply(age_to_generation)

# 2. 職業(job)のダミー変数化
job_dummies = pd.get_dummies(df_processed['job'], prefix='job')

# 3. 婚姻状態(marital)のダミー変数化
marital_dummies = pd.get_dummies(df_processed['marital'], prefix='marital')

# 4. 学歴(education)のダミー変数化
education_dummies = pd.get_dummies(df_processed['education'], prefix='education')

# すべての特徴量を結合
df_final = pd.concat([
    df_processed[['age', 'age_generation', 'balance', 'duration', 'y']],
    job_dummies,
    marital_dummies,
    education_dummies
], axis=1)

# 結果の確認(最初の5行を表示)
print("作成した特徴量の例:")
print(df_final.head())

# 数値型の列との相関係数を確認
numeric_cols = df_final.select_dtypes(include=[np.number]).columns
correlation = df_final[numeric_cols].corr()['y'].sort_values(ascending=False)
print("\n目的変数(y)との相関係数:")
print(correlation)

全編はこちらから

目次

特徴量とは?わかりやすく解説

特徴量(説明変数)は、「予測のための手がかり」と考えると分かりやすいです。例えば:

  • 天気予報で言えば、気圧、湿度、風向きなどが特徴量です
  • 家の価格予測なら、広さ、築年数、駅からの距離などが特徴量です

特徴量エンジニアリングの基本

  1. 特徴量を作る(Feature Creation)
  • 生のデータを加工して、より予測に役立つ情報を作り出します
  • 例:上記コードでは年齢を「年代層」に変換しています
  • これは「38歳」という数値を「30代」というカテゴリーに変換する作業です
  1. 特徴量の選択(Feature Selection)
    以下の3つの方法があります:

a. フィルタ法

  • 相関係数を使って重要な特徴量を選ぶ方法
  • 例えると、野球選手を打率だけで評価するようなもの
  • 簡単だけど、特徴量間の関係性は見落とす可能性があります

b. ラッパー法

  • 実際に予測を試しながら特徴量を選ぶ方法
  • 例えると、野球選手を実際に試合で使って評価するようなもの
  • 正確だけど時間がかかります

c. 組み込み法

  • モデルが自動的に特徴量を選ぶ方法
  • 例えると、AIコーチが選手を評価するようなもの

つまずきやすいポイントと解決策

  1. ダミー変数化とは?
   job_dummies = pd.get_dummies(df_processed['job'], prefix='job')
  • カテゴリー(文字列)データを0と1の組み合わせに変換すること
  • 例:職業「会社員」「自営業」「学生」を以下のように変換
    • 会社員 → [1, 0, 0]
    • 自営業 → [0, 1, 0]
    • 学生 → [0, 0, 1]
  1. 相関係数の見方
  • 1に近いほど正の相関(一方が増えると他方も増える)
  • -1に近いほど負の相関(一方が増えると他方は減る)
  • 0に近いほど相関がない(関係性が薄い)

実践的なアドバイス

  1. 過学習(オーバーフィッティング)に注意
  • 特徴量が多すぎると、学習データにだけ当てはまる「過度に複雑なモデル」になってしまいます
  • 例えると、テストの問題を丸暗記して、少し形が変わった問題が解けなくなるようなものです
  1. オッカムの剃刀の原則
  • 「単純な説明が最も良い説明である」という考え方
  • 必要以上に複雑にしないことが重要です

このコードを実行すると、基本的な特徴量の作成方法と、それらの目的変数との関係性を確認することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次