机器学习(周志华) 参考答案 第十一章 特征选择与稀疏学习 11.1

机器学习(周志华) 参考答案 第十一章 特征选择与稀疏学习 11.1

机器学习(周志华西瓜书) 参考答案 总目录

  • http://blog.csdn.net/icefire_tyh/article/details/52064910

机器学习(周志华) 参考答案 第十一章 特征选择与稀疏学习

  • http://blog.csdn.net/icefire_tyh/article/details/52254580

1.试编程实现Relief算法,并考察其在西瓜数据集3.0上的运行结果。
Relief通过高维距离来计算各个属性的重要程度,和PCA降维的思想差不多。不过Relief是通过计算出的权值排序,PCA则是通过奇异值大小排序。

由于Relief方法简单,计算很快,不过这种过滤式选择效果很不好。
求出最终的权值为

色泽 根蒂 敲声 纹理 脐部 触感 密度 含糖率
-7 4 -1 9 7 -4 -0.51 2.04

那么按重要程度排序就应该是

1 2 3 4 5 6 7 8
纹理 脐部 根蒂 含糖率 密度 根蒂 纹理 色泽

参考代码

x = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.xlsx', 'sheet1', 'A1:Q8');
y = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.xlsx', 'sheet1', 'A9:Q9');

[n,m]=size(x);
%属性是否是离散属性 1-是 0-不是
pf=[1,1,1,1,1,1,0,0];

%把连续属性用min-max归一化
x(7,:)=(x(7,:)-min(x(7,:)))/(max(x(7,:))-min(x(7,:)));
x(8,:)=(x(8,:)-min(x(8,:)))/(max(x(8,:))-min(x(8,:)));

%计算所有样本距离
dist=zeros(m);
for i=1:m
    for j=1:m
        if(i<j)
            for k=1:n
                if(pf(k)==1)
                   dist(i,j)=dist(i,j)+(x(k,i)~=x(k,j));
                else
                   dist(i,j)=dist(i,j)+(x(k,i)-x(k,j))^2;
                end
            end
        else
            dist(i,j)=dist(j,i);
        end
    end
end

%初始化各属性权值
p=zeros(n,1);

for i=1:m
    [pdist,arr]=sort(dist(i,:));
    p2=zeros(2,1);
    ptr=2;
    %选择最近的本类与异类
    while(p2(1)*p2(2)==0)
        py=(y(arr(ptr))~=y(i))+1;
        if(p2(py)==0)
            p2(py)=arr(ptr);
        end
        ptr=ptr+1;
    end
    %计算各属性权值
    for j=1:n
       if(pf(j)==1)
            p(j)=p(j)-(x(j,i)~=x(j,p2(1)))+(x(j,i)~=x(j,p2(2)));
       else
            p(j)=p(j)-(x(j,i)-x(j,p2(1)))^2+(x(j,i)-x(j,p2(2)))^2;
       end
    end
end

你可能感兴趣的:(机器学习(周志华西瓜书))