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转换字符串为摩尔斯电码的方法
Jul 06 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Python argparse模块应用实例解析
Nov 15 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
重写django的model下的objects模型管理器方式
May 15 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
python 爬取吉首大学网站成绩单
Jun 02 Python
Python中的套接字编程是什么?
Jun 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
hessian 在PHP中的使用介绍
2010/12/13 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
php简单的上传类分享
2016/05/15 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
JS中表单的使用小结
2014/01/11 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
解决Mac安装scrapy失败的问题
2018/06/13 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Python 画出来六维图
2019/07/26 Python
django 单表操作实例详解
2019/07/30 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
Linux的主要特性
2016/09/03 面试题
测绘工程本科生求职信
2013/10/10 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
单位提档介绍信
2015/10/22 职场文书
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python