TensorFlow实现创建分类器


Posted in Python onFebruary 06, 2018

本文实例为大家分享了TensorFlow实现创建分类器的具体代码,供大家参考,具体内容如下

创建一个iris数据集的分类器。

加载样本数据集,实现一个简单的二值分类器来预测一朵花是否为山鸢尾。iris数据集有三类花,但这里仅预测是否是山鸢尾。导入iris数据集和工具库,相应地对原数据集进行转换。

# Combining Everything Together
#----------------------------------
# This file will perform binary classification on the
# iris dataset. We will only predict if a flower is
# I.setosa or not.
#
# We will create a simple binary classifier by creating a line
# and running everything through a sigmoid to get a binary predictor.
# The two features we will use are pedal length and pedal width.
#
# We will use batch training, but this can be easily
# adapted to stochastic training.

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
import tensorflow as tf
from tensorflow.python.framework import ops
ops.reset_default_graph()

# 导入iris数据集
# 根据目标数据是否为山鸢尾将其转换成1或者0。
# 由于iris数据集将山鸢尾标记为0,我们将其从0置为1,同时把其他物种标记为0。
# 本次训练只使用两种特征:花瓣长度和花瓣宽度,这两个特征在x-value的第三列和第四列
# iris.target = {0, 1, 2}, where '0' is setosa
# iris.data ~ [sepal.width, sepal.length, pedal.width, pedal.length]
iris = datasets.load_iris()
binary_target = np.array([1. if x==0 else 0. for x in iris.target])
iris_2d = np.array([[x[2], x[3]] for x in iris.data])

# 声明批量训练大小
batch_size = 20

# 初始化计算图
sess = tf.Session()

# 声明数据占位符
x1_data = tf.placeholder(shape=[None, 1], dtype=tf.float32)
x2_data = tf.placeholder(shape=[None, 1], dtype=tf.float32)
y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)

# 声明模型变量
# Create variables A and b (0 = x1 - A*x2 + b)
A = tf.Variable(tf.random_normal(shape=[1, 1]))
b = tf.Variable(tf.random_normal(shape=[1, 1]))

# 定义线性模型:
# 如果找到的数据点在直线以上,则将数据点代入x2-x1*A-b计算出的结果大于0;
# 同理找到的数据点在直线以下,则将数据点代入x2-x1*A-b计算出的结果小于0。
# x1 - A*x2 + b
my_mult = tf.matmul(x2_data, A)
my_add = tf.add(my_mult, b)
my_output = tf.subtract(x1_data, my_add)

# 增加TensorFlow的sigmoid交叉熵损失函数(cross entropy)
xentropy = tf.nn.sigmoid_cross_entropy_with_logits(logits=my_output, labels=y_target)

# 声明优化器方法
my_opt = tf.train.GradientDescentOptimizer(0.05)
train_step = my_opt.minimize(xentropy)

# 创建一个变量初始化操作
init = tf.global_variables_initializer()
sess.run(init)

# 运行迭代1000次
for i in range(1000):
  rand_index = np.random.choice(len(iris_2d), size=batch_size)
  # rand_x = np.transpose([iris_2d[rand_index]])
  # 传入三种数据:花瓣长度、花瓣宽度和目标变量
  rand_x = iris_2d[rand_index]
  rand_x1 = np.array([[x[0]] for x in rand_x])
  rand_x2 = np.array([[x[1]] for x in rand_x])
  #rand_y = np.transpose([binary_target[rand_index]])
  rand_y = np.array([[y] for y in binary_target[rand_index]])
  sess.run(train_step, feed_dict={x1_data: rand_x1, x2_data: rand_x2, y_target: rand_y})
  if (i+1)%200==0:
    print('Step #' + str(i+1) + ' A = ' + str(sess.run(A)) + ', b = ' + str(sess.run(b)))


# 绘图
# 获取斜率/截距
# Pull out slope/intercept
[[slope]] = sess.run(A)
[[intercept]] = sess.run(b)

# 创建拟合线
x = np.linspace(0, 3, num=50)
ablineValues = []
for i in x:
 ablineValues.append(slope*i+intercept)

# 绘制拟合曲线
setosa_x = [a[1] for i,a in enumerate(iris_2d) if binary_target[i]==1]
setosa_y = [a[0] for i,a in enumerate(iris_2d) if binary_target[i]==1]
non_setosa_x = [a[1] for i,a in enumerate(iris_2d) if binary_target[i]==0]
non_setosa_y = [a[0] for i,a in enumerate(iris_2d) if binary_target[i]==0]
plt.plot(setosa_x, setosa_y, 'rx', ms=10, mew=2, label='setosa')
plt.plot(non_setosa_x, non_setosa_y, 'ro', label='Non-setosa')
plt.plot(x, ablineValues, 'b-')
plt.xlim([0.0, 2.7])
plt.ylim([0.0, 7.1])
plt.suptitle('Linear Separator For I.setosa', fontsize=20)
plt.xlabel('Petal Length')
plt.ylabel('Petal Width')
plt.legend(loc='lower right')
plt.show()

输出:

Step #200 A = [[ 8.70572948]], b = [[-3.46638322]]
Step #400 A = [[ 10.21302414]], b = [[-4.720438]]
Step #600 A = [[ 11.11844635]], b = [[-5.53361702]]
Step #800 A = [[ 11.86427212]], b = [[-6.0110755]]
Step #1000 A = [[ 12.49524498]], b = [[-6.29990339]]

TensorFlow实现创建分类器

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

Python 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
Python数组条件过滤filter函数使用示例
Jul 22 Python
python清除字符串里非字母字符的方法
Jul 02 Python
python相似模块用例
Mar 04 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python字符串的方法与操作大全
Jan 30 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
python 字典套字典或列表的示例
Dec 16 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
Python基于httpx模块实现发送请求
Jul 07 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
Python模拟随机游走图形效果示例
Feb 06 #Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 #Python
TensorFlow高效读取数据的方法示例
Feb 06 #Python
django使用xlwt导出excel文件实例代码
Feb 06 #Python
Python使用装饰器进行django开发实例代码
Feb 06 #Python
Python yield与实现方法代码分析
Feb 06 #Python
Django中间件工作流程及写法实例代码
Feb 06 #Python
You might like
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
PHP中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
php数组合并的二种方法
2014/03/21 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
新手上路标语
2014/06/20 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书