【问题标题】:Facebook NeuralProphet - Generating model fileFacebook NeuralProphet - 生成模型文件
【发布时间】:2022-01-12 21:36:35
【问题描述】:

试图了解我是否可以使用 pickle 将模型存储在文件系统中。

from neuralprophet import NeuralProphet
import pandas as pd
import pickle

df = pd.read_csv('data.csv')
pipe = NeuralProphet()
pipe.fit(df, freq="D")
pickle.dump(pipe, open('model/pipe_model.pkl', 'wb'))

问题:-正在加载多个 CSV 文件。我有多个 CSV 文件。如何将多个 CSV 文件转储到同一个 pickle 文件中并稍后加载以进行预测?

【问题讨论】:

  • 你为什么不用with open('neuralprophet_model.pkl', "wb") as f: pickle.dump(m, f)
  • 好建议。这里的代码只是一个示例代码。
  • 为什么不直接将这些 csv 文件连接成一个文件并使用 pandas 转储它?
  • @dasmehdix 我有过去 5 年的数据,然后每周都会收到新数据的提要。我需要总是用全套训练吗?我的想法是,我只需要为训练添加新文件,这将被添加到现有的训练模型数据中。

标签: pandas facebook-prophet prophet


【解决方案1】:

我认为这里的正确答案是sqlite。 SQLite 的作用类似于数据库,但它以单个独立文件的形式存储在磁盘上。

您的用例的好处是您可以将收到的新数据附加到文件的表中,然后根据需要读取它。执行此操作的代码很简单:

import pandas as pd
import sqlite3
# Create a SQL connection to our SQLite database
# This will create the file if not already existing
con = sqlite3.connect("my_table.sqlite")

# Replace this with read_csv
df = pd.DataFrame(index = [1, 2, 3], data = [1, 2, 3], columns=['some_data'])

# Simply continue appending onto 'My Table' each time you read a file
df.to_sql(
    name = 'My Table',
    con = con,
    if_exists='append'
)

请注意,SQLite 性能在大量行之后会下降,在这种情况下,将数据缓存为 parquet 文件或其他快速压缩格式,然后在训练时将它们全部读取可能更合适。

当您需要数据时,只需从表中读取所有内容:

pd.read_sql('SELECT * from [My Table]', con=con)

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2022-01-12
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2015-05-14
    • 2011-04-19
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多