• 大小: 9KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签: KNN  Matlab  

资源简介

用Matlab实现了KNN算法中最近邻元素的查找,算出的结果与Spss完全一致

资源截图

代码片段和文件信息

% 作者:肖皇
% 时间:20140901
% 该算法是为了实现LinearRegression。


clear all
clc
% 导入入数据
[ndatatextz]=xlsread(‘car_M.xlsx‘); %ndata为训练集与目标集数据,最后一行为目标字段;text为文本字符
[nm]=size(ndata);
ndata_standard=zeros(nm);

%标准化数据 spss里是用这个公式标准化的
for i=1:n
    for j=1:m
       ndata_standard(ij)=2*(ndata(ij)-min(ndata(:j)))/(max(ndata(:j))-min(ndata(:j)))-1; 
    end
end

%计算欧几里德距离 
e_length=zeros(n-11);
for i=1:n-1
   e_length(i1)=sqrt((ndata_standard(i:)-ndata_standard(n:))*(ndata_standard(i:)-ndata_standard(n:))‘);
end

%对求出的距离排序,并记录其原先所在的位置
b=zeros(1n-1);
for i=1:n-1
    b(1i)=i;
end
for i=1:n-1
   for j=i+1:n-1
       if e_length(i1)>e_length(j1)
          temp=e_length(i1);
          e_length(i1)=e_length(j1);
          e_length(j1)=temp;
          temp=b(1i);
          b(1i)=b(1j);
          b(1j)=temp;
       end      
   end    
end

%K值
k=3;

% 输出结果
table1=cell(k+1m+1);
for i=1:m+1
    table1{1i}=z{1i};
end
for i=1:k
   for j=1:m+1
      table1{i+1j}=z{b(1i)+1j};       
   end   
end
disp(‘最近邻的K个邻居的各属性‘);
disp(table1);

table=cell(k+12);
table(1:)={‘model‘‘distance‘};
for i=1:k
    table{i+11}=z{b(1i)+11};
    table{i+12}=e_length(i1);
end

%显示输出结果
disp(‘最近邻的K个邻居‘);
disp(table);

%绘制各变量的直方图
x=zeros(1k);
for i=1:k
   x(1i)=i; 
end
y=zeros(km);
for i=1:k
    y(i:)=ndata(b(1i):);
end

%设置横坐标注释
model=cell(1k+1);
for i=1:k
    model{1i}=z{b(1i)+11};
end
model{1k+1}=z{n+11};

for i=1:m     
    subplot(24i)bar(xy(:i));
    hold on;
    subplot(24i)bar(4ndata(ni)‘r‘);   
    title(z{1i+1});
    set(gca‘Xtick‘[1 2 3 4]);
    xlabel(model);
end







 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1851  2014-11-11 11:24  main.m
     文件       12057  2014-10-27 15:33  car_M.xlsx

评论

共有 条评论