k-近鄰演算法
from numpy import * # python裡的計算包numpy
import operator # 運算子模組
import os
# 資料準備所需的函式
def createdataset():
group = array([
[1.0, 1.1],
[1.0, 1.0],
[0, 0],
[0, 0.1]
])labels = ['a', 'a', 'b', 'b']
return group, labels
# 測試時呼叫函式
group, labels = createdataset()
print("訓練資料:", group)
print("標籤:", labels)
# k-近鄰演算法核心函式
def classify0(inx, dataset, labels, k): # 輸入向量,訓練資料,標籤,引數k
datasetsize = dataset.shape[0] # 資料的個數
diffmat = tile(inx, (datasetsize, 1)) - dataset # tile()函式,求輸入資料與訓練資料對應值的相減
sqdiffmat = diffmat ** 2 # 平方
sqdistances = sqdiffmat.sum(axis=1) # 求和
distances = sqdistances ** 0.5 # 開根號
sorteddistindicies = distances.argsort() # 返回陣列值從小到大的索引
classcount = {} # 建立乙個字典,用於記錄每個例項對應的頻數
for i in range(k):
voteilabel = labels[sorteddistindicies[i]] # 選擇k個距離最小的點,對應標籤
classcount[voteilabel] = classcount.get(voteilabel, 0) + 1 # 統計頻數
sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=true) # 排序,reverse=true降序
# python2中用iteritems
return sortedclasscount[0][0] # 返回最多的那個資料
# tile函式
a = [0, 1, 2]
b = tile(a, 2)
print(b) # [0 1 2 0 1 2]
b = tile(a, (1, 2))
print(b) # [[0 1 2 0 1 2]]
b = tile(a, (2, 1))
print(b) # [[0 1 2],[0 1 2]]
# 測試
result = classify0([1.2, 1], group, labels, 3)
print("**標籤為:", result)
# 手寫識別系統
# 將影象格式轉化為向量 32*32 --> 1*1024
def img2vector(filename):
returnvect = zeros((1, 1024)) # 建立1*1024的0填充向量矩陣
fr = open(filename) # 開啟檔案
for i in range(32): # 讀取檔案的前32行,前32列
linestr = fr.readline()
for j in range(32):
returnvect[0, 32 * i + j] = int(linestr[j])
return returnvect # 返回每個影象的向量
testvector = img2vector('testnumber/0_13.txt')
print(testvector[0, 0:31])
print(testvector[0, 32:63])
# 測試手寫數字識別系統
handwritingclasstest()
深度學習之手寫數字識別
mnist是乙個入門級的計算機視覺資料集,它包含各種手寫數字 它也包含每一張對應的標籤,告訴我們這個是數字幾。比如,上面這四張的標籤分別是5,0,4,1。mnist資料集的官網是 yann lecun s website 這份 然後用下面的 匯入到你的專案裡面,也可以直接複製貼上到你的 檔案裡面。i...
kNN之手寫數字識別
import numpy as np listdir 列出給定目錄的檔名 from os import listdir import operator inx 分類的輸入向量,dataset 輸入的訓練樣本集,labels 標籤向量,k 近鄰數 defclassify0 inx,dataset,la...
tensorflow 之手寫體識別
原因 由於tensorflow相對於caffe更加靈活,準備轉戰tensorflow,昨天看了下大概的基本函式,今天打算先跑跑簡單的例子 tensorflow的安裝太簡單了,一行 搞定,網上很多教程,不一一列出。想安裝固定tensorflow版本 pip install tensorflow gpu...