int型だからいけないんじゃない?floatにしたら直ると思う
データセットのラベルが整数型であるため、エラーが発生しています。実際に、ラベルを整数から浮動小数点数に変換することで問題が解決する可能性があります。
ただし、一般的にニューラルネットワークの多クラス分類では、ラベルは整数値であることが一般的です。ラベルが整数である場合、sparse_categorical_crossentropy 損失関数を使用してモデルを構築する必要があります。この関数は整数ラベルを直接受け取り、内部的に one-hot エンコーディングを行います。
もし、ラベルを浮動小数点数に変換することが望ましい場合は、そのように変換してからモデルを再度構築し、categorical_crossentropy 損失関数を使用します。
以下は、浮動小数点数に変換してからモデルを再構築する例です。
python
# ラベルを浮動小数点数に変換 y_train = y_train.astype(float) y_test = y_test.astype(float) # モデルの構築 model = Sequential([ Dense(64, activation='relu', input_shape=(X_train.shape[1],)), Dense(64, activation='relu'), Dense(len(np.unique(y)), activation='softmax') ]) # モデルのコンパイル model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # モデルのトレーニング model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test)) # モデルの評価 loss, accuracy = model.evaluate(X_test, y_test) print("Test Loss:", loss) print("Test Accuracy:", accuracy)
ただし、これには注意が必要です。浮動小数点数に変換すると、ラベルの間に連続性が導入され、モデルがそれを連続値として解釈する可能性があります。この場合、適切なモデルの構築と損失関数の選択が重要です。

ディスカッション
コメント一覧
まだ、コメントがありません