Я создал эту модель линейной регрессии, используя Tensorflow (Keras).Однако я не получаю хороших результатов, и моя модель пытается выровнять точки вокруг линейной линии.Я считаю, что подходящие точки вокруг многочлена степени 'n' могут дать лучшие результаты.Я выглядел гуглил, как изменить мою модель на полиномиальную линейную регрессию, используя Tensorflow Keras, но не смог найти хороший ресурс.Любая рекомендация о том, как улучшить прогноз?
У меня большой набор данных.Сначала перетасовали, а потом плюнули на 80% тренировки и 20% тестирования.Также набор данных нормализуется.
1) Модель здания:
def build_model():
model = keras.Sequential()
model.add(keras.layers.Dense(units=300, input_dim=32))
model.add(keras.layers.Activation('sigmoid'))
model.add(keras.layers.Dense(units=250))
model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=200))
model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=150))
model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=100))
model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=50))
model.add(keras.layers.Activation('linear'))
model.add(keras.layers.Dense(units=1))
#sigmoid tanh softmax relu
optimizer = tf.train.RMSPropOptimizer(0.001,
decay=0.9,
momentum=0.0,
epsilon=1e-10,
use_locking=False,
centered=False,
name='RMSProp')
#optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae'])
return model
model = build_model()
model.summary()
2) Поезд модели:
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 100 == 0: print('')
print('.', end='')
EPOCHS = 500
# Store training stats
history = model.fit(train_data, train_labels, epochs=EPOCHS,
validation_split=0.2, verbose=1,
callbacks=[PrintDot()])
3) участок Потеря поезда и потеря Val * введите описание изображения здесь
4) Стоп Когда результаты не улучшаются введите описание изображения здесь
5) Оцените результат
[loss, mae] = model.evaluate(test_data, test_labels, verbose=0)
#Testing set Mean Abs Error: 1.9020842795676374
6)Прогноз:
test_predictions = model.predict(test_data).flatten()
введите описание изображения здесь
7) Ошибка прогноза: введите описание изображения здесь