knn近鄰演算法偽**:
對未知類別屬性的資料集中的每個點依次執行以下操作:
(1) 計算已知類別資料集中的點與當前點之間的距離;
(2) 按照距離遞增次序排序;
(3) 選取與當前點距離最小的k個點;
(4) 確定前k個點所在類別的出現頻率;
(5) 返回前k個點出現頻率最高的類別作為當前點的**分類。
import tensorflow as tf
import operator
#構造資料集
def createdataset():
group=np.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()
def classify0(inx,dataset,labels,k):
datasetsize=dataset.shape[0]
#numpy.tile(a,reps)
#tile共有2個引數,a指待輸入陣列,reps則決定a重複的次數。整個函式用於重複陣列a來構建新的陣列。
diffmat=np.tile(inx,(datasetsize,1))-dataset
sqdiffmat=diffmat**2
sqdistances=sqdiffmat.sum(axis=1)
distances=sqdistances**0.5
sorteddistindicies=distances.argsort()#返回陣列從小到大的索引值
#例如按照資料[11,22,33,44]依次計算距離的,然後根據距離大小排序,如3下標代表的資料最小,然後
#是2,1,0,返回的索引值sorteddistindicies=[3,2,1,0]對應的值分別為[44,33,22,11]
classcount={}
for i in range(k):
voteilabel=labels[sorteddistindicies[i]]#下標對應著相應的標籤
#初始化classcount = {}時,此時輸入classcount,輸出為: classcount = {}
#classcount.get()返回字典classcount中voteilabel元素對應的值
#當第一次遇到新的label時,將新的label新增到字典classcount,並初始化其對應數值為0
#然後+1,即該label已經出現過一次,此時輸入classcount,輸出為:classcount =
#當第二次遇到同乙個label時,classcount.get(voteilabel,0)返回對應的數值(此時括號內的0不起作
#用,因為已經初始化過了),然後+1,此時輸入classcount,輸出為:classcount =
classcount[voteilabel]=classcount.get(voteilabel,0)+1
#iteritems()將字典中的項按列表返回
#key,按照key給的關鍵字進行排序
sortedclasscount=sorted(classcount.items(),key=operator.itemgetter(1),
reverse=true)
print("sorted",sortedclasscount[0][0])
classify0([0,0],group,labels,3)
classcount的輸出值是 機器學習實戰 KNN演算法(K近鄰)
演算法實現 演算法應用舉例 k近鄰演算法是機器學習最簡單的演算法之一,也是機器學習的初步,其主要通過大量的資料分析,判斷一組未知資料和各資料的距離,從而對一組未知資料進行相應的歸類。而所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。所以knn演算法並不是十分完...
《機器學習實戰》學習筆記一 k 近鄰演算法(kNN)
k 近鄰演算法 以下簡稱knn 是分類演算法中比較簡單的一種,knn演算法的一般流程為 1 收集資料,如從檔案中匯入資料 2 準備資料,將資料轉化為適合計算的格式,如矩陣的形式 3 分析資料 4 測試資料,計算分類的錯誤率 5 應用演算法,給定輸入,得到相應的輸出,指出改資料屬於哪一種分類。knn演...
《機器學習實戰》 k近鄰分類演算法kNN
knn全稱為k nearest neighbors,是模式識別中比較簡單的一種演算法,可以用於分類和回歸。使用時,輸入的訓練樣本帶有標籤,輸出根據是用於分類還是回歸 分類問題的輸出為 找出k個和要 物件最近鄰的樣本,這k個樣本中,大多數 屬於哪一類即為 物件的分類標籤。回歸問題的輸出為 找出k個和回...