始める無料で始める

カテゴリ値のKNN補完

DataFrame 内のすべてのカテゴリ列を序数に変換し終えたら、補完の準備が整います。K-Nearest Neighbors (KNN) のような統計モデルを使って補完すると、より良い結果が得られます。

この演習では、

  1. fancyimputeKNN() 関数を使って、序数エンコード済みの DataFrame users の欠損値を補完します。
  2. 序数値を、序数エンコーダの .inverse_transform() メソッドで元のカテゴリに戻します。

ordinal_enc_dict には各列に対応する sklearnOrdinalEncoder() が格納されています。 users DataFrame には各列のエンコード後の値(序数値)が入っています。

KNN() 関数、OrdinalEncoder() のディクショナリ ordinal_enc_dict、そして users DataFrame はすでに読み込まれています。

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

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

コースを見る

演習の手順

  • KNN_imputerfit_transform() メソッドで users DataFrame を補完します。変換後の値は丸めて整数にします。
  • users の各列を反復処理します。
  • ordinal_enc_dict からその列の OrdinalEncoder() を選び、整形した配列 reshaped に対して .inverse_transform() を実行します。

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

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

# Create KNN imputer
KNN_imputer = KNN()

# Impute 'users' DataFrame. It is rounded to get integer values
users_KNN_imputed.iloc[:, :] = np.round(___)

# Loop over the column names in 'users'
for col_name in ___:
    
    # Reshape the column data
    reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1)
    
    # Select the column's Encoder and perform inverse transform on 'reshaped'
    users_KNN_imputed[col_name] = ___
コードを編集して実行