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