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中用format函数格式化字符串的用法
Apr 08 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
详解Golang 与python中的字符串反转
Jul 21 Python
python将字典内容存入mysql实例代码
Jan 18 Python
python创建学生成绩管理系统
Nov 22 Python
python实现七段数码管和倒计时效果
Nov 23 Python
python获取array中指定元素的示例
Nov 26 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
python实现滑雪游戏
Feb 22 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
Python装饰器的应用场景代码总结
Apr 10 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 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绿色集成环境详解
2017/01/25 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
利用Python实现图书超期提醒
2016/08/02 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
领班岗位职责范文
2014/02/06 职场文书
房屋转让协议书范本
2014/04/11 职场文书
搞笑爱情保证书
2014/04/29 职场文书
美术专业自荐信
2014/07/07 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
高考升学宴答谢词
2015/01/20 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
反邪教学习心得体会
2016/01/15 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
JavaScript异步操作中串行和并行
2021/11/20 Javascript
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js