kNN分類演算法

2021-08-17 21:13:38 字數 1504 閱讀 8703

一、演算法實施過程

(1)計算已知類別資料集中的點與當前點之間的距離;

(2)按照距離遞增次序排序;

(3)選取與當前點距離最小的k個點;

(4)確定前k個點所在類別的出現頻率;

(5)返回前k個點出現頻率最高的類別作為當前點的**分類。

二、python**實現

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):

datasetsize=dataset.shape[0]

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

sqdiffmat=diffmat**2

sqdistances=sqdiffmat.sum(axis=1)//2

distances=sqdistances**0.5

sorteddistindicies=distances.argsort()//從小到大排序

classcount={}

for i in range(k):

voteilabel=labels[sorteddistindicies[i]]

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

sortedclasscount=sorted(classcount.items(),key=operator.itemgetter(1),reverse=true)//sorted為排序函式

return sortedclasscount[0][0]

if __name__=="__main__":

group,labels=createdataset()

classname=classify0([0,0],group,labels,3)

print(classname)

1、tile函式:

numpy.tile([1,1],[2,3])=([1,1],[1,1],[1,1]

[1,1],[1,1],[1,1])

第乙個引數是要生成的數,第二個引數控制要生成的行數與列數。

2、xx.sum()

x = np.array([[0, 1, 2], 

[3, 4, 5], 

[6, 7, 8]])

print x.sum()

print x.sum(axis=0)

print x.sum(axis=1)

結果分別是:36, [9 12 15], [ 3 12  21]

3、xx.get(x,'',xx)

第乙個引數為的查詢關鍵字,若找不到則返回第二個引數。

kNN分類演算法

knn k nearest neighbors 又叫k最鄰近演算法,是一種根據待分類的樣本與已知類別的樣本間的距離得到其分類結果的分類演算法。計算待分類樣本與所有已知類別樣本的距離值 從這些距離值中選取最小的k個 根據這k個樣本的類別情況,確定待分類的分類結果 距離的計算 這裡的距離其實是一種相似度...

kNN分類演算法

一 概述 knn演算法採用測量不同特徵值之間的距離方法進行分類。對未知類別屬性的資料集中的每個點執行如下操作 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 5 返回前k個點出現頻率最高的類別作為當前點的...

KNN分類演算法

簡單來說,如下圖所示 這個綠色的球是什麼顏色,就是說,離他最近的3個點 那就是k 3 是什麼顏色。2 3是紅色。如果是k 5呢?那就是藍色。這就是knn演算法。一種很好理解的分類概率模型。在knn中,通過計算物件間距離來作為各個物件之間的非相似性指標,避免了物件之間的匹配問題,在這裡距離一般使用歐氏...