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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python 魔法函数实例及解析
Sep 25 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
AUC计算方法与Python实现代码
Feb 28 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
怎样写留学自荐信
2013/11/11 职场文书
四年级语文教学反思
2014/02/05 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
四查四看整改措施
2014/09/19 职场文书
法定代表人授权委托书
2014/09/19 职场文书
结婚十年感言
2015/07/31 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技