机器学习实验报告

  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'。

程序输出:

相关文档
最新文档