问题遇到的现象和发生背景
需要分析的数据是离散型的,需要对循环那里的属性距离进行分类。依据如下图
问题相关代码,请勿粘贴截图
function [w]=Relief(data,label,class,k)
%data数据
%label数据标签
%class数据类别个数
%k近邻个数
%w属性的重要程度
[m,n]=size(data);
for j=1:n
for i=1:class
Di_index=label==i;
Dni_index=label~=i;
Di=data(Di_index,j);
Dni=data(Dni_index,j);
nr=[];
nm=[];
m1=length(Di);
m2=length(Dni);
for l1=1:m1
for l2=1:m2
if (Di(l1)==Di(l2))
nr=[nr,0];
else
nr=[nr,1];
end
end
** end**
for l1=1:m1
for l2=1:m2
if (Di(l1)==Dni(l2))
nm=[nm,0];
else
nm=[nm,1];
end
end
end
nr=sort(nr);
nm=sort(nm);
% % nr=sort(pdist2(Di,Di)')';%猜对近邻
% % nm=sort(pdist2(Di,Dni)')';%猜错近邻
% % %pl=length(Dni)/m;
pl=1;
part1=sum(nr(:,2:k+1).^2/k);
part2=pl.*sum(nm(:,1:k).^2/k);
w(1,j)=sum(part2-part1)/m;
end
end
运行结果及报错内容
在粗体处停止了,没办法进入下一个for循环。
我的解答思路和尝试过的方法
不知道怎么改动了
我想要达到的结果
能运行出结果