機器學習演算法 kNN演算法

2021-07-11 15:41:52 字數 1362 閱讀 7906

knn-------k-鄰近演算法

1.knn是non-parametric分類器,既不做分布式假設,直接從資料估計概率密度;

2.knn不適用於高維資料

優點:1.無需估計引數,無需訓練;

2.特別適合於多分類問題(物件具有多個標籤)。

缺點:1.當樣本容量不平衡是,輸入有個新樣本,該樣本的k個鄰值中大容量樣本占多數,對分類不利;

2.計算量過大,需要計算待分類文字到每個樣本的距離。

改進辦法:

1.實現對樣本屬性進行適當刪減,刪除對結果影響較小的屬性;

2.對距離加權,採取和樣本距離小的待分類文字距離權重大。

演算法偽**:

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

2.按照距離遞增次排序;

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

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

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

python**實現knn演算法

def knn(inx, dataset, labels, k):

datasetsize = dataset.shape[0] #shape[0]讀取陣列一維長度,既知道有多少個陣列

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): #將labels對應相應的點

voteilabel = labels[sorteddistindicies[i]]

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

sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true) #排序,選出k個距離最小的值

return sortedclasscount[0][0]

inx:用於分類的輸入向量。即將對其進行分類。

dataset:訓練樣本集

labels:標籤向量

k:k值

機器學習演算法 KNN演算法

knn演算法原理 knn k nearest neighbor 最鄰近分類演算法是資料探勘分類 classification 技術中最簡單的演算法之一,其指導思想是 近朱者赤,近墨者黑 即由你的鄰居來推斷出你的類別。knn最鄰近分類演算法的實現原理 為了判斷未知樣本的類別,以所有已知類別的樣本作為參...

機器學習 演算法 KNN

參考 我感覺knn是最簡單的乙個機器學習演算法,實現很簡單,效果也一般般 就是算個euclideam distance,還有一些可以優化的地方,比如可以加權,第二篇文章提到了 python 如下 coding utf 8 created on aug 30,2013 author blacklaw ...

機器學習 KNN 演算法

一 主要目的 在樣本空間中,找到與待估計的樣本最臨近的k個鄰居,用這幾個鄰居的類別來估計待測樣本的類別 二 適用性 樣本容量比較大的類域的自動分類,而樣本容量較小的類域則容易誤分。尤其適用於樣本分類邊界不規則的情況 三 不足 1 當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙...