K-近鄰分類算法 簡述

1. 簡述:python

簡單地說,谷近鄰算法採用測量不一樣特徵值之間的距離方法進行分類。算法

優勢:精度高、對異常值不敏感、無數據輸入假定。機器學習

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

適用數據範圍:數值型和標稱型。spa

2.工做原理是排序

存在一個樣本數據集合,也稱做訓練樣本集,而且樣本集中每一個數據都存在標籤,即咱們知道樣本集中每一數據與所屬分類的對應關係。輸人沒有標籤的新數據後,將新數據的每一個特徵與樣本集中數據對應的特徵進行比較,而後算法提取樣本集中特徵最類似數據(最近鄰)的分類標籤。通常來講,咱們只選擇樣本數據集中前&個最類似的數據,這就是&-近鄰算法中&的出處,一般*是不大於20的整數。最後,選擇&個最類似數據中出現次數最多的分類,做爲新數據的分類。索引

3.代碼例子:get

  1 #!/usr/bin/env pythonit

  2 class

  3 from numpy import *

  4 ## numpy 機器學習的一個python庫,

  5 import operator

  6 

  7 def createdata():

  8 

  9         group=array([[1.0,1.2],[1.1,1.1],[0.1,0.2],[0.3,0.1]])

 10 

 11         labels = ['A','A','B','B']

 12         return group,labels

 13 def classify(intx,dataset,labels,k):

 14         datasetsize = dataset.shape[0] ## 返回維度信息

 15         diffmat = tile(intx,(datasetsize,1)) -dataset ## 填充,而且作矩陣的相見

 16         sqdiffmat = diffmat**2 ## 去平方

 17         sqDis = sqdiffmat.sum(axis=1) ## 統一列相見

 18         soreddis = sqDis.argsort() ## 索引排序

 19         classcount={} 

 20         for i in range(k):

 21          

 22                 votelabel = labels[soreddis[i]]

 23                 classcount[votelabel] = classcount.get(votelabel,1)+1

 24                 

 25         sortclasscount=sorted(classcount.iteritems(),key=operator.itemgetter(1),reverse=True)

 26         return sortclasscount[0][0]     

 27          

 28 if __name__ == '__main__':

 29 

 30         group,labels = createdata() 

 31 

 32         print classify([0.5,0.3],group,labels,3)

相關文章
相關標籤/搜索