参考:
- https://examples.dask.org/applications/forecasting-with-prophet.html?highlight=prophet
- https://facebook.github.io/prophet/
需要注意的几点:
我总共有 48GB 的内存
这是我正在使用的库版本
- Python 3.7.7
- dask==2.18.0
- fbprophet==0.6
- 熊猫==1.0.3
我导入熊猫的原因仅适用于这一
pd.options.mode.chained_assignment = None
行当我使用 dask.distributed 时这有助于解决 dask 错误
所以,我有一个 21gb 的 csv 文件,我正在使用 dask 和 jupyter notebook 读取它......我试图从我的 mysql 数据库表中读取它,但是,内核最终崩溃了
我尝试了多种组合使用本地工作人员、线程和可用内存、可用 storage_memory 网络,甚至尝试完全不使用distributed
。我也尝试过用 pandas 进行分块(不是上面提到的与 pandas 相关的行),但是,即使有分块,内核仍然崩溃......
我现在可以使用 dask 加载 csv,并应用一些转换,例如设置索引、添加 fbprophet 需要的列(名称)......但我仍然无法使用 计算数据帧df.compute()
,因为这就是我为什么认为我收到了 fbprophet 的错误。在我使用适当的 dtypes 添加列 y 和 ds 后,我收到错误Truth of Delayed objects is not supported
,我认为这是因为 fbprophet 期望数据帧不懒惰,这就是我尝试预先运行计算的原因。我还增加了客户端上的 ram 以允许它使用完整的 48gb,因为我怀疑它可能试图加载数据两次,但是,这仍然失败,所以很可能不是这种情况/不是不会导致问题。
除此之外,在 dask 的文档中还提到了 fbpropphet,用于将机器学习应用于数据帧,但是,我真的不明白为什么这不起作用......我还尝试了 modin 与 ray 和 dask,结果基本相同。
另一个问题...关于内存使用情况
distributed.worker - WARNING - Memory use is high but worker has no data to store to disk. Perhaps some other process is leaking memory? Process memory: 32.35 GB -- Worker memory limit: 25.00 GB
,我在分配客户端、读取 csv 文件以及对数据帧应用操作/转换时遇到此错误,但是分配的大小大于 csv 文件本身,所以这让我感到困惑.. .
我自己做了什么来尝试解决这个问题:-谷歌搜索当然没有找到任何东西:-/-多次询问不和谐的帮助频道-多次询问 IIRC 帮助频道
无论如何,非常感谢您对这个问题的任何帮助!!!先感谢您 :)
MCVE
from dask.distributed import Client
import dask.dataframe as dd
import pandas as pd
from fbprophet import Prophet
pd.options.mode.chained_assignment = None
client = Client(n_workers=2, threads_per_worker=4, processes=False, memory_limit='4GB')
csv_file = 'provide_your_own_csv_file_here.csv'
df = dd.read_csv(csv_file, parse_dates=['Time (UTC)'])
df = df.set_index('Time (UTC)')
df['y'] = df[['a','b']].mean(axis=1)
m = Prophet(daily_seasonality=True)
m.fit(df)
# ERROR: Truth of Delayed objects is not supported