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 flask实现分页效果
Jun 27 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python字典对象实现原理详解
Jul 01 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
python 字符串追加实例
Jul 20 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
python turtle 绘制太极图的实例
Dec 18 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 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导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
Vue组件选项props实例详解
2017/08/18 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
Python3实现连接SQLite数据库的方法
2014/08/23 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
索桥的故事教学反思
2014/02/06 职场文书
体育教师自我鉴定
2014/02/12 职场文书
项目经理任命书内容
2014/06/06 职场文书
增员口号大全
2014/06/18 职场文书
创先争优活动个人总结
2015/03/04 职场文书
雾霾停课通知
2015/04/24 职场文书
施工安全保证书
2015/05/09 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis