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)

このコードは、多クラス分類用のニューラルネットワークモデルを作成し、トレーニングしています。以下はコードの説明です:

  1. train_test_split 関数を使用して、データをトレーニングセットとテストセットに分割しています。test_size パラメータを0.3に設定しており、テストセットの割合を全体の30%にしています。

  2. StandardScaler を使用してデータの標準化を行っています。with_mean=False を追加している点に注目してください。これは、スパース行列を扱う場合に必要な設定です。

  3. クラスの数を取得し、ニューラルネットワークの出力層のユニット数に使用します。

  4. Sequential モデルを作成し、Dense 層を追加しています。入力層として64ユニットの隠れ層を2つ配置し、活性化関数としてReLUを使用しています。出力層では、クラス数に応じてユニット数を設定し、softmax 活性化関数を使用しています。

  5. compile メソッドを使用してモデルをコンパイルします。損失関数として sparse_categorical_crossentropy を指定し、最適化アルゴリズムとして adam を使用します。

  6. fit メソッドを使用してモデルをトレーニングします。エポック数を5、バッチサイズを32に設定し、トレーニングデータとテストデータでの損失と精度を監視します。

  7. evaluate メソッドを使用して、テストデータでのモデルの性能を評価し、損失と精度を表示します。

これにより、多クラス分類タスクのためのニューラルネットワークモデルがトレーニングされ、テストデータでの性能が評価されます。

未分類

Posted by ぼっち