資源簡介
kNN基本分類器,以及兩個運用kNN算法的實例:約會網(wǎng)站的配對和手寫識別系統(tǒng),包含數(shù)據(jù)源。

代碼片段和文件信息
#coding=utf-8
from?numpy?import?*
import?operator
def??createDataSet():
group?=?array([[1.0?1.1]?[1.0?0.1]?[0?0]?[0?0.1][2.2?2.4]?[2.1?2.0]])
labels?=?[‘A‘?‘A‘?‘B‘?‘B‘?‘C‘?‘C‘]
return?group?labels
def?classify0(inX?dataSet?labels?k):
dataSetSize?=?dataSet.shape[0]???#矩陣行數(shù)
diffMat?=?tile(inX?(dataSetSize?1))?-?dataSet??#將數(shù)組inX重復(fù)(dataSetSize行1列)次
sqDiffMat?=?diffMat**2??#4*2矩陣每一個數(shù)都平方
sqDistances?=?sqDiffMat.sum(axis=1)?#矩陣的每一行相加4*1
distances?=?sqDistances**0.5
sortedDistIndicies?=?distances.argsort()??#返回數(shù)組按從小打到排序的索引值
classCount?=?{}
for?i?in?range(k):
voteIlabel?=?labels[sortedDistIndicies[i]]??#距離最小的label依次返回
classCount[voteIlabel]?=?classCount.get(voteIlabel?0)?+?1?#get(key?default)返回key鍵的值,不存在則返回默認值
#sorted第一個參數(shù)是對象的元組列表,第二個參數(shù)是對象的第1個域值(比較項),第三個是逆序
sortedClassCount?=?sorted(classCount.items()?key=operator.itemgetter(1)?reverse=True)
return?sortedClassCount[0][0]?#最后取列表第一個元素的第一項,即是數(shù)量最多的類別
#Python引入了一個變量__name__,當文件是被調(diào)用時,__name__的值為模塊名,當文件被執(zhí)行時,__name__為‘__main__‘。
#加入if這句話,在其他函數(shù)調(diào)用此類時,下面的調(diào)試輸出語句不執(zhí)行
if?__name__?==?“__main__“:?
group?labels?=?createDataSet()
classification?=?classify0([1.8?2.1]?group?labels?3)
print(classification)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1616??2018-11-04?18:13??kNN.py
?????文件???????3321??2018-11-04?13:20??kNN1.py
?????文件???????1866??2018-11-04?18:42??kNN2.py
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_0.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_1.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_10.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_11.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_12.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_13.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_14.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_15.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_16.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_17.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_18.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_19.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_2.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_20.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_21.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_22.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_23.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_24.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_25.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_26.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_27.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_28.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_29.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_3.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_30.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_31.txt
?????文件???????1088??2010-10-07?21:35??digits\testDigits\0_32.txt
............此處省略2861個文件信息
評論
共有 條評論