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 解析XML文件
Apr 15 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
django 修改server端口号的方法
May 14 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
详解Django CAS 解决方案
Oct 30 Python
Python如何访问字符串中的值
Feb 09 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 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实现的在线人员函数库
2008/04/09 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
Javascript String.replace的妙用
2009/09/08 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
浅析Python中的多条件排序实现
2016/06/07 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python中requests和https使用简单示例
2018/01/18 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
亿企通软件测试面试题
2012/04/10 面试题
机关作风整顿个人整改措施2014
2014/09/17 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
导游词之崇武古城
2019/10/07 职场文书
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers