データセット分割(やりなおし)

データセット分割(やりなおし)

📌 次にやること:データセットの分割のやり直し

02_data_splitting.ipynb の修正と適用を開始する。

  • 目的:RNN、CNN + LSTM、今後のモデルが全て共通のデータを使うように統一する
  • 最短時間で修正し、すぐに次のステップ(CNN + LSTM の再学習)に進む。

📌 修正する内容

1️⃣ データ分割の統一

  • 訓練データ(Train)
  • 検証データ(Validation)
  • テストデータ(Test)
  • 全モデルが同じ分割を使うように変更

2️⃣ データの保存形式を統一

  • X_train.npy, X_val.npy, X_test.npy
  • y_train.npy, y_val.npy, y_test.npy
  • 全てのモデルがこのデータを使うようにする

3️⃣ ラベルの形式を統一(One-Hot Encoding)

  • 異なるモデル間で統一されたラベルフォーマットを適用する

4️⃣ 正規化(Min-Max Scaling)

  • モデル間でスケールの不一致が起こらないように統一する

📌修正を適用

🚀 データセットの分割 (02_data_splitting(やりなおし).ipynb) を修正し、データを統一する。
🚀 修正が完了したら、次に進む。(CNN + LSTM の再学習)


📢 データセットの分割 (02_data_splitting(やりなおし).ipynb) の作成

import os
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.utils import to_categorical

# データ保存先
DATA_DIR = "./data/"
if not os.path.exists(DATA_DIR):
    os.makedirs(DATA_DIR)

# ✅ 保存した特徴量(MFCC)とラベルデータをロード
features_path = os.path.join(DATA_DIR, "features.npy")
labels_path = os.path.join(DATA_DIR, "labels.npy")

X = np.load(features_path)  # 特徴量データ
y = np.load(labels_path)  # ラベルデータ

# ✅ ラベルデータを One-Hot Encoding に変換
y = to_categorical(y)

# ✅ 特徴量データの正規化(Min-Max Scaling)
scaler = MinMaxScaler()
X = scaler.fit_transform(X.reshape(-1, X.shape[-1])).reshape(X.shape)

# ✅ データセットを分割(80% 訓練, 10% 検証, 10% テスト)
X_train, X_temp, y_train, y_temp = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=np.argmax(y, axis=1)
)
X_val, X_test, y_val, y_test = train_test_split(
    X_temp, y_temp, test_size=0.5, random_state=42, stratify=np.argmax(y_temp, axis=1)
)

# ✅ 分割結果を確認
print(f"訓練データ: {X_train.shape}, 検証データ: {X_val.shape}, テストデータ: {X_test.shape}")
print(f"訓練ラベル: {y_train.shape}, 検証ラベル: {y_val.shape}, テストラベル: {y_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("✅ データセットの分割と保存が完了しました。")

修正した 02_data_splitting.ipynb のロジックを提供します。これにより、すべてのモデルが統一されたデータを使用できるようになります。


次のステップ: 修正を適用し、統一データを使って CNN + LSTM の再学習を開始 します!