kNN k近鄰演算法

2021-07-24 22:59:40 字數 1649 閱讀 1868

一、knn演算法的思想

knn演算法作為機器學習演算法中非常有效比較容易掌握的演算法,其基本思想是採用測量不同特徵值之間的距離的方法進行分類。knn屬於監督學習演算法,它的工作原理是:存在乙個樣本資料集,訓練樣本集,並且樣本集中的每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料之後,將新資料的每個特徵與樣本集中資料對應特徵進行比較,然後演算法提取樣本集中特徵最相似的資料的分類標籤。一般來說是只選取資料中前k個最相似的資料,所以稱之為k近鄰演算法。

二、knn演算法的實現過程

1、收集資料:可以使用任何方法

2、準備資料:距離計算所需要的數值,最好是結構化的資料格式。

3、分析資料:可以使用任何方法。

4、訓練資料:此步驟不適用於k-近鄰演算法。

5、測試演算法:計算錯誤率。

6、使用演算法:首先需要輸入樣本資料和結構化的出結果,然後執行knn演算法判定輸入資料分別屬於哪個分類

knn演算法的偽**:

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

2、按距離遞增次序排序

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

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

python**實現如下:

def classify(inputpoint,dataset,labels,k):

datasetsize = dataset.shape[0]

#已知分類的資料集(訓練集)的行數

#先tile函式將輸入點拓展成與訓練集相同維數的矩陣,再計算歐氏距離

diffmat = tile(inputpoint,(datasetsize,1))-dataset #樣本與訓練集的差值矩陣

sqdiffmat = diffmat ** 2 #差值矩陣平方

sqdistances = sqdiffmat.sum(axis=1) #計算每一行上元素的和

distances = sqdistances ** 0.5 #開方得到尤拉距離矩陣

sorteddistindicies = distances.argsort() #按distances中元素進行公升序排序後得到的對應下標的列表

#選擇距離最小的k個點

classcount = {}

for i in range(k):

voteilabel = labels[ sorteddistindicies[i] ]

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

#按classcount字典的第2個元素(即類別出現的次數)從大到小排序

sortedclasscount = sorted(classcount.items(), key = operator.itemgetter(1), reverse = true)

return sortedclasscount[0][0]

三、knn演算法的優缺點

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

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

適用資料範圍:數值型和標稱型

四、knn演算法的應用

五、knn演算法的改進演算法

KNN k近鄰演算法

現在假如我們已經擁有了一些資料 稱為訓練資料集 ts,並且擁有所有資料的類別名 即每條資料應該歸於哪個類別。當我們要判斷一條不知類別的資料時,首先讓這條資料m和已經擁有的所有的資料ts中的每一條資料進行比較,然後根據比較結果選擇出和m最相似 一般是基於距離 的k條資料 k是個整數,並且通常是小於20...

kNN(k近鄰演算法)

k近鄰分析 knn 一 概述 knn演算法是一種有監督學習的分類演算法。所謂有監督學習,就是在應用演算法之前我們必須準備一組訓練集,訓練集中的每個例項都是由一些特徵和乙個分類標籤組成 通常還會存在乙個測試集,用來測試訓練出來的分類模型的準確性。其實knn演算法並沒有體現出有監督學習的所有特點,沒有模...

KNN k 近鄰演算法

usr bin env python coding utf 8 author jia shilin knn k nearest neighbor 演算法 思想 利用已知標籤的樣本集,來分類未知標籤的新資料,將新資料的 每個特徵和樣本進行比較,提取出樣本集中特徵最相似的資料分類標籤 knn演算法的流程...