機器學習十大算法
KNN算法
算法原理
k-近鄰算法採用測量不同特徵值之間的距離方法進行分類。
距離公式:歐氏距離
僞代碼
- 計算已知類別數據集中的點與當前點之間的距離;
- 按照距離遞增次序排序;
- 選取與當前點距離最小的k個點;
- 確定前k個點所在類別的出現頻率;
- 返回前k個點出現頻率最高的類別作爲當前點的預測分類;
def classify0(inX,dataSet,labels,k):
dataSetSize = dataSet.shape[0]
#計算點之間的距離:先創建一個和樣本一樣大小的0矩陣,沿着y軸方向擴大4倍
diffMat=tile(inX,(dataSetSize,1))-dataSet
sqDiffMat=diffMat**2
sqDistances=sqDiffMat.sum(axis=1) #sum求和
distance=sqDistances**0.5
sortDisIndicies=distance.argsort() #從小到大排序,輸出排序的矩陣的位置標籤。
classCount={} #建立字典,存儲所有點的距離和位置順序
for i in range(k):
voteIlabels=labels[sortDisIndicies[i]] #得到排序的座標的類標籤
classCount[voteIlabels]=classCount.get(voteIlabels,0)+1 #將所有的類標籤的數量進行統計
#字典按照類作爲key的數值進行排序,最後選擇位置爲第一位最大數值的類標籤,輸出標籤
sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]