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