2

我正在尝试创建一个 ARIMA 模型,用于使用来自我的服务器的一些数据来预测时间序列,并且我一直显示标题上的错误并且我不知道我需要什么类型的对象。这是代码:

frame = pd.read_sql(query, con=connection)
connection.close()
frame['time_field'] = pd.to_timedelta(frame['time_field'])
print(frame.head(10))
#fitting
model = ARIMA(frame, order=(5,1,0))
model_fit = model.fit(disp=0)

我见过这样的例子: https ://machinelearningmastery.com/arima-for-time-series-forecasting-with-python/

他们使用日期而不是时间与各自的值。这是帧值的输出:

time_field   value_field
0 00:00:14  283.80
1 00:01:14  271.97
2 00:02:14  320.53
3 00:03:14  346.78
4 00:04:14  280.72
5 00:05:14  277.41
6 00:06:14  308.65
7 00:07:14  321.27
8 00:08:14  320.68
9 00:09:14  332.32
4

3 回答 3

3

您需要将“time_field”列作为数据框的索引(在 ARIMA 模型中,我们应该始终将日期时间列设置为数据框的索引)

frame=frame.set_index['time_field']
model = ARIMA(frame, order=(5,1,0))
model_fit = model.fit(disp=0)

注意:- 设置索引列时,如果索引列有任何重复值,可能会出错。因此,在这种情况下,您最好通过求和来进行分组。

frame = frame.groupby(['time_field']).agg({'value_field': 'sum'}) 
or
frame = frame.groupby(['time_field']).sum()
于 2021-06-24T05:59:21.120 回答
2

我遇到了类似的问题,并使用 pandasSeries而不是DataFrame,以时间戳列作为索引为我工作

data = pd.Series(frame.value_fields, index=frame.time_field)
model = ARIMA(data, order=(5,1,0))
model_fit = model.fit(disp=0)
于 2018-01-21T20:34:48.073 回答
0

将时间列设置为索引后,您不再需要将其传递给 ARIMA,只需将其删除即可。

帧 = 帧[['value_field']]

于 2022-03-01T19:22:15.460 回答