机器学习实验报告(DOC).doc

上传人:wj 文档编号:83089 上传时间:2022-10-02 格式:DOC 页数:19 大小:179.05KB
下载 相关 举报
机器学习实验报告(DOC).doc_第1页
第1页 / 共19页
机器学习实验报告(DOC).doc_第2页
第2页 / 共19页
机器学习实验报告(DOC).doc_第3页
第3页 / 共19页
机器学习实验报告(DOC).doc_第4页
第4页 / 共19页
机器学习实验报告(DOC).doc_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

机器学习实验报告(DOC).doc

《机器学习实验报告(DOC).doc》由会员分享,可在线阅读,更多相关《机器学习实验报告(DOC).doc(19页珍藏版)》请在冰豆网上搜索。

机器学习实验报告(DOC).doc

《机器学习》

课内实验报告

(1)ID算法实现决策树

2015-2016学年第2学期

专业:

智能科学与技术

班级:

智能1301班

学号:

06133029

姓名:

张争辉

一、实验目的:

理解ID3算法的基本原理,并且编程实现。

二、实验要求:

使用C/C++/MATLAB实现ID3算法。

输入:

若干行,每行5个字符串,表示

OutlookTemperatureHumidityWindPlayball

如上表。

输出:

决策树。

实验结果如下:

输入:

SunnyHotHighWeakNo

SunnyHotHighStrongNo

OvercastHotHighWeakYes

RainMildHighWeakYes

RainCoolNormalWeakYes

RainCoolNormalStrongNo

OvercastCoolNormalStrongYes

SunnyMildHighWeakNo

SunnyCoolNormalWeakYes

RainMildNormalWeakYes

SunnyMildNormalStrongYes

OvercastMildHighStrongYes

OvercastHotNormalWeakYes

RainMildHighStrongNo

输出:

Outlook

RainWind

StrongNo

WeakYes

OvercastYes

SunnyHumidity

NormalYes

HighNo

三、具体实现:

实现算法如下:

#include

#include

#include

#include

usingnamespacestd;

#defineROW14

#defineCOL5

#definelog20.69314718055

typedefstructTNode

{

chardata[15];

charweight[15];

TNode*firstchild,*nextsibling;

}*tree;

typedefstructLNode

{

charOutLook[15];

charTemperature[15];

charHumidity[15];

charWind[15];

charPlayTennis[5];

LNode*next;

}*link;

typedefstructAttrNode

{

charattributes[15];//属性

int attr_Num;//属性的个数

AttrNode*next;

}*Attributes;

char*Examples[ROW][COL]={//"OverCast","Cool","High","Strong","No",

// "Rain","Hot","Normal","Strong","Yes",

"Sunny","Hot","High","Weak","No",

"Sunny","Hot","High","Strong","No",

"OverCast","Hot","High","Weak","Yes",

"Rain","Mild","High","Weak","Yes",

"Rain","Cool","Normal","Weak","Yes",

"Rain","Cool","Normal","Strong","No",

"OverCast","Cool","Normal","Strong","Yes",

"Sunny","Mild","High","Weak","No",

"Sunny","Cool","Normal","Weak","Yes",

"Rain","Mild","Normal","Weak","Yes",

"Sunny","Mild","Normal","Strong","Yes",

"OverCast","Mild","Normal","Strong","Yes",

"OverCast","Hot","Normal","Weak","Yes",

"Rain","Mild","High","Strong","No"

};

char*Attributes_kind[4]={"OutLook","Temperature","Humidity","Wind"};

int Attr_kind[4]={3,3,2,2};

char*OutLook_kind[3]={"Sunny","OverCast","Rain"};

char*Temperature_kind[3]={"Hot","Mild","Cool"};

char*Humidity_kind[2]={"High","Normal"};

char*Wind_kind[2]={"Weak","Strong"};

/*inti_Exampple[14][5]={0,0,0,0,1,

0,0,0,1,1,

1,0,0,1,0,

2,1,0,0,0,

2,2,1,0,0,

2,2,1,1,1,

1,2,1,1,0,

0,1,0,0,1,

0,2,1,0,0,

2,1,1,0,0,

0,1,1,1,0,

1,1,1,1,0,

1,1,1,0,0,

2,1,0,0,1

};*/

voidtreelists(treeT);

voidInitAttr(Attributes&attr_link,char*Attributes_kind[],intAttr_kind[]);

voidInitLink(link&L,char*Examples[][COL]);

voidID3(tree&T,linkL,linkTarget_Attr,Attributesattr);

voidPN_Num(linkL,int&positve,int&negative);

doubleGain(intpositive,intnegative,char*atrribute,linkL,Attributesattr_L);

voidmain()

{

linkLL,p;

Attributesattr_L,q;

treeT;

T=newTNode;

T->firstchild=T->nextsibling=NULL;

strcpy(T->weight,"");

strcpy(T->data,"");

attr_L=newAttrNode;

attr_L->next=NULL;

LL=newLNode;

LL->next=NULL;

//成功建立两个链表

InitLink(LL,Examples);

InitAttr(attr_L,Attributes_kind,Attr_kind);

ID3(T,LL,NULL,attr_L);

cout<<"决策树以广义表形式输出如下:

"<

treelists(T);//以广义表的形式输出树

// cout<

cout<

}

//以广义表的形式输出树

voidtreelists(treeT)

{

treep;

if(!

T)

return;

cout<<"{"<weight<<"}";

cout<data;

p=T->firstchild;

if(p)

{

cout<<"(";

while(p)

{

treelists(p);

p=p->nextsibling;

if(p)cout<<',';

}

cout<<")";

}

}

voidInitAttr(Attributes&attr_link,char*Attributes_kind[],intAttr_kind[])

{

Attributesp;

for(inti=0;i<4;i++)

{

p=newAttrNode;

p->next=NULL;

strcpy(p->attributes,Attributes_kind[i]);

p->attr_Num=Attr_kind[i];

p-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1