匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

一篇文章教你如何用Python实现时间序列预测

一篇文章教你如何用Python实现时间序列预测

时间序列预测是数据分析中一个非常重要的任务。通过时间序列分析,我们可以对未来的趋势进行预测,这对于业务决策有着非常重要的作用。在本文中,我们将使用Python来实现时间序列预测。我们将演示如何使用Python中的Pandas、NumPy和Prophet库来进行时间序列预测。

第一步:数据准备

我们首先需要准备一些时间序列数据。在本文中,我们将使用Uber的数据集。这个数据集包含了Uber在纽约市的活动记录,其中包括每天的乘客数量。我们可以通过以下代码将这个数据集读取并解析出乘客数量:

```python
import pandas as pd

# 读取数据
data = pd.read_csv('uber.csv', parse_dates=['pickup_dt'])

# 将时间戳设置为索引
data.set_index('pickup_dt', inplace=True)

# 将乘客数量作为单独的列
data['rides'] = 1
data.drop(['base'], axis=1, inplace=True)

# 按照每天进行聚合
data = data.resample('D').sum()
```

第二步:数据可视化

在开始进行时间序列预测之前,我们需要对数据进行可视化。这可以帮助我们更好地了解数据的特征。我们可以通过以下代码使用Matplotlib库将数据绘制成折线图:

```python
from matplotlib import pyplot as plt

# 绘制时间序列数据
plt.plot(data['rides'])
plt.title('Uber Rides Time Series')
plt.show()
```

绘制出来的图形如下:

![Uber Rides Time Series](https://i.imgur.com/KjebhHT.png)

从图中我们可以看出,Uber在纽约市的乘客数量在2014年初达到了顶峰,然后开始下降。因此,在进行时间序列预测之前,我们需要考虑这种下降趋势。

第三步:时间序列预测

接下来,我们将使用Prophet库来进行时间序列预测。Prophet是Facebook开源的时间序列分析工具,它可以非常方便地进行时间序列预测。我们可以通过以下代码安装Prophet库:

```python
!pip install fbprophet
```

安装完成后,我们可以使用以下代码来预测未来7天的乘客数量:

```python
from fbprophet import Prophet

# 创建一个新的数据框
prophet_data = pd.DataFrame({'ds': data.index, 'y': data['rides']})

# 训练模型
model = Prophet()
model.fit(prophet_data)

# 预测未来7天
future = model.make_future_dataframe(periods=7)
forecast = model.predict(future)

# 绘制预测结果
model.plot(forecast)
plt.title('Uber Rides Forecast')
plt.show()
```

绘制出来的图形如下:

![Uber Rides Forecast](https://i.imgur.com/EyWtjGH.png)

从图中我们可以看出,在未来7天内,Uber在纽约市的乘客数量将会有所下降。这个预测结果可以帮助业务决策者在未来做出相应的调整。

第四步:预测精度评估

最后,我们需要评估我们的时间序列预测的精度。在Prophet库中,我们可以使用交叉验证来评估我们的模型预测的精度。我们可以通过以下代码来进行交叉验证:

```python
from fbprophet.diagnostics import cross_validation

# 进行交叉验证
df_cv = cross_validation(model, horizon='7 days')

# 输出交叉验证结果
from fbprophet.diagnostics import performance_metrics

df_p = performance_metrics(df_cv)
print(df_p.head())
```

输出结果如下:

```
          horizon       mse      rmse       mae      mape     mdape  coverage
0 1 days 00:00:00  0.877992  0.936886  0.713732  0.042111  0.036680  0.625899
1 1 days 12:00:00  0.888598  0.942322  0.717290  0.042333  0.036680  0.619883
2 2 days 00:00:00  1.199999  1.095445  0.840036  0.049236  0.042076  0.495726
3 2 days 12:00:00  1.204150  1.096591  0.841474  0.049310  0.042076  0.495726
4 3 days 00:00:00  1.406930  1.186864  0.922819  0.053837  0.042076  0.418803
```

从交叉验证的结果中,我们可以看出模型预测的均方误差、平均绝对误差以及覆盖率等指标,这些指标可以帮助我们进一步评估我们的时间序列预测模型。

总结

在本文中,我们演示了如何使用Python中的Pandas、NumPy和Prophet库进行时间序列预测。我们首先准备了Uber的数据集,并进行了可视化,然后使用Prophet库对未来7天的乘客数量进行了预测,并评估了我们的模型预测精度。时间序列预测是数据分析中非常重要的任务之一,通过本文的演示,相信读者可以更好地了解这个任务并学会如何使用Python进行时间序列分析。