Почему мой прогнозный график показывает предыдущие годы, которые не включены в набор данных? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть набор данных для болезни x с 2 столбцами даты (гггг-мм-дд) и количества пациентов на этот день. Промежуток времени с 2011-01-01 по 2017-11-06. Я использую LSTM для прогноз тренда на следующий год. Сюжет был хорош, когда я просто использовал общее количество пациентов каждый месяц вместо каждого дня. примечание: p c обозначает пациента_счет

исходные данные графика (дата v / s Patient_count)

train, test = df[:-254], df[-254:] #train everything except last year

#scaling data

#building model
n_input = 365 #next 12 months
n_features = 1 
generator = TimeseriesGenerator(train, train, length=n_input, batch_size=106)
model = Sequential()
model.add(LSTM(200, activation='relu', input_shape=(n_input, n_features))) 
model.add(Dropout(0.15)) #helps prevent over fitting
model.add(Dense(1)) #layer
model.compile(optimizer='adam', loss='mse') 
model.fit_generator(generator,epochs=3)

#predict
pred_list = []

batch = train[-n_input:].reshape((1, n_input, n_features))

for i in range(n_input):   
    pred_list.append(model.predict(batch)[0]) 
    batch = np.append(batch[:,1:,:],[[pred_list[i]]],axis=1)

df_predict = pd.DataFrame(scaler.inverse_transform(pred_list),
                          index=df[-n_input:].index, columns=['Prediction'])

df_test = pd.concat([df,df_predict], axis=1)

#**plot**
plt.figure(figsize=(20, 5))#20,5
plt.plot(df_test.index, df_test['pc'])
plt.plot(df_test.index, df_test['Prediction'], color='r')
plt.legend(loc='best', fontsize='xx-large')
plt.xticks(fontsize=18)
plt.yticks(fontsize=16)
plt.show()
pred_actual_rmse = rmse(df_test.iloc[-n_input:, [0]], df_test.iloc[-n_input:, [1]])
print("rmse: ", pred_actual_rmse)

сюжет - обучение и прогнозируемое значение из тестовых данных .com / kU6Dr.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...