📐

データサイエンス初学者のための「現場で本当に使える」前処理&AI学習Tips集

に公開

はじめに

機械学習やデータ分析で「AIの性能を最大化するコツ」として、
**“データの前処理”“特徴量の整形”**は非常に重要です。
この記事では、具体的な業種や用途を限定せず、どんな案件でも使える実践的なパターンを解説します。


1. 欠損値の安全な補完

  • **欠損値(NaN)**が混じったデータは、そのままでは学習に使えません。
  • 一番安全なのは「平均値」「中央値」「0」などで埋める方法。
import pandas as pd
import numpy as np

def safe_mean(series):
    arr = pd.to_numeric(series, errors="coerce")
    mean = arr.mean()
    return 0.0 if np.isnan(mean) else mean

df['feature'] = pd.to_numeric(df['feature'], errors='coerce').fillna(safe_mean(df['feature']))

2. min-max正規化(0~1のスケールに揃える)

  • 特徴量のスケールが異なると、モデルが偏った学習をしやすくなります。
  • min-max正規化は簡単&よく使われる手法です。
def normalize(s):
    return (s - s.min()) / (s.max() - s.min())
df['feature'] = normalize(df['feature'])

3. カテゴリ変数のone-hotエンコーディング

  • 例えば「色」「天気」「種別」などのラベルは、数値のまま使うと順序や大小を誤解させやすい
  • one-hot化で「それぞれ独立のフラグ」として表現します。
def make_onehot(val, n_class):
    arr = [0]*n_class
    if pd.notna(val):
        arr[int(val)] = 1
    return arr

df_onehots = np.array([make_onehot(v, 4) for v in df['category']])

4. 特徴量ベクトルの組み立て

  • AIに渡す入力は「すべての特徴量を並べた数値配列」にまとめます。
  • one-hotベクトルと正規化した特徴量を横方向(hstack)に連結するのが定番です。
X = np.hstack([df_onehots, df[["feature1", "feature2"]].values.astype(float)])

5. 線形回帰による予測(最小二乗法)

  • 「特徴量×重み」の足し算だけで予測できるのが線形モデルの強み。
alpha = np.linalg.lstsq(X_learn, y_learn, rcond=None)[0]
y_pred = X_pred @ alpha

6. Pythonの予約語対策

  • min, max, sum などはPythonの標準関数と同じ名前。
     変数名に使う場合は**アンダースコアを付ける(例: min_)**のがベストプラクティス。

7. よくある前処理パターン(チェックリスト)

  1. 欠損値の補完(mean, median, 0埋めなど)
  2. 特徴量の正規化(min-maxやZ-scoreなど)
  3. カテゴリ変数のone-hotエンコーディング
  4. 特徴量ベクトルの作成(NumPy配列化)

おわりに

現場やコンペ・研究など、データの中身や業種が違っても「前処理の作法」は共通です。
まずは「欠損値」「正規化」「one-hot化」「ベクトル化」だけでも押さえておくと、
どんなデータサイエンス案件でもスタートダッシュが切れます!


補足

  • 本記事は具体的な業界データ名を一切使わず、「どんなジャンルでも通用する」形に抽象化しています。
  • pandas, numpy, scikit-learn, xgboost等あらゆるPython系ML案件で応用可能です。

※ご要望に応じて

  • さらに「特徴量エンジニアリング」や「モデル選択」についても解説可能です!

Discussion