用趋势模型预测时间序列数据python,不用arima输出预测结果
时间: 2024-05-12 14:13:06 浏览: 118
可以使用基于机器学习的方法来预测时间序列数据,比如使用回归模型和神经网络模型。下面是一个基于随机森林回归模型的例子:
首先,导入所需的库和数据:
```python
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
# 读取数据
data = pd.read_csv('data.csv')
```
接下来,我们可以对数据进行预处理和特征工程,以便训练随机森林回归模型:
```python
# 将时间序列数据转换为监督学习问题
def to_supervised(data, lag=1):
df = pd.DataFrame(data)
columns = [df.shift(i) for i in range(1, lag+1)]
columns.append(df)
df = pd.concat(columns, axis=1)
df.fillna(0, inplace=True)
return df
# 创建 lag=12 的新特征
supervised = to_supervised(data, 12)
supervised = supervised.values
# 分割数据集为训练集和测试集
train, test = train_test_split(supervised, test_size=0.25, shuffle=False)
# 准备训练数据
train_X, train_y = train[:, :-1], train[:, -1]
# 准备测试数据
test_X, test_y = test[:, :-1], test[:, -1]
```
然后,我们可以使用随机森林回归模型来训练数据和预测结果:
```python
# 创建随机森林回归模型
model = RandomForestRegressor(n_estimators=1000, random_state=42)
# 训练模型
model.fit(train_X, train_y)
# 预测测试集数据
preds = model.predict(test_X)
# 计算均方误差
mse = mean_squared_error(test_y, preds)
print('均方误差: %.3f' % mse)
```
最后,我们可以将预测结果可视化:
```python
import matplotlib.pyplot as plt
# 绘制真实数据和预测数据的图表
plt.plot(test_y)
plt.plot(preds)
plt.legend(['真实数据', '预测数据'])
plt.show()
```
这是一个简单的例子,你可以根据自己的数据和需求进行修改和调整。
阅读全文