始める無料で始める

標準化スケーリング

標準化スケーリングは、数値特徴量の平均を0、分散を1に変換します。この演習では、sklearnStandardScaler() を使って標準化を行います。まず、数値列のフィルタリングと列に関する知識を組み合わせて、スケーリングを適用する対象列だけを選択します。このフィルタリングはすでに用意されており、部分一致を可能にする正規表現を使って実行されます。次に、fit_transform() を使って対象の列を変換します。

pandas モジュールはワークスペースで pd として利用可能で、サンプルの DataFrame は df に読み込まれています。さらに、hour 列はすでに datetime に変換済みで、sklearn.preprocessing から StandardScaler も利用できます。

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

PythonでMachine Learningを使ってCTRを予測する

コースを見る

演習の手順

  • 数値列を選択し、与えられた filter_cols.select_dtypes() を使ってフィルタリングします。
  • StandardScaler() を作成し、.fit_transform() を使って対象列に標準化スケーリングを適用します。
  • 変換後の新しい列の分散を .var() で出力します。

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

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

# Get non-categorical columns, with a filter
num_df = df.____(include=['int', 'float'])
filter_cols = ['click', 'banner_pos', 'device_type',
               'search_engine_type', 'product_type', 'advertiser_type']
new_df = num_df[num_df.columns[~num_df.columns.____(filter_cols)]]
num_cols = new_df.____

# Transform columns using StandardScaler
scaler = ____()
df[num_cols] = scaler.____(df[____])

# Print mean and variance of transformed columns
print(df[num_cols].mean())
print(df[num_cols].____)
コードを編集して実行