始める無料で始める

カテゴリ列のエンコード I: LabelEncoder

XGBoost で住宅価格データを扱うために必要な準備が見えたところで、手順を一つずつ進めていきます。

まずは欠損値の補完です。先ほど見たように、LotFrontage 列には多くの欠損があります。次に、データセット内のカテゴリ列を one-hot エンコーディングで数値に変換する必要があります。アイデアの復習には、Supervised Learning with scikit-learnこの動画をご覧ください。

このデータには 5 つのカテゴリ列があります:MSZoningPavedDriveNeighborhoodBldgTypeHouseStyle。Scikit-learn には、各カテゴリ列の値を整数に変換する LabelEncoder 関数があります。ここではこれを使う練習をします。

この演習はコースの一部です

XGBoost で学ぶ極限の勾配ブースティング

コースを見る

演習の手順

  • sklearn.preprocessing から LabelEncoder をインポートします。
  • .fillna() を使って、LotFrontage 列の欠損値を 0 で埋めます。
  • カテゴリ列用のブールマスクを作成します。df.dtypesobject に等しいかどうかで判定できます。
  • LabelEncoder オブジェクトを作成します。これは他の scikit-learn 推定器と同様にインスタンス化します。
  • すべてのカテゴリ列を LabelEncoder() で整数にエンコードします。これには、与えられたラムダ関数内で le.fit_transform() メソッドを使います。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
コードを編集して実行