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) # クラス数を取得 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)
このコードは、多クラス分類用のニューラルネットワークモデルを作成し、トレーニングしています。以下はコードの説明です:
-
train_test_split関数を使用して、データをトレーニングセットとテストセットに分割しています。test_sizeパラメータを0.3に設定しており、テストセットの割合を全体の30%にしています。 -
StandardScalerを使用してデータの標準化を行っています。with_mean=Falseを追加している点に注目してください。これは、スパース行列を扱う場合に必要な設定です。 -
クラスの数を取得し、ニューラルネットワークの出力層のユニット数に使用します。
-
Sequentialモデルを作成し、Dense層を追加しています。入力層として64ユニットの隠れ層を2つ配置し、活性化関数としてReLUを使用しています。出力層では、クラス数に応じてユニット数を設定し、softmax活性化関数を使用しています。 -
compileメソッドを使用してモデルをコンパイルします。損失関数としてsparse_categorical_crossentropyを指定し、最適化アルゴリズムとしてadamを使用します。 -
fitメソッドを使用してモデルをトレーニングします。エポック数を5、バッチサイズを32に設定し、トレーニングデータとテストデータでの損失と精度を監視します。 -
evaluateメソッドを使用して、テストデータでのモデルの性能を評価し、損失と精度を表示します。
これにより、多クラス分類タスクのためのニューラルネットワークモデルがトレーニングされ、テストデータでの性能が評価されます。

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