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 可爱的大小写
Sep 06 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
django 多数据库及分库实现方式
Apr 01 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
python 第三方库paramiko的常用方式
Feb 20 Python
Python进度条的使用
May 17 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+java实现自动新闻滚动窗口
2006/10/09 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
可实现多表单提交的javascript函数
2007/08/01 Javascript
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
Python中除法使用的注意事项
2014/08/21 Python
python查询mysql中文乱码问题
2014/11/09 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python使用turtle库绘制时钟
2020/03/25 Python
浅析python的Lambda表达式
2019/02/27 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
法国珠宝店:CLEOR
2017/01/29 全球购物
蛋白质世界:Protein World
2017/11/23 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
土建资料员岗位职责
2014/01/04 职场文书
难忘的一天教学反思
2014/04/30 职场文书
群教个人对照检查材料
2014/08/20 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis