概述
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演算法中的細節處理 數值屬性規範...