k值近鄰法python3實現

2021-08-13 11:09:16 字數 998 閱讀 9784

**:

from numpy import *

import operator

def createdataset():

group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

labels=['a','a','b','b']

return group,labels

def classify0(inx,dataset,labels,k):

#函式引數,輸入向量,訓練樣本集,標籤向量,近鄰數目k

datasetsize=dataset.shape[0]#輸入的訓練樣本的行數

diffmat=tile(inx,(datasetsize,1))-dataset

#將用於分類的輸入向量分別和各個輸入樣本相減

sqdiffmat=diffmat**2

sqdistances=sqdiffmat.sum(axis=1)

#將矩陣sqdiffmat每一行向量相加

distances=sqdistances**0.5#開方

sorteddistanceindicies=distances.argsort()

#返回距離從小到大的索引值

classcount={}

for i in range(k):

voteilabel=labels[sorteddistanceindicies[i]]

classcount[voteilabel]=classcount.get(voteilabel,0)+1

#將k個近鄰的標籤和個數存再字典中

sortedclasscount=sorted(classcount.items(),key=operator.itemgetter(1),reverse=true)

#將字典中的鍵(即標籤)按值(即標籤出現的次數)按降序排序

return sortedclasscount[0][0]

#返回k個近鄰出現次數最多的標籤

結果:

k近鄰法及其實現 python

k 近鄰法 k nn 是一種基本的分類和回歸方法。以分類任務為例,k 近鄰法假設給定乙個訓練資料集及其類別標籤。分類時,對乙個新來的待 例項,只需要根據離它最近的 k 個訓練例項的類別標籤,通過多數表決的方式決定待 例項的類別。演算法流程如下 演算法3.1 k 近鄰法 輸入 訓練資料集 t t t ...

python實現K近鄰

k近鄰演算法的具體思想如下 1 計算已知類別資料集中的樣本與當前樣本之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個樣本 4 確定前k個樣本所在類別的出現頻率 5 返回前k個樣本中出現頻率最高的類別作為當前點的 分類 python實現 def define classificat...

K 最近鄰法 KNN C 實現

關於knn的介紹可以參考 這裡給出knn的c 實現,用於分類。訓練資料和測試資料均來自mnist,關於mnist的介紹可以參考 從mnist中提取的40幅影象,0,1,2,3四類各20張,每類的前10幅來自於訓練樣本,用於訓練,後10幅來自測試樣本,用於測試,如下圖 實現 如下 knn.hpp if...