日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python实现kNN算法

發布時間:2025/3/12 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python实现kNN算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python實現kNN算法


1. 原理

k-最近鄰: kNN(k-NearestNeighbor)分類算法機器學習中最簡單的分類方法之一。所謂K最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。
k-NN算法的核心思想是如果一個樣本在特征空間中的k個最相鄰的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別,并具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近k個樣本的類別來決定待分樣本所屬的類別。 kNN方法在類別決策時,只與極少量的相鄰樣本有關。由于kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更為適合。

  • 優點: 簡單,易于理解,無需訓練,對異常值不敏感。
  • 缺點:計算時間和空間復雜度高。

2. 算法流程

  • 準備數據及數據預處理(類型轉換,歸一化等)
  • 計算及分類
    • 選擇一種距離計算方式, 計算當前樣本和所有數據集樣本的距離
    • 按照距離遞增次序進行排序, 選取與當前距離最小的 k 個點
    • 對于離散分類, 返回 k 個點出現頻率最多的類別作為預測分類; 對于回歸, 返回 k 個點的加權值作為預測值

3. python代碼實現及注釋

#導入相關包 import numpy as np#創建數據集 def creatDataset():trainSet=np.array([[0,0],[0.1,0],[1.0,1.0],[1.0,1.1]])labels=['A','A','B','B']return trainSet,labels#k-NN算法分類 def Classify(x,trainSet,labels,k):#計算距離diff=(trainSet-x)**2dist= (diff.sum(axis=1))**0.5#對距離進行排序,升序sortMin=dist.argsort()#字典,用來存放k個相鄰樣本屬于各類別的數量classCount={}for i in range(k): #統計各類別數量classCount[labels[sortMin[i]]]=classCount.get(labels[sortMin[i]], 0)+1#對字典按值排列,降序classCount=sorted(classCount.items(), key = lambda x:x[1], reverse = True)#返回,數量最多的類別return classCount[0][0]if __name__ == "__main__":#測試樣本x=[1,1.2]#調用函數分類X,Y = creatDataset()result=Classify(x,X,Y,2)#輸出分類類別名print(result)

總結

以上是生活随笔為你收集整理的Python实现kNN算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。