Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 欠損値の処理 | セクション
データ前処理と特徴量エンジニアリング

book欠損値の処理

メニューを表示するにはスワイプしてください

実世界のデータセットでは欠損データが一般的であり、分析やモデルに影響を与える可能性があります。欠損データの主な3つのタイプは次のとおりです。

  • 完全にランダムな欠損(MCAR):欠損がいかなるデータとも無関係で発生する場合;
  • ランダムな欠損(MAR):欠損が観測されたデータのみに関連している場合;
  • 非ランダムな欠損(MNAR):欠損が欠損値自体に依存している場合。

適切な欠損値処理戦略の選択は、欠損のタイプによって異なります。不適切な処理は、バイアスのある結果、分析の弱体化、信頼性の低い予測につながります。

12345678
import pandas as pd import seaborn as sns titanic = sns.load_dataset("titanic") # Find missing values in each column print("Missing values per column:") print(titanic.isnull().sum())
copy
Note
定義

インピュテーションとは、欠損値を平均値中央値最頻値などの代替値で置き換える処理です。インピュテーションは、さらなる分析やモデリングのためにデータセットの構造とサイズを維持するのに役立ちます。

補完法の種類

異なるデータ型には、欠損値を効果的に処理するための特定の補完戦略が必要:

  • 平均値補完:数値特徴量に使用;観測値の平均で欠損値を置換;
  • 中央値補完:データが歪んでいる場合など、数値特徴量に使用;観測値の中央値で欠損値を置換;
  • 最頻値補完:カテゴリ特徴量に使用;最も頻繁に出現するカテゴリや値で欠損値を置換;
  • 定数値補完:数値・カテゴリ特徴量の両方に使用;0-1'unknown'などの固定値で欠損値を補完;
  • 前方補完(ffill:時系列や順序付きデータに使用;直前の有効な観測値を前方に伝播して欠損を補完;
  • 後方補完(bfill:時系列や順序付きデータに使用;次の有効な観測値で後方に欠損を補完;
  • 補間法:特に時系列の数値特徴量に使用;隣接するデータポイントをもとに線形や他の数学的手法で欠損値を推定。

データ型や分析の文脈に最も適した補完方法を選択。

123456789101112131415161718
import pandas as pd import seaborn as sns # Load Titanic dataset titanic = sns.load_dataset("titanic") # Fill missing values in 'age' (numerical) with the mean titanic['age'] = titanic['age'].fillna(titanic['age'].mean()) # Fill missing values in 'deck' (categorical) with the mode titanic['deck'] = titanic['deck'].fillna(titanic['deck'].mode()[0]) # Drop 'embarked' and 'embark_town' columns (only 2 missing values each) titanic = titanic.drop(['embarked', 'embark_town'], axis=1) # Display the number of missing values after processing print("Missing values after processing:") print(titanic.isnull().sum())
copy
Note
注意

欠損値の削除は高速かつ簡単だが、特に欠損が広範囲に及ぶ場合は貴重なデータの損失につながる可能性がある。補完はより多くのデータを保持できるが、選択を誤るとバイアスが生じることがある。削除か補完かを判断する際は、欠損の量やパターン、特徴量の重要性を考慮。

question mark

次のうち、欠損値を補完せずに行を削除するのが最も適切な状況はどれですか?

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  2
some-alt