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实现实例
Apr 26 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
python+opencv实现的简单人脸识别代码示例
Nov 14 Python
python 输出上个月的月末日期实例
Apr 11 Python
使用matplotlib画散点图的方法
May 25 Python
Django分页功能的实现代码详解
Jul 29 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
为什么说python更适合树莓派编程
Jul 20 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
python爬取招聘要求等信息实例
Nov 20 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
php使用cookie保存登录用户名的方法
2015/01/26 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python网页请求urllib2模块简单封装代码
2014/02/07 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python reverse反转部分数组的实例
2018/12/13 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
python单例设计模式实现解析
2020/01/07 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
武汉高蓝德国际.net机试
2016/06/24 面试题
学前教育求职自荐信范文
2013/12/25 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
高中军训感言800字
2014/03/05 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
什么是Python装饰器?如何定义和使用?
2022/04/11 Python