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简单实现socket信息发送与监听功能示例
Jan 03 Python
Python加载带有注释的Json文件实例
May 23 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Python实现最大子序和的方法示例
Jul 05 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
django创建超级用户过程解析
Sep 18 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
Python matplotlib可视化实例解析
Jun 01 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
Linux系统下升级pip的完整步骤
Jan 31 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邮件管理器源码
2016/01/06 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
Jquery性能优化详解
2014/05/15 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
Python Grid使用和布局详解
2018/06/30 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
python获取引用对象的个数方式
2019/12/20 Python
python实现图像全景拼接
2020/03/27 Python
python复合条件下的字典排序
2020/12/18 Python
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
企业给企业的表扬信
2014/01/13 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
MySQL中一条update语句是如何执行的
2022/03/16 MySQL