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 合并文件的具体实例
Aug 08 Python
python实现根据图标提取分类应用程序实例
Sep 28 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python复制文件操作实例详解
Nov 10 Python
整理Python 常用string函数(收藏)
May 30 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
python+splinter自动刷新抢票功能
Sep 25 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
python pillow模块使用方法详解
Aug 30 Python
Python如何定义接口和抽象类
Jul 28 Python
Python如何实现感知器的逻辑电路
Dec 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
Sony CFR 320 修复改造
2020/03/14 无线电
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
vue组件添加事件@click.native操作
2020/10/30 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Python中return语句用法实例分析
2015/08/04 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python3 读写文件换行符的方法
2018/04/09 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
详解django.contirb.auth-认证
2018/07/16 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python turtle 绘制太极图的实例
2019/12/18 Python
python和php哪个更适合写爬虫
2020/06/22 Python
Python分类测试代码实例汇总
2020/07/23 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
2014年银行员工工作总结
2014/11/12 职场文书
高中英语教学反思范文
2016/03/02 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
介绍一下28个JS常用数组方法
2022/05/06 Javascript
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS