データセットの分割

データセットの分割

次に進めるステップは 「データセットの分割」 です。
今まで取得・可視化・特徴抽出したデータを、モデル学習のために適切に分割します。


データセットの分割

機械学習モデルを適切に評価するため、データを 3つのセット に分けます。

  1. 訓練データ(Train Data)
    • モデルを学習させるデータ
    • 一般的に 70~80% を割り当てる
  2. 検証データ(Validation Data)
    • ハイパーパラメータ調整に使用
    • 10~15% を割り当てる
  3. テストデータ(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("✅ データセットの分割と保存が完了しました。")