K 近鄰(KNN)演算法

2021-08-03 07:03:36 字數 1023 閱讀 2387

思路是:如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。

knn演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙個或者幾個樣本的類別來決定待分樣本所屬的類別。

該演算法在分類時有個主要的不足是,當樣本不平衡時,如乙個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入乙個新樣本時,該樣本的k個鄰居中大容量類的樣本占多數。

該方法的另乙個不足之處是計算量較大,因為對每乙個待分類的文字都要計算它到全體已知樣本的距離,才能求得它的k個最近鄰點。

目前常用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。

簡單來說,k-nn可以看成:有那麼一堆你已經知道分類的資料,然後當乙個新資料進入的時候,就開始跟訓練資料裡的每個點求距離,然後挑離這個訓練資料最近的k個點看看這幾個點屬於什麼型別,然後用少數服從多數的原則,給新資料歸類。

演算法步驟:

step.1---

初始化距離為最大值

step.2---

計算未知樣本和每個訓練樣本的距離dist

step.3---

得到目前k個最臨近樣本中的最大距離maxdist

step.4---

如果dist小於maxdist,則將該訓練樣本作為k-最近鄰樣本

step.5---

重複步驟2、3、4,直到未知樣本和所有訓練樣本的距離都算完

step.6---

統計k-最近鄰樣本中每個類標號出現的次數

step.7---

選擇出現頻率最大的類標號作為未知樣本的類標號

K 近鄰演算法 KNN

knn k nearest neighbor 假設訓練集有記錄 r1 r2,rn共n條,訓練集的特徵向量及其對應的類別都是已知的,每個記錄的特徵向量為 t1 t2,tk共k個特徵,待測試的記錄為ru 1 計算ru 的特徵向量與訓練集的每條記錄 即r1 r2,rn 的特徵向量的歐式距離,選取距離最小的...

k近鄰演算法 kNN

核心思想 前k個最相似資料中出現次數最多的類別,作為新資料的類別。核心函式 計算距離函式,投票函式 coding utf 8 import random import sys from collections import counter from operator import itemgette...

K近鄰演算法 KNN

k近鄰演算法 knn 何謂k近鄰演算法,即k nearest neighbor algorithm,簡稱knn演算法,單從名字來猜想,可以簡單粗暴的認為是 k個最近的鄰居,當k 1時,演算法便成了最近鄰演算法,即尋找最近的那個鄰居。為何要找鄰居?打個比方來說,假設你來到乙個陌生的村莊,現在你要找到與...