このステップでは、フィットさせたスケーラーを使用してデータを変換します。transform() メソッドは、fit() ステップ中に計算された平均値と標準偏差を使用して、スケーリング変換をデータに適用します。これにより、データは平均値 0、標準偏差 1 に中心化されます。
元のデータをそのまま保持するために、変換されたデータは新しい変数 X_scaled に格納します。
コードの理解:
X_scaled = scaler.transform(X): 学習した変換をデータに適用します。
np.set_printoptions(precision=2, suppress=True): 出力を整形して読みやすくします。
precision=2: 小数点以下 2 桁を表示します。
suppress=True: 非常に小さい/大きい数値に対して科学表記法を使用します。
np.mean(X, axis=0): axis 0(列)に沿って平均値を計算します。
axis=0: すべてのサンプルにわたって、特徴量(列)ごとに平均値を計算します。
- 結果:特徴量ごとに 1 つの平均値が得られます。
preprocess.py ファイルの ## --- Step 4: Transform the data --- コメントの下に以下のコードを追加します。変換の効果を確認するために、元のデータとスケーリングされたデータの平均値を出力します。
## --- Step 4: Transform the data ---
X_scaled = scaler.transform(X)
## Use numpy to set precision for cleaner output
np.set_printoptions(precision=2, suppress=True)
print("Original data mean:", np.mean(X, axis=0))
print("Scaled data mean:", np.mean(X_scaled, axis=0))
print("Scaled data sample:\n", X_scaled[:5])
ファイルを保存して実行します。
python3 preprocess.py
スケーリングされたデータの平均値が実質的にゼロになり、サンプルデータの値が変換されていることがわかります。
Shape of features (X): (150, 4)
Shape of target (y): (150,)
Scaler object created: StandardScaler()
Scaler mean: [5.84333333 3.05733333 3.758 1.19933333]
Original data mean: [5.84 3.06 3.76 1.2 ]
Scaled data mean: [-0. -0. -0. -0.]
Scaled data sample:
[[-0.9 1.02 -1.34 -1.32]
[-1.14 -0.13 -1.34 -1.32]
[-1.39 0.33 -1.4 -1.32]
[-1.51 0.1 -1.28 -1.32]
[-1.02 1.25 -1.34 -1.32]]