LSTM 实践--客运量数据分析(2)

1. 预处理

url = './铁路客运量.csv'

ass_data = requests.get(url).content #打开文件

df = pd.read_csv(io.StringIO(ass_data.decode('utf-8')))  # python2使用StringIO.StringIO

data = np.array(df['铁路客运量_当期值(万人)']) 

# normalize

normalized_data = (data - np.mean(data)) / np.std(data)

seq_size = 3

train_x, train_y = [], []

for i in range(len(normalized_data) - seq_size - 1): # 解析

 train_x.append(np.expand_dims(normalized_data[i: i + seq_size], axis=1).tolist())

    train_y.append(normalized_data[i + 1: i + seq_size + 1].tolist())

input_dim = 1

X = tf.placeholder(tf.float32, [None, seq_size, input_dim])

Y = tf.placeholder(tf.float32, [None, seq_size])



2. 模型构建

def ass_rnn(hidden_layer_size=6): #  regression

    W = tf.Variable(tf.random_normal([hidden_layer_size, 1]), name='W')

    b = tf.Variable(tf.random_normal([1]), name='b')

    cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_layer_size)# 6

    outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)

    W_repeated = tf.tile(tf.expand_dims(W, 0), [tf.shape(X)[0], 1, 1])

    out = tf.batch_matmul(outputs, W_repeated) + b

    out = tf.squeeze(out)

    return out

3. 训练模型

def train_rnn():

    out = ass_rnn()

    loss = tf.reduce_mean(tf.square(out - Y))

    train_op = tf.train.AdamOptimizer(learning_rate=0.003).minimize(loss)

    saver = tf.train.Saver(tf.all_variables())  # tf.global_variables()  == tf 0.12

    with tf.Session() as sess:

        tf.get_variable_scope().reuse_variables()  # old API

        sess.run(tf.initialize_all_variables())  # tf.global_variables_initializer() ==tf  0.12

        for step in range(10000):

            _, loss_ = sess.run([train_op, loss], feed_dict={X: train_x, Y: train_y})

            if step % 10 == 0:

                # 用测试数据评估loss

                print(step, loss_)

        print("保存模型: ", saver.save(sess, 'ass.model'))


4. 预测

def prediction():

    out = ass_rnn()

    saver = tf.train.Saver(tf.all_variables())  # new API  tf.global_variables()

    with tf.Session() as sess:

        tf.get_variable_scope().reuse_variables()  # old API

        saver.restore(sess, './ass.model')

        prev_seq = train_x[-1]

        predict = []

        for i in range(12):

            next_seq = sess.run(out, feed_dict={X: [prev_seq]})

            predict.append(next_seq[-1])

            prev_seq = np.vstack((prev_seq[1:], next_seq[-1]))

        plt.figure()

        plt.plot(list(range(len(normalized_data))), normalized_data, color='b')

        plt.plot(list(range(len(normalized_data), len(normalized_data) + len(predict))), predict, color='r')

        plt.show()

# train_rnn()  #

prediction()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容