二次移动平均法交通量预测RMSE代码
时间: 2023-06-25 17:06:26 浏览: 51
以下是使用二次移动平均法进行交通量预测并计算RMSE的Python代码示例:
```python
import numpy as np
import pandas as pd
# 读取交通流量数据
data = pd.read_csv('traffic_volume.csv')
# 二次移动平均法预测
data['second_ma'] = data['volume'].rolling(window=3).mean().rolling(window=3).mean()
# 计算RMSE
rmse = np.sqrt(np.mean((data['volume'] - data['second_ma'])**2))
print('RMSE:', rmse)
```
需要注意的是,这里使用了`rolling`函数进行移动平均计算,需要指定窗口大小。此外,二次移动平均法需要对一次移动平均的结果再进行一次移动平均,因此代码中使用了两次`rolling`函数。最后,计算RMSE时使用了Numpy中的`sqrt`和`mean`函数。
相关问题
二次移动平均法交通量预测RMSE、MAE、MAPE、MRE代码
以下是使用二次移动平均法进行交通量预测的代码,包括计算RMSE、MAE、MAPE和MRE指标的代码:
```python
import numpy as np
import pandas as pd
from sklearn.metrics import mean_squared_error, mean_absolute_error
# 二次移动平均法交通量预测
def quadratic_moving_average(data, n):
data = np.array(data)
ma1 = np.convolve(data, np.ones(n)/n, mode='valid')
ma2 = np.convolve(ma1, np.ones(n)/n, mode='valid')
return ma2
# 计算RMSE、MAE、MAPE、MRE指标
def evaluate(y_true, y_pred):
rmse = np.sqrt(mean_squared_error(y_true, y_pred))
mae = mean_absolute_error(y_true, y_pred)
mape = np.mean(np.abs((y_true - y_pred) / y_true)) * 100
mre = np.mean((y_true - y_pred) / y_true) * 100
return rmse, mae, mape, mre
# 读取数据
data = pd.read_csv('traffic.csv', index_col=0, parse_dates=True)
# 划分训练集和测试集
train = data.loc['2019-01':'2019-06']
test = data.loc['2019-07':'2019-12']
# 预测测试集交通量
n = 4
pred = quadratic_moving_average(train['traffic'], n)[-6:]
y_true = test['traffic'].values
# 计算评价指标
rmse, mae, mape, mre = evaluate(y_true, pred)
print('RMSE:', rmse)
print('MAE:', mae)
print('MAPE:', mape)
print('MRE:', mre)
```
其中,`data`是包含交通量数据的DataFrame,`train`和`test`分别为训练集和测试集,`n`为移动平均窗口大小,`pred`为预测结果,`y_true`为测试集真实值。`quadratic_moving_average`函数实现了二次移动平均法,`evaluate`函数计算了RMSE、MAE、MAPE和MRE指标。
二次移动平均法交通量预测可视化及RMSE的代码
以下是二次移动平均法交通量预测可视化及RMSE的Python代码示例:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('traffic_volume.csv', index_col=0, parse_dates=True)
# 二次移动平均法
data['SMA_2'] = data['traffic_volume'].rolling(window=2).mean()
data['SMA_2'] = data['SMA_2'].rolling(window=2).mean()
# 取出预测值和实际值
prediction = data['SMA_2'].iloc[2:]
actual = data['traffic_volume'].iloc[2:]
# 计算RMSE
rmse = np.sqrt(((prediction - actual) ** 2).mean())
print('RMSE:', rmse)
# 可视化
plt.plot(actual.index, actual, label='Actual')
plt.plot(prediction.index, prediction, label='Prediction')
plt.legend()
plt.show()
```
说明:
- 数据文件为 traffic_volume.csv,包含日期和交通量两列数据。
- 二次移动平均法的原理是先对原始数据做一次简单移动平均,然后再对结果做一次简单移动平均。
- RMSE 是指均方根误差,用来衡量预测值与实际值之间的误差大小。
- 可视化部分使用了 matplotlib 库。
相关推荐
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)