tensorflow實(shí)現(xiàn)KNN識(shí)別MNIST
KNN算法算是最簡(jiǎn)單的機(jī)器學(xué)習(xí)算法之一了,這個(gè)算法最大的特點(diǎn)是沒有訓(xùn)練過程,是一種懶惰學(xué)習(xí),這種結(jié)構(gòu)也可以在tensorflow實(shí)現(xiàn)。
KNN的最核心就是距離度量方式,官方例程給出的是L1范數(shù)的例子,我這里改成了L2范數(shù),也就是我們常說的歐幾里得距離度量,另外,雖然是叫KNN,意思是選取k個(gè)最接近的元素來投票產(chǎn)生分類,但是這里只是用了最近的那個(gè)數(shù)據(jù)的標(biāo)簽作為預(yù)測(cè)值了。
__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)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中tkinter無法同時(shí)顯示多個(gè)image的解決方法及pack與place解析
這篇文章主要介紹了Python中tkinter無法同時(shí)顯示多個(gè)image的解決方法及pack與place解析,本文給大家分享問題原因解析及解決方案,需要的朋友可以參考下2023-02-02
Python實(shí)用小技巧之判斷輸入是否為漢字/英文/數(shù)字
這篇文章主要給大家介紹了關(guān)于Python實(shí)用小技巧之判斷輸入是否為漢字/英文/數(shù)字的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06
Python運(yùn)行時(shí)修改業(yè)務(wù)SQL代碼
這篇文章主要介紹了Python運(yùn)行時(shí)修改業(yè)務(wù)SQL代碼,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
使用Scrapy框架爬取網(wǎng)頁并保存到Mysql的實(shí)現(xiàn)
本文主要介紹了使用Scrapy框架爬取網(wǎng)頁并保存到Mysql的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
python人工智能tensorflow優(yōu)化器Optimizer算法匯總
這篇文章主要為大家介紹了python人工智能tensorflowtf優(yōu)化器Optimizer算法匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python中open函數(shù)對(duì)文件處理的使用教程
open()函數(shù)的作用是打開一個(gè)文件,并返回一個(gè)file對(duì)象(即文件對(duì)象),下面這篇文章主要給大家介紹了關(guān)于python中open函數(shù)對(duì)文件處理的相關(guān)資料,需要的朋友可以參考下2022-06-06
Anaconda+Pycharm環(huán)境下的PyTorch配置方法
這篇文章主要介紹了Anaconda+Pycharm環(huán)境下的PyTorch配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python GUI庫圖形界面開發(fā)之PyQt5輸入對(duì)話框QInputDialog詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5輸入對(duì)話框QInputDialog詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02
django中使用POST方法獲取POST數(shù)據(jù)
這篇文章主要介紹了django中使用POST方法獲取POST數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

