在本文中,我们将使用神经网络,特别是LSTM模型来预测时间序列数据的行为。需要解决的问题是经典的股市预测。所有使用的数据和代码都可以私信我。
虽然这是一个老问题,但直到今天仍未解决。事实很简单:股价是由几个因素决定的,历史股价只是其中的一小部分。因此,预测价格行为是一个非常棘手的问题。
摘要
首先,我将介绍一些数据可视化的数据集。然后,我将简要讨论使用移动平均算法预测股票市场行为的难易程度及其局限性。接下来,简要介绍递归神经网络和LSTM的概念,并以LSTM为例对单个公司的股价进行了预测。最后,我将展示用于同时预测4家公司价格的LSTM,并比较结果,看看随着我们同时使用更多公司,预测是否有所改善。
数据可视化
数据集是从Yahoo Finance以CSV格式下载的。它具有4个公司的股票价格在01/08/2010至01/07/2019期间。我们将它们称为公司A,B,C和D.
基本步骤是使用Pandas打开CSV文件。首先看看数据:
df_A = pd.read_csv(‘data/company_A.csv’)df_A[‘Date’] = pd.to_datetime(df_A[‘Date’])df_A.tail()
![34fd26ca-4a2d-eb11-8da9-e4434bdf6706.png](http://p03.5ceimg.com/content/34fd26ca-4a2d-eb11-8da9-e4434bdf6706.png)
![35fd26ca-4a2d-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/35fd26ca-4a2d-eb11-8da9-e4434bdf6706.png)
Plt.figure(figsize = (15,10))plt.plot(df_A['Date'], df_A['Close'], label='Company A')plt.plot(df_B['Date'], df_B['Close'], label='Company B')plt.plot(df_C['Date'], df_C['Close'], label='Company C')plt.plot(df_D['Date'], df_D['Close'], label='Company D')plt.legend(loc='best')plt.show()
![36fd26ca-4a2d-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/36fd26ca-4a2d-eb11-8da9-e4434bdf6706.png)
![37fd26ca-4a2d-eb11-8da9-e4434bdf6706.png](http://p03.5ceimg.com/content/37fd26ca-4a2d-eb11-8da9-e4434bdf6706.png)
4家公司的所有股票收盘价
移动平均线
在这个问题中使用的一个经典算法是移动平均线(MA)。它包括计算m过去观察天数的平均值,并用这个结果作为第二天的预测。为了证