Попытка предсказать профиль потребления горячей воды домохозяйством с помощью LSTM с библиотекой Python Keras.Посмотрел несколько уроков и прошел курс Удеми, но не нашел того, который слишком помог (рекомендации приветствуются).Так как это всего лишь однократная проблема, я не очень хочу читать тонны книг об этом, поэтому я надеялся, что смогу рассчитывать на некоторую помощь со стороны экспертов по SO.Задача:
Ввод представляет собой профиль потребления длительностью ~ 1,5 года с разрешением в 1 минуту.Я поместил этот профиль в CSV и назвал его "tags.csv".Второй CSV, называемый «features.csv» содержит, как следует из названия, наиболее важные функции: минуты дня, час дня, день недели.Идея заключается в том, что, как правило, потребление происходит в период с 6 до 8 утра и с 18 до 20 вечера в будние дни и немного позже в выходные дни.Другие влияющие факторы, такие как дни отпуска, месяц года и т. Д., Не учитывались.Выходными данными должен быть профиль потребления на следующей неделе, то есть 10080 строк.
Сначала я импортирую соответствующие модели и загружаю файлы CSV.
import pandas as pd
import plotter
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense
features = pd.read_csv('features.csv')
labels = pd.read_csv('labels.csv')
Затем я делю это на обучениеи наборы для тестирования:
x_train, x_test, y_train, y_test = train_test_split(features,labels,test_size=0.2)
Теперь я определяю свою модель.
model = Sequential()
Теперь я добавляю слои (я до сих пор не знаю, как решить, сколько слоев мне нужно взять и насколько они должны быть большими, но что я могу узнать с помощью метода try and error.):
model.add(LSTM(24,activation='relu',input_shape=(1,3)))
model.add(Dense(1))
Компилируем модель следующим образом:
model.compile(loss='mse', optimizer="adam")
Наконец, подгонка модели:
model.fit(x_train,y_train,epochs=60,verbose=2)
Выполнение последней строки приводит к ошибке:
Traceback (most recent call last):
File "/home/bruno/Desktop/Python Projects/lstm_dhw_data2/lstm.py", line 24, in <module>
model.fit(x_train,y_train,epochs=60,verbose=2)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 952, in fit
batch_size=batch_size)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 751, in _standardize_user_data
exception_prefix='input')
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py", line 128, in standardize_input_data
'with shape ' + str(data_shape))
ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (838860, 3)
Так что я даже не дохожу до ...
results=model.predict(x_test)
print(results)
Если кто-то может указать на то, что я сделал неправильно, укажите мне подходящий (понятный новичку) учебник или точкуменя к аналогичному проекту, который я могу переработать - я был бы очень признателен:)
Я добавил проект в свой GitHub
Редактировать: я также делаюполучить множество предупреждений об устаревании, даже если
pip install --upgrade tensorflow
вернет, что все обновлено ...