matlab粗集系统评估wine,C4.5 决策树算法对UCI wine数据集分类的实现(MATLAB)

一、功能实现与样本分析

在数据挖掘领域,能够利用相应的算法对数据集进行训练,即对样本的特征进行分析,从而概括出相同类别的样本之间存在的内在特征联系,进一步对未知类别的样本进行预测,判断出该样本所属的类别。本文实现了利用决策树算法对UCI 机器学习库上的经典wine数据集进行分类的目的。node

为达到相应的分类目的,须要先对数据集样本进行分析。git

表1 wine数据集样本特征github

65ac40132b3b6b5c0c8bee9b89eac3f1.png

不用化学成分的含量与酒的所属类别息息相关。表1列举了所选用的wine数据集的特征状况。整个数据集样本包含13个特征,例如Alcohol(酒精度),Malic acid(苹果酸含量)等,这些特征的取值范围见表1所示。算法

表2 wine数据集部分样本表编程

属性机器学习

1学习

属性测试

2优化

属性ui

3

属性

4

属性

5

属性

6

属性

7

属性

8

属性

9

属性

10

属性

11

属性

12

属性

13

类别

14.23

1.71

2.43

15.6

127

2.8

3.06

.28

2.29

5.64

1.04

3.92

1065

1

13.2

1.78

2.14

11.2

100

2.65

2.76

.26

1.28

4.38

1.05

3.4

1050

1

13.16

2.36

2.67

18.6

101

2.8

3.24

.3

2.81

5.68

1.03

3.17

1185

1

14.37

1.95

2.5

16.8

113

3.85

3.49

.24

2.18

7.8

.86

3.45

1480

1

13.24

2.59

2.87

21

118

2.8

2.69

.39

1.82

4.32

1.04

2.93

735

1

14.2

1.76

2.45

15.2

112

3.27

3.39

.34

1.97

6.75

1.05

2.85

1450

1

14.39

1.87

2.45

14.6

96

2.5

2.52

.3

1.98

5.25

1.02

3.58

1290

1

12.37

.94

1.36

10.6

88

1.98

.57

.28

.42

1.95

1.05

1.82

520

2

12.33

1.1

2.28

16

101

2.05

1.09

.63

.41

3.27

1.25

1.67

680

2

12.64

1.36

2.02

16.8

100

2.02

1.41

.53

.62

5.75

.98

1.59

450

2

13.67

1.25

1.92

18

94

2.1

1.79

.32

.73

3.8

1.23

2.46

630

2

12.37

1.13

2.16

19

87

3.5

3.1

.19

1.87

4.45

1.22

2.87

420

2

12.17

1.45

2.53

19

104

1.89

1.75

.45

1.03

2.95

1.45

2.23

355

2

12.37

1.21

2.56

18.1

98

2.42

2.65

.37

2.08

4.6

1.19

2.3

678

2

12.86

1.35

2.32

18

122

1.51

1.25

.21

.94

4.1

.76

1.29

630

3

12.88

2.99

2.4

20

104

1.3

1.22

.24

.83

5.4

.74

1.42

530

3

12.81

2.31

2.4

24

98

1.15

1.09

.27

.83

5.7

.66

1.36

560

3

12.7

3.55

2.36

21.5

106

1.7

1.2

.17

.84

5

.78

1.29

600

3

12.51

1.24

2.25

17.5

85

2

.58

.6

1.25

5.45

.75

1.51

650

3

酒的品种可能属于3种类别。表2展现了wine数据集的部分样本状况。因此,本文的目的就是运用分类算法,挑选相应的特征属性来构造相应的决策树,挖掘wine数据集类别与13个特征之间的关系。并利用所构造的决策树来对测试样本作预测,分析预测偏差,从而证实所构造的决策树的合理性。

二、C4.5算法对UCI wine数据集分类的实现

2.一、C4.5算法分类流程设计

239bc6f5508dd230c1b989723b06cf36.png

图1 C4.5算法构造决策树流程设计

C4.5算法是决策树分类领域的一种较为经典的算法,图1展现了本次使用C4.5算法构造决策树的算法流程。

首先,从UCI 机器学习库上下载wine数据集,提取样本。这里将全部样本分为训练样本和测试样本两部分。训练样本用来训练C4.5算法,测试样本用来最后测试C4.5算法所构造的决策树的正确性。因此样本预处理部分即是将训练样本与测试样本分开。本文采用的是随机采样的方法来分开训练样本和测试样本。

而后,将随机采样所获得的训练样本用来构造决策树。依次对训练样本的各个特征计算信息增益率,选择具备最大信息增益率的特征做为当前样本的分割特征,对决策树进行分支。

若是决策树分支以后,全部的分割样本都知足预先定义的决策树剪枝策略,则完成对训练样本构造决策树的目标。不然将利用分割样本递归构造决策树,直到全部的分割样本都知足剪枝策略为止。

fb115a187991e67f98f12c36c644f58d.png

图2 测试样本类别预测流程图

C4.5算法构造决策树后,须要对决策树的合理性作评估。图2展现了利用所构造的决策树预测测试样本类别流程。经过对决策树的预测偏差做分析,来判别所构造的决策树是否可行。下面将介绍具体的决策树构造过程。

2.二、C4.5算法构造决策树

f63f9ee15f5c34c2d056579ca4bec2e5.png

图3 决策树节点设计

图3显示了决策树节点的全部成员属性。Feature_tosplit用来记录当前节点的分割特征,location记录分割特征的分割界限,value表征的是属于当前节点的特征的取值状况,而child描述按照feature_tosplit和location进行分支后,隶属于当前节点的子节点。须要注意的是,若是当前节点已是叶子节点,则利用child属性来记录当前节点的标签,相应地,将feature_tosplit设置为0,将location和value设置为空。

当属性类型为离散型,无须对数据进行离散化处理;而当属性类型为连续型时,则须要对数据进行离散化处理。为此,节点分裂以前先要对属性的类型作判断。

32d442009178be15c62783e8ed529afd.png

图4 属性类型判断

图4是对某一维度属性类型判断的相关代码。Thres_disc是为了判断属性是离散类型仍是连续类型而设立的一个阈值,在算法的运行过程当中,设定thres_disc=10。当某一维度属性的全部可能取值状况多于thres_disc时,认为该属性的类型是离散型;不然认为是连续型。

对于连续型的属性,本文利用C4.5算法离散化的核心思想是:将属性A(假设属性A是连续取值)的N个属性值按升序排列;经过二分法将属性A的全部属性值分红两部分(共有N-1种划分方法,二分的阈值为相邻两个属性值的中间值);计算每种划分方法对应的信息增益,选取信息增益最大的划分方法的阈值做为属性A二分的阈值。

详细流程以下:

1)将节点Node上的全部数据样本按照连续型属性A的具体取值,由小到大进行排列,获得属性A的属性值取值序列

3c79eabb4d7bcb11d94c67858fb452de.png

2)在序列

45435fdd08cae944436dd8c1d79844ca.png中共有N-1种二分方法,即共产生N-1个分隔阈值。对于第i种二分方法,其二分阈值

1d6a0b212a7585595ba59b75c7c10d26.png。它将该节点上的数据集划分为2个子数据集

62a68a4ff84774eb5a9ebf8098d9f84c.png

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值