Matlab實現加權K近鄰

2021-09-23 07:51:53 字數 1299 閱讀 2527

加權k近鄰是k近鄰的一種修正,當理解k近鄰之後,加權k近鄰則很好理解了,不說了,上**,

function label1=wknn(training,testing,k)

[row, column]=size(training);

[row1, column1]=size(testing);

%計算測試集與訓練集的距離

distance=;

for i=1:row1

distance(i,:)=sum((repmat(testing(i,:),row,1)-training(:,1:(column-1))).^2, 2);

end% 尋找加權k近鄰

label=;%儲存距離測試樣本最近的k個值

wight=;%儲存權重值

x=sort(distance,2);

for i=1:row1

[a,b]=sort(distance(i,:));

for j=1:k

label(i,j)=training(b(j),column);

wight(i,j)=x(i,j);

endendcl=zeros(1,100);

count=1;

cl(1,1)=training(1,column);%統計**結果型別

for i=2:row

a=training(i,column);

flag=0;

for j=1:count

if cl(1,j) ==a

flag=1;

break;

end

endif flag==0

count=count+1;

cl(1,count)=a;

endendend_count=zeros(row1,count);%統計某個結果出現的次數

for i=1:row1

for j=1:k

for l=1:count

if label(i,j)==cl(1,l)

end_count(i,l)=end_count(i,l)+wight(i,j).^-1;

endend

endendlabel1=;%統計**結果

for i=1:row1

k=1;

num=end_count(i,1);

for j=2:count

if numk=j;

num=end_count(i,j);

endend

label1(i)=cl(1,k);

endend

K近鄰的MATLAB實現

參考 1 計算已知類別資料集合彙總的點與當前點的距離 2 按照距離遞增次序排序 3 選取與當前點距離最近的k個點 4 確定距離最近的前k個點所在類別的出現頻率 5 返回距離最近的前k個點中頻率最高的類別作為當前點的 分類 function relustlabel knn inx,data,label...

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

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

MATLAB計算K近鄰

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