【问题标题】:fbprophet: Error evaluating model log probability: Non-finite gradientfbprophet:评估模型对数概率的错误:非有限梯度
【发布时间】:2021-04-25 17:22:24
【问题描述】:

我收到以下错误:

我所做的只是运行这段代码。我使用了这个数据集https://www.kaggle.com/camnugent/sandp500,但尝试了几个不同的,都返回了这个消息。

pandas_df = pd.read_csv(file_path)
data_to_use = pandas_df.filter(['datetime', 'close'])
data_to_use.columns = ['ds', 'y']
data_to_use['ds'] = to_datetime(data_to_use['ds'])

model = Prophet()
model.fit(data_to_use)

future_dates = model.make_future_dataframe(periods=365)
prediction = model.predict(future_dates)

我在新的 conda 环境中安装了 pystan 和 fbprophet,python 3.7.10、pystan 2.19.1.1、fbprophet 0.7.1。

我不知道如何继续,所以任何建议都将不胜感激。

【问题讨论】:

  • 我认为您可能安装了旧的、不受支持的版本。尽管fbprophet 的pypi 页面仍然是Google 上的顶级搜索结果,但我相信您确实想下载并安装现在版本为1.0.1 的prophet 软件包。所以pip install prophet,而不是pip install fbprophet
  • 谢谢!我刚试过,但结果是一样的:(

标签: python pandas facebook-prophet


【解决方案1】:

我无法重现您的错误,但我相信我知道拟合失败的原因。 您尝试拟合的数据是 > 500 只股票的收盘价。使用data_to_use.plot.scatter(x='ds', y='y', s=0.01) 绘制时,您会得到:

我认为拟合失败了,因为它只是在努力收敛到this pystan discourse thread 中提到的合理解决方案。当我天真地尝试拟合这些数据时,它并没有失败,而是在y = 100 附近给出了一个几乎水平的线预测,并且误差线非常大。

根据您要做什么,我建议您选择Name 的一只股票,例如:

data_to_use_pcln = pandas_df[pandas_df.Name.eq('PCLN')].filter(['date', 'close'])
data_to_use_pcln.columns = ['ds', 'y']
data_to_use_pcln['ds'] = pd.to_datetime(data_to_use_pcln['ds'])

或像这样将每天的所有股票价格相加:

summed_data = pandas_df.groupby('date').agg('sum').reset_index().filter(['date', 'close'])
summed_data.columns = ['ds', 'y']
summed_data['ds'] = pd.to_datetime(summed_data['ds'])

将求和后的数据传递给model.fit() 给出了一个合理的解决方案:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2017-11-26
    相关资源
    最近更新 更多