我(有点像是初学者)正在时间序列数据应用程序上试验Keras,在其中创建了回归模型,然后将其保存以在其他Python脚本上运行。
我要处理的时间序列数据是小时数据,我正在Keras中使用保存的模型来预测数据集中每个小时的值。 ({bq --location=US load --source_format=DATASTORE_BACKUP --projection_fields="field1, field4, field2, field3" --replace mydataset.table gs://mybucket/2019-03-25T02:56:02_47688/default_namespace/kind_data/default_namespace_datakind.export_metadata
= CSV文件被读入了大熊猫)有了长达数年的时间序列数据,有8760(一年中的小时数)个预测,最后我尝试在最后求和这些预测的值。>
在下面的代码中,我没有显示如何重新创建模型体系结构(已保存模型的keras要求),并且代码的运行速度非常慢。对于200次以下的预测,此方法似乎不错,但对于8760次的预测,该代码似乎停滞不前,以至于无法完成。
我对数据库没有任何经验,但是与将8760个keras预测存储在Python列表中相比,这是一种更好的方法吗?感谢您提供的任何提示,我仍在学习中。
data
答案 0 :(得分:1)
似乎没有明显的理由让您的生活变得非常困难 ...
对于初学者来说,您不需要为每一行都加载模型-这太过分了!您应该将#set initial loop params & empty list to store modeled data
row_num = 0
total_estKwh = []
for i, row in data.iterrows():
params = row.values
if (params.ndim == 1):
params = np.array([params])
estimatedKwh = load_trained_model(weights_path).predict(params)
print('Analyzing row number:', row_num)
total_estKwh.append(estimatedKwh)
row_num += 1
df = pd.DataFrame.from_records(total_estKwh)
total = df.sum()
totalStd = np.std(df.values)
totalMean = df.mean()
循环中的load_trained_model(weights_path)
移出,类似
for
,然后将循环中的相应行替换为
model = load_trained_model(weights_path) # load ONCE
第二,再次调用模型进行逐行预测仍然没有效率;最好先将estimatedKwh = model.predict(params)
准备为数组,然后将其输入模型以获取批量预测。也忘记了params
语句。
总共,请尝试以下操作:
print