当前位置:   article > 正文

基于支持向量机进行时间序列预测(Python)_支持向量机时间序列预测python

支持向量机时间序列预测python

1、导入库包

import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.metrics import mean_absolute_error # 平方绝对误差
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、导入数据及预处理

由于时间的维数是一维的,因此需要创建滞后特征,选定滞后的期数
此示例中选定滞后期数为3

data = pd.read_excel()
# 2. 创建滞后特征
lookback =3  # 滞后的期数
X = []  # 输入特征矩阵
y = []  # 目标值
for i in range(lookback, len(data)):
    X.append(data.iloc[i-lookback:i, 0])  # 使用前lookback期的值作为特征
    y.append(data.iloc[i, 0])  # 当前期作为目标值
X = np.array(X)
y = np.array(y)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. 划分数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  • 1

4. 创建和训练SVR模型

在使用支持向量机算法进行预测的基础上,再采用粒子群算法优化调整参数,建立调参后的SVR模型。
注:粒子群优化算法(PSO_SVR)在我的另一篇文章有介绍:

粒子群算法调参支持向量回归进行预测(PSO-SVR)Python实现

# 4. 创建和训练SVR模型
import PSO_SVR

svr_model = PSO_SVR.optimize_svm(X_train, y_train, X_test, y_test)

svr_model.fit(X_train, y_train)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5. 使用模型进行预测

x_next = [data[-lookback:].values[i, 0] for i in range(len(data[-lookback:]))]
y_next = svr_model.predict([x_next])

y_pred1 = svr_model.predict(X_train)
y_pred = svr_model.predict(X_test)
y_label_pre = list(y_pred1)
for i in y_pred:
    y_label_pre.append(i)
y_label_pre.append(y_next[0])
y_label_tru = list(y_train)
for i in y_test:
    y_label_tru.append(i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

6. 进行需要的评估和可视化操作

mse = mean_squared_error(y_test, y_pred)
print(f'均方误差:{mse}')
print("R2 = ", metrics.r2_score(y_test, y_pred))  # R2
print("MAE = ", mean_absolute_error(y_test, y_pred))  # R2
import matplotlib.pyplot as plt

plt.plot(y_label_tru, "o-k")
plt.plot(y_label_pre, "P--")
plt.xlabel('Time')
plt.ylabel('Value')
plt.legend(['Actual', 'Predicted'])
plt.title('Actual vs Predicted')
plt.grid()
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结果展示

最优参数及模型评估:
在这里插入图片描述
预测值与真实值对比:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/587569
推荐阅读
相关标签
  

闽ICP备14008679号