TensorFlow经典案例2:实现最近邻算法

本次案例需要大家了解关于手写数字识别(mnist)的数据集的特点和结构:

#TensorFlow实现最近邻算法
#次案例的前提是了解mnist数据集(手写数字识别)
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
#导入mnist数据集
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

#5000样本作为训练集 每一个训练和测试样本的数据都是1*784的矩阵,标签是1*10的矩阵并且采用one-hot编码
X_train , Y_train = mnist.train.next_batch(5000)
#600样本作为测试集
X_test , Y_test = mnist.test.next_batch(200)

#创建占位符 None代表将来可以选多个样本的,如:[60,784]代表选取60个样本,每一个样本的是784列
x_train = tf.placeholder("float",[None,784])
x_test = tf.placeholder("float",[784])#x_test代表只用一个样本
#计算距离
#tf.negative(-2)的输出的结果是2
#tf.negative(2)的输出的结果是-2
#reduce_sum的参数reduction_indices解释见下图
#计算一个测试样本和训练样本的的距离
#distance 返回的是N个训练样本的和单个测试样本的距离
distance = tf.reduce_sum(tf.abs(tf.add(x_train,tf.negative(x_test))),reduction_indices=1)
#的到距离最短的训练样本的索引
prediction = tf.arg_min(distance,0)
accuracy = 0
#初始化变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)

    for i in range(len(X_test)):#遍历整个测试集,每次用一个的测试样本和整个训练样本的做距离运算
        #获得最近邻
        # 获得训练集中与本次参与运算的测试样本最近的样本编号
        nn_index = sess.run(prediction,feed_dict={x_train:X_train,x_test:X_test[i,:]})
        #打印样本编号的预测类别和准确类别
        print("Test",i,"Prediction:",np.argmax(Y_train[nn_index]),"True Class:",np.argmax(Y_test[i]))
        if np.argmax(Y_train[nn_index]) == np.argmax(Y_test[i]):
            #如果预测正确。更新准确率
            accuracy += 1./len(X_test)
    print("完成!")
    print("准确率:",accuracy)

  输出:

Test 196 Prediction: 7 True Class: 9
Test 197 Prediction: 9 True Class: 9
Test 198 Prediction: 1 True Class: 9
Test 199 Prediction: 9 True Class: 9
完成!
准确率: 0.9150000000000007

公众号:一个有趣的机器学习社区

(分享大量AI大数据资源)

时间: 2024-10-13 00:54:10

TensorFlow经典案例2:实现最近邻算法的相关文章

TensorFlow经典案例3:实现线性回归

TensorFlow实现线性回归 #实现线性回归 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt rng = np.random learn_rate = 0.01 training_epochs = 1000 display_step = 50 #生成训练数据 train_X = np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,

TensorFlow经典案例4:实现logistic回归

#TensorFlow实现Logistic 回归 import tensorflow as tf #导入手写数字集 from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) #学习参数 learning_rate = 0.01 training_epoches = 25 batch_size = 100

TensorFlow经典案例5:对前4次案例的一些思考与总结

一.关于numpy的random的使用: 1.rand随机值 In [2]: np.random.rand(3,2) Out[2]: array([[ 0.04287046, 0.68212741], [ 0.25322512, 0.50287344], [ 0.75530125, 0.55308281]])   2.randn返回样本具有标准正太分布 In [4]: np.random.randn(3,2) Out[4]: array([[-2.26840223, -0.24799291],

[CSDN] OpenCL用于计算机领域的13个经典案例

http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl-can-be-used 摘要:当使用加速器和OpenCL时,哪种类型的算法更加快速?来自弗吉尼亚理工大学的Wu Feng教授和他的团队例举了一份算法列表,分享了OpenCL常被用于计算机领域的13个经典案例. 哪种算法可以最好的映射GPU及矢量处理器呢?换句话说,当使用加速器和OpenCL时,哪种类型的算法更加快速? 来自弗吉尼亚理工大学的Wu

资源 | 数十种TensorFlow实现案例汇集:代码+笔记

选自 Github 机器之心编译 参与:吴攀.李亚洲 这是使用 TensorFlow 实现流行的机器学习算法的教程汇集.本汇集的目标是让读者可以轻松通过案例深入 TensorFlow. 这些案例适合那些想要清晰简明的 TensorFlow 实现案例的初学者.本教程还包含了笔记和带有注解的代码. 项目地址:https://github.com/aymericdamien/TensorFlow-Examples 教程索引 0 - 先决条件 机器学习入门: 笔记:https://github.com/

数十种TensorFlow实现案例汇集:代码+笔记

这是使用 TensorFlow 实现流行的机器学习算法的教程汇集.本汇集的目标是让读者可以轻松通过案例深入 TensorFlow. 这些案例适合那些想要清晰简明的 TensorFlow 实现案例的初学者.本教程还包含了笔记和带有注解的代码. 项目地址:https://github.com/aymericdamien/TensorFlow-Examples 教程索引 0 - 先决条件 机器学习入门: 笔记:https://github.com/aymericdamien/TensorFlow-Ex

10-K最近邻算法

本章内容: 学习使用K最近邻算法创建分类系统 学习特征抽取 学习回归,即预测数值,如明天的股价或用户对某部电影对喜欢程度 学习K最近邻算法的应用案例和局限性 1.橙子还是柚子 猜这个水果是柚子,还是橙子? 如果又红又大,很可能是柚子:反之可能是橙子. 如何判断这个水果是橙子,还是柚子? 一种办法是看它的邻居. 在这三个邻居中,橙子比柚子多,因此这个水果很可能是橙子.这就是K最近邻算法. 2.创建推荐系统 2.1特征抽取 2.2回归 2.3挑选合适的特征 3.机器学习简介 3.1 OCR 3.2创

多线程十大经典案例之一 双线程读写队列数据

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多线程第四篇一个经典的多线程同步问题>及解决多线程同步互斥的常用方法

java多线程经典案例

/** * 典型案例:子线程执行10次,主线程执行100次,两者交替50次. */ package cn.itcast.lesson4; public class TestWaitNotify { public static void main(String[] args){ final Business business= new Business(); new Thread( new Runnable() { public void run() { for(int i=1;i<=50;i++