Keras + LSTM 做回归demo 2

接上回, 这次做了一个多元回归

这里贴一下代码

import numpy as np
np.random.seed(1337)
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import keras
from keras.models import Sequential
from keras.layers import Activation
from keras.layers import LSTM
from keras.layers import Dropout
from keras.layers import Dense
import pandas as pd

  

datan = 1000
# 真实参数
ori_weights = [5, -4, 3, -2, 1]
colsn = len(ori_weights)
bias = -1
ori = np.zeros((1, colsn))
ori[0] = np.asarray(ori_weights)
# 列信息
cols_name = [chr(65+i) for i in range(colsn)]
X = np.zeros((colsn, datan))

for i in range(colsn):
    X[i] = np.random.normal(1, 0.1, datan)
# 真实Y
Y = np.matmul(ori, X) + bias + np.random.normal(-0.1, 0.1, (datan, ))
# 数据预览
df = pd.DataFrame(X.T, columns=cols_name)
df[‘Y‘] = df.apply(lambda row: np.matmul(ori, [row[k] for k in df.columns] )[0]+bias, axis=1)
df[‘target‘] = Y[0]
df.head()

  

X_train, X_test, Y_train, Y_test = train_test_split(X.T, Y.T, test_size=0.33, random_state=42)

  

neurons = 128
activation_function = ‘tanh‘
loss = ‘mse‘
optimizer="adam"
dropout = 0.01
batch_size = 12
epochs = 200

  

model = Sequential()

model.add(LSTM(neurons, return_sequences=True, input_shape=(1, colsn), activation=activation_function))
model.add(Dropout(dropout))
model.add(LSTM(neurons, return_sequences=True, activation=activation_function))
model.add(Dropout(dropout))
model.add(LSTM(neurons, activation=activation_function))
model.add(Dropout(dropout))
model.add(Dense(output_dim=1, input_dim=1))

  

model.compile(loss=loss, optimizer=optimizer)

  

epochs = 2001
for step in range(epochs):
    cost = model.train_on_batch(X_train[:, np.newaxis], Y_train)
    if step % 30 == 0:
        print(f‘{step} train cost: ‘, cost)

  

# test
print(‘Testing ------------‘)
cost = model.evaluate(X_test[:, np.newaxis], Y_test, batch_size=40)
print(‘test cost:‘, cost)

  

# plotting the prediction
Y_pred = model.predict(X_test[:, np.newaxis])
#
sdf = pd.DataFrame({‘test‘:list(Y_test.T[0]), ‘pred‘:list(Y_pred.T[0])})
sdf.sort_values(by=‘test‘, inplace=True)
#
plt.scatter(range(len(Y_test)), list(sdf.test))
plt.plot(range(len(Y_test)), list(sdf.pred), ‘r--‘)
plt.show()

  

  

  

原文地址:https://www.cnblogs.com/fadedlemon/p/10530244.html

时间: 2024-10-21 15:51:14

Keras + LSTM 做回归demo 2的相关文章

python 做回归

1 一元线性回归 线性回归是一种简单的模型,但受到广泛应用,比如预测商品价格,成本评估等,都可以用一元线性模型.y = f(x) 叫做一元函数,回归意思就是根据已知数据复原某些值,线性回归(regression)就是用线性的模型做回归复原. 基本思想:已知一批(x, y)来复原另外未知的值,例如(1,1),(2,2),(3,3),那么(4,?),大家很容易知道(4,4),这就是一元线性回归求解问题 import numpy as np import matplotlib.pyplot as pl

[翻译]用神经网络做回归(Using Neural Networks With Regression)

本文英文原文出自这里, 这个博客里面的内容是Java开源, 分布式深度学习项目deeplearning4j的介绍学习文档. 简介: 一般来说, 神经网络常被用来做无监督学习, 分类, 以及回归. 也就是说, 神经网络可以帮助对未标记数据进行分组, 对数据进行分类, 或者在有监督训练之后输出连续的值. 典型的神经网络在分类方面的应用, 会在网络的最后一层使用逻辑回归分类器(之类)的将连续(continue)的值转换成为离散值如: 0/1, 比如, 给定一个人的身高, 体重, 以及年龄, 你可以给出

keras rnn做加减法

一.背景 学习rnn怎么使用 例子: 输入两个数,做加法 二. 代码赏析 from __future__ import print_function from keras.models import Sequential from keras.engine.training import slice_X from keras.layers import Activation, TimeDistributed, Dense, RepeatVector, recurrent import numpy

用 LSTM 做时间序列预测的一个小例子(转自简书)

问题:航班乘客预测 数据:1949 到 1960 一共 12 年,每年 12 个月的数据,一共 144 个数据,单位是 1000 下载地址 目标:预测国际航班未来 1 个月的乘客数 import numpy import matplotlib.pyplot as plt from pandas import read_csv import math from keras.models import Sequential from keras.layers import Dense from ke

很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天做个demo(续集)

有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用.(浏览器自带的扫描就够了,QQ扫码和微信扫码部分手机不能直接连接wifi) 在看之前你可以扫一扫下面几个二维码先看看效果: 上篇网站介绍了一下常用格式(http://www.cnblogs.com/dunitian/p/4998714.html),其实扫二维码的本质就是解析出一段字符串,为什么有一些神奇的功能呢?那是字符串的格式满足一些系统内置的协议或者格式,所以系统就帮你干了类似于发短信,打电话,添加联系人,连接wifi

NLP用CNN分类Mnist,提取出来的特征训练SVM及Keras的使用(demo)

用CNN分类Mnist http://www.bubuko.com/infodetail-777299.html /DeepLearning Tutorials/keras_usage 提取出来的特征训练SVMhttp://www.bubuko.com/infodetail-792731.html ./dive_into _keras 自己动手写demo实现

Pandas.plot 做图 demo(scatter,bar,pie)

#coding:utf-8import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号import pandas as pdfrom pandas import Series,DataFrame '''plt.scatter(x,y)plt.show()

做文件目录DEMO时发现的问题

①.TreeNode的ImageURL设置图片的URL链接时,~\Images\file.jpg其中~\表示服务器根目录 ②.使用Response.Write()向前台alert时会导致布局乱,所以后面改为了Page.ClientScript.RegisterStartupScript的方式 1

flex 布局 自己做的demo

.row {/*横*/ display: -webkit-box;// display: -webkit-flex; /* Safari */ display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; width: 100%; }.row-wrap {/*横不换行*/ -webkit-flex-wrap: wrap; -moz-flex-wrap: wrap; -ms-flex-wrap: wrap;