具体knn算法概念参考knn代码python实现
具體knn算法概念參考knn代碼python實(shí)現(xiàn)
上面是參考《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》的代碼,和knn的思想
# _*_ encoding=utf8 _*_
import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 導(dǎo)入手寫體識(shí)別的數(shù)據(jù)
mnist = input_data.read_data_sets("../data", one_hot=True)
# 訓(xùn)練集和測(cè)試集
X_train, Y_train = mnist.train.next_batch(5000) # 數(shù)據(jù)和labels
X_test, Y_test = mnist.test.next_batch(100)
# 定義輸入
x_train = tf.placeholder(tf.float32, shape=(None,784))
x_test = tf.placeholder(tf.float32, shape=(784))
# L1距離也就是城市街區(qū)距離 |x1-x2|+|y1-y2|
distance = tf.reduce_sum(tf.abs(www.leyou1178.cn/? ?tf.add(x_train,tf.negative(x_test))),reduction_indices = 1)
# 返回最近的坐標(biāo),0縱軸 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(X_test)):
# 獲取當(dāng)前樣本的最近鄰索引,當(dāng)前樣本和每一個(gè)訓(xùn)練的樣本找一個(gè)最近的l1距離,得到這個(gè)最小距離的下標(biāo)
nn_index = sess.run(pred, feed_dict={x_train:X_train, x_test: X_test[i, :]})
# 由最鄰近索引找到label,然后最鄰近的label與真實(shí)標(biāo)簽比較 np.argmax找最大的下標(biāo)
# 由l1距離找到的最小值對(duì)應(yīng)的坐標(biāo),通過該最坐標(biāo)找到對(duì)應(yīng)行l(wèi)abel的最大值的下標(biāo),這個(gè)下標(biāo)對(duì)應(yīng)的就是數(shù)字的大小
print("預(yù)測(cè)次數(shù)", i, "預(yù)測(cè)標(biāo)簽:", np.argmax(Y_train[nn_index]),"真實(shí)標(biāo)簽:", np.argmax(Y_test[i]))
# 計(jì)算準(zhǔn)確率
if np.argmax(Y_www.xinghenyule.com train[nn_index]) www.089188.cn/==www.tianzunyule178.com? np.argmax(Y_test[i]):
accuracy += 1
print("Accuracy:", float(accuracy)/len(X_test))
轉(zhuǎn)載于:https://www.cnblogs.com/qwangxiao/p/9853327.html
總結(jié)
以上是生活随笔為你收集整理的具体knn算法概念参考knn代码python实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: coredata 数据库升级
- 下一篇: 三、Appium-python-UI自动