Модель Keras, предсказывающая неправильные значения (точность: 0,0000e + 00) - PullRequest
0 голосов
/ 20 марта 2019

Запишите клише "Это мой первый проект Keras", но, увы, это правда. Я заранее прошу прощения за любые извращенные ошибки новичка.

Как настроены данные

Столбец A: Мы фиксируем время, в которое данный поезд отправляется в 24-часовом формате.

Столбец B: целочисленное представление заданного пункта назначения поездов. EX California == 2, New York == 0

Колонка C: путь, назначенный данному поезду.

Снимок экрана настройки данных

ЗАДАЧА

Используя эти данные, можем ли мы предсказать номер дорожки, используя время и местоположение.

Текущая попытка

# multivariate one step problem
from numpy import array
from numpy import hstack
from numpy import insert
from numpy import zeros,newaxis
from numpy import reshape
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import LSTM
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator
import pandas as pd


file_name 	= "DATA_DUMP.csv"
destination = 0
departure	= 1622

#extract values
raw_data 	= pd.read_csv(file_name)
data 		= raw_data

in_seq1 	= array([data['TIME'].values])
in_seq2 	= array([data['LOCATION'].values])
result		= array([data['TRACK'][0:-1].values])

# reshape series
in_seq1 	= in_seq1.reshape((in_seq1.shape[1],len(in_seq1)))
in_seq2 	= in_seq2.reshape((in_seq2.shape[1],len(in_seq2)))
result		= result.reshape((result.shape[1],len(result)))

dataset 	= hstack((in_seq1, in_seq2))
result		= insert(result,0,0)
result		= result.reshape((len(result),1))

# define generator
n_features 	= dataset.shape[1]
n_input 	= 1
generator 	= TimeseriesGenerator(dataset, result, length=n_input, batch_size=1)

for i in range(len(generator)):
	x, y = generator[i]
	print('%s => %s' % (x, y))

# define model
model = Sequential()
model.add(LSTM(100, activation='sigmoid', input_shape=(n_input, n_features)))
model.add(Dense(1))
model.compile(optimizer=Adam(lr=0.00001), loss='mse',metrics=['accuracy'])
# fit model

model.fit_generator(generator, steps_per_epoch=1, epochs=500, verbose=2)
# make a one step prediction out of sample

raw_array = array([1507,3]) #predict arrival at 15:07 destination 3, what track will it be?

x_input = array(raw_array).reshape((1,n_input,n_features))

yhat = model.predict(x_input, verbose=1)
print(yhat)

Проблема

Хотя мой код работает, я получаю крайне неточных прогнозов. Я предполагаю, что это связано с моей большой потерей. Любая помощь в настройке и запуске этой модели будет принята с благодарностью.

Epoch 500/500 1/1 - 0s - loss: 424.2032 - accuracy: 0.0000e+00

...