You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FB Prophet拟合模型时遭遇TypeError: bad operand type for unary -: 'Timestamp'错误的求助

FB Prophet拟合模型时遭遇TypeError: bad operand type for unary -: 'Timestamp'错误的求助

嘿,我一眼就看到两个关键问题导致了这个错误,咱们一个个说:

问题1:变量名不匹配,误用了其他模型的fit方法

你定义的Prophet模型是model_fb = Prophet(),但调用拟合的时候写的是model.fit(test_fb)——这里的model应该是你之前代码里创建的另一个时间序列模型(比如statsmodels的ARIMA/SARIMAX),它的fit方法根本不认识Prophet要求的ds和y列格式,会把所有列当成数值型参数处理,遇到ds列的Timestamp类型时,尝试执行取负操作,直接触发了TypeError。

问题2:数据集使用逻辑错误

就算变量名对了,你也不该用测试集来拟合模型啊!拟合模型必须用训练集train_fb,测试集是留着验证模型预测效果的,这是时间序列建模的基本逻辑。

修正后的代码

# FB_Prophet Model
# 拆分训练集和测试集
from sklearn.model_selection import train_test_split
# 注意:新版本Prophet的导入方式是from prophet import Prophet,旧版本是from fbprophet import Prophet,根据你的安装版本调整
from prophet import Prophet

train_fb, test_fb = train_test_split(df_fb, test_size=0.20, shuffle=False)

# 初始化Prophet模型
model_fb = Prophet()
# 用训练集拟合模型,同时修正变量名
model_fb.fit(train_fb)

额外检查点

  1. 确认你的df_fb里的ds列确实是datetime64[ns]类型(你已经检查过了,这部分没问题)
  2. 确认Prophet的导入语句正确,避免版本不兼容的问题

备注:内容来源于stack exchange,提问作者sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:25:31