from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from keras.models import Sequential from keras.layers import Dense # データをトレーニングセットとテストセットに分割 X_train, X_test, y_train, y_test = train_test_split(X_combined, y, test_size=0.3, random_state=42) # データの標準化 scaler = StandardScaler(with_mean=False) # with_mean=Falseを追加 X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) X_train_scaled = X_train.toarray() X_test_scaled = X_test.toarray() # クラス数を取得 num_classes = len(np.unique(y_train)) # モデルの作成 model = Sequential([ Dense(64, activation=’relu’, input_shape=(X_train_scaled.shape[1],)), Dense(64, activation=’relu’), Dense(num_classes, activation=’softmax’) # 多クラス分類用の出力層 ]) # モデルのコンパイル model.compile(optimizer=’adam’, loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’]) # モデルのトレーニング history = model.fit(X_train_scaled, y_train, epochs=5, batch_size=32, validation_data=(X_test_scaled, y_test)) # テストデータでの予測と評価 loss, accuracy = model.evaluate(X_test_scaled, y_test) print(“Test Loss:”, loss) print(“Test Accuracy:”, accuracy)

コードのエラーを解決するために、データセットの準備についていくつかの改善を提案します。

まず、データセットの前処理に問題があるようです。特に、スパース行列から密な行列への変換に関連しています。

次のステップを実行することで問題を解決できる可能性があります。

  1. X_train_scaledX_test_scaledを生成する前に、スパース行列を密な行列に変換します。
  2. train_test_splittest_size=0.3としているので、テストセットのサイズは正しいですが、ランダムシードをrandom_state=42に設定しているので、これが問題の原因であるかどうかを確認します。

これらの変更を行い、再度試してください。もし問題が解決しない場合は、エラーメッセージを共有してください。

未分類

Posted by ぼっち