tensorflow实现逻辑回归模型


Posted in Python onSeptember 08, 2018

逻辑回归模型

逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data
#下载好的mnist数据集存在F:/mnist/data/中
mnist = input_data.read_data_sets('F:/mnist/data/',one_hot = True)
print(mnist.train.num_examples)
print(mnist.test.num_examples)

trainimg = mnist.train.images
trainlabel = mnist.train.labels
testimg = mnist.test.images
testlabel = mnist.test.labels

print(type(trainimg))
print(trainimg.shape,)
print(trainlabel.shape,)
print(testimg.shape,)
print(testlabel.shape,)

nsample = 5
randidx = np.random.randint(trainimg.shape[0],size = nsample)

for i in randidx:
  curr_img = np.reshape(trainimg[i,:],(28,28))
  curr_label = np.argmax(trainlabel[i,:])
  plt.matshow(curr_img,cmap=plt.get_cmap('gray'))
  plt.title(""+str(i)+"th Training Data"+"label is"+str(curr_label))
  print(""+str(i)+"th Training Data"+"label is"+str(curr_label))
  plt.show()


x = tf.placeholder("float",[None,784])
y = tf.placeholder("float",[None,10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

#
actv = tf.nn.softmax(tf.matmul(x,W)+b)
#计算损失
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv),reduction_indices=1))
#学习率
learning_rate = 0.01
#随机梯度下降
optm = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

#求1位置索引值 对比预测值索引与label索引是否一样,一样返回True
pred = tf.equal(tf.argmax(actv,1),tf.argmax(y,1))
#tf.cast把True和false转换为float类型 0,1
#把所有预测结果加在一起求精度
accr = tf.reduce_mean(tf.cast(pred,"float"))
init = tf.global_variables_initializer()
"""
#测试代码 
sess = tf.InteractiveSession()
arr = np.array([[31,23,4,24,27,34],[18,3,25,4,5,6],[4,3,2,1,5,67]])
#返回数组的维数 2
print(tf.rank(arr).eval())
#返回数组的行列数 [3 6]
print(tf.shape(arr).eval())
#返回数组中每一列中最大元素的索引[0 0 1 0 0 2]
print(tf.argmax(arr,0).eval())
#返回数组中每一行中最大元素的索引[5 2 5]
print(tf.argmax(arr,1).eval()) 
J"""
#把所有样本迭代50次
training_epochs = 50
#每次迭代选择多少样本
batch_size = 100
display_step = 5

sess = tf.Session()
sess.run(init)

#循环迭代
for epoch in range(training_epochs):
  avg_cost = 0
  num_batch = int(mnist.train.num_examples/batch_size)
  for i in range(num_batch):
    batch_xs,batch_ys = mnist.train.next_batch(batch_size)
    sess.run(optm,feed_dict = {x:batch_xs,y:batch_ys})
    feeds = {x:batch_xs,y:batch_ys}
    avg_cost += sess.run(cost,feed_dict = feeds)/num_batch

  if epoch % display_step ==0:
    feeds_train = {x:batch_xs,y:batch_ys}
    feeds_test = {x:mnist.test.images,y:mnist.test.labels}
    train_acc = sess.run(accr,feed_dict = feeds_train)
    test_acc = sess.run(accr,feed_dict = feeds_test)
    #每五个epoch打印一次信息
    print("Epoch:%03d/%03d cost:%.9f train_acc:%.3f test_acc: %.3f" %(epoch,training_epochs,avg_cost,train_acc,test_acc))

print("Done")

程序训练结果如下:

Epoch:000/050 cost:1.177228655 train_acc:0.800 test_acc: 0.855
Epoch:005/050 cost:0.440933891 train_acc:0.890 test_acc: 0.894
Epoch:010/050 cost:0.383387268 train_acc:0.930 test_acc: 0.905
Epoch:015/050 cost:0.357281335 train_acc:0.930 test_acc: 0.909
Epoch:020/050 cost:0.341473956 train_acc:0.890 test_acc: 0.913
Epoch:025/050 cost:0.330586549 train_acc:0.920 test_acc: 0.915
Epoch:030/050 cost:0.322370980 train_acc:0.870 test_acc: 0.916
Epoch:035/050 cost:0.315942993 train_acc:0.940 test_acc: 0.916
Epoch:040/050 cost:0.310728854 train_acc:0.890 test_acc: 0.917
Epoch:045/050 cost:0.306357428 train_acc:0.870 test_acc: 0.918
Done

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
python图像和办公文档处理总结
May 28 Python
python变量命名的7条建议
Jul 04 Python
django 中QuerySet特性功能详解
Jul 25 Python
python生成器推导式用法简单示例
Oct 08 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
python3代码中实现加法重载的实例
Dec 03 Python
Python基础之进程详解
May 21 Python
Python sklearn分类决策树方法详解
Sep 23 Python
Django实现表单验证
Sep 08 #Python
python实现排序算法解析
Sep 08 #Python
TensorFlow实现Logistic回归
Sep 07 #Python
tensorflow实现简单逻辑回归
Sep 07 #Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 #Python
TensorFlow实现iris数据集线性回归
Sep 07 #Python
TensorFlow实现模型评估
Sep 07 #Python
You might like
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Python assert关键字原理及实例解析
2019/12/13 Python
Python内存映射文件读写方式
2020/04/24 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
六年级学生评语
2014/04/22 职场文书
工厂搬迁方案
2014/05/11 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
毕业生党员个人总结
2015/02/14 职场文书
中标通知书
2015/04/17 职场文书
员工规章制度范本
2015/08/07 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
Python 视频画质增强
2022/04/28 Python