機器演算法 KNN分類演算法

2021-08-02 19:06:27 字數 1373 閱讀 6397

一、參考《機器學習與實踐》

knn演算法是乙個易於掌握且非常有效的演算法,knn是懶惰學習(lazy learning)演算法中的一種,所以不需要訓練,但是需要樣本資料。演算法總共分為三步:

1.使用歐氏距離公式

計算當前點與樣本資料中所有點的距離

2.選出距離最近的k個點

3.在距離最近的k個點中選出頻率最高的類別

python實現演算法:

fromnumpyimport*

importoperator

data=[[2.0,3.1],[3.0,2.9],[1.0,1.2],[1.2,1.3]]

labels=['a','a','b','b']

defcalua(datasource,k,data,labels,):

datasize=len(data) #樣本長度

reducedata=tile(datasource,(datasize,1))-data #使用tile函式生成樣本資料長度的資料集並和樣本資料集相減

squaredata=reducedata**2

#對相減後的距離進行平方

squaredistances=squaredata.sum(axis=1) #對平方後的資料進行相加

distance=squaredistances**0.5

#然後再開方

sortedindex=distance.argsort() #獲取從小到大進行排序的索引

dit={}

foriinrange(k):

label=labels[sortedindex[i]] #按照距離由近到遠獲取標籤

dit[label]=dit.get(label,0)+1

#計算出現的頻率

soredclasscount=sorted(dit.items(),key=operator.itemgetter(1),reverse=true)#按照出現的頻率由大到小進行排序

returnsoredclasscount[0][0] #返回最大值

#當執行

print(calua([1.0,1.1],3,data,labels))

會返回 b
關於k的取值有很多種,最簡單的方法就是使用交叉驗證取出最有效的值

機器學習分類演算法(一)k NN分類演算法

k kk nn分類器是最簡單的機器學習分類演算法之一,它的基本思想是 從訓練樣本集中找出與測試樣本 距離 最近的k個樣本作為此測試樣本的 鄰居 然後根據這k個樣本的類別基於一定規則進行投票表決,最高的決定為測試樣本的 類別。用乙個詞來說就是 近朱者赤近墨者黑 由以上所述可以得知,k近鄰分類演算法主要...

機器學習分類演算法之KNN演算法

knn演算法為按距離進行分類的,對於已知的分類,根據歐式距離,最靠近那個分類就被 為那個分類。本文只是簡單展示一下實現 具體的特徵和分類,還得自己根據實際場景去調整。在開始之前注意看看匯入的包是否都存在,如不存在的化,請先安裝相應的包 coding utf 8 import numpy asnp f...

KNN演算法 分類演算法

k近鄰演算法 定義 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。求距離 使用歐式距離公式!k 近鄰演算法 該演算法需要做標準化處理 knn的api sklearn.neighbors.kneighborsclassifier n ...