K近鄰演算法 python實現

2021-10-08 23:14:23 字數 1104 閱讀 4497

k近鄰演算法

演算法原理:

將資料轉換成向量形式;

計算輸入向量與樣本中的距離(比如歐式距離等);

對距離計算結果排序;取前k個;

根據指定規則(多數或者按照一定權重進行計算)確定輸入向量類別。

python實現;

import numpy as np

import operator

class knnmethod:

def __init__(self):

pass

def fit(self,train_x,train_y):

self.x=train_x

self.y=train_y

def predict(self,k,dis,x_test):

assert dis=='e' or dis=='m','dis must e or m'

num_test=x_test.shape[0]#測試集樣本數

labelist=#存放返回結果的列表

#歐式距離

for i in range(num_test):

distance=np.sqrt(np.sum(((self.x-np.tile(x_test[i],(self.x.shape[0],1)))**2),axis=1))

nearest_k=np.argsort(distance)

topk=nearest_k[:k]

classcound={}#存放標籤的字典

for i in topk:

classcound[self.y[i]]=classcound.get(self.y[i],0)+1

#字典中get方法:返回指定鍵的值,如果值不在字典中返回預設值0

soortedclasscound=sorted(classcound.items(),key=operator.itemgetter(1),reverse=true)

#key指定乙個排序函式,operator.itemgetter(1)表示以第二個維度的值進行排序

return np.array(labelist)

**實現參考《深度學習與影象識別原理與實踐》

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 ...

python實現k 近鄰演算法

本文不涉及k 近鄰演算法的原理,只通過python 實現演算法,並且沒有用到機器學習庫,根據演算法流程一步一步實現。假設我們已經獲取了資料及其標籤的文字檔案,如下圖所示。資料有3個屬性,標籤分為3個型別,python讀取資料 讀取資料並記錄 defreadfile filename file ope...