【发布时间】:2019-11-18 23:47:07
【问题描述】:
尝试使用 LSTM 和 Python 的 Keras 库来预测家庭的热水消耗情况。看了一些教程并做了一个 Udemy 课程,没有找到一个帮助太大的课程(建议赞赏)。由于这只是一个 1-time 问题,我真的不想阅读有关这方面的书籍,这就是为什么我希望我可以依靠 SO 专家的一些帮助。任务:
输入是约 1.5 年的消费概况,分辨率为 1 分钟。我将此配置文件放入 csv 并将其命名为“labels.csv”。 第二个 csv,称为“features.csv”,顾名思义,包含最重要的特征:一天中的分钟、一天中的小时、一周中的一天。这个想法是,通常在工作日的早上 6 点至晚上 8 点和下午 6 点至晚上 8 点之间发生消费,周末稍晚一些。其他影响因素如假期、一年中的月份等被忽略。输出应该是下周的消费概况,即 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()
现在我添加层(我仍然不知道如何决定我应该采取多少层以及它们应该有多大,但我可以通过尝试和错误找到。):
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
返回一切都是最新的......
【问题讨论】:
-
我发现了一个类似的项目,并通过将我的数据集输入其中获得了有希望的结果:github.com/demmojo/lstm-electric-load-forecast
标签: python keras time-series lstm