1. #!/usr/local/bin/python3
  2.  
  3. ##ljj [2]
  4. ##logic classify model
  5.  
  6. import tensorflow as tf
  7. import matplotlib.pyplot as plt
  8. import pandas as pd
  9. import numpy as np
  10.  
  11. data_set = pd.read_csv('LogiReg_data.txt',sep=',')
  12.  
  13. #data_set.describe()
  14.  
  15. w = tf.Variable(tf.random_normal([2,1]),dtype="float32")
  16. b = tf.Variable(tf.random_normal([1]),dtype="float32")
  17.  
  18. y = tf.placeholder(tf.float32)
  19. x = tf.placeholder(tf.float32,shape=(1,2))
  20.  
  21. loss_list = []
  22.  
  23. with tf.Session() as sess:
  24. #定义逻辑回归模型
  25. logits = tf.add(tf.matmul(x,w),b)
  26. y_predict = tf.nn.sigmoid(logits)
  27.  
  28. loss = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(logits=logits,labels=y))
  29.  
  30. train = tf.train.AdamOptimizer(0.001).minimize(loss)
  31. sess.run(tf.global_variables_initializer())
  32.  
  33. for j in range(1500):
  34. #shuffle data_set
  35. #index = np.random.permutation(100)
  36. #data_set = data_set.reindex(index)
  37.  
  38. for i in range(100):
  39. w_,b_,loss_,_ = sess.run([w,b,loss,train],feed_dict={x:data_set[i:i+1][['math','english']],y:data_set[i:i+1][['result']]})
  40. if j%100==0:
  41. print('epoch={}, w={},b={},loss={}'.format(j,w_,b_,loss_))
  42. loss_list.append(loss_)
  43. print('final result : ')
  44. print('w={},b={},loss={}'.format(w_,b_,loss_))
  45.  
  46. train_data = data_set.values
  47. x1 = train_data[:,0]
  48. x2 = train_data[:,1]
  49. y = train_data[:,-1:]
  50.  
  51. for x1p, x2p, yp in zip(x1, x2, y):
  52. if yp == 0:
  53. plt.scatter(x1p, x2p, marker='x', c='r')
  54. else:
  55. plt.scatter(x1p, x2p, marker='o', c='g')
  56.  
  57. # 根据参数得到直线
  58. x = np.linspace(20, 100, 10)
  59. y = []
  60. for i in x:
  61. y.append((i * -w_[1] - b_) / w_[0])
  62.  
  63. plt.plot(x, y)
  64. plt.show()

运行输出:

ljjdeMBP:logic_classify lingjiajun$ ./logic_regression.py

/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:205: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6

return f(*args, **kwds)

2018-05-06 21:48:14.420588: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

epoch=0, w=[[-0.87034857]

[ 0.13095166]],b=[ 1.48850453],loss=52.04541015625

epoch=100, w=[[ 0.01144427]

[ 0.0005749 ]],b=[ 0.58342618],loss=0.21249079704284668

epoch=200, w=[[ 0.02113499]

[ 0.01194377]],b=[-0.85776216],loss=0.16103345155715942

epoch=300, w=[[ 0.03020949]

[ 0.02251359]],b=[-2.18144464],loss=0.12141948938369751

epoch=400, w=[[ 0.03859403]

[ 0.03212684]],b=[-3.3784802],loss=0.092116579413414

epoch=500, w=[[ 0.04626059]

[ 0.04076466]],b=[-4.4525094],loss=0.07090871036052704

epoch=600, w=[[ 0.05323409]

[ 0.04850558]],b=[-5.41535854],loss=0.05559533089399338

epoch=700, w=[[ 0.059574  ]

[ 0.05546409]],b=[-6.28165531],loss=0.04442552104592323

epoch=800, w=[[ 0.06535295]

[ 0.06175429]],b=[-7.06552744],loss=0.03614450991153717

epoch=900, w=[[ 0.07064275]

[ 0.067476  ]],b=[-7.77926588],loss=0.029891693964600563

epoch=1000, w=[[ 0.07550841]

[ 0.07271299]],b=[-8.43318176],loss=0.02508264034986496

epoch=1100, w=[[ 0.08000626]

[ 0.07753391]],b=[-9.0357523],loss=0.021319210529327393

epoch=1200, w=[[ 0.08418395]

[ 0.0819957 ]],b=[-9.59397316],loss=0.01832636632025242

epoch=1300, w=[[ 0.08808059]

[ 0.08614379]],b=[-10.11344337],loss=0.015911955386400223

epoch=1400, w=[[ 0.09172987]

[ 0.09001698]],b=[-10.59893036],loss=0.01393833290785551

final result :

w=[[ 0.09512767]

[ 0.09361333]],b=[-11.05011368],loss=0.012320424430072308

基于tensorflow的逻辑分类的更多相关文章

  1. 基于tensorflow的文本分类总结(数据集是复旦中文语料)

    代码已上传到github:https://github.com/taishan1994/tensorflow-text-classification 往期精彩: 利用TfidfVectorizer进行 ...

  2. 基于TensorFlow的服装分类

    1.导包 #导入TensorFlow和tf.keras import tensorflow as tf from tensorflow import keras # Helper libraries ...

  3. 使用Python基于TensorFlow的CIFAR-10分类训练

    TensorFlow Models GitHub:https://github.com/tensorflow/models Document:https://github.com/jikexueyua ...

  4. tensorflow实现基于LSTM的文本分类方法

    tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实 ...

  5. 一文详解如何用 TensorFlow 实现基于 LSTM 的文本分类(附源码)

    雷锋网按:本文作者陆池,原文载于作者个人博客,雷锋网已获授权. 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用 ...

  6. Chinese-Text-Classification,用卷积神经网络基于 Tensorflow 实现的中文文本分类。

    用卷积神经网络基于 Tensorflow 实现的中文文本分类 项目地址: https://github.com/fendouai/Chinese-Text-Classification 欢迎提问:ht ...

  7. 基于 TensorFlow 在手机端实现文档检测

    作者:冯牮 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上运行一个神经网络的关键技术点 在卷积神经网络适用的领域里,已经出现了一些很经典的图像分类网络,比 ...

  8. 基于tensorflow的MNIST手写数字识别(二)--入门篇

    http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...

  9. 基于Tensorflow + Opencv 实现CNN自定义图像分类

    摘要:本篇文章主要通过Tensorflow+Opencv实现CNN自定义图像分类案例,它能解决我们现实论文或实践中的图像分类问题,并与机器学习的图像分类算法进行对比实验. 本文分享自华为云社区< ...

随机推荐

  1. gym 101081 E. Polish Fortress 几何

    E. Polish Fortress time limit per test 2.0 s memory limit per test 256 MB input standard input outpu ...

  2. mybatis分页插件PagePlugin

    查询的参数对象里面继承PageInfoWrapper类(也可以不继承这个类,但要保证查询参数对象里面必须要有一个PageInfo属性) 分页信息都在PageInfo这个类里,查询的时候,分页参数,填充 ...

  3. 理解SSL、HTTPS原理中的对称加密与非对称加密

    1.对称性加密 双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密. 简单来说就是:加密与解密都是同一个秘钥.   优点:通常在消息发送方需要加密大量数据时使用,算 ...

  4. React项目中使用HighCharts

    大家都知道BizCharts是基于react封装的一套图表工具,而HighCharts是基于jQuery的.但是由于本人对BizCharts甚是不熟,所以在react项目开发中选择了HighChart ...

  5. java基础 (三)之ConcurrentHashMap(转)

    一.背景: 线程不安全的HashMap     因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap.   效率低下的H ...

  6. IOS 下载app

    ---------------------------------------------------------------------------------------------------- ...

  7. three.js 第一篇:准备工作

    demo展示:https://www.hanjiafushi.com/three/index.html 1:复习向量知识 2:学习矩阵知识 3:推荐先看webGL入门指南,对一些基础性的概念有所了解 ...

  8. js 数组的pop(),push(),shift(),unshift()方法小结

    关于数组的一些操作方法小结: pop(),push(),shift(),unshift()四个方法都可改变数组的内容以及长度: 1.pop() :删除数组的最后一个元素,并返回被删除的这个元素的值: ...

  9. linux timing profile

    double getUnixTime(void) { struct timespec tv; ) ; return (((double) tv.tv_sec) + (double) (tv.tv_ns ...

  10. Python—列表操作

    列表 列表的使用: 列表是可变数据类型,因此列表的方法,都是直接修改列表原始值 list = ["panda","chimpanzee","zebra ...