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 相关文章推荐
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
python实现微信远程控制电脑
Feb 22 Python
详解Django之auth模块(用户认证)
Apr 17 Python
Django开发的简易留言板案例详解
Dec 04 Python
对python中类的继承与方法重写介绍
Jan 20 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Django中celery执行任务结果的保存方法
Jul 12 Python
解决python使用list()时总是报错的问题
May 05 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
Python图像处理之图像拼接
Apr 28 Python
Python中的socket网络模块介绍
Jul 23 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 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
python3实现多线程聊天室
2018/12/12 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python如何更新包
2020/06/11 Python
python和js交互调用的方法
2020/06/23 Python
管理学院毕业生自荐信范文
2014/03/10 职场文书
股东合作协议书范本
2014/04/14 职场文书
科技工作者先进事迹
2014/08/16 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
小学英语教学随笔
2015/08/14 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript