モデルに入れる前に、特徴量(列)ごとに値の大きさをそろえておく必要がよくあります。 ある列は 0〜1 なのに別の列は 0〜1000 だと、大きな数を使う列ひとつが距離や係数を支配し、 ほかの特徴量が埋もれてしまうからです。 standardize(X) を完成させてください。X は行がデータ1件、列が特徴量の2次元実数配列です。 各特徴量(列)が平均 0・標準偏差 1 になるように変換した新しい配列を返してください。 例 X = [[1, 100], [2, 200], [3, 300]] → どちらの列も平均 0・標準偏差 1 の同じ形になります。
モデルにデータを入れる前に、特徴量(列)ごとに値の大きさをそろえる前処理ヘルパー standardize(X) を numpy で完成させる問題です。入力は行がデータ1件・列が特徴量の2次元 実数配列で、元の配列を変更せず、各特徴量が平均 0・標準偏差 1 になるよう変換した新しい 配列を返します。特徴量スケーリングという前処理の基礎を扱います。
実際のデータには、0〜1 のような小さな値を使う特徴量と 0〜1000 のような大きな値を使う 特徴量が混ざっていることがあります。これほど大きさが違うと、距離で近さを測るモデルや 係数の大きさに敏感なモデルでは、大きな値を使う特徴量ひとつに結果が左右されがちです。 そのため、モデルに入れる前に特徴量を似た物差しの上にそろえる前処理がよく使われます。 この問題ではその前処理を numpy で直接実装し、結果を数値で確認する検証の習慣も練習します。