簡述KNN演算法及實現

2021-08-17 09:05:13 字數 1951 閱讀 4490

#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個樣本的類別,次數最多的類別或加權後距離最小的點的類別為新資料的類別。距離越近,類別判定的...