Прогнозирование цены на природный газ с использованием нейронной сети LSTM - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу построить модель с использованием Keras для прогнозирования цены на природный газ.Набор данных содержит цену на газ ежедневно и ежемесячно с 1997 года, и он доступен Здесь .

На следующем графике показаны цены в течение нескольких дней.X - дни, а Y - цена.

enter image description here

Я пробовал LSTM с 4,50 100 ячейками в скрытом слое, но точность все же не была плохой имодель не смогла предсказать будущую цену.Я добавил еще два скрытых слоя (полностью связанных) с ячейками 100 и 128, но это тоже не сработало.

Это модель и процесс обучения формы результата:

num_units = 100
activation_function = 'sigmoid'
optimizer = 'adam'
loss_function = 'mean_squared_error'
batch_size = 5
num_epochs = 10
log_file_name = f"{SEQ_LEN}-SEQ-{1}-PRED-{int(time.time())}"

# Initialize the model (of a Sequential type)
model = Sequential()

# Adding the input layer and the LSTM layer
model.add(LSTM(units = num_units, activation = activation_function,input_shape=(None, 1)))

# Adding the output layer
model.add(Dense(units = 1))

# Compiling the RNN
model.compile(optimizer = optimizer, loss = loss_function, metrics=['accuracy'])

# Using the training set to train the model
history = model.fit(train_x, train_y, batch_size = batch_size, epochs =num_epochs,validation_data=(test_x, test_y))

ивывод:

Тренировка на 4362 выборках, проверка на 1082 выборках

Эпоха 1/10 4362/4362 [==============================] - 11 с 3 мс / шаг - потеря: 0,0057 - в соотв. 2,2925e-04 - val_loss: 0,0016 - val_acc: 0,0018

эпоха 2 /10 4362/4362 [====================================] - 9 с 2 мс / шаг - потеря: 6,2463e-04 - акк: 4.5851e-04 - val_loss: 0.0013 - val_acc: 0.0018

Эпоха 3/10 4362/4362 [====================================] - 9 с 2 мс / шаг - потеря: 6.1073e-04 - согласно: 2.2925e-04 - val_loss: 0.0014 - val_acc: 0.0018

Эпоха 4/10 4362/4362 [==============================] - 8 с 2 мс / шаг - потеря: 5.4403e-04 - согласно: 4.5851e-04 -val_loss: 0.0014 - val_acc: 0.0018

Epoch 5/10 4362/4362 [=============================] - 7 с 2 мс / шаг - потеря: 5.4765e-04 - согласно: 4,5851e-04 - val_loss: 0,0012 - val_acc: 0,0018

Epoch 6/10 4362/4362 [=============================] - 8 с 2 мс / шаг - потеря: 5.1991e-04 - в соотв. 4.5851e-04 - val_loss: 0.0013 - val_acc: 0.0018

Epoch 7/10 4362/4362 [==============================] - 7s 2 мс / шаг - потеря: 5.7324e-04 - согласно: 2.2925e-04 - val_loss:0,0011 - val_acc: 0,0018

Epoch 8/10 4362/4362 [=============================]- 7 с 2 мс / шаг - потеря: 4,4248e-04 - согласно: 4,5851e-04 - val_loss: 0,0011 - val_acc: 0,0018

Epoch 9/10 4362/4362 [==============================] - 7 с 2 мс / шаг - потеря: 4,3868e-04 - соотв: 4,5851e-04 - val_loss: 0,0011 - val_acc: 0,0018

Epoch 10/10 4362/4362 [=============================] - 7s 2 мс / шаг -потеря: 4.6654e-04 - согласно: 4.5851e-04 - val_loss: 0.0011 - val_acc: 0.0018

Как узнать количество слоев и ячеек для такой задачи?Кто-нибудь может предложить структуру сети, которая может решить эту проблему?

...