在使用model = ARIMA(train_data_arr, order=(0, 1, 1))进行训练后,想要对在测试集test_data_arr上进行预测,并打印真实值和预测值的对照表,计算相对误差和残差,同时绘制预测值和真实值的图(在同一张图中显示,两条折线使用不同的颜色),怎么做
时间: 2024-02-13 16:59:57 浏览: 53
在使用ARIMA模型进行训练后,可以使用`forecast`方法对测试集进行预测,并计算相对误差和残差,同时使用Pandas库打印真实值和预测值的对照表,并使用Matplotlib库绘制预测值和真实值的图。下面是一个示例代码:
```python
import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARIMA
import matplotlib.pyplot as plt
# 训练 ARIMA 模型
model = ARIMA(train_data_arr, order=(0, 1, 1))
model_fit = model.fit(disp=0)
# 对测试集进行预测
predictions = model_fit.forecast(steps=len(test_data_arr))[0]
# 计算相对误差和残差
relative_errors = np.abs((test_data_arr - predictions) / test_data_arr)
residuals = test_data_arr - predictions
# 打印真实值和预测值的对照表
df = pd.DataFrame({'True': test_data_arr, 'Predicted': predictions})
print(df)
# 绘制预测值和真实值的图
plt.plot(test_data_arr, label='true')
plt.plot(predictions, label='predicted')
plt.legend()
plt.show()
```
在这个例子中,我们首先训练了ARIMA模型,并使用`forecast`方法对测试集进行预测,得到预测结果`predictions`。然后,我们计算相对误差和残差,并使用Pandas库打印真实值和预测值的对照表。最后,我们使用Matplotlib库绘制预测值和真实值的图,其中`plot`函数用于绘制折线图,`label`用于设置图例,`legend`用于显示图例,`show`用于显示图形。
要在同一张图中显示预测值和真实值的折线图,只需要在`plot`函数中分别传递`test_data_arr`和`predictions`作为参数,并使用不同的颜色区分它们即可。例如,可以将真实值的折线设置为蓝色,将预测值的折线设置为红色,代码如下:
```python
plt.plot(test_data_arr, color='blue', label='true')
plt.plot(predictions, color='red', label='predicted')
plt.legend()
plt.show()
```
这样,就可以在同一张图中显示预测值和真实值的折线图,并使用不同的颜色区分它们。
阅读全文