Facebook NeuralProphet - 从 pickle 加载模型进行预测

问题描述 投票:0回答:1

我每周都有一个工作,从 csv 文件读取数据并基于 NeuralProphet 创建模型并转储 pickle 文件以供以后使用。

from neuralprophet import NeuralProphet
from matplotlib import pyplot as plt
import pandas as pd
import pickle

data_location = /input_data/
df = pd.read_csv(data_location + 'input.csv')

np = NeuralProphet()
model = np.fit(df, freq="5min")

with open('model/neuralprophet_model.pkl', "wb") as f:
     # dump information to that file
     pickle.dump(model, f)

上面的 python 代码每周运行一次,并将模型文件转储到一个文件中。

现在,我有一个不同的 python 文件,它加载 pickle 文件并预测未来的日期。

可以说,我在 csv 文件中保存了过去 2 年的数据,并从中创建了模型。现在,我想根据上面的模型来预测未来。

from neuralprophet import NeuralProphet
import pandas as pd
import pickle

with open('model/neuralprophet_model.pkl', "rb") as f:
     model = pickle.load(file)

# To get a next 1 hour prediction by 5mins interval 
future = model.make_future_dataframe(periods=12, freq='5min')
forecast = model.predict(future)

这是正确的吗?在这里,我没有将数据传递给 make_future_dataframe。但是,所有互联网示例也传递数据。由于数据用于训练模型,因此我在这里仅使用模型。当我们使用基于模型的预测(对于某些未知的未来日期)时,为什么我们还需要在这里传递数据?

pandas facebook-prophet
1个回答
1
投票

NeuralProphet 模型(pickle 文件)只是一个经过训练的神经网络...最简单的类比是训练线性回归模型(来自 sci-kit learn 等)... y = Ax + b,其中您已经训练了 A 和b 向量。如果没有 x,这些向量无法单独产生 y。本例中的模型只是 A 和 b 向量。现在,NeuralProphet 使用自回归前馈神经网络,因此向量项更多,而且它们并不都是线性的。

这就是为什么 NeuralProhpet 需要 model.fit 中的历史数据......历史数据是 x。 x 可以来自用于训练 A 和 b 的同一数据集,或者 x 可以来自不同但统计上相似的数据集(您可以使用 d-bar 测试来确定并使用置信区间来确定此处的相似性)。

这就是我们在大多数监督学习应用程序中使用模型的方式......在一个样本数据集上进行训练并应用于预测类似数据集的结果。

© www.soinside.com 2019 - 2024. All rights reserved.