データセットの分割
次に進めるステップは 「データセットの分割」 です。
今まで取得・可視化・特徴抽出したデータを、モデル学習のために適切に分割します。
データセットの分割
機械学習モデルを適切に評価するため、データを 3つのセット に分けます。
- 訓練データ(Train Data)
- モデルを学習させるデータ
- 一般的に 70~80% を割り当てる
- 検証データ(Validation Data)
- ハイパーパラメータ調整に使用
- 10~15% を割り当てる
- テストデータ(Test Data)
- 最終的なモデル評価に使用
- 10~15% を割り当てる
具体的なコード
Python でデータセットを分割する方法を示します。
import os
import numpy as np
from sklearn.model_selection import train_test_split
# ✅ 保存した特徴量(MFCC)をロード
npy_path = os.path.join(DATA_DIR, "features.npy")
labels_path = os.path.join(DATA_DIR, "labels.npy") # ラベルデータも保存している場合
X = np.load(npy_path) # 特徴量
y = np.load(labels_path) # ラベル
# ✅ データセットを分割(80%: 訓練, 10%: 検証, 10%: テスト)
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42, stratify=y_temp)
# ✅ 分割結果を確認
print(f"訓練データ: {X_train.shape}, 検証データ: {X_val.shape}, テストデータ: {X_test.shape}")
# ✅ 分割後のデータを保存
np.save(os.path.join(DATA_DIR, "X_train.npy"), X_train)
np.save(os.path.join(DATA_DIR, "X_val.npy"), X_val)
np.save(os.path.join(DATA_DIR, "X_test.npy"), X_test)
np.save(os.path.join(DATA_DIR, "y_train.npy"), y_train)
np.save(os.path.join(DATA_DIR, "y_val.npy"), y_val)
np.save(os.path.join(DATA_DIR, "y_test.npy"), y_test)
print("✅ データセットの分割と保存が完了しました。")