机器学习-学习笔记(四) tensorflow+mnist数据集,实现最邻近算法

KNN在Mnist数据集上的实现,用的是L1距离(各像素差的绝对值的和),tf实现,十分简单的算法在MNIST上效果不错,测试正确率能大概在0.96

import numpy
import input_data
import tensorflow as tf

mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)

x = tf.placeholder("float", [None, 784])
test = tf.placeholder("float", [784])

distance = tf.reduce_sum(tf.abs(tf.add(x,  tf.negative(test))),axis=1)     

index = tf.arg_min(distance, 0)             
init = tf.global_variables_initializer()

train_sample, train_label = mnist.train.next_batch(10000)
test_sample, test_label = mnist.test.next_batch(500)

sess = tf.Session()
sess.run(init)
accury=0
for i in range(len(test_sample)):
    answer_index = sess.run(index, feed_dict={x: train_sample, test: test_sample[i]})
    print('test:', i, "answer_index:", answer_index, "预测类别:",numpy.argmax(train_label[answer_index]), "真实类别:", numpy.argmax(test_label[i]),)
    if numpy.argmax(train_label[answer_index])==numpy.argmax(test_label[i]):
        accury=accury+1
print(accury/len(test_sample))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值