tensorflow实现KNN识别MNIST


Posted in Python onMarch 12, 2018

KNN算法算是最简单的机器学习算法之一了,这个算法最大的特点是没有训练过程,是一种懒惰学习,这种结构也可以在tensorflow实现。

KNN的最核心就是距离度量方式,官方例程给出的是L1范数的例子,我这里改成了L2范数,也就是我们常说的欧几里得距离度量,另外,虽然是叫KNN,意思是选取k个最接近的元素来投票产生分类,但是这里只是用了最近的那个数据的标签作为预测值了。

__author__ = 'freedom' 
import tensorflow as tf 
import numpy as np 
 
def loadMNIST(): 
 from tensorflow.examples.tutorials.mnist import input_data 
 mnist = input_data.read_data_sets('MNIST_data',one_hot=True) 
 return mnist 
def KNN(mnist): 
 train_x,train_y = mnist.train.next_batch(5000) 
 test_x,test_y = mnist.train.next_batch(200) 
 
 xtr = tf.placeholder(tf.float32,[None,784]) 
 xte = tf.placeholder(tf.float32,[784]) 
 distance = tf.sqrt(tf.reduce_sum(tf.pow(tf.add(xtr,tf.neg(xte)),2),reduction_indices=1)) 
 
 pred = tf.argmin(distance,0) 
 
 init = tf.initialize_all_variables() 
 
 sess = tf.Session() 
 sess.run(init) 
 
 right = 0 
 for i in range(200): 
  ansIndex = sess.run(pred,{xtr:train_x,xte:test_x[i,:]}) 
  print 'prediction is ',np.argmax(train_y[ansIndex]) 
  print 'true value is ',np.argmax(test_y[i]) 
  if np.argmax(test_y[i]) == np.argmax(train_y[ansIndex]): 
   right += 1.0 
 accracy = right/200.0 
 print accracy 
 
if __name__ == "__main__": 
 mnist = loadMNIST() 
 KNN(mnist)

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

Python 相关文章推荐
跟老齐学Python之编写类之二方法
Oct 11 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
PyTorch学习笔记之回归实战
May 28 Python
Python绘制的二项分布概率图示例
Aug 22 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
简单了解Python3里的一些新特性
Jul 13 Python
Django对models里的objects的使用详解
Aug 17 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
python 实现IP子网计算
Feb 18 Python
Python操作MySQL模拟银行转账
Mar 12 #Python
python3 图片referer防盗链的实现方法
Mar 12 #Python
tensorflow构建BP神经网络的方法
Mar 12 #Python
Python管理Windows服务小脚本
Mar 12 #Python
python实现教务管理系统
Mar 12 #Python
python编写弹球游戏的实现代码
Mar 12 #Python
python学生管理系统代码实现
Apr 05 #Python
You might like
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
Python中的id()函数指的什么
2017/10/17 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
python处理csv中的空值方法
2018/06/22 Python
windows下python安装小白入门教程
2018/09/18 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
应届生财务管理求职信
2013/11/06 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
学校推普周活动总结
2015/05/07 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
DE1107机评
2022/04/05 无线电