关于建设网站的报告,男女做暖暖试看网站,家里公网宽带做网站要备案么,视觉设计网站建设文章目录 一、前言二、前期工作1. 设置GPU#xff08;如果使用的是CPU可以忽略这步#xff09;2. 导入数据 四、数据预处理1.归一化2.设置测试集训练集 五、构建模型六、激活模型七、训练模型八、结果可视化1.绘制loss图2.预测3.评估 一、前言
我的环境#xff1a;
语言环… 文章目录 一、前言二、前期工作1. 设置GPU如果使用的是CPU可以忽略这步2. 导入数据 四、数据预处理1.归一化2.设置测试集训练集 五、构建模型六、激活模型七、训练模型八、结果可视化1.绘制loss图2.预测3.评估 一、前言
我的环境
语言环境Python3.6.5编译器jupyter notebook深度学习环境TensorFlow2.4.1
往期精彩内容
卷积神经网络CNN实现mnist手写数字识别 卷积神经网络CNN多种图片分类的实现卷积神经网络CNN衣服图像分类的实现卷积神经网络CNN鲜花识别卷积神经网络CNN天气识别 卷积神经网络VGG-16识别海贼王草帽一伙卷积神经网络ResNet-50鸟类识别
来自专栏机器学习与深度学习算法推荐
二、前期工作
1. 设置GPU如果使用的是CPU可以忽略这步
import tensorflow as tfgpus tf.config.list_physical_devices(GPU)if gpus:tf.config.experimental.set_memory_growth(gpus[0], True) #设置GPU显存用量按需使用tf.config.set_visible_devices([gpus[0]],GPU)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
# 支持中文
plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签
plt.rcParams[axes.unicode_minus] False # 用来正常显示负号data pd.read_csv(./datasets/SH600519.csv) # 读取股票文件dataUnnamed: 0dateopenclosehighlowvolumecode0742010-04-2688.70287.38189.07287.362107036.136005191752010-04-2787.35584.84187.35584.68158234.486005192762010-04-2884.23584.31885.12883.59726287.436005193772010-04-2984.59285.67186.31584.59234501.206005194782010-04-3083.87182.34083.87181.52385566.70600519………………………242124952020-04-201221.0001227.3001231.5001216.80024239.00600519242224962020-04-211221.0201200.0001223.9901193.00029224.00600519242324972020-04-221206.0001244.5001249.5001202.22044035.00600519242424982020-04-231250.0001252.2601265.6801247.77026899.00600519242524992020-04-241248.0001250.5601259.8901235.18019122.00600519
2426 rows × 8 columns
training_set data.iloc[0:2426 - 300, 2:3].values
test_set data.iloc[2426 - 300:, 2:3].values 四、数据预处理
1.归一化
sc MinMaxScaler(feature_range(0, 1))
training_set sc.fit_transform(training_set)
test_set sc.transform(test_set) 2.设置测试集训练集
x_train []
y_train []x_test []
y_test []
使用前60天的开盘价作为输入特征x_train第61天的开盘价作为输入标签y_trainfor循环共构建2426-300-602066组训练数据。共构建300-60260组测试数据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])# 对训练集进行打乱
np.random.seed(7)
np.random.shuffle(x_train)
np.random.seed(7)
np.random.shuffle(y_train)
tf.random.set_seed(7)将训练数据调整为数组array调整后的形状
x_train:(2066, 60, 1)
y_train:(2066,)
x_test :(240, 60, 1)
y_test :(240,)x_train, y_train np.array(x_train), np.array(y_train) # x_train形状为(2066, 60, 1)
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))五、构建模型
model tf.keras.Sequential([SimpleRNN(80, return_sequencesTrue), #布尔值。是返回输出序列中的最后一个输出还是全部序列。Dropout(0.2), #防止过拟合SimpleRNN(80),Dropout(0.2),Dense(1)
])六、激活模型
# 该应用只观测loss数值不观测准确率所以删去metrics选项一会在每个epoch迭代显示时只显示loss值
model.compile(optimizertf.keras.optimizers.Adam(0.001),lossmean_squared_error) # 损失函数用均方误差七、训练模型
history model.fit(x_train, y_train, batch_size64, epochs20, validation_data(x_test, y_test), validation_freq1) #测试的epoch间隔数model.summary()Epoch 1/20
33/33 [] - 6s 123ms/step - loss: 0.1809 - val_loss: 0.0310
Epoch 2/20
33/33 [] - 3s 105ms/step - loss: 0.0257 - val_loss: 0.0721
Epoch 3/20
33/33 [] - 3s 85ms/step - loss: 0.0165 - val_loss: 0.0059
Epoch 4/20
33/33 [] - 3s 85ms/step - loss: 0.0097 - val_loss: 0.0111
Epoch 5/20
33/33 [] - 3s 90ms/step - loss: 0.0099 - val_loss: 0.0139
Epoch 6/20
33/33 [] - 3s 105ms/step - loss: 0.0067 - val_loss: 0.0167
Epoch 7/20
33/33 [] - 3s 86ms/step - loss: 0.0067 - val_loss: 0.0095
Epoch 8/20
33/33 [] - 3s 91ms/step - loss: 0.0063 - val_loss: 0.0218
Epoch 9/20
33/33 [] - 3s 99ms/step - loss: 0.0052 - val_loss: 0.0109
Epoch 10/20
33/33 [] - 3s 99ms/step - loss: 0.0043 - val_loss: 0.0120
Epoch 11/20
33/33 [] - 3s 92ms/step - loss: 0.0044 - val_loss: 0.0167
Epoch 12/20
33/33 [] - 3s 89ms/step - loss: 0.0039 - val_loss: 0.0032
Epoch 13/20
33/33 [] - 3s 88ms/step - loss: 0.0041 - val_loss: 0.0052
Epoch 14/20
33/33 [] - 3s 93ms/step - loss: 0.0035 - val_loss: 0.0179
Epoch 15/20
33/33 [] - 4s 110ms/step - loss: 0.0033 - val_loss: 0.0124
Epoch 16/20
33/33 [] - 3s 95ms/step - loss: 0.0035 - val_loss: 0.0149
Epoch 17/20
33/33 [] - 4s 111ms/step - loss: 0.0028 - val_loss: 0.0111
Epoch 18/20
33/33 [] - 4s 110ms/step - loss: 0.0029 - val_loss: 0.0061
Epoch 19/20
33/33 [] - 3s 104ms/step - loss: 0.0027 - val_loss: 0.0110
Epoch 20/20
33/33 [] - 3s 90ms/step - loss: 0.0028 - val_loss: 0.0037
Model: sequential
_________________________________________________________________
Layer (type) Output Shape Param # simple_rnn (SimpleRNN) (None, 60, 80) 6560
_________________________________________________________________
dropout (Dropout) (None, 60, 80) 0
_________________________________________________________________
simple_rnn_1 (SimpleRNN) (None, 80) 12880
_________________________________________________________________
dropout_1 (Dropout) (None, 80) 0
_________________________________________________________________
dense (Dense) (None, 1) 81 Total params: 19,521
Trainable params: 19,521
Non-trainable params: 0
_________________________________________________________________八、结果可视化
1.绘制loss图
plt.plot(history.history[loss] , labelTraining Loss)
plt.plot(history.history[val_loss], labelValidation Loss)
plt.legend()
plt.show()2.预测
predicted_stock_price model.predict(x_test) # 测试集输入模型进行预测
predicted_stock_price sc.inverse_transform(predicted_stock_price) # 对预测数据还原---从01反归一化到原始范围
real_stock_price sc.inverse_transform(test_set[60:]) # 对真实数据还原---从01反归一化到原始范围# 画出真实数据和预测数据的对比曲线
plt.plot(real_stock_price, colorred, labelStock Price)
plt.plot(predicted_stock_price, colorblue, labelPredicted Stock Price)
plt.title(Stock Price Prediction by K同学啊)
plt.xlabel(Time)
plt.ylabel(Stock Price)
plt.legend()
plt.show()3.评估
MSE metrics.mean_squared_error(predicted_stock_price, real_stock_price)
RMSE metrics.mean_squared_error(predicted_stock_price, real_stock_price)**0.5
MAE metrics.mean_absolute_error(predicted_stock_price, real_stock_price)
R2 metrics.r2_score(predicted_stock_price, real_stock_price)print(均方误差: %.5f % MSE)
print(均方根误差: %.5f % RMSE)
print(平均绝对误差: %.5f % MAE)
print(R2: %.5f % R2)均方误差: 1833.92534
均方根误差: 42.82435
平均绝对误差: 36.23424
R2: 0.72347