#numpy中shape[0]返回陣列的行數,shape[1]返回列數
datasetsize = dataset.shape[0]
#將intx在橫向重複datasetsize次,縱向重複1次
#例如intx=([1,2])--->([[1,2],[1,2],[1,2],[1,2]])便於後面計算
diffmat = np.tile(intx,(datasetsize,1))-dataset
#二維特徵相減後乘方
sqdifmax = diffmat**2
#計算距離
seqdistances = sqdifmax.sum(axis=1)
distances = seqdistances**0.5
print ("distances:",distances)
#返回distance中元素從小到大排序後的索引
sortdistance = distances.argsort()
print ("sortdistance:",sortdistance)
classcount = {}
for i in range(k):
#取出前k個元素的類別
votelabel = labels[sortdistance[i]]
print("第%d個votelabel=%s" %(i,votelabel))
classcount[votelabel] = classcount.get(votelabel,0)+1
#dict.get(key,default=none),字典的get()方法,返回指定鍵的值,如果值不在字典中返回預設值。
#計算類別次數
#key=operator.itemgetter(1)根據字典的值進行排序
#key=operator.itemgetter(0)根據字典的鍵進行排序
#reverse降序排序字典
sortedclasscount = sorted(classcount.items(),key = operator.itemgetter(1),reverse = true)
print ("sortedclasscount:",sortedclasscount)
print (sortedclasscount[0][0])
return sortedclasscount[0][0]
if __name__ == '__ain__':
group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['a','a','b','b']
classify([1,1],group,labels,3)
簡述KNN演算法
knn 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最近鄰 的樣本中的大多數屬於某乙個類別,即該樣本也屬於這個類別。1 計算已知類別資料集中的點與當前點的距離 2 按距離遞增次序排序 3 選取與當前點距離最小的k個點 4 統計前k個點所在的類別出現的頻率 5 返回前k個點出現頻率最高的類別作為...
KNN演算法的簡述
by yang liu 1.什麼是knn演算法。knn k nearest neighbor 是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰近值來代表。演算法的核心思想是如果乙個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某乙...
kNN演算法及python實現
knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法,可以解決分類和回歸的問題。knn演算法主要是通過距離判定出訓練集中離待測樣本最近的k個樣本,然後統計這k個樣本的類別,次數最多的類別或加權後距離最小的點的類別為新資料的類別。距離越近,類別判定的...