机器学习实验报告

  • 格式:doc
  • 大小:156.50 KB
  • 文档页数:19

下载文档原格式

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

《机器学习》课内实验报告(1) ID算法实现决策树2015 - 2016学年第 2 学期

专业:智能科学与技术

班级:智能1301班

学号:06133029

姓名:张争辉

一、实验目的:

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

二、实验要求:

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

输入:

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

Outlook Temperature Humidity Wind Play ball

如上表。

输出:

决策树。

实验结果如下:

输入:

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 High Strong Yes

Overcast Hot Normal Weak Yes

Rain Mild High Strong No

输出:

Outlook

Rain Wind

Strong No Weak Yes Overcast Yes

Sunny Humidity

Normal Yes High No 三、具体实现:

实现算法如下:

#include

#include

#include

#include

using namespace std;

#define ROW 14

#define COL 5

#define log2 0.69314718055

typedef struct TNode

{

char data[15];

char weight[15];

TNode * firstchild,*nextsibling;

}*tree;

typedef struct LNode

{

char OutLook[15];

char Temperature[15];

char Humidity[15];

char Wind[15];

char PlayTennis[5];

LNode *next;

}*link;

typedef struct AttrNode

{

char attributes[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"};

/*int i_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

};*/

void treelists(tree T);

void InitAttr(Attributes &attr_link,char * Attributes_kind[],int Attr_kind[]); void InitLink(link &L,char * Examples[][COL]);

void ID3(tree &T,link L,link Target_Attr,Attributes attr);

void PN_Num(link L,int &positve,int &negative);

double Gain(int positive,int negative,char * atrribute,link L,Attributes attr_L); void main()

{