k近鄰法(k-nearest neighbor. k-nis)是一種基本分類與回歸方法,k值的選擇、距離度量及分類決策規則(多數表決)是k近鄰法的三個基本要素。
工作原理
將沒有標籤的新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後提取樣本集中特徵最相似資料(最近鄰)的分類標籤。
1.假設有乙個帶有標籤的樣本資料集(訓練樣本集),其中包含每條資料與所屬分類的對應關係。
2.輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較。
2.1計算新資料與樣本資料集中每條資料的距離。
2.2對求得的所有距離進行排序(從小到大,越小表示越相似)。
2.3取前k(k一般小於等於20)個樣本資料對應的分類標籤。
3.求k個資料中出現次數最多的分類標籤作為新資料的分類。
**實現
對未知類別屬性的資料集中的每個點依次執行以下操作:
(1)計算已知類別資料集中的點與當前點之間的距離;
(2)按照距離遞增次序排序;
(3)選取與當前點距離最小的走個點;
(4)確定前灸個點所在類別的出現頻率;
(5)返回前女個點出現頻率最高的類別作為當前點的**分類。
def
classify0
(inx, dataset, labels, k):
# 取前k個值,判斷向量inx的標籤
datasetsize = dataset.shape[0]
diffmat = np.array(inx) - dataset
# diffmat = tile(inx, (datasetsize,1)) - dataset
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances**0.5
sorteddistindicies = distances.argsort()
classcount={}
for i in range(k):
voteilabel = labels[sorteddistindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0) + 1
sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true)
return sortedclasscount[0][0]
argsort()使用
>>>
import numpy as np
>>> a = np.array([4,2,1,6,9])
>>> a.argsort()
array([2, 1, 0, 3, 4], dtype=int64)
機器學習之KNN(K近鄰演算法)
knn k nearest neighbor 演算法利用的數學思想極少 思想 對於乙個新來的點,根據判斷k個最近的點,來判斷新來的點的類別。過程 1 先計算新來的點與樣本中每乙個點的距離 尤拉距離 2 找到最近的k個點 可以用np.argsort 3 找到k個點中類別最多的點的類 所以k鄰近演算法可...
機器學習之KNN k最近鄰演算法 機器學習
knn演算法是機器學習中入門級演算法,屬於監督性學習演算法。supervisedlearning.通過plinko遊戲來介紹該演算法。就是隨機在上面投球,然後球進下面的哪個地方就得多少分。然後在規定得投次數得到最高得分數,應該怎麼投?然後 每次投能得到多少分?首先應該通過訓練資料集,看看在每個位置投...
機器學習之KNN K近鄰演算法(二 演算法案例)
目錄 一 knn的簡單實現案例 二 sklearn的knn應用 鳶尾花資料分類 三 sklearn中knn的重要引數 假設我們有兩類樣本 a和b,均為二維資料,a類包括 2,8 2.5,10 2,9 b類包括 4,2 4,1 4.5,3 測試樣本點為 3,9 首先匯入資料,資料分布如下圖 impor...