这是K同学的项目,我只是拿来验证一下,学一学,玩一玩。顺便自己发现了一些结论:

主要源代码都是K同学写的(原文链接),我添加的功能有:

1,在线下载任何一只股票的价格信息。

2,画图论证了本程序并没有“预测”功能,“再现”功能倒是棒棒的。

开始吧:

# 载入数据import os,math
from tensorflow.keras.layers import Dropout, Dense, SimpleRNN
from sklearn.preprocessing   import MinMaxScaler
from sklearn                 import metrics
import numpy             as np
import pandas            as pd
import tensorflow        as tf
import matplotlib.pyplot as plt
import tushare as tscode_set='601318'
fn='C:/.../A'+code_set+'.csv'stock=ts.get_k_data(code=code_set,start='1994-01-01') #下载股票价格信息
stock.to_csv(fn)data = pd.read_csv(fn)  # 读取股票价格文件
data

# 整理数据"""
前(total-300)天的开盘价作为训练集,表格从0开始计数,2:3 是提取[2:3)列,前闭后开,故提取出C列开盘价。若3:4则提取收盘价。
后300天的开盘价作为测试集
"""
td=data.shape[0]
training_set = data.iloc[0:td - 300, 2:3].values
test_set = data.iloc[td - 300:, 2:3].values  # 归一化sc           = MinMaxScaler(feature_range=(0, 1))
training_set = sc.fit_transform(training_set)
test_set     = sc.transform(test_set) # 设置测试集和训练集x_train = []
y_train = []x_test = []
y_test = []"""
使用前60天的开盘价作为输入特征x_train第61天的开盘价作为输入标签y_trainfor循环共构建 total-300-60 组训练数据。共构建 300-60=260 组测试数据
"""
for i in range(60, len(training_set)):x_train.append(training_set[i - 60:i, 0])y_train.append(training_set[i, 0])for i in range(60, len(test_set)):x_test.append(test_set[i - 60:i, 0])y_test.append(test_set[i, 0])"""
将训练数据调整为数组(array)
"""x_train, y_train = np.array(x_train), np.array(y_train)
x_test,  y_test  = np.array(x_test),  np.array(y_test)"""
输入要求:[送入样本数, 循环核时间展开步数, 每个时间步输入特征个数]
"""
x_train = np.reshape(x_train, (x_train.shape[0], 60, 1))
x_test  = np.reshape(x_test,  (x_test.shape[0], 60, 1))# 对训练集进行打乱
np.random.seed(7)
np.random.shuffle(x_train)
np.random.seed(7)
np.random.shuffle(y_train)
tf.random.set_seed(7)
# 构建模型
model = tf.keras.Sequential([SimpleRNN(100, return_sequences=True), #布尔值。是返回输出序列中的最后一个输出,还是全部序列。Dropout(0.1),                         #防止过拟合SimpleRNN(100),Dropout(0.1),Dense(1)
])# 激活模型
# 该应用只观测loss数值,不观测准确率,所以删去metrics选项,一会在每个epoch迭代显示时只显示loss值
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),loss='mean_squared_error')  # 损失函数用均方误差# 训练模型
history = model.fit(x_train, y_train, batch_size=64, epochs=20, validation_data=(x_test, y_test), validation_freq=1)                  #测试的epoch间隔数model.summary()
Epoch 1/20
48/48 [==============================] - 3s 42ms/step - loss: 0.1115 - val_loss: 9.1373e-04
Epoch 2/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0148 - val_loss: 9.4330e-04
Epoch 3/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0098 - val_loss: 9.0168e-04
Epoch 4/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0070 - val_loss: 0.0018
Epoch 5/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0052 - val_loss: 4.4911e-04
Epoch 6/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0043 - val_loss: 7.3918e-04
Epoch 7/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0039 - val_loss: 7.6899e-04
Epoch 8/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0033 - val_loss: 0.0011
Epoch 9/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0029 - val_loss: 4.8019e-04
Epoch 10/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0026 - val_loss: 4.0463e-04
Epoch 11/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0023 - val_loss: 3.6747e-04
Epoch 12/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0021 - val_loss: 4.0640e-04
Epoch 13/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0021 - val_loss: 8.8336e-04
Epoch 14/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0018 - val_loss: 3.4625e-04
Epoch 15/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0017 - val_loss: 7.2625e-04
Epoch 16/20
48/48 [==============================] - 2s 38ms/step - loss: 0.0016 - val_loss: 3.2855e-04
Epoch 17/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0017 - val_loss: 2.9916e-04
Epoch 18/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0017 - val_loss: 8.3816e-04
Epoch 19/20
48/48 [==============================] - 2s 36ms/step - loss: 0.0016 - val_loss: 4.8217e-04
Epoch 20/20
48/48 [==============================] - 2s 37ms/step - loss: 0.0013 - val_loss: 2.8706e-04
Model: "sequential_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
simple_rnn_4 (SimpleRNN)     (None, 60, 100)           10200
_________________________________________________________________
dropout_4 (Dropout)          (None, 60, 100)           0
_________________________________________________________________
simple_rnn_5 (SimpleRNN)     (None, 100)               20100
_________________________________________________________________
dropout_5 (Dropout)          (None, 100)               0
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 101
=================================================================
Total params: 30,401
Trainable params: 30,401
Non-trainable params: 0
# 绘制 LOSS 图plt.plot(history.history['loss']    , label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.show()

# 预测
predicted_stock_price = model.predict(x_test)                       # 测试集输入模型进行预测
predicted_stock_price = sc.inverse_transform(predicted_stock_price) # 对预测数据还原---从(0,1)反归一化到原始范围
real_stock_price = sc.inverse_transform(test_set[60:])              # 对真实数据还原---从(0,1)反归一化到原始范围# 画出真实数据和预测数据的对比曲线
plt.plot(real_stock_price, color='red', label='Stock Price')
plt.plot(predicted_stock_price, color='blue', label='Predicted Stock Price')
plt.title('Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()

看上去可完美了!然而——

如果仔细观察,会发现红线始终领先于蓝线,也就是说:预测数据其实是跟随真实数据的变化而变化的。画出最后20天的放大图来看,会发现,所谓的“预测”数据,其实是完美再现了2天之前的真实数据。(吐血。。。)

结论:本程序再次验证,股票价格是无法预测的~

大家该吃吃,该睡睡,祈祷股市发发发。

【云云怪】深度学习之:股票价格预测相关推荐

  1. 深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网 ...

  2. 深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见 ...

  3. 深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要 ...

  4. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战 卷积神经网络,听起来像是计算机科学.生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力 ...

  5. 深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战 GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种 ...

  6. 如何一夜暴富?深度学习教你预测比特币价格

    如何一夜暴富?深度学习教你预测比特币价格 2018年08月06日 17:50:00 近年来,以比特币为代表的加密数字货币一直是社交媒体和搜索引擎上的热门.但是,比特币价格浮动也使各位看官们经历了过山车 ...

  7. 基于深度学习的视频预测研究综述

    原址:http://html.rhhz.net/tis/html/201707032.htm (收集材料ing,为论文做准备)[综述性文章,,,可以做背景资料] 莫凌飞, 蒋红亮, 李煊鹏 摘要:近年 ...

  8. [深度学习项目] - 时间序列预测 (5)[待补充]

    基于RNN的时序预测 基于LSTM的时序预测: 输入数据时 输入的 y t y_t yt​和 x t + 1 x_{t+1} xt+1​之间存在一个时间差. DeepAR 和 MQRNN 都可以实现时 ...

  9. Keras深度学习实战——信用预测

    Keras深度学习实战--信用预测 0. 前言 1. 任务与模型分析 1.1 数据集 1.2 信用预测任务分析 1.3 神经网络模型分析 2. 使用神经网络实现信用预测 3. 改进模型 3.1 为类别 ...

  10. 基于深度学习的股票预测(完整版,有代码)

    基于深度学习的股票预测 数据获取 数据转换 LSTM模型搭建 训练模型 预测结果 数据获取 采用tushare的数据接口(不知道tushare的筒子们自行百度一下,简而言之其免费提供各类金融数据 , ...

最新文章

  1. 一秒回到P图前:Adobe发布“反向PS”利器,知道你修过哪里,还帮你修回去
  2. 连接sql sever2008数据库出现了无法连接到数据库引擎问题解决
  3. python免费试听-哪家培训可以免费试听Python课程?专注16年IT培训
  4. python3菜鸟教程中文-Python3 数据结构
  5. OREILLY Programming .NET 3.5 读书笔记之一
  6. 专科 java转go 翱翔之路(三)开发工具:goland2019.1安装一键到2089年试用期
  7. WebKit 分析–for android
  8. jQuery.Deferred和Promise
  9. 基于SIP协议的视频通讯
  10. 巨量引擎短视频广告价值白皮书
  11. GitHub开源控件的使用合集
  12. 大小字节序的深入理解和鉴定系统字节序方法
  13. thinkphp判断本地环境是否为SAE
  14. 基于SprnigBoot+ElementUI 整合Vue案例【公司案件管理系统】
  15. 【论文笔记】Switching Convolutional Neural Network for Crowd Counting
  16. 腾讯云服务器地域节点IP速度测试表
  17. IKBC键盘win键失灵解决方法
  18. Jvav语言(0.1)版
  19. 窥尽大数据背后被遮掩起来的财富
  20. 全球及中国铁路行业十四五规划目标与投资建设状况分析报告2021版

热门文章

  1. 系统集成考试口诀万金油记忆
  2. 从一线城市回家工作的体验
  3. Android 天气APP(十三)仿微信弹窗(右上角加号点击弹窗效果)、自定义背景图片、UI优化调整
  4. 四舍六入五成双(C语言版)
  5. Spring IOC 和AOP 简单理解
  6. 【热门】2004年十大网络流行语征集ing
  7. 两周之后,英特尔或将宣布启用芯片代工:直接4nm,2023年出货?
  8. 力扣刷题记录_字符串(自学)
  9. 利用python做薪酬管理_HRD告诉你,6个薪酬体系策略做好薪酬管理
  10. 《Spark机器学习》通读