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生成验证码图片代码分享
Jan 28 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
Python绘制七段数码管实例代码
Dec 20 Python
详解Django中间件的5种自定义方法
Jul 26 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
python对于requests的封装方法详解
Jan 03 Python
python对象转字典的两种实现方式示例
Nov 07 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Python字符串三种格式化输出
Sep 17 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 Python
微信小程序调用python模型
Apr 21 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
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python set集合使用方法解析
2019/11/05 Python
python 一维二维插值实例
2020/04/22 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
数据库方面面试题
2012/04/22 面试题
25道Java面试题集合
2013/05/21 面试题
专升本自我鉴定
2013/10/10 职场文书
运动会解说词50字
2014/01/18 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
工作失职自我检讨书
2015/05/05 职场文书