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 快速排序代码
Nov 23 Python
Python实现的简单发送邮件脚本分享
Nov 07 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
python实现自动重启本程序的方法
Jul 09 Python
基于python socketserver框架全面解析
Sep 21 Python
Python之文字转图片方法
May 10 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
Python爬取数据并实现可视化代码解析
Aug 12 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循环table实现一行两列显示的方法
2015/06/04 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
js选择器全面解析
2016/06/27 Javascript
js重写方法的简单实现
2016/07/10 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
python妹子图简单爬虫实例
2015/07/07 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
集体备课反思
2014/02/12 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
优秀教师事迹材料
2014/12/15 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
债务纠纷起诉书
2015/05/20 职场文书
《叶问2》观后感
2015/06/15 职场文书
小学生暑假安全公约
2015/07/14 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS