tensorflow实现简单逻辑回归


Posted in Python onSeptember 07, 2018

逻辑回归是机器学习中很简答的一个栗子,这篇文章就是要介绍如何使用tensorflow实现一个简单的逻辑回归算法。

逻辑回归可以看作只有一层网络的前向神经网络,并且参数连接的权重只是一个值,而非矩阵。公式为:y_predict=logistic(X*W+b),其中X为输入,W为输入与隐含层之间的权重,b为隐含层神经元的偏置,而logistic为激活函数,一般为sigmoid或者tanh, y_predict为最终预测结果。

逻辑回归是一种分类器模型,需要木便函数不断的优化参数,这里目标函数为y_predict与真实标签Y之间的L2距离,使用随机梯度下降算法来更新权重和偏置。 废话不多说,贴代码:

# -*- coding:utf-8 -*-
#功能: 使用tensorflow实现一个简单的逻辑回归
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
 
#创建占位符
X=tf.placeholder(tf.float32)
Y=tf.placeholder(tf.float32)
 
#创建变量
#tf.random_normal([1])返回一个符合正太分布的随机数
w=tf.Variable(tf.random_normal([1],name='weight'))
b=tf.Variable(tf.random_normal([1],name='bias'))
 
y_predict=tf.sigmoid(tf.add(tf.mul(X,w),b))
num_samples=400
cost=tf.reduce_sum(tf.pow(y_predict-Y,2.0))/num_samples
 
#学习率
lr=0.01
optimizer=tf.train.AdamOptimizer().minimize(cost)
 
#创建session 并初始化所有变量
num_epoch=500
cost_accum=[]
cost_prev=0
#np.linspace()创建agiel等差数组,元素个素为num_samples
xs=np.linspace(-5,5,num_samples)
ys=np.sin(xs)+np.random.normal(0,0.01,num_samples)
 
with tf.Session() as sess:
  #初始化所有变量
  sess.run(tf.initialize_all_variables())
  #开始训练
  for epoch in range(num_epoch):
    for x,y in zip(xs,ys):
      sess.run(optimizer,feed_dict={X:x,Y:y})
    train_cost=sess.run(cost,feed_dict={X:x,Y:y})
    cost_accum.append(train_cost)
    print "train_cost is:",str(train_cost)
 
    #当误差小于10-6时 终止训练
    if np.abs(cost_prev-train_cost)<1e-6:
      break
    #保存最终的误差
    cost_prev=train_cost
#画图 画出每一轮训练所有样本之后的误差
plt.plot(range(len(cost_accum)),cost_accum,'r')
plt.title('Logic Regression Cost Curve')
plt.xlabel('epoch')
plt.ylabel('cost')
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
快速了解Python相对导入
Jan 12 Python
Python yield与实现方法代码分析
Feb 06 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
python numpy数组复制使用实例解析
Jan 10 Python
Python守护进程实现过程详解
Feb 10 Python
python numpy--数组的组合和分割实例
Feb 24 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
Python selenium爬取微博数据代码实例
May 22 Python
如何在Python中创建二叉树
Mar 30 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 #Python
TensorFlow实现iris数据集线性回归
Sep 07 #Python
TensorFlow实现模型评估
Sep 07 #Python
使用tensorflow实现线性svm
Sep 07 #Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 #Python
详解python while 函数及while和for的区别
Sep 07 #Python
使用TensorFlow实现SVM
Sep 06 #Python
You might like
基于PHP异步执行的常用方式详解
2013/06/03 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
python daemon守护进程实现
2016/08/27 Python
Django内容增加富文本功能的实例
2017/10/17 Python
Python 函数基础知识汇总
2018/03/09 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
深入了解Python enumerate和zip
2020/07/16 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
自主招生自荐信格式
2013/12/03 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
雷锋之歌观后感
2015/06/10 职场文书
Python实现机器学习算法的分类
2021/06/03 Python
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Python作用域和名称空间的详细介绍
2022/04/13 Python