加權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樹的 ...