カテゴリ列の序数エンコーディング
カテゴリ値の補完(インプテーション)では、数値の補完に比べていくつか手順が増えます。文字列には統計演算を直接適用できないため、まず数値に変換する必要があります。
ここでは、レストランが記録した顧客の嗜好や選択を含むユーザープロファイルのデータセットを使います。カテゴリ特徴量のみで構成されています。この演習では、sklearn の OrdinalEncoder を使って、カテゴリ列 '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)