fisher函数matlab实现
发布时间:2019-05-15 07:17:12
发布时间:2019-05-15 07:17:12
一、 实验目的
在UCI数据集上的Iris和sonar数据上验证算法的有效性;Iris数据3类,4维,150个数据;Sonar数据2类,60维,208个样本;
二、 实验说明
1、本实验由MATLAB2014实现算法及验证。
2、训练和测试样本采用留1法划分
三、 在Iris上验证算法的代码及结果
(1)代码
1、 function y=fisher_iris(SE,VE,VI)
2、
3、 S_V=[SE;VE];
4、
5、 ALL_1=[S_V;VI];
6、
7、 for L=1:150
8、 T=S_V;
9、 P=VI;
10、 sample=ALL_1(L,:);
11、 if L<=100
12、 T(L,:)=[];
13、 else
14、 P(L-100,:)=[];
15、 end
16、
17、 R1=size(T,1);
18、 R2=size(P,1);
19、
20、 a1=mean(T);
21、 a2=mean(P);
22、
23、 s1=cov(T)*(R1-1);
24、 s2=cov(P)*(R2-1);
25、
26、 Sw=s1+s2;
27、
28、 w=inv(Sw)*(a1-a2)';
29、
30、 y1=mean(w'*a1');
31、 y2=mean(w'*a2');
32、
33、 w0=1/2*(y1+y2);
34、
35、 y(L)=w'*sample';
36、
37、 if y(L)>w0;
38、 y(L)=0;
39、
40、 for L_2=1:100
41、 T_2=SE;
42、 P_2=VE;
43、 sample=S_V(L_2,:);
44、 if L_2<=50
45、 T_2(L_2,:)=[];
46、 else
47、 P_2(L_2-50,:)=[];
48、 end
49、
50、 R1=size(T_2,1);
51、 R2=size(P_2,1);
52、
53、 a1_2=mean(T_2);
54、 a2_2=mean(P_2);
55、
56、 s1_2=cov(T_2)*(R1-1);
57、 s2_2=cov(P_2)*(R2-1);
58、
59、 Sw_2=s1_2+s2_2;
60、
61、 w_2=inv(Sw_2)*(a1_2-a2_2)';
62、
63、 y1_2=mean(w_2'*a1_2');
64、 y2_2=mean(w_2'*a2_2');
65、
66、 w0=1/2*(y1_2+y2_2);
67、
68、 y(L_2)=w_2'*sample';
69、
70、 if y(L_2)>w0;
71、 y(L_2)=0;
72、 else
73、 y(L_2)=1;
74、 end
75、 end
76、
77、
78、 else
79、 y(L)=2;
80、 end
81、 end
(2)实验结果
z
四、 在sonar上验证算法的代码及结果
(1) 代码
1、 function y=fisher_sonar(M,R)
2、
3、 A=[M;R];
4、 for l=1:208
5、 T=M;
6、 P=R;
7、 sample=A(l,:);
8、 if l<=111
9、 T(l,:)=[];
10、 else
11、 P(l-111,:)=[];
12、 end
13、
14、 R1=size(T,1);
15、 R2=size(P,1);
16、
17、 a1=mean(T);
18、 a2=mean(P);
19、
20、 s1=cov(T)*(R1-1);
21、 s2=cov(P)*(R2-1);
22、
23、 Sw=s1+s2;
24、
25、 w=inv(Sw)*(a1-a2)';
26、
27、 y1=mean(w'*a1');
28、 y2=mean(w'*a2');
29、
30、 w0=1/2*(y1+y2);
31、
32、 y(l)=w'*sample';
33、
34、 if y(l)>w0;
35、 y(l)=0;
36、 else
37、 y(l)=1;
38、 end
39、 end
40、
41、
(2) 实验结果
>> fisher_sonar(M,R)
ans =
1 至 5 列
1 0 1 1 1
6 至 10 列
0 1 1 1 0
11 至 15 列
0 1 1 0 0
16 至 20 列
0 1 0 0 0
21 至 25 列
0 0 0 0 0
26 至 30 列
0 0 0 0 0
31 至 35 列
1 1 0 0 0
36 至 40 列
0 0 1 0 0
41 至 45 列
0 0 0 0 0
46 至 50 列
0 0 0 0 0
51 至 55 列
0 0 0 1 1
56 至 60 列
0 1 1 1 0
61 至 65 列
0 0 0 0 0
66 至 70 列
0 1 0 1 0
71 至 75 列
0 0 0 0 0
76 至 80 列
0 0 0 0 0
81 至 85 列
1 1 0 0 0
86 至 90 列
0 0 0 0 0
91 至 95 列
0 0 0 0 1
96 至 100 列
0 1 1 0 0
101 至 105 列
0 0 0 0 0
106 至 110 列
0 0 0 0 0
111 至 115 列
0 1 1 0 0
116 至 120 列
0 0 1 0 0
121 至 125 列
1 1 1 1 1
126 至 130 列
1 1 1 0 1
131 至 135 列
0 0 0 1 1
136 至 140 列
1 1 0 0 0
141 至 145 列
1 1 1 1 0
146 至 150 列
0 0 1 1 1
151 至 155 列
1 1 1 1 1
156 至 160 列
0 0 0 0 1
161 至 165 列
1 1 1 1 1
166 至 170 列
1 1 1 1 1
171 至 175 列
1 1 1 1 1
176 至 180 列
1 1 1 1 1
181 至 185 列
1 1 1 1 0
186 至 190 列
1 1 1 1 1
191 至 195 列
0 0 0 0 1
196 至 200 列
1 1 1 1 0
201 至 205 列
1 1 1 1 0
206 至 208 列
1 1 1
>>