python时间序列如何拟合曲线_【Python】keras使用LSTM拟合曲线

keras生成的网络结构如下图:

代码如下:

from sklearn.preprocessing import MinMaxScaler

from keras.models import Sequential

from keras.layers import LSTM, Dense, Activation

from keras.utils.vis_utils import plot_model

import matplotlib.pyplot as plt

import numpy as np

seq = 10

x = np.arange(0, 6 * np.pi, 0.01)

y = np.sin(x) + np.cos(x) * x

fig = plt.figure(1)

plt.plot(y, 'r')

train = np.array(y).astype(float)

scaler = MinMaxScaler()

train = scaler.fit_transform(train)

data = []

for i in range(len(train) - seq - 1):

data.append(train[i: i + seq + 1])

data = np.array(data).astype('float64')

x = data[:, :-1]

y = data[:, -1]

split = int(data.shape[0] * 0.5)

train_x = x[: split]

train_y = y[: split]

test_x = x # [split:]

test_y = y # [split:]

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

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

model = Sequential()

model.add(LSTM(input_dim=1, output_dim=6, return_sequences=True))

model.add(LSTM(100, return_sequences=False))

model.add(Dense(output_dim=1))

model.add(Activation('linear'))

model.summary()

model.compile(loss='mse', optimizer='rmsprop')

model.fit(train_x, train_y, batch_size=50, nb_epoch=100, validation_split=0.1)

predict_y = model.predict(test_x)

predict_y = np.reshape(predict_y, (predict_y.size,))

predict_y = scaler.inverse_transform([[i] for i in predict_y])

test_y = scaler.inverse_transform(test_y)

fig2 = plt.figure(2)

plt.plot(predict_y, 'g')

plt.plot(test_y, 'r')

plt.show()

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=False)

拟合结果:

基于 Keras 用 LSTM 网络做时间序列预测

目录 基于 Keras 用 LSTM 网络做时间序列预测 问题描述 长短记忆网络 LSTM 网络回归 LSTM 网络回归结合窗口法 基于时间步的 LSTM 网络回归 在批量训练之间保持 LSTM 的记 ...

Python中利用LSTM模型进行时间序列预测分析

时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺 ...

吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:LSTM网络层详解及其应用

from keras.layers import LSTM model = Sequential() model.add(embedding_layer) model.add(LSTM(32)) #当 ...

Kesci: Keras 实现 LSTM——时间序列预测

博主之前参与的一个科研项目是用 LSTM 结合 Attention 机制依据作物生长期内气象环境因素预测作物产量.本篇博客将介绍如何用 keras 深度学习的框架搭建 LSTM 模型对时间序列做预测. ...

手把手教你用 Keras 实现 LSTM 预测英语单词发音

1. 动机 我近期在研究一个 NLP 项目,根据项目的要求,需要能够通过设计算法和模型处理单词的音节 (Syllables),并对那些没有在词典中出现的单词找到其在词典中对应的押韵词(注:这类单词类似 ...

Keras实现LSTM

一.先看一个Example 1.描述,输入为一个字母,输出为这个字母的下一个顺序字母 A->B B->C C->D 2.Code import numpy from keras.mo ...

使用keras的LSTM进行预测----实战练习

代码 import numpy as np from keras.models import Sequential from keras.layers import Dense from keras. ...

随机推荐

Logistic Regression分类器

1. 两类Logistic回归 Logistic回归是一种非常高效的分类器.它不仅可以预测样本的类别,还可以计算出分类的概率信息. 不妨设有$n$个训练样本$\{x_1, ..., x_n\}$,$x ...

Windows 下 Composer 与 Laravel 4 的安装

1.安装Composer Composer是PHP的依附经管对象之一,官方网站 http://getcomposer.org/ .它支撑多种安装体式格式,对于在win下做开辟的草来说,最便捷的体式格式 ...

android-betterpickers

https://github.com/derekbrameyer/android-betterpickers

Android开发之内容观察者

内容观察者: 当关注应用的数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知 实现步骤: 1.假如是自定义的ContentProvider,需要 ...

html-----015---HTML ASCII 参考手册

HTML 和 XHTML 用标准的 7 比特 ASCII 代码在网络上传输数据. 7 比特 ASCII 代码可提供 128 个不同的字符值. 7 比特 可显示的 ASCII 代码

权威指南之脚本化http

使用javascript代码操作http是可行的.当用脚本设置window对象的location属性或调用表单对象的submit方法时,都会初始化http请求.这两种情况下,浏览器会加载新页面. aj ...

在 Windows Azure 网站中配置动态 IP 地址限制

我们最近对 Windows Azure 网站进行了升级,并启用了IIS8的动态 IP 限制模块.现在,开发人员可以为其网站启用并配置动态 IP 限制功能(或简称 DIPR). 可以通过以下链接查看此 ...

JS数据绑定模板artTemplate试用

之前写JS绑定数据曾经用过tmpl库,虽然功能比较强大但是感觉不是很轻量,对于相对简单的数据需求显得有些臃肿.而Ajax返回数据自己拼接html的方式又显得不够高端,因此今天看了一篇介绍artTemp ...

Python 实现累加计数的几种方法

#要实现累加,关键在于数据存在哪儿,怎么使每次累加的都是同一个变量 行为像静态变量 #前两种都是数据存到类的成员变量, # 类利用__call__ class foo: def __init__(se ...

nginx+keepalived实现高可用

参看文献 https://blog.csdn.net/u012410733/article/details/57078407 nginx的安装,这里就不再讲了 这里使用了两台服务器 192.168.3 ...

你可能感兴趣的:(python时间序列如何拟合曲线_【Python】keras使用LSTM拟合曲线)