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常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
Python出现segfault错误解决方法
Apr 16 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
python实现学员管理系统
Feb 26 Python
eclipse创建python项目步骤详解
May 10 Python
python找出因数与质因数的方法
Jul 25 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
python 实现图片批量压缩的示例
Dec 18 Python
python通过新建环境安装tfx的问题
May 20 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/01/07 PHP
php密码生成类实例
2014/09/24 PHP
php二维码生成
2015/10/19 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python BS4库的安装与使用详解
2018/08/08 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
网络信息管理员岗位职责
2014/01/05 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
效能监察建议书
2014/05/19 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS