机器学习实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机器学习实验报告
实验一、ID3算法
1.实验目的:了解并掌握ID3算法。

2.实验内容:编程实现ID3算法。

3.实验结果。

实验程序:
function tree=ID3(T,N_V)
[m,n]=size(T);
C=zeros(1,n);
for i=1:n
C(i)=max(T(:,i));
end
Pe=zeros(1,C(n));
Ee=0;
for i=1:C(n)
Pe(i)=length(find(T(:,n)==i))/m;
if Pe(i)~=0
Ee=Ee-(Pe(i)*log2(Pe(i)));
end
end
P=zeros(n-1,max(C(1:n-1)),C(n));
E=zeros(1,n-1);
G=zeros(1,n-1);
nj=0;
for i=1:n-1
for j=1:C(i)
nj=length(find(T(:,i)==j));
for k=1:C(n)
counter=0;
for ii=1:m
if(T(ii,i)==j&&T(ii,n)==k)
counter=counter+1;
end
end
P(i,j,k)=counter/nj;
if P(i,j,k)~=0
E(i)=E(i)-(nj/m)*P(i,j,k)*log2(P(i,j,k));
end
end
end
G(i)=Ee-E(i);
end
best=0;
BestTag=0;
for i=1:n-1
if G(i)>best
best=G(i);
BestTag=i;
end
end
tree.rname=N_V(1,BestTag);
for ii=1:C(BestTag)
temp=0;
tree.branch{ii}=[];
tree.bname{ii}=[];
for i=1:m
if (T(i,BestTag)==ii)
if (temp==0)
temp=T(i,n);
elseif (temp~=T(i,n))
tree.branch{ii}=ID3(T(T(:,BestTag)==ii,:),N_V);
tree.bname{ii}=N_V(ii+1,BestTag);
break;
end
end
end
if isempty(tree.bname{ii})
tree.branch{ii}=N_V(temp+1,n);
tree.bname{ii}=N_V(ii+1,BestTag);
end
end
对于下表:
Day Outlook Temperature Humidity Windy PlayTennis D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
转化为程序输入:
N_V={'outlook''temperature''humidity''windy''class';
'sunny''hot''high''weak''no';
'overcast''mild''normal''strong''yes';
'rain''cool''NAS''NAS''NAS'}
T= [1 1 1 1 1;
1 1 1
2 1;
2 1 1 1 2;
3 2 1 1 2;
3 3 2 1 2;
3 3 2 2 1;
2 3 2 2 2;
1 2 1 1 1;
1 3
2 1 2;
3 2 2 1 2;
1 2 2 2 2;
2 2 1 2 2;
2 1 2 1 2;
3 2 1 2 1];
O=ID3(T,N_V);
其中:第一列1、2、3分别对应'sunny'、'overcast'、'rain';第二列1、2、3分别对应'hot'、'mild'、'cool';第三列1、2分别对应'high'、'normal'、'cool';第四列1、2分别对应'weak'、'strong';第五列1、2分别对应'no'、'yes'。

程序输出:
实验二、BP神经网络
1.实验目的:了解并掌握BP神经网络。

2.实验内容:编程实现BP神经网络。

3.实验结果。

实验程序:
Wbc=0.1;
Wc0=0.1;
Wcd=0.1;
Wd0=0.1;
L=0.3;
I=0.9;
X=[1 0;0 1];
T=[1 0]';
DWcd=0;
DWd0=0;
DWac=0;
DWbc=0;
DWc0=0;
N=1000;
OUT=zeros(2,N);
for i=1:N
Sc(1)=Wac*X(1,1)+Wbc*X(1,2)+Wc0;
Oc(1)=1/(1+exp(-Sc(1)));
Sd(1)=Wcd*Oc(1)+Wd0;
Od(1)=1/(1+exp(-Sd(1)));
Ed(1)=Od(1)*(1-Od(1))*(T(1)-Od(1));
Ec(1)=Oc(1)*(1-Oc(1))*Ed(1);
DWcd=L*Ed(1)*Oc(1)+I*DWcd;
DWd0=L*Ed(1)+I*DWd0;
DWac=L*Ec(1)*X(1,1)+I*DWac;
DWbc=L*Ec(1)*X(1,2)+I*DWbc;
DWc0=L*Ec(1)+I*DWc0;
Wcd=Wcd+DWcd;
Wd0=Wd0+DWd0;
Wac=Wac+DWac;
Wbc=Wbc+DWbc;
Wc0=Wc0+DWc0;
OUT(1,i)=Od(1);
Sc(2)=Wac*X(2,1)+Wbc*X(2,2)+Wc0;
Oc(2)=1/(1+exp(-Sc(2)));
Sd(2)=Wcd*Oc(2)+Wd0;
Od(2)=1/(1+exp(-Sd(2)));
Ed(2)=Od(2)*(1-Od(2))*(T(2)-Od(2));
Ec(2)=Oc(2)*(1-Oc(2))*Ed(2);
DWcd=L*Ed(2)*Oc(2)+I*DWcd;
DWd0=L*Ed(2)+I*DWd0;
DWac=L*Ec(2)*X(2,1)+I*DWac;
DWbc=L*Ec(2)*X(2,2)+I*DWbc;
DWc0=L*Ec(2)+I*DWc0;
Wcd=Wcd+DWcd;
Wd0=Wd0+DWd0;
Wac=Wac+DWac;
Wbc=Wbc+DWbc;
Wc0=Wc0+DWc0;
OUT(2,i)=Od(2);
end
plot(OUT(1,:));
plot(OUT(2,:)); 程序输出:。

相关文档
最新文档