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随机生成彩票号码的方法
Mar 05 Python
Python中关于使用模块的基础知识
May 24 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
详解Python中for循环是如何工作的
Jun 30 Python
基于Python代码编辑器的选用(详解)
Sep 13 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
用Python实现数据的透视表的方法
Nov 16 Python
python 递归相关知识总结
Mar 03 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
用PHP调用数据库的存贮过程!
2006/10/09 PHP
Destoon模板制作简明教程
2014/06/20 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
javascript Base类 包含基本的方法
2009/07/22 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
Vue表单实例代码
2016/09/05 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python字符串对其居中显示的方法
2015/07/11 Python
python实现三次样条插值
2018/12/17 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
Django更新models数据库结构步骤
2020/04/01 Python
python 自动识别并连接串口的实现
2021/01/19 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
消防战士优秀事迹材料
2014/02/13 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
运动会加油口号
2014/06/07 职场文书
三八活动策划方案
2014/08/17 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书