機器學習實戰

機器學習十大算法

KNN算法

算法原理

k-近鄰算法採用測量不同特徵值之間的距離方法進行分類。
距離公式:歐氏距離

僞代碼

  1. 計算已知類別數據集中的點與當前點之間的距離;
  2. 按照距離遞增次序排序;
  3. 選取與當前點距離最小的k個點;
  4. 確定前k個點所在類別的出現頻率;
  5. 返回前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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章