Ich habe eine Datenanalyse durchgeführt und musste selbst eine CNN-Bewertungsfunktion erstellen und bewerten. Notieren Sie sich daher, wie diese erstellt wird.
Dieses Mal habe ich den Entscheidungskoeffizienten (R2) als Bewertungsfunktion erstellt. R2 wird durch die folgende Formel ausgedrückt.
Das Programm der Bewertungsfunktion (R2) selbst ist wie folgt.
def r2(y_true, y_pred):
SS_res = K.sum(K.square(y_true - y_pred))
SS_tot = K.sum(K.square(y_true - K.mean(y_true)))
return ( 1 - SS_res/(SS_tot + K.epsilon()) )
Betten Sie diese Funktion wie folgt in die Metrik des Modells ein: Dieses Mal verwenden wir das CNN-Modell.
def build_model():
model = Sequential()
model.add(Dense(500, activation='relu', input_shape=(X_train.shape[1],), kernel_initializer='he_normal'))
model.add(Dropout(0.1))
model.add(Dense(300, activation='relu', kernel_initializer='he_normal'))
model.add(Dropout(0.1))
model.add(Dense(100, activation='relu', kernel_initializer='he_normal'))
model.add(Dropout(0.1))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=Adam(), metrics=['mae', r2])
return model
Wenn Sie dieses Modell wie folgt ausführen, wird auch R2 angezeigt und ausgegeben.
reg = KerasRegressor(build_fn=build_model, validation_data=(X_test, y_test),
batch_size=100,
epochs=5,
verbose=1)
history = reg.fit(X_train, y_train)
Train on 11671 samples, validate on 2060 samples
Epoch 1/5
11671/11671 [==============================] - 4s 366us/step
- loss: 1.1265 - mean_absolute_error: 0.2145 - r2_keras: -1.7520 - val_loss: 0.6966 - val_mean_absolute_error: 0.1376 - val_r2_keras: 0.0823
Epoch 2/5
11671/11671 [==============================] - 4s 311us/step
- loss: 0.7213 - mean_absolute_error: 0.1264 - r2_keras: 0.1204 - val_loss: 0.6822 - val_mean_absolute_error: 0.1165 - val_r2_keras: 0.3338
Epoch 3/5
11671/11671 [==============================] - 4s 311us/step
- loss: 0.6593 - mean_absolute_error: 0.1153 - r2_keras: 0.3085 - val_loss: 0.6790 - val_mean_absolute_error: 0.1015 - val_r2_keras: 0.4019
Epoch 4/5
11671/11671 [==============================] - 4s 308us/step
- loss: 0.6433 - mean_absolute_error: 0.0993 - r2_keras: 0.4104 - val_loss: 0.6678 - val_mean_absolute_error: 0.0991 - val_r2_keras: 0.4225
Epoch 5/5
11671/11671 [==============================] - 4s 315us/step
- loss: 0.6362 - mean_absolute_error: 0.0953 - r2_keras: 0.4335 - val_loss: 0.6646 - val_mean_absolute_error: 0.0982 - val_r2_keras: 0.4332
Durch Ändern des Inhalts der Auswertungsfunktion kann diese mit verschiedenen benutzerdefinierten Funktionen ausgewertet werden.
Recommended Posts