k Nearest 最近鄰分類演算法

2021-10-09 02:48:48 字數 1792 閱讀 6407

概述

knn演算法又稱為k最近鄰(k-nearest neighbor classification)分類演算法。所謂的k最近鄰,就是指最接近的k個鄰居(資料),即每個樣本都可以由它的k個鄰居來表達。

knn演算法的核心思想是,在乙個含未知樣本的空間,可以根據離這個樣本最鄰近的k個樣本的資料型別來確定樣本的資料型別。

該演算法涉及3個主要因素:訓練集、距離與相似的衡量、k的大小;主要考慮因素:距離與相似度。

opencv中使用

mat img = onemat;

mat gray;

cvtcolor

(img, gray, cv_bgr2gray)

;int b =20;

int m = gray.rows / b;

//原圖為1000*2000

int n = gray.cols / b;

//裁剪為5000個20*20的小圖塊

mat data,labels;

//特徵矩陣

for(

int i =

0; i < n; i++)}

data.

convertto

(data, cv_32f)

;//uchar型轉換為cv_32f

int samplesnum = data.rows;

int trainnum =

3000

; mat traindata, trainlabels;

traindata =

data

(range(0

, trainnum)

, range::

all())

;//前3000個樣本為訓練資料

trainlabels =

labels

(range(0

, trainnum)

, range::

all())

;//使用knn演算法

int k =5;

ptr tdata = traindata::

create

(traindata, row_sample, trainlabels)

;//降訓練資料封裝成乙個traindata物件,送入train函式

ptr model = knearest::

create()

; model->

setdefaultk

(k);

model->

setisclassifier

(true)

; model->

train

(tdata)

;//**分類

double train_hr =

0, test_hr =0;

// compute prediction error on train and test data

for(

int i =

0; i < samplesnum; i++

) test_hr /= samplesnum - trainnum;

train_hr = trainnum >

0? train_hr / trainnum :1.;

logi

("accuracy: train = %.1f%%, test = %.1f%%\n"

, train_hr*

100.

, test_hr*

100.

);

KNN最近鄰分類演算法梳理

k最近鄰 knn,k nearestneighbor 分類演算法是資料探勘分類技術中最簡單的方法之一。其指導思想是 近朱者赤,近墨者黑 即由你的鄰居來推斷出你的類別。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。knn最鄰近分類演算法的實現原理 為了判斷未知...

python最近鄰分類器KNN演算法

1.knn演算法 鄰近演算法,或者說k最近鄰 knn,k nearestneighbor 分類演算法是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。k最近鄰 k nearest neighbor,knn 分類演算法的核心思...

KNN K最近鄰分類模型

knn原理 訓練元組用 n個屬性描述,每個元組代表 n維空間中的乙個點,所有的訓練元組存放在 n維的模式空間。當給定乙個未知元組時,搜尋該模式空間,找出最接近未知元組的 k個訓練元組。未知元組指派到它的 k個最近鄰中的多數類。鄰近性 用距離度量,如歐幾里德距離。knn演算法中的細節處理 數值屬性規範...