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下的多进程编程
Apr 28 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
Python基础知识_浅谈用户交互
May 31 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
python将视频转换为全字符视频
Apr 26 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
jenkins+python自动化测试持续集成教程
May 12 Python
python里反向传播算法详解
Nov 22 Python
python多线程和多进程关系详解
Dec 14 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实现获取图片颜色值的方法
2014/07/11 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
JS input 数字验证代码
2009/07/30 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
Python中的Classes和Metaclasses详解
2015/04/02 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
python3去掉string中的标点符号方法
2019/01/22 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python递归法解决棋盘分割问题
2019/07/17 Python
对Python函数设计规范详解
2019/07/19 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
婴儿地球:Baby Earth
2018/12/25 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
法学院方阵解说词
2014/01/29 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
毕业生实习证明
2014/09/19 职场文书
2015年教师节新闻稿
2015/07/17 职场文书