Ich bin neu in neuronalen Netzen (nur ein Disclaimer).Skalierung der Ausgänge eines Keras-Modells auf den ursprünglichen Maßstab
Ich habe ein Regressionsproblem der Vorhersage der Stärke von Beton, basierend auf 8 Funktionen.
# Normalize data between 0 and 1
from sklearn.preprocessing import MinMaxScaler
min_max = MinMaxScaler()
dataframe2 = pd.DataFrame(min_max.fit_transform(dataframe), columns = dataframe.columns)
dann konvertiert die Datenrahmen in numpy Array und spaltete es in X_train, y_train, X_test, y_test: Was ich zuerst getan, werden die Daten unter Verwendung von Min-Max-Normalisierung neu skaliert. Jetzt ist hier der Keras Code für das Netzwerk selbst:
from keras.models import Sequential
from keras.layers import Dense, Activation
#Set the params of the Neural Network
batch_size = 64
num_of_epochs = 40
hidden_layer_size = 256
model = Sequential()
model.add(Dense(hidden_layer_size, input_shape=(8,)))
model.add(Activation('relu'))
model.add(Dense(hidden_layer_size))
model.add(Activation('relu'))
model.add(Dense(hidden_layer_size))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('linear'))
model.compile(loss='mean_squared_error', # using the mean squared error function
optimizer='adam', # using the Adam optimiser
metrics=['mae', 'mse']) # reporting the accuracy with mean absolute error and mean squared error
model.fit(X_train, y_train, # Train the model using the training set...
batch_size=batch_size, epochs=num_of_epochs,
verbose=0, validation_split=0.1)
# All predictions in one array
predictions = model.predict(X_test)
Fragen:
Prognosen Array werden die Werte alle im skalierten Format haben (zwischen 0 und 1), aber offensichtlich Ich würde die Vorhersagen brauchen, um in ihren wahren Werten zu sein. Wie kann ich diese Ausgaben auf die tatsächlichen Werte zurückskalieren?
Ist die Min-Max- oder Z-Score-Standardisierung für Regressionsprobleme besser geeignet? Was ist mit dieser "Batch-Normalisierung"?
Danke,
Sie Frage ist ein wenig zu weit gefasst: es 2 Fragen enthält, und die erste (Neuskalierung) hat nichts mit Keras zu tun. –
Ihre erste Frage wurde beantwortet und 2. ist nicht mehr für den Stackoverflow verfügbar. Bitte überprüfen Sie auf https://stats.stackexchange.com –