k 近鄰演算法 機器學習實戰例子說明

2021-08-10 14:48:21 字數 2445 閱讀 9710

演算法概述

優點 精度高、對異常值不敏感、無資料輸入假定。

缺點 計算複雜度高、空間複雜度高。

試用資料範圍

數值型和標稱型

工作原理:將新資料的每個特徵與樣本集中資料對應特徵進行比較,計算之間的距離值,選取樣本資料集中前k個最相似的資料。
偽**

計算已知類別資料集中的點與當前點之間的距離

按照距離遞增次序排序

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

確定前k個點所在類別的出現頻率

返回前k個點出現頻率最高的類別作為當前點的**分類

return group,labels ###上面createdataset函式建立學習資料

def classify0(inx, data, labels, k):

datasetsize = data.shape[0] ###datasetsize=4,為group的行數

diffmat = tile(inx,(datasetsize,1))-data #tile表示將[0,0]資料複製成4行,即,tile(inx,(datasetsize,1))=([[0, 0],[0, 0], [0, 0],[0, 0]]),在與data做減法

sqdiffmat=diffmat**2 ###計算上述**求差後的每個值的平方和

distances = sum(sqdiffmat,axis=1) ###sqdiffmat為四行兩列的資料,按照行求和,得到每行的和

sorteddistindicies = distances.argsort()

classcount={}

for i in range(k):

voteilabel=labels[sorteddistindicies[i]]

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

sortedclasscount=sorted(classcount.items(),

key=operator.itemgetter(1),reverse=true)

return sortedclasscount[0][0]

group,labels=createdataset()

t=classify0([0,0],group,labels,3)

print(t)

上述程式的執行過程資料如下所示:

輸入資料及第17行**的執行結果如下:

python tile函式的作用是將資料按照一定的規則進行複製

用法可參考:

18,19行**輸出如下:

20,21行**輸出如下:

argsort()函式按照列表索引排序,從小到大的排序,distances中第3個之最小,索引值為2,最大的值索引為0

具體用法可以參考:

23-25行的for迴圈是為了統計前k個sorteddistindicies中每個labels出現的次數,如本程式中k=3,即統計前3個sorteddistindicies索引對應的labes出現的次數。

程式中使用了字典的get()函式,該函式的作用是返回指定鍵的值,沒有返回預設值,用法可以參考:

統計結果如下:

程式中26,27行**執行的作用是將字典變成列表,然後按照運算子模組itemgetter方法,按照第二個元素的次序對元組進行排序,此處為逆序,即按照從最大到最小次序排序,最後返回發生頻率最高的元素標籤。

sorted()函式方法參考:

注意此處使用items()方法。

本人在學習機器學習過程中對程式的一點記錄,由於剛接觸python會有很多的不懂,如有錯誤,請指正,謝謝!

《機器學習實戰》 K 近鄰演算法

基本原理 通過計算新資料與給定的樣本資料之間的距離,來確定相似度排名 然後取前k個最相似的樣本,統計這k 一般不大於20 個樣本中出現最多的分類,設為新資料的分類。新資料,訓練樣本集,樣本資料標籤 即分類 最近鄰 前k個最相似資料 最近鄰標籤 演算法實施 首先提取要比較的特徵,確定各特徵的權重,進行...

機器學習實戰 K 近鄰演算法

簡單的說,k 近鄰演算法採用測量不同特徵值之間的距離辦法進行分類.收集資料 可以使用任何方法。準備資料 距離計算所需要的數值,最好是結構化的資料格式。分析資料 可以使用任何方法。訓練演算法 此步驟不適用於k 近鄰演算法。測試演算法 計算錯誤率。使用演算法 首先需要輸入樣本資料和結構化的輸出結果,然後...

機器學習實戰 k 近鄰演算法

本系列是基於 機器學習實戰 這本書做的讀書筆記,原書採用python2作為工具,我則將原書 改為用python3編寫並記錄在此系列中。我將把書中對這些機器學習演算法的定義謄上,然後寫下自己對該演算法的通俗理解,之後貼出書中演算法清單中的 本書講解的第乙個機器學習演算法是k 近鄰演算法 knn 它的工...