tensorFlow(二)线性回归
需要TensorFlow基础,见TensorFlow(一)
原理默认了解不赘述
实例:
模型创建:
#!/usr/bin/python
# -*- coding: utf-8 -*
import tensorflow as tf
import numpy as np class linearRegressionModel: def __init__(self,x_dimen):
self.x_dimen = x_dimen
self._index_in_epoch = 0
self.constructModel()
self.sess = tf.Session()
self.sess.run(tf.global_variables_initializer()) #权重初始化
def weight_variable(self,shape):
initial = tf.truncated_normal(shape,stddev = 0.1)
return tf.Variable(initial) #偏置项初始化
def bias_variable(self,shape):
initial = tf.constant(0.1,shape = shape)
return tf.Variable(initial) #每次选取100个样本,如果选完,重新打乱
def next_batch(self,batch_size):
start = self._index_in_epoch
self._index_in_epoch += batch_size
if self._index_in_epoch > self._num_datas:
perm = np.arange(self._num_datas)
np.random.shuffle(perm)
self._datas = self._datas[perm]
self._labels = self._labels[perm]
start = 0
self._index_in_epoch = batch_size
assert batch_size <= self._num_datas
end = self._index_in_epoch
return self._datas[start:end],self._labels[start:end] def constructModel(self):
self.x = tf.placeholder(tf.float32, [None,self.x_dimen])
self.y = tf.placeholder(tf.float32,[None,1])
self.w = self.weight_variable([self.x_dimen,1])
self.b = self.bias_variable([1])
self.y_prec = tf.nn.bias_add(tf.matmul(self.x, self.w), self.b) mse = tf.reduce_mean(tf.squared_difference(self.y_prec, self.y))
l2 = tf.reduce_mean(tf.square(self.w))
self.loss = mse + 0.15*l2
self.train_step = tf.train.AdamOptimizer(0.1).minimize(self.loss) def train(self,x_train,y_train,x_test,y_test):
self._datas = x_train
self._labels = y_train
self._num_datas = x_train.shape[0]
for i in range(5000):
batch = self.next_batch(100)
self.sess.run(self.train_step,feed_dict={self.x:batch[0],self.y:batch[1]})
if i%10 == 0:
train_loss = self.sess.run(self.loss,feed_dict={self.x:batch[0],self.y:batch[1]})
print('step %d,test_loss %f' % (i,train_loss)) def predict_batch(self,arr,batch_size):
for i in range(0,len(arr),batch_size):
yield arr[i:i + batch_size] def predict(self, x_predict):
pred_list = []
for x_test_batch in self.predict_batch(x_predict,100):
pred = self.sess.run(self.y_prec, {self.x:x_test_batch})
pred_list.append(pred)
return np.vstack(pred_list)
训练模型并和 sklearn 库线性回归模型对比
#!/usr/bin/python
# -*- coding: utf-8 -* from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from linear_regression_model import linearRegressionModel as lrm if __name__ == '__main__':
x, y = make_regression(7000)
x_train,x_test,y_train, y_test = train_test_split(x, y, test_size=0.5)
y_lrm_train = y_train.reshape(-1, 1)
y_lrm_test = y_test.reshape(-1, 1) linear = lrm(x.shape[1])
linear.train(x_train, y_lrm_train,x_test,y_lrm_test)
y_predict = linear.predict(x_test)
print("Tensorflow R2: ", r2_score(y_predict.ravel(), y_lrm_test.ravel())) lr = LinearRegression()
y_predict = lr.fit(x_train, y_train).predict(x_test)
print("Sklearn R2: ", r2_score(y_predict, y_test)) #采用r2_score评分函数
执行结果:
step 2410,test_loss 26.531937
step 2420,test_loss 26.542793
step 2430,test_loss 26.533974
step 2440,test_loss 26.530540
step 2450,test_loss 26.551474
step 2460,test_loss 26.541542
step 2470,test_loss 26.560783
step 2480,test_loss 26.538080
step 2490,test_loss 26.535666
('Tensorflow R2: ', 0.99999612588302389)
('Sklearn R2: ', 1.0)
tensorFlow(二)线性回归的更多相关文章
- tensorflow实现线性回归、以及模型保存与加载
内容:包含tensorflow变量作用域.tensorboard收集.模型保存与加载.自定义命令行参数 1.知识点 """ 1.训练过程: 1.准备好特征和目标值 2.建 ...
- TensorFlow简单线性回归
TensorFlow简单线性回归 将针对波士顿房价数据集的房间数量(RM)采用简单线性回归,目标是预测在最后一列(MEDV)给出的房价. 波士顿房价数据集可从http://lib.stat.cmu.e ...
- 深度学习入门实战(二)-用TensorFlow训练线性回归
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :董超 上一篇文章我们介绍了 MxNet 的安装,但 MxNet 有个缺点,那就是文档不太全,用起来可能 ...
- 学习TensorFlow,线性回归模型
学习TensorFlow,在MNIST数据集上建立softmax回归模型并测试 一.代码 <span style="font-size:18px;">from tens ...
- 利用TensorFlow实现线性回归模型
准备数据: import numpy as np import tensorflow as tf import matplotlib.pylot as plt # 随机生成1000个点,围绕在y=0. ...
- tensorflow(二)----线程队列与io操作
一.队列和线程 1.队列: 1).tf.FIFOQueue(capacity, dtypes, name='fifo_queue') 创建一个以先进先出的顺序对元素进行排队的队列 参数: capaci ...
- TensorFlow(二):基本概念以及练习
一:基本概念 1.使用图(graphs)来表示计算任务 2.在被称之为会话(Session)的上下文(context)中执行图 3.使用tensor表示数据 4.通过变量(Variable)维护状态 ...
- tensorflow实现线性回归总结
1.知识点 """ 模拟一个y = 0.7x+0.8的案例 报警: 1.initialize_all_variables (from tensorflow.python. ...
- [Python]机器学习:Tensorflow实现线性回归
源码 #> tutorial:https://www.cnblogs.com/xianhan/p/9090426.html # 步骤一:构建模型 # 1.TensorFlow 中的线性模型 ## ...
- TensorFlow 多元线性回归【波士顿房价】
1数据读取 1.1数据集解读 1.2引入包 %matplotlib notebook import tensorflow as tf import matplotlib.pyplot as plt i ...
随机推荐
- C#设计模式(6)——原型模式(Prototype Pattern)(转)
一.引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在 ...
- 安装caffe-ssd或者caffe时make all,make pycaffe,make test运行慢的问题
之所有运行慢,是因为没有在这三条语句后面加上 -j,即没用全部的进程运行,不加-j 表示用单一进程运行,加上-j5表示用5个进程,-j不带数字表示用所有进程
- python_study-1
# Author:larlly'''函数1.在Python交互式命令行下,可以直接输入代码,然后执行,并立刻得到结果.2.文本编辑器推荐俩款 http://www.sublimetext.com/ h ...
- 浮点数(double、float)的格式化问题及处理
---恢复内容开始--- 平时常会面临浮点数的格式处理问题,下面就举例说一说常见的问题及处理: 1,科学计数法问题 一个浮点数123456789.10,在打印的时候变成了1.234567891E8,处 ...
- 文件上传中UUID的解读
UUID简介如下:1.简介UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software F ...
- web服务器集群(多台web服务器)后session如何同步和共享
在访问量上去以后,很多人会采用web集群的方式在满足逐渐增长的用户量.这时候就不得不面对一个问题,那就是在多个服务器下,每次请求都会因为负载均衡而分配到不同的服务器上.用户在登录服务器后,下一次请求被 ...
- windows升级node
之前用的node版本太低,不兼容webpack4.x,需要升级,网上搜索了许多方法,发现在windows下行不通 找到的教程都说全局安装node下的一个名为n的模块,这个模块是node专门用于版本管理 ...
- Learning-MySQL【1】:数据库初识及 MySQL 的安装
一.什么是数据 数据(Data):描述事务的符号记录,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中描述一个事物, ...
- tensorflow中batch normalization的用法
网上找了下tensorflow中使用batch normalization的博客,发现写的都不是很好,在此总结下: 1.原理 公式如下: y=γ(x-μ)/σ+β 其中x是输入,y是输出,μ是均值,σ ...
- 浅谈StringBuffer
StringBuffer,由名字可以看出,是一个String的缓冲区,也就是说一个类似于String的字符串缓冲区,和String不同的是,它可以被修改,而且是线程安全的.StringBuffer在任 ...