这是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 ts
code_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_train
for循环共构建 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)
""