IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices Prophet Error
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices Prophet Error
我想实现先知算法并在模型上使用我的数据集。
在拟合过程之后,我在预测过程中遇到了以下错误。
我该如何解决这个问题?
import pandas as pd
import pystan
from prophet import Prophet
df_prophet = df[['date', 'rate']]
train_df = df_prophet[:-5]
train_df.columns = ['ds', 'y']
train_df['ds']= to_datetime(train_df['ds'])
model = Prophet()
model.fit(train_df)
test_df = df_prophet[-5:][['date']]
test_list = to_datetime(test_df.date).values
forecast = model.predict(test_list)
---> 11 forecast = model.predict(test_list)
IndexError: only integers, slices (:
), ellipsis (...
),
numpy.newaxis (None
) and integer or boolean arrays are valid indices
这是一次不错的尝试。您只需要进行一些调整。
- 通过传递
to_datetime(test_df.date).values
,您将创建一个 numpy 数组而不是数据框。 Prophet
需要一个数据框。
Prophet
模型和预测器需要标记为 ds
和 y
的列,并且您在拆分数据框后更改了列名,因此您的测试部分没有得到列已重命名。
- 您不需要导入
pystan
,因为 Prophet 模块已经构建在它上面。
试试这个:
import pandas as pd
from prophet import Prophet
df_prophet = df[['Date', 'Volume']]
df_prophet.columns = ['ds', 'y']
train_df = df_prophet[:-5]
train_df['ds']= pd.to_datetime(train_df['ds'])
model = Prophet()
model.fit(train_df)
test_df = df_prophet[-5:][['ds']]
forecast = model.predict(test_df)
forecast
我想实现先知算法并在模型上使用我的数据集。 在拟合过程之后,我在预测过程中遇到了以下错误。 我该如何解决这个问题?
import pandas as pd
import pystan
from prophet import Prophet
df_prophet = df[['date', 'rate']]
train_df = df_prophet[:-5]
train_df.columns = ['ds', 'y']
train_df['ds']= to_datetime(train_df['ds'])
model = Prophet()
model.fit(train_df)
test_df = df_prophet[-5:][['date']]
test_list = to_datetime(test_df.date).values
forecast = model.predict(test_list)
---> 11 forecast = model.predict(test_list)
IndexError: only integers, slices (
:
), ellipsis (...
), numpy.newaxis (None
) and integer or boolean arrays are valid indices
这是一次不错的尝试。您只需要进行一些调整。
- 通过传递
to_datetime(test_df.date).values
,您将创建一个 numpy 数组而不是数据框。Prophet
需要一个数据框。 Prophet
模型和预测器需要标记为ds
和y
的列,并且您在拆分数据框后更改了列名,因此您的测试部分没有得到列已重命名。- 您不需要导入
pystan
,因为 Prophet 模块已经构建在它上面。
试试这个:
import pandas as pd
from prophet import Prophet
df_prophet = df[['Date', 'Volume']]
df_prophet.columns = ['ds', 'y']
train_df = df_prophet[:-5]
train_df['ds']= pd.to_datetime(train_df['ds'])
model = Prophet()
model.fit(train_df)
test_df = df_prophet[-5:][['ds']]
forecast = model.predict(test_df)
forecast