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。但是,所有互联网示例也都传递了数据。由于数据是用来训练模型的,所以我在这里只使用模型。为什么我们还需要在这里传递数据,因为我们使用基于模型的预测(对于某个未知的未来日期)?

4

1 回答 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 测试来确定相似性,并在此处使用置信区间来确定相似性)。

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

于 2021-12-16T16:21:40.587 回答