prophet 在进行fit时报错

我通过python -m pip install prophet成功下载prophet
在下载完prophet(1.1.1)后,运行以下代码报错

import numpy as np
from prophet import Prophet
import pandas as pd
import time
b=[[] for _ in range(10)]
for i in range(10):
     b[i]= time.localtime(i) # 数字 转 时间
for i in range(10):
    b[i]= time.strftime("%Y-%m-%d",b[i])
a=np.array([b,np.random.rand(10)])
a=a.transpose()
c=pd.DataFrame(a)
c.columns=['ds','y']
m=Prophet()
m.fit(c)

img

img

这个错误可能是因为您没有导入所需的库。请确保您导入了以下库:


import numpy as np
import pandas as pd
import time
from fbprophet import Prophet

如果导入了这些库,但仍然出现错误,请检查您的代码是否有其他错误或拼写错误。另外,您可以尝试更新您的fbprophet版本,使用以下命令:

pip install fbprophet --upgrade


肯定引用库了,没有引用库,不会报这个错

该回答引用于gpt与OKX安生共同编写:
  • 该回答引用于gpt与OKX安生共同编写:

根据您提供的代码,我注意到在fit Prophet时出现错误。可能是因为您的代码中没有指定日期时间列"ds"的格式,而Prophet默认使用"M/D/Y"的格式。请尝试将以下代码:

b[i]= time.strftime("%Y-%m-%d",b[i])

修改为:

b[i]= time.strftime("%Y-%m-%d %H:%M:%S",b[i])

这样可以将时间转换成"YYYY-MM-DD HH:MM:SS"的格式,并使其与Prophet的默认格式一致。

另外,您还可以将日期时间列的数据类型设置为datetime,以便更好地与Prophet进行集成。例如,在生成DataFrame时,可以将第一列转换为datetime格式:

c['ds'] = pd.to_datetime(c['ds'])

这样可以确保Prophet正确解析日期时间列,并避免出现相关的错误。

希望这些提示对您有所帮助!如有其他问题,请随时提出。

  • 根据您提供的截图,错误信息提示ValueError: Found NaN in column 'y'.,这表示在 y 这一列中存在缺失值。请检查数据 c 中是否存在缺失值,并采取相应的措施进行处理。您可以使用 pandas 库中的 .dropna() 或 .fillna() 方法删除或填充缺失值。

这里提供两种处理缺失值的方法:

  1. 删除缺失值。您可以使用 dropna() 方法删除缺失值,如下所示:

c.dropna(inplace=True)
  1. 填充缺失值。您可以使用 fillna() 方法填充缺失值,如下所示:

c.fillna(method='ffill', inplace=True)

上述语句将使用前向填充法 (forward fill) 填充缺失值。如果您希望使用其他填充策略,可以在 fillna() 方法中指定参数。例如,参数 method='bfill' 表示使用后向填充法 (backward fill) 填充缺失值。

当您完成了数据的缺失值处理后,您可以再次尝试运行 m.fit(c) 来拟合模型。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个错误可能是由于未安装Pystan或在安装过程中出现错误导致的。以下是一些可能的解决方案:

  1. 确保Pystan已经正确安装。
  • 如果您使用的是Anaconda,请尝试从Anaconda Prompt中运行以下命令:

    conda install -c conda-forge pystan
    
  • 如果您使用的是pip,请尝试从终端中运行以下命令:

    pip install pystan
    
  1. 如果您使用的是Windows,请尝试将Pystan更新到最新版本。

    pip install --upgrade pystan
    
  2. 如果安装Pystan时出现错误,请尝试使用conda-forge channel安装。

    • 如果您使用的是Anaconda,请尝试从Anaconda Prompt中运行以下命令:

      conda config --add channels conda-forge
      conda install pystan
      
    • 如果您使用的是pip,请尝试从终端中运行以下命令:

      ```
      pip install git+https://g/

根据报错信息,可以看出是因为数据中存在空值(NaN)导致的。具体来说,是因为在将时间转换为字符串时,有些时间转换失败,导致对应的行出现了NaN值。
解决方法可以是在转换时间时,加上判断是否转换成功的语句,如果转换失败则将该行删除。修改后的代码如下:

import numpy as np
from prophet import Prophet
import pandas as pd
import time
b=[[] for _ in range(10)]
for i in range(10):
b[i]= time.localtime(i) # 数字 转 时间
for i in range(10):
try:
b[i]= time.strftime("%Y-%m-%d",b[i])
except:
del b[i]
a=np.array([b,np.random.rand(len(b))])
a=a.transpose()
c=pd.DataFrame(a)
c.columns=['ds','y']
c.dropna(inplace=True) # 删除含有NaN值的行
m=Prophet()
m.fit(c)