ARIMA预测模型python代码:注意要对数据进行归一化和二阶差分,训练占比为0.8
时间: 2024-04-03 22:36:10 浏览: 285
以下是一个简单的 ARIMA 预测模型的 Python 代码示例,其中数据进行了归一化和二阶差分处理,训练集占比为0.8:
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from pmdarima.arima import auto_arima
# 读取数据
df = pd.read_csv('C:/Users/Sophie/Desktop/wind_speed.csv', index_col='date', parse_dates=True)
# 归一化和二阶差分
scaler = MinMaxScaler()
diff = scaler.fit_transform(np.array(df).reshape(-1, 1))
diff = np.diff(diff, n=2, axis=0)
# 划分训练集和测试集
train_size = int(len(diff) * 0.8)
train, test = diff[:train_size], diff[train_size:]
# 训练ARIMA模型
model = auto_arima(train, start_p=0, start_q=0, max_p=5, max_q=5, m=12, start_P=0, seasonal=True, d=1, D=1, trace=True, error_action='ignore', suppress_warnings=True, stepwise=True)
print(model.summary())
# 预测未来n个时间点
n = 12
forecast = model.predict(n_periods=n)
# 反归一化和反差分
forecast = scaler.inverse_transform(np.r_[diff[-2:], forecast.reshape(-1, 1)]).flatten()
forecast = np.cumsum(np.r_[df.iloc[-2]['wind_speed'], forecast])
# 输出预测结果
print('预测结果:')
print(forecast[-n:])
```
在这个例子中,我们使用了 `pandas` 库读取了一个名为 `wind_speed.csv` 的数据文件。然后,对数据进行了归一化和二阶差分处理,将数据分为训练集和测试集。接着,使用 `auto_arima` 函数训练了一个 ARIMA 模型。最后,使用训练好的模型预测了未来的12个时间点,并对预测结果进行了反归一化和反差分处理,输出了预测结果。需要注意的是,这里的归一化和差分处理需要和训练模型时使用的处理方式一致。
阅读全文