美文网首页
RNN实现股价预测

RNN实现股价预测

作者: y_7539 | 来源:发表于2023-01-31 17:06 被阅读0次
import pandas as pd
import numpy as np
df = pd.read_csv("datas/zgpa_train.csv")
df.head()
image.png
price = df["close"]
# 归一化
price_norm = price/max(price)

import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(5,3))
plt.plot(price)
plt.xlabel("time")
plt.ylabel("price")
plt.show()
image.png
# 提取x和y
def extract_data(data, time_step):
    X = []
    y = []
    for i in range(len(data) - time_step):
        X.append([a for a in data[i: i+time_step]])
        y.append(data[i+time_step])
    X = np.array(X)
    X = X.reshape(X.shape[0], X.shape[1], 1)
    return X, y

#样本大小
time_step=8

# 定义x和y  用前八位预测第九位
X, y = extract_data(price_norm, time_step)

from keras.models import Sequential
from keras.layers import Dense, SimpleRNN

#建立模型
model = Sequential()
#添加rnn层
model.add(SimpleRNN(units=5, input_shape=(time_step, 1), activation="relu"))
#输出层
model.add(Dense(units=1, activation="linear"))
#模型配置
model.compile(optimizer="adam", loss="mean_squared_error")

#模型训练  损失不变可以重新载入模型
model.fit(X, np.array(y), batch_size=30, epochs=200)

#预测训练数据
y_train_predict = model.predict(X) * max(price)
y_train = [i * max(price) for i in y]

plt.figure(figsize=(5,3))
plt.plot(y_train_predict, label="predict price")
plt.plot(y_train, label="true price")
plt.xlabel("time")
plt.ylabel("price")
plt.legend()
plt.show()
image.png
#预测测试数据
test_data = pd.read_csv("datas/zgpa_test.csv")
test_data.head()
image.png
price_test = test_data["close"]
#归一化 统一分母
price_test_norm = price_test/max(price)
x_test_norm, y_test_norm = extract_data(price_test_norm, time_step)
# 预测测试数据
y_test_predict = model.predict(x_test_norm) * max(price)
y_test = [i*max(price) for i in y_test_norm]

plt.figure(figsize=(5,3))
plt.plot(y_test_predict, label="test predict price")
plt.plot(y_test, label="test true price")
plt.xlabel("time")
plt.ylabel("price")
plt.legend()
plt.show()
image.png
#存储数据
result_y_test = np.array(y_test).reshape(-1, 1)
result_y_test_predict = y_test_predict
print(result_y_test.shape, result_y_test_predict.shape)
#合并数组
result = np.concatenate((result_y_test, result_y_test_predict), axis=1)
result = pd.DataFrame(result, columns=["real_price_test", "predict_price_test"])
result.to_csv("zgpa_predict_test.csv")
#预测结果会慢一步

相关文章

  • tensorflow--循环神经网络RNN

    目标:用RNN实现连续数据的预测(以股票预测为例) 有些数据是跟时间相关的,是可以根据上文预测出下文的。 1、循环...

  • RNN循环神经网络

    用RNN(循环神经网络)实现连续数据的预测(以股票预测为例) 回顾卷积神经网络 卷积就是特征提取器,就是C(卷积)...

  • 《自由之路》预测股价

    能预测股价吗,这个问题应该换成“可以预测短期的股价吗”和“可以预测长期的股价吗”,对于前者来说,答案是否定的,对于...

  • 股价预测

    输出 : 5 rows × 27 columns 输出 : b"The commander of a Navy a...

  • 从经济学角度看股价预测

    很多金融机构都在做股价的预测,很多人都想通过股价的预测实现一夜暴富的梦想,但事实是,很多人在股市上都被套牢,亏空严...

  • 选股的标准:好生意,好公司,好价格

    今天参加公司内部的培训,这个培训师当着那么多人的面居然公开预测股价,他预测五粮液的股价走势,预测张江高科的股价走势...

  • tensorflow--LTSM,GRU

    1、LTSM 传统循环网络RNN可以通过记忆体实现短期记忆进行连续数据的预测。但是当连续数据的序列变长时,会使展开...

  • 股价不可预测

    股价不可预测 股价是否可以预测?研究股价的历史变化,是否有助于推测其未来变化?这是耐人寻味的问题。 1.首先要明确...

  • LSTM学习

    RNN&LSTM 当前输出的产生与之前的信息(输出、状态)相关RNN:过去发生的事件可以预测现在LSTM(进阶RN...

  • 股价预测软件有用么?

    薛老师说资本的现值等于资本预期收入的折现和。基于此论,股价预测软件有用么?应该是没有。股价预测软件的原理是根据股价...

网友评论

      本文标题:RNN实现股价预测

      本文链接:https://www.haomeiwen.com/subject/kpkbhdtx.html