Python进行GRU和LSTM

加载包

import numpy as np
import pandas as pd
import math
#Sequential多个网络层的线性堆叠;Dense隐含层
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import SimpleRNN
from keras.layers import GRU
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error, mean_absolute_error

数据定义

def create_dataset(dataset, look_back):
    dataX, dataY = [], []
    for i in range(len(dataset)-look_back):
        a = dataset[i:(i+look_back), 0]
#append向列表的尾部增加元素
        dataX.append(a)
        dataY.append(dataset[i + look_back, 0])
    return np.array(dataX), np.array(dataY)

数据分割

# fix random seed for reproducibility
#seed用于指定随机数生成时所用算法开始的整数值
np.random.seed(7)
# load the dataset/下载数据集 
#usecols获取数据的列,如果取前4列,则usecols=(0,1,2,3)
#print(XXXX)
dataframe = pd.read_csv(r'333.csv' \
                    , usecols=[0], engine='python')
dataset = dataframe.values
dataset = dataset.astype('float32')
# normalize the dataset/标准化数据集 
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)

# split into train and test sets/分割训练集与测试集 
    #train_size = int(len(dataset) * 0.84)
       
vsize = 200;
train_size = 800;
#print(train_size )
   # test_size = len(dataset) - train_size
look_back =10
train, test = dataset[0:train_size-1,:], dataset[train_size-look_back-1:train_size+vsize-1,:]
# dataset detail/具体分割后数据集
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
#predX, predY = create_dataset(pred, look_back)
# reshape input to be [samples, feature_num, features]

trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))

建模预测

#predX = np.reshape(predX,(predX.shape[0], 1, predX.shape[1]))
    #print(trainX ))
   # start_cr_a_fit_net = time.time()
# create and fit the LSTM network/创建并拟合LSTM网络 

model = Sequential()
model.add(GRU(15, input_shape=(None,look_back)))
#model.add(SimpleRNN(18, input_shape=(None,look_back)))
    #model.add(GRU(XXXX[1], input_shape=(None,look_back)))
model.add(Dense(1))
model.summary()
#model.compile(loss='mean_squared_error', optimizer='adam')
model.compile(loss='mean_squared_error', optimizer='sgd')
model.fit(trainX, trainY, epochs=331, batch_size=1, verbose=0)
   # end_cr_a_fit_net = time.time()-start_cr_a_fit_net
   # print('Running time of creating and fitting the LSTM network: %.2f Seconds' % (end_cr_a_fit_net))

# make predictions/进行预测
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
#NpredY = model.predict(predX)
##### invert predictions start ##### / 将预测值转换为正常数值
# create empty table with 12 fields
trainPredict=scaler.inverse_transform(trainPredict)
trainY=scaler.inverse_transform([trainY])
testPredict=scaler.inverse_transform(testPredict)
testY=scaler.inverse_transform([testY])
#NpredY = scaler.inverse_transform(NpredY)
#predY=scaler.inverse_transform([predY])
  #  print(predY)
   # print(NpredY)
#    print('测试集预测值' )
#    print(testPredict)
     
##### invert predictions end #####
# calculate root mean squared error/计算RMSE和误差率
 #   trainScore = math.sqrt(mean_squared_error(trainY[0], trainPredict[:,0]))
#    print('Train Score: %.8f RMSE' % (trainScore))
  #  testScore = math.sqrt(mean_squared_error(testY[0], testPredict[:,0]))
 #   print('Test Score: %.8f RMSE' % (testScore))
   # df = pd.DataFrame(NpredY[:,0])
   # aa=df.to_excel('12.xlsx',encoding='utf-8')
#df = pd.DataFrame(NpredY[:,0])
#aa=df.to_excel('12.xlsx',encoding='utf-8')
preRMSE = math.sqrt(mean_squared_error(testY[0], testPredict[:,0]))
print('Test RMSE: %.8f RMSE' % (preRMSE))
preMSE = mean_squared_error(testY[0], testPredict[:,0])
print('Test MSE: %.8f MSE' % (preMSE))
trainMAE = mean_absolute_error(testY[0], testPredict[:,0])
print('Test MAE: %.8f MAE' % (trainMAE))
  #  testMAE = mean_absolute_error(testY[0], testPredict[:,0])
   # print('Test MAE: %.8f MAE' % (testMAE))
   #trainMAPE = np.mean(np.abs(trainY[0]-trainPredict[:,0])/trainY[0])
   # print('Train MAPE: %.8f %% MAPE' % (trainMAPE*100))
#testMAPE = np.mean(np.abs(testY[0]-testPredict[:,0])/testY[0])
#print('Test MAPE: %.8f %% MAPE' % (testMAPE*100))
predMAPE = np.mean(np.abs(testY[0]-testPredict[:,0])/testY[0])
print('predY MAPE: %.8f %% MAPE' % (predMAPE*100))

微信:realtimedata

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
【为什么要学习这门课程】深度学习框架如TensorFlow和Pytorch掩盖了深度学习底层实现方法,那能否能用Python代码从零实现来学习深度学习原理呢?本课程就为大家提供了这个可能,有助于深刻理解深度学习原理。左手原理、右手代码,双管齐下!本课程详细讲解深度学习原理并进行Python代码实现深度学习网络。课程内容涵盖感知机、多层感知机、卷积神经网络、循环神经网络,并使用Python 3及Numpy、Matplotlib从零实现上述神经网络。本课程还讲述了神经网络的训练方法与实践技巧,且开展了代码实践演示。课程对于核心内容讲解深入细致,如基于计算图理解反向传播算法,并用数学公式推导反向传播算法;另外还讲述了卷积加速方法im2col。【课程收获】本课程力求使学员通过深度学习原理、算法公式及Python代码的对照学习,摆脱框架而掌握深度学习底层实现原理与方法。本课程将给学员分享深度学习的Python实现代码。课程代码通过Jupyter Notebook演示,可在Windows、ubuntu等系统上运行,且不需GPU支持。【优惠说明】 课程正在优惠中!  备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】学习本课程的前提是会使用Python语言以及Numpy和Matplotlib库。相关课程链接如下:《Python编程的术与道:Python语言入门》https://edu.csdn.net/course/detail/27845《玩转Numpy计算库》https://edu.csdn.net/lecturer/board/28656《玩转Matplotlib数据绘图库》https://edu.csdn.net/lecturer/board/28720【课程内容导图及特色】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值