【问题标题】:Facebook NeuralProphet - Loading model from pickle for predictionFacebook NeuralProphet - 从 pickle 加载模型进行预测
【发布时间】:2022-01-12 20:38:06
【问题描述】:

我有一个每周作业,它从 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。但是,所有互联网示例也都传递了数据。由于数据是用来训练模型的,所以我在这里只使用模型。为什么我们在使用基于模型的 predict(For some unknown future date) 时还需要在这里传递数据?

【问题讨论】:

    标签: pandas facebook-prophet prophet


    【解决方案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 测试来确定相似性,并使用置信区间来确定相似性)。

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

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 2022-01-12
      • 2020-07-14
      • 2020-10-17
      • 2016-11-26
      • 1970-01-01
      相关资源
      最近更新 更多