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

这里贴一下代码

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()

  

  

  

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

  1. Keras + LSTM 做回归demo

    学习神经网络 想拿lstm 做回归, 网上找demo 基本三种: sin拟合cos 那个, 比特币价格预测(我用相同的代码和数据没有跑成功, 我太菜了)和keras 的一个例子 我基于keras 那个 ...

  2. 循环神经网络LSTM RNN回归:sin曲线预测

    摘要:本篇文章将分享循环神经网络LSTM RNN如何实现回归预测. 本文分享自华为云社区<[Python人工智能] 十四.循环神经网络LSTM RNN回归案例之sin曲线预测 丨[百变AI秀]& ...

  3. 利用Caffe做回归(regression)

    Caffe应该是目前深度学习领域应用最广泛的几大框架之一了,尤其是视觉领域.绝大多数用Caffe的人,应该用的都是基于分类的网络,但有的时候也许会有基于回归的视觉应用的需要,查了一下Caffe官网,还 ...

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

    本文英文原文出自这里, 这个博客里面的内容是Java开源, 分布式深度学习项目deeplearning4j的介绍学习文档. 简介: 一般来说, 神经网络常被用来做无监督学习, 分类, 以及回归. 也就 ...

  5. 单向LSTM笔记, LSTM做minist数据集分类

    单向LSTM笔记, LSTM做minist数据集分类 先介绍下torch.nn.LSTM()这个API 1.input_size: 每一个时步(time_step)输入到lstm单元的维度.(实际输入 ...

  6. 使用LSTM做电影评论负面检测——使用朴素贝叶斯才51%,但是使用LSTM可以达到99%准确度

    基本思路: 每个评论取前200个单词.然后生成词汇表,利用词汇index标注评论(对 每条评论的前200个单词编号而已),然后使用LSTM做正负评论检测. 代码解读见[[[评论]]]!embeddin ...

  7. python 做回归

    1 一元线性回归 线性回归是一种简单的模型,但受到广泛应用,比如预测商品价格,成本评估等,都可以用一元线性模型.y = f(x) 叫做一元函数,回归意思就是根据已知数据复原某些值,线性回归(regre ...

  8. keras神经网络做简单的回归问题

    咸鱼了半个多月了,要干点正经事了. 最近在帮老师用神经网络做多变量非线性的回归问题,没有什么心得,但是也要写个博文当个日记. 该回归问题是四个输入,一个输出.自己并不清楚这几个变量有什么关系,因为是跟 ...

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

    问题:航班乘客预测 数据:1949 到 1960 一共 12 年,每年 12 个月的数据,一共 144 个数据,单位是 1000 下载地址 目标:预测国际航班未来 1 个月的乘客数 import nu ...

随机推荐

  1. windows下安装php reids扩展

    1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本. 2.下载php_igbinary-1.2.1-5.5-ts-vc11-x64.zip,php_redis-2.2.5-5.6 ...

  2. Centos部署PHP项目(安装Apache,PHP)

    1.apache安装 [root@tele-2 ~]# yum install httpd 2.外网访问虚拟机中的地址,我们就需要修改一下apache的配置文件 vim  /etc/httpd/con ...

  3. httpclient方式调用接口

    public class ToInterface { /** * post方式提交表单(模拟用户登录请求) */ public static void postForm() { // 创建默认的htt ...

  4. php普通传值和引用传值 (相当通俗易懂的一篇讲解)

    首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...

  5. Wireshark常用过滤命令

    WireShark在我们网络编程中有非常重要的作用,可以帮我们抓取我们程序发送的数据包,大家常常说他是抓包工具,其实它是一款非常强大的网络数据包分析工具. 在WireShark的学习上,不想花费太多的 ...

  6. IT题库1-HashMap、HashSet和HashTable(区别?数据格式?)

    1. HashTable和HashMap的区别 HashMap和Hashtable都实现了Map接口.主要区别:线程安全性,同步(synchronization),以及速度. 1.HashMap是非s ...

  7. Wireshark使用介绍(二):应用Wireshark观察基本网络协议

    TCP: TCP/IP通过三次握手建立一个连接.这一过程中的三种报文是:SYN,SYN/ACK,ACK. 第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了TCP三次握手的开始. 如果你找不 ...

  8. 宝塔安装swoole

    新建文件夹 mkdir swoole 切入到文件夹中,进行下载安装包 wget http://pecl.php.net/get/swoole-4.3.2.tgz 解压 tar -zxvf swoole ...

  9. linux执行jmeter脚本解决响应数据为空

    Linux服务器用命令执行了jmeter脚本,在本地查看结果时发现结果树种的“请求.响应数据”都显示为空,有错误日志中也看不出所以然,请看演示! 1 ,先执行脚本:执行成功(...end of run ...

  10. Java8-Map

    1.Staff实体 public class Staff { private String name; private int age; private String address; public ...