KNN k 近鄰演算法,python

2021-07-22 10:45:16 字數 1180 閱讀 6064

//time :2016-9-5

//blog__author:inc

//addr: 

實施knn:

偽**:

對未知類別屬性的資料集中的每個點依次執行一下操作:

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

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

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

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

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

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 #

sqdiffmat=diffmat**2#

sqdistances=sqdiffmat.sum(axis=1)#

distances=sqdistances**0.5#歐式距離求當前點和已知類別點之間的距離

sorteddistindicies=distances.argsort()#當前點與已知點距離排序,遞增

classcount={}

for i in range(k):

voteilabel=labels[sorteddistindicies[i]] #按順序得到labels的a 或b

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

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

reverse=true)

return sortedclasscount[0][0]

測試:

KNN k近鄰演算法

現在假如我們已經擁有了一些資料 稱為訓練資料集 ts,並且擁有所有資料的類別名 即每條資料應該歸於哪個類別。當我們要判斷一條不知類別的資料時,首先讓這條資料m和已經擁有的所有的資料ts中的每一條資料進行比較,然後根據比較結果選擇出和m最相似 一般是基於距離 的k條資料 k是個整數,並且通常是小於20...

kNN(k近鄰演算法)

k近鄰分析 knn 一 概述 knn演算法是一種有監督學習的分類演算法。所謂有監督學習,就是在應用演算法之前我們必須準備一組訓練集,訓練集中的每個例項都是由一些特徵和乙個分類標籤組成 通常還會存在乙個測試集,用來測試訓練出來的分類模型的準確性。其實knn演算法並沒有體現出有監督學習的所有特點,沒有模...

kNN k近鄰演算法

一 knn演算法的思想 knn演算法作為機器學習演算法中非常有效比較容易掌握的演算法,其基本思想是採用測量不同特徵值之間的距離的方法進行分類。knn屬於監督學習演算法,它的工作原理是 存在乙個樣本資料集,訓練樣本集,並且樣本集中的每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。...