はじめに
実際のデータがクリーンであることはほとんどありません。列に値がありません。テキストに奇妙な記号が含まれています。カテゴリのレベルが多すぎます。フィーチャは手動で作成されており一貫性がありません。この記事は、これらのタスクを再現可能かつエラーのない方法で処理するのに役立ちます。
レッスンの目標
- 数値およびカテゴリの欠損値を処理します。
- カテゴリ変数を適切にエンコードします。
- 特徴エンジニアリングとは何か、いつ停止すべきかを理解します。
値が欠落しています: すべてが欠落しているという意味ではありません
データの欠落は信号である場合があります。入力する前に、「なぜデータが欠落しているのか、ランダムに欠落しているのか、系統的に欠落しているのか、欠落しているかどうかをマークするために追加の列を作成する必要があるのか」を考えてください。
一般的な治療法
- 数値: 外れ値がある場合は、通常、中央値の方が平均値より安全です。
- カテゴリ: 最も一般的な値を入力するか、「不明」というラベルを付けます。
- 欠落インジケーター: 欠落自体がシグナルである場合に便利です。
特徴量エンジニアリングは実用的です
過去 30 日間の総支出額、月あたりのサポート チケットの数、制限を超えた使用率など、明確なビジネス ロジックを使用して機能に優先順位を付けます。
フレームコード
sklearn.impute から SimpleImputer をインポート
sklearn.preprocessing から OneHotEncoder をインポート
num_imputer = SimpleImputer(strategy='median')
cat_imputer = SimpleImputer(strategy='most_frequent')
エンコーダ = OneHotEncoder(handle_unknown='ignore')
よくある間違い
- データを分割する前に不足しているものを埋めます。
- 未来を見据えた機能を作成します。
- One-hot にはカテゴリが多すぎるため、機能スペースが無駄に肥大化します。
練習問題を練習する
- 数値とカテゴリの両方を含む表形式のデータセットを選択します。
- 数字の不足している数字を埋める 2 つの方法を試してください。
- 明確なビジネス説明を含む 3 つの新機能を作成します。
完了基準
- 各列タイプの欠落を埋める戦略を選択する方法を理解します。
- ワンホット エンコーディングを使用すると、新しいカテゴリに遭遇したときにエラーが発生しません。
- リークを発生させずに新しいフィーチャーを作成します。
段階的に練習する (上級)
- データ プロファイリング レポート (欠損率、カーディナリティ、外れ値) を準備します。
- 比較のために欠落処理の 2 つのバージョンを作成します。
- ワンホットを使用して分類をエンコードし、ターゲット セーフ エンコーディングと比較します。
- 起源を明確に説明した 3 つのビジネス機能を追加します。
- 最終的な指標に対する各ステップの影響を評価します。
アーティファクトを送信する必要があります
- 処理前/処理後のデータ品質テーブル。
- 新機能とその存在理由のリスト。
- 各前処理ステップ後の実験ログ。
セルフテストの質問
- 非ランダムな欠損は別の方法で処理する必要がありますか?
- ワンホットが効かなくなるのはどんな時ですか?
- 新しい機能に真の価値があることをどのように証明しますか?