始める無料で始める

カテゴリ列の序数エンコーディング

カテゴリ値の補完(インプテーション)では、数値の補完に比べていくつか手順が増えます。文字列には統計演算を直接適用できないため、まず数値に変換する必要があります。

ここでは、レストランが記録した顧客の嗜好や選択を含むユーザープロファイルのデータセットを使います。カテゴリ特徴量のみで構成されています。この演習では、sklearnOrdinalEncoder を使って、カテゴリ列 'ambience' を数値に変換します。DataFrame は users として読み込まれており、OrdinalEncoder() 関数も読み込まれています。

users DataFrame の head()tail() はすでに表示されています。

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

Pythonで欠損データに対処する

コースを見る

演習の手順

  • 序数エンコーダーオブジェクトを作成し、ambience_ord_enc に代入します。
  • users'ambience' 列から、欠損していない値を選択します。
  • ambience_not_null を形状 (-1, 1) にリシェイプします。
  • ambience の欠損していない値を、エンコード後の値で置き換えます。

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

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

# Set col_name to 'ambience'
col_name = 'ambience'
# Create Ordinal encoder
ambience_ord_enc = ___

# Select non-null values of ambience column in users
ambience = users[col_name]
ambience_not_null = ___

# Reshape ambience_not_null to shape (-1, 1)
reshaped_vals = ___

# Select the non-null values for the column col_name in users and store the encoded values
encoded_vals = ambience_ord_enc.fit_transform(reshaped_vals)
users.loc[___, col_name] = np.squeeze(encoded_vals)
コードを編集して実行