04使用tensorflow实现knn算法,mnist数据集

用tensorflow实现knn算法,使用的mnist数据集

import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

# 加载数据集
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

# 生成数据集,用knn算法时会将数据全部加载到内存中,所以knn并不太适合大数据,此例子仅仅作演示
Xtr, Ytr = mnist.train.next_batch(5000)
Xte, Yte = mnist.test.next_batch(200)

# 定义占位节点
xtr = tf.placeholder("float", [None, 784])
xte = tf.placeholder("float", [784])

# knn算法的实现
distance = tf.reduce_sum(tf.abs(tf.add(xtr, tf.negative(xte))), reduction_indices=1)
pred = 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(Xte)):

        nn_index = sess.run(pred, feed_dict={xtr: Xtr, xte: Xte[i, :]})

        print("Test", i, "Prediction:", np.argmax(Ytr[nn_index]), \
              "True Class:", np.argmax(Yte[i]))

        if np.argmax(Ytr[nn_index]) == np.argmax(Yte[i]):
            accuracy += 1. / len(Xte)
    print("Done!")
    print("Accuracy:", accuracy)
# Accuracy: 0.9400000000000007
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 与 TensorFlow 的初次相遇 https://jorditorres.org/wp-content/upl...
    布客飞龙阅读 9,333评论 2 89
  • 这张照片 是两手指放在镜头两侧 再加上闪光而成的
    朴樕_阅读 1,209评论 0 0
  • 文/于谊 九零后已经开始老了,你说,人是不是只有两种状态,一种正在长大,一种正在老去,没有一种此刻已经长大,而且此...
    于谊阅读 4,578评论 4 2
  • 【回顾】 读书。 本周,经济学小白终于破冰了,读完了第一本经济学作品——《小岛经济学》。本书系奥地利经...
    阳光的味道_0c45阅读 1,105评论 0 1
  • 1、藏在坚硬外壳下,酿出柔软而鲜嫩的日子。 ——...
    温百媚阅读 4,185评论 0 1