2

试图了解我是否可以使用 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 文件并稍后加载以进行预测?

4

1 回答 1

2

我认为这里的正确答案是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)

于 2021-12-16T22:07:02.027 回答