k 近鄰演算法詳細解釋 Python

2021-09-24 17:54:38 字數 1167 閱讀 5090

最近在進行機器學習,對於k-近鄰演算法的理解特記錄如下

1、計算已知類別資料集中的點到當前點的距離

2、將這個距離按照公升序排序

3、選取k個與當前距離最小的點

4、統計這k個點中所在類別的出現次數

5、返回出現次數最多的的類別作為當前的**分類

#通過python來實現

#在演算法裡面,傳入標籤向量inx,用於分類,訓練樣本資料集dataset,樣本標籤labels,以及k個點(數目)

def classfy(inx,dataset,labels,k):

#根據偽**,第一步得到標籤向量到資料集各個點的距離

#如何得到距離,得到dataset的維度,將inx轉為跟dataset一樣大小維度的矩陣,通過歐式距離公式即((x1-x2)^2+(y1-y2)^2)^0.5來得到所有的inx到dataset的距離

datasetsize = dataset.shape(0)

diffmat = tile(inx,(datasetsize,1))- dataset #tile函式,是將向量inx轉換為datasetsize*後面的數字的矩陣

sqdiffmat = diffmat**2

sqdistances = sqdiffmat.sum(axis=1) #矩陣sum中引數axis=0,所有的數值,axis=1,當前行數的累加

distances = sqdistances**0.5

#求出inx到所有點的距離以後將所有的點按照公升序排序,獲取排序後的下標開始統計點出現的個數,獲取距離最近的,以便下面的k個數值使用

distancessort = distances.argsort()

#定義乙個字典用來儲存出現的分類的頻率

classcount = {}

for i in range(k):

vote = labels[distancessort[i]]

classcount[vote] = classcount.get(vote,0)+1

#得到這個分類的頻率之後,將classcount進行降序排序

sort_classcount=sorted(classcount,key=lambda s:s[1],reverse=true)

print (sort_classcount[0][0])

k近鄰演算法 python實現

k近鄰演算法 k nearest neighbor,knn 是一種非常直觀的,易於理解的有監督的演算法 對於乙個待分類的樣本,在已知的樣本集合中尋 找與它距離最近的k個樣本,及所謂的k近鄰。通過這這k個近鄰的所述類別來決定分類結果。距離度量距離度量方法有很多種,例如 歐式距離 曼哈頓距離 切比雪夫距...

k近鄰演算法 python實現

特徵距離計算 距離計算方法有很多,這裡先列三種 簡單例子 電影型別 根據歐氏距離計算公式,算出未知電影與已知電影型別之間的距離。電影名稱 打鬥鏡頭 接吻鏡頭 電影型別 歐式距離13 104愛情片 20.522 100愛情片 18.731 81愛情片 19.2 4101 10動作片 115.3599 ...

K近鄰演算法 python實現

k近鄰演算法 演算法原理 將資料轉換成向量形式 計算輸入向量與樣本中的距離 比如歐式距離等 對距離計算結果排序 取前k個 根據指定規則 多數或者按照一定權重進行計算 確定輸入向量類別。python實現 import numpy as np import operator class knnmetho...