K近鄰的MATLAB實現

2021-08-17 16:42:26 字數 1415 閱讀 2321

參考

1、計算已知類別資料集合彙總的點與當前點的距離

2、按照距離遞增次序排序

3、選取與當前點距離最近的k個點

4、確定距離最近的前k個點所在類別的出現頻率

5、返回距離最近的前k個點中頻率最高的類別作為當前點的**分類

function

relustlabel = knn

(inx,data,labels,k)

%% % inx 為 輸入測試資料,data為樣本資料,labels為樣本標籤

%%[datarow , datacol] = size(data);

diffmat = repmat(inx,[datarow,1]) - data ;

distancemat = sqrt(sum(diffmat.^2,2));

[b , ix] = sort(distancemat,'ascend');

len = min(k,length(b));

relustlabel = mode(labels(ix(1:len)));

end

function

knndatgingtest

%%clc

clear

close all

%%data = load('datingtestset2.txt');

datamat = data(:,1:3);

labels = data(:,4);

len = size(datamat,1);

k = 4;

error = 0;

% 測試資料比例

ratio = 0.1;

numtest = ratio * len;

% 歸一化處理

maxv = max(datamat);

minv = min(datamat);

range = maxv-minv;

newdatamat = (datamat-repmat(minv,[len,1]))./(repmat(range,[len,1]));

% 測試

fori = 1:numtest

classifyresult = knn(newdatamat(i,:),newdatamat(numtest:len,:),labels(numtest:len,:),k);

fprintf('測試結果為:%d 真實結果為:%d\n',[classifyresult labels(i)])

if(classifyresult~=labels(i))

error = error+1;

endend fprintf('準確率為:%f\n',1-error/(numtest))

end

Matlab實現加權K近鄰

加權k近鄰是k近鄰的一種修正,當理解k近鄰之後,加權k近鄰則很好理解了,不說了,上 function label1 wknn training,testing,k row,column size training row1,column1 size testing 計算測試集與訓練集的距離 dist...

k近鄰演算法matlab實現 K 近鄰演算法(一)

k 近鄰演算法是採用不同特徵之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 k 近鄰演算法的一般流程 1 收集資料集 可以使用任何方法 2 準備資料集 距離計算所需要的數值,最好是結構化的資料格式 3 分析資料 可以使用任何方法 4 訓練資料集...

MATLAB計算K近鄰

在實驗中經常會需要計算k近鄰,為了避免多次重寫,這裡用matlab實現了乙個計算k近鄰的函式,該函式要求輸入兩個引數,第乙個引數就是資料矩陣,要求每行為乙個多維樣本點,第二個引數就是k值了。函式返回k近鄰矩陣。計算k近鄰比較好的一種演算法是利用kd樹,這裡暫且用的是易於理解的常規方法。使用kd樹的 ...