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中处理字符串之isalpha()方法的使用
May 18 Python
解决Python requests 报错方法集锦
Mar 19 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
Pygame的程序开始示例代码
May 07 Python
python操作redis数据库的三种方法
Sep 10 Python
使用Python通过企业微信应用给企业成员发消息
Apr 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中date()日期函数有关参数整理
2011/07/19 PHP
javascript replace()正则替换实现代码
2010/02/26 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
Python 异常处理实例详解
2014/03/12 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python bisect模块原理及常见实例
2020/06/17 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
仓库管理专业个人的自我评价
2013/12/30 职场文书
承办会议欢迎词
2014/01/17 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
模范教师材料大全
2014/12/16 职场文书
先进人物事迹材料
2014/12/29 职场文书
会计岗位工作总结
2015/08/12 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
python实现的web监控系统
2021/04/27 Python