您好,登錄后才能下訂單哦!
算法1-KNN算法及其matlab實(shí)現(xiàn)是怎樣的,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
一、算法概述
1、kNN算法又稱為k近鄰分類(k-nearest neighbor classification)算法。kNN算法則是從訓(xùn)練集中找到和新數(shù)據(jù)最接近的k條記錄,然后根據(jù)他們的主要分類來(lái)決定新數(shù)據(jù)的類別。該算法涉及3個(gè)主要因素:訓(xùn)練集、距離或相似的衡量、k的大小。
計(jì)算步驟如下:
1)算距離:給定測(cè)試對(duì)象,計(jì)算它與訓(xùn)練集中的每個(gè)對(duì)象的距離
2)找鄰居:圈定距離最近的k個(gè)訓(xùn)練對(duì)象,作為測(cè)試對(duì)象的近鄰
3)做分類:根據(jù)這k個(gè)近鄰歸屬的主要類別,來(lái)對(duì)測(cè)試對(duì)象分類
2、距離或相似度的衡量
什么是合適的距離衡量?距離越近應(yīng)該意味著這兩個(gè)點(diǎn)屬于一個(gè)分類的可能性越大。距離衡量包括歐式距離、夾角余弦等。
3、類別的判定
投票決定:少數(shù)服從多數(shù),近鄰中哪個(gè)類別的點(diǎn)最多就分為該類。
加權(quán)投票法:根據(jù)距離的遠(yuǎn)近,對(duì)近鄰的投票進(jìn)行加權(quán),距離越近則權(quán)重越大(權(quán)重為距離平方的倒數(shù))
clear;
clc;
K=3;
trainData = [1.0,2.0;
1.2,0.1;
0.1,1.4;
0.3,3.5];
trainClass = [1,1,2,2];
testData = [0.5,2.3];
[N,M]=size(trainData);
%計(jì)算訓(xùn)練數(shù)據(jù)集與測(cè)試數(shù)據(jù)之間的歐氏距離dist
dist=zeros(N,1);
for i=1:N
dist(i,:)=norm(trainData(i,:)-testData);
end
%將dist從小到大進(jìn)行排序
[Y,I]=sort(dist,1);
%將訓(xùn)練數(shù)據(jù)對(duì)應(yīng)的類別與訓(xùn)練數(shù)據(jù)排序結(jié)果對(duì)應(yīng)
trainClass=trainClass(I);
%確定前K個(gè)點(diǎn)所在類別的出現(xiàn)頻率
classNum=length(unique(trainClass));%取集合中的單值元素的個(gè)數(shù)
labels=zeros(1,classNum);
for i=1:K
j=trainClass(i);
labels(j)=labels(j)+1;
end
%返回前K個(gè)點(diǎn)中出現(xiàn)頻率最高的類別作為測(cè)試數(shù)據(jù)的預(yù)測(cè)分類
[~,idx]=max(labels);
fprintf('該測(cè)試數(shù)據(jù)屬于類 %d\n',idx);
%% f方法二更簡(jiǎn)單
labels=trainClass;
idx=mode(labels(1:K));%mode函數(shù)求眾數(shù)
fprintf('該測(cè)試數(shù)據(jù)屬于類 %d ',idx);
看完上述內(nèi)容,你們掌握算法1-KNN算法及其matlab實(shí)現(xiàn)是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。