一.模型整体流程介绍:
-
数据加载和处理:
- 使用
pandas
库读取CSV文件中的股票数据,并将日期列转换为datetime
类型。 - 选择需要使用的列('Date', 'Close', 'High', 'Low', 'Open')作为特征。
- 创建了一个
create_date_features
函数来提取日期相关的特征,例如月份、日期、年份等,并将这些特征添加到数据帧中。
- 使用
-
时间序列特征工程:
- 使用
statsmodels
库的CalendarFourier
和DeterministicProcess
类创建时间序列的季节性特征。 - 创建一个包含日期特征和季节性特征的新数据帧。
- 使用
-
数据预处理:
- 使用
MinMaxScaler
对数据进行归一化处理。 - 定义了一个滚动窗口大小(look_back)来创建训练集和测试集。
- 创建了一个函数
create_dataset
,用于将时间序列数据转换为监督学习问题的数据集。
- 使用
-
构建和训练模型:
- 使用
Keras
库构建了一个包含多个LSTM层的序列模型。 - 模型中使用了LeakyReLU激活函数和Dropout正则化层来提高模型的性能和鲁棒性。
- 使用
Adamax
优化器和平均绝对百分比误差(MAPE)作为损失函数来编译模型。 - 使用训练集数据训练模型,并使用验证集数据进行模型的早停策略。
- 使用
-
模型预测和评估:
- 使用训练好的模型对训练集和测试集进行预测。
- 使用
matplotlib
库将实际值和预测值进行可视化比较。 - 计算并输出测试集和训练集的均方根误差(RMSE)。
总结:这段代码主要通过加载、处理和预处理股票数据,提取时间序列特征,构建和训练LSTM模型,以及进行模型预测和评估来实现股票预测。
二.数据集介绍(开始日期是:2015/11/23),数据一共是1826行,预测的收盘价格
Date | High | Low | Open | Close | Volume |
2015/11/23 | 2095.610107 | 2081.389893 | 2089.409912 | 2086.590088 | 3587980000 |
2015/11/24 | 2094.120117 | 2070.290039 | 2084.419922 | 2089.139893 | 3884930000 |
2015/11/25 | 2093 | 2086.300049 | 2089.300049 | 2088.870117 | 2852940000 |
2015/11/26 | 2093 | 2086.300049 | 2089.300049 | 2088.870117 | 2852940000 |
2015/11/27 | 2093.290039 | 2084.129883 | 2088.820068 | 2090.110107 | 1466840000 |
2015/11/28 | 2093.290039 | 2084.129883 | 2088.820068 | 2090.110107 | 1466840000 |
2015/11/29 | 2093.290039 | 2084.129883 | 2088.820068 | 2090.110107 | 1466840000 |
2015/11/30 | 2093.810059 | 2080.409912 | 2090.949951 | 2080.409912 | 4275030000 |
2015/12/1 | 2103.370117 | 2082.929932 | 2082.929932 | 2102.629883 | 3712120000 |
2015/12/2 | 2104.27002 | 2077.110107 | 2101.709961 | 2079.51001 | 3950640000 |
2015/12/3 | 2085 | 2042.349976 | 2080.709961 | 2049.620117 | 4306490000 |
2015/12/4 | 2093.840088 | 2051.23999 | 2051.23999 | 2091.689941 | 4214910000 |
2015/12/5 | 2093.840088 | 2051.23999 | 2051.23999 | 2091.689941 | 4214910000 |
2015/12/6 | 2093.840088 | 2051.23999 | 2051.23999 | 2091.689941 | 4214910000 |
2015/12/7 | 2090.419922 | 2066.780029 | 2090.419922 | 2077.070068 | 4043820000 |
2015/12/8 | 2073.850098 | 2052.320068 | 2073.389893 | 2063.590088 | 4173570000 |
2015/12/9 | 2080.330078 | 2036.530029 | 2061.169922 | 2047.619995 | 4385250000 |
2015/12/10 | 2067.649902 | 2045.670044 | 2047.930054 | 2052.22998 | 3715150000 |
2015/12/11 | 2047.27002 | 2008.800049 | 2047.27002 | 2012.369995 | 4301060000 |
2015/12/12 | 2047.27002 | 2008.800049 | 2047.27002 | 2012.369995 | 4301060000 |
2015/12/13 | 2047.27002 | 2008.800049 | 2047.27002 | 2012.369995 | 4301060000 |
2015/12/14 | 2022.920044 | 1993.26001 | 2013.369995 | 2021.939941 | 4612440000 |
结束时间是:2020/11/20。
2020/10/28 | 3342.47998 | 3268.889893 | 3342.47998 | 3271.030029 | 5129860000 |
2020/10/29 | 3341.050049 | 3259.820068 | 3277.169922 | 3310.110107 | 4903070000 |
2020/10/30 | 3304.929932 | 3233.939941 | 3293.590088 | 3269.959961 | 4840450000 |
2020/10/31 | 3304.929932 | 3233.939941 | 3293.590088 | 3269.959961 | 4840450000 |
2020/11/1 | 3304.929932 | 3233.939941 | 3293.590088 | 3269.959961 | 4840450000 |
2020/11/2 | 3330.139893 | 3279.73999 | 3296.199951 | 3310.23999 | 4310590000 |
2020/11/3 | 3389.48999 | 3336.25 | 3336.25 | 3369.159912 | 4220070000 |
2020/11/4 | 3486.25 | 3405.169922 | 3406.459961 | 3443.439941 | 4783040000 |
2020/11/5 | 3529.050049 | 3485.73999 | 3485.73999 | 3510.449951 | 4841190000 |
2020/11/6 | 3521.580078 | 3484.340088 | 3508.340088 | 3509.439941 | 4833950000 |
2020/11/7 | 3521.580078 | 3484.340088 | 3508.340088 | 3509.439941 | 4833950000 |
2020/11/8 | 3521.580078 | 3484.340088 | 3508.340088 | 3509.439941 | 4833950000 |
2020/11/9 | 3645.98999 | 3547.47998 | 3583.040039 | 3550.5 | 8556610000 |
2020/11/10 | 3557.219971 | 3511.909912 | 3543.26001 | 3545.530029 | 6024230000 |
2020/11/11 | 3581.159912 | 3557 | 3563.219971 | 3572.659912 | 4609970000 |
2020/11/12 | 3569.02002 | 3518.580078 | 3562.669922 | 3537.01001 | 4890120000 |
2020/11/13 | 3593.659912 | 3552.570068 | 3552.570068 | 3585.149902 | 4709670000 |
2020/11/14 | 3593.659912 | 3552.570068 | 3552.570068 | 3585.149902 | 4709670000 |
2020/11/15 | 3593.659912 | 3552.570068 | 3552.570068 | 3585.149902 | 4709670000 |
2020/11/16 | 3628.51001 | 3600.159912 | 3600.159912 | 3626.909912 | 5281980000 |
2020/11/17 | 3623.110107 | 3588.679932 | 3610.310059 | 3609.530029 | 4799570000 |
2020/11/18 | 3619.090088 | 3567.330078 | 3612.090088 | 3567.790039 | 5274450000 |
2020/11/19 | 3585.219971 | 3543.840088 | 3559.409912 | 3581.870117 | 4347200000 |
2020/11/20 | 3581.22998 | 3556.850098 | 3579.310059 | 3557.540039 | 2236661930 |
3.效果图
4.运行视频文章来源:https://www.toymoban.com/news/detail-470002.html
基于时间特征工程与LSTM结合的雅虎美股预测_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-470002.html
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import os
import gc
import warnings
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
#代码;https://mbd.pub/o/bread/mbd-ZJmTk5dr
import seaborn as sns
import math
from scipy.signal import periodogram
from statsmodels.graphics.tsaplots import plot_pacf
from statsmodels.tsa.deterministic import CalendarFourier, DeterministicProcess, Fourier
到了这里,关于基于时序特征处理与LSTM结合的雅虎美股数据预测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!