fbprophet运行报ValueError: lam value too large错误的解决方法咨询
错误原因
该错误是两个因素共同导致的:
- 代码中设置的
changepoint_prior_scale=0.5数值远高于默认值0.05,导致Prophet内部计算泊松分布参数lam时超出了numpy的校验上限 - 新版本numpy对泊松分布的入参增加了合法性校验,旧版本不会抛出该错误
解决方案
方案1:修改代码参数(无需换包,最便捷)
直接调整Prophet初始化参数即可解决,修改后原代码无需其他改动:
- 调低
changepoint_prior_scale到0.1及以下即可,该参数过高会导致模型过度拟合,本身就不推荐设置到0.5这么大 - 也可新增
interval_width=0参数关闭预测区间计算,彻底避开泊松抽样逻辑
修改后的初始化代码示例:
m = Prophet( changepoint_prior_scale=0.1, # 从0.5调整为0.1 changepoint_range=0.95, yearly_seasonality=False, weekly_seasonality=True, daily_seasonality=True, seasonality_mode='additive', # 可选开启:关闭预测区间,彻底避免该错误 # interval_width=0 )
另外注意pandas新版本已经弃用error_bad_lines=False参数,读数据的代码需同步修改为:
data = pd.read_csv(url, on_bad_lines='skip')
方案2:安装兼容旧版本fbprophet
如果你需要完全保留原代码不变运行,可按以下步骤安装旧版fbprophet:
- 先卸载当前已安装的prophet相关包:
conda remove -c conda-forge fbprophet prophet -y
- 安装0.7.1版本fbprophet(该版本与你的原代码完全兼容):
conda install -c conda-forge fbprophet=0.7.1 -y
如果安装失败,说明你当前环境Python版本过高(fbprophet 0.7.1支持Python 3.7~3.9),可新建专用conda环境:
# 新建Python3.8环境 conda create -n prophet_env python=3.8 -y # 激活环境 conda activate prophet_env # 安装对应版本依赖 conda install -c conda-forge fbprophet=0.7.1 pandas plotly numpy -y
安装完成后在PyCharm中将项目解释器切换为prophet_env即可运行原代码。
方案3:升级到新版官方prophet
当前fbprophet已被官方弃用,新包更名为prophet,新版修复了大量兼容性问题,也可解决该错误:
- 卸载旧包:
conda remove -c conda-forge fbprophet -y
- 安装新版prophet:
conda install -c conda-forge prophet -y
- 修改代码中所有导入语句,去掉前缀
fb:
# 原导入 # from fbprophet import Prophet # from fbprophet.plot import plot_plotly, add_changepoints_to_plot # 修改后 from prophet import Prophet from prophet.plot import plot_plotly, add_changepoints_to_plot
内容的提问来源于stack exchange,提问作者daystd
相关产品推荐
相关产品推荐

