tensorflow实现KNN识别MNIST

作者:freedom098 时间:2021-08-10 06:41:50 

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)

来源:http://blog.csdn.net/freedom098/article/details/52117330

标签:tensorflow,KNN,MNIST
0
投稿

猜你喜欢

  • Python中正反斜杠(‘/’和‘\\’)的意义与用法

    2023-01-22 14:45:04
  • Python 中的反转字符串reversed(),切片

    2021-05-27 15:03:06
  • JS高阶函数原理与用法实例分析

    2024-05-09 10:36:21
  • Python错误+异常+模块总结

    2023-07-26 03:18:19
  • Go语言常用条件判断空值逻辑的使用

    2024-04-25 15:10:07
  • 浅谈Python2之汉字编码为unicode的问题(即类似\\xc3\\xa4)

    2021-12-14 07:07:19
  • 分析详解python多线程与多进程区别

    2022-01-19 01:13:54
  • 深入解析Python编程中super关键字的用法

    2021-08-24 18:17:10
  • python 定义函数 返回值只取其中一个的实现

    2022-07-29 21:28:21
  • 记一次Vue中$route序列号报错

    2024-05-02 17:04:03
  • JavaScript html5 canvas实现图片上画超链接

    2024-04-28 10:19:19
  • Javascript学习第一季 三

    2008-06-27 13:08:00
  • Python面向对象编程中关于类和方法的学习笔记

    2023-07-20 00:13:37
  • python中利用numpy.array()实现俩个数值列表的对应相加方法

    2022-08-26 01:49:25
  • asp无组件备份与还原数据库

    2007-09-24 13:19:00
  • ASP简单实现数字和字母验证码

    2008-10-23 13:52:00
  • SQL Server 2005的cmd_shell组件的开启方法

    2024-01-19 15:18:06
  • Python中的函数参数(位置参数、默认参数、可变参数)

    2021-03-24 21:57:38
  • 区别div和span、relative和absolute、display和visibility

    2009-12-13 12:18:00
  • 列表模块是否需要标题

    2009-06-25 14:11:00
  • asp之家 网络编程 m.aspxhome.com