1. 学ぶ
  2. /
  3. コース
  4. /
  5. XGBoost で学ぶ極限の勾配ブースティング

Connected

演習

腎臓病ケーススタディ I:カテゴリカル補完器

ここからは、より多くの前処理が必要なデータセットでパイプラインを使う練習を続けます。慢性腎臓病データセット にはカテゴリカル特徴量と数値特徴量の両方が含まれますが、欠損値が多く含まれています。ここでの目標は、さまざまな血液検査の指標を特徴量として、慢性腎臓病の有無を予測することです。

動画でSergeyが述べたように、新しいライブラリ sklearn_pandas を使います。これは、scikit-learnが標準でサポートする以上に多くの処理ステップをパイプライン内で連結できるようにするものです。具体的には、DataFrameMapper() クラスを使って、任意の sklearn 互換トランスフォーマーをDataFrameの列に適用でき、出力は NumPy 配列または DataFrame のいずれかにできます。

また、明示的に書かなくても(そしてパイプライン内で動作するように).to_dict("records") によるDataFrameの辞書化を内包した Dictifier というトランスフォーマーも用意しました。さらに、特徴量名のリストは kidney_feature_names、目的変数名は kidney_target_name、特徴量は X、目的変数は y に用意してあります。

この演習では、sklearn の SimpleImputer を使って、データセット内のすべてのカテゴリカル列を補完することが課題です。数値の補完マッパーがどのように作られているかをひな型として参照してください。キーワード引数に input_df=True と df_out=True があることに気づきましたか? これは、配列ではなくDataFrameで扱えるようにするためです。デフォルトでは、トランスフォーマーには選択された列の numpy 配列が入力として渡され、その結果、DataFrame mapper の出力も配列になります。scikit-learn のトランスフォーマーは、基本的なインデックス操作は似ているものの、歴史的に pandas のDataFrameではなく numpy 配列で動作するように設計されてきました。

指示

100 XP
  • DataFrameMapper() と SimpleImputer() を使ってカテゴリカルの補完器を適用してください。SimpleImputer() に引数を渡す必要はありません。列は categorical_columns に含まれています。必ず input_df=True と df_out=True を指定し、リスト内包表記では反復変数に category_feature を使ってください。