機械学習の具体的な問題にPythonを使って、機械学習もPythonも同時に学んでしまいましょう。今回は機械学習の精度を高めるうえで重要となる、データ処理についてまとめました。
この記事では scikit-learn(sklearn)ライブラリを用います。適宜
pip install scikit-learn
などによってダウンロード・インストールしてください。
データの前処理(標準化)
scikit-learn を使って標準化(Standardization)を行ってみます。標準化とは、データのスケールを調整して、平均値が 0、標準偏差が 1 となるようにすることです。これにより、それぞれ異なるスケールの特徴量を均一化することができ、モデルの学習がスムーズになります。
from sklearn.preprocessing import StandardScaler import numpy as np # サンプルデータ(身長・体重) data = np.array([[160, 55], [170, 65], [180, 75]]) # 標準化 scaler = StandardScaler() standardized_data = scaler.fit_transform(data) print("標準化後のデータ:") print(standardized_data)
標準化後のデータ: [[-1.22474487 -1.22474487] [ 0. 0. ] [ 1.22474487 1.22474487]]
ポイント
- StandardScaler( ).fit_transform(data) でデータを標準化。
- すべての特徴量の平均が0、標準偏差が1になるよう変換。
学習用・テスト用データへの分割
機械学習の学習過程では、データを学習用(train)とテスト用(test)に分割することが必要になります。ここではデータをランダムにシャッフルしたうえで、8:2の割合で学習用と訓練用に分割してみます。
from sklearn.model_selection import train_test_split import numpy as np # サンプルデータ(特徴量Xとターゲットy) X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]) y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]) # データを8:2に分割(80%を訓練用、20%をテスト用) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 結果を表示 print("学習用データ:", X_train.flatten()) print("テスト用データ:", X_test.flatten())
学習用データ: [ 6 1 8 3 10 5 4 7] テスト用データ: [9 2]
ポイント
- train_test_split(X, y, test_size=0.2, random_state=42)
- test_size=0.2 → 20%をテスト用にする
- random_state=42 → 乱数シードを固定(再現性のため)