ID3算法java实现

1 ID3算法概述

1.1 信息熵

熵是无序性(或不确定性)的度量指标。假如事件A的全概率划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn)。那信息熵定义为:

通常以2为底数。所以信息熵的单位是bit。

1.2 决策树

决策树是以实例为基础的归纳学习算法。它从一组无次序、无规则的元组中推理出决策树表示形式的分类规则。它採用自顶向下的递归方式。在决策树的内部结点进行属性值的比較,并依据不同的属性值从该结点向下分支,叶结点是要学习划分的类。从根到叶结点的一条路径就相应着一条合取规则,整个决策树就相应着一组析取表达式规则。

1.3 ID3算法

ID3算法的核心是:在决策树各级结点上选择属性时,用信息增益(information gain)作为属性的选择标准,以使得在每个非叶结点进行測试时,能获得关于被測试记录最大的类别信息。其详细方法是:检測全部的属性,选择信息增益最大的属性产生决策树结点,由该属性的不同取值建立分支,再对各分支的子集递归调用该方法建立决策树结点的分支,直到全部子集仅包括同一类别的数据为止。

最后得到一棵决策树,它能够用来对新的样本进行分类。

2 取样实验

样本数据:

outlook

temperature

humidity

windy

play

sunny

hot

high

FALSE

no

sunny

hot

high

TRUE

no

overcast

hot

high

FALSE

yes

rainy

mild

high

FALSE

yes

rainy

cool

normal

FALSE

yes

rainy

cool

normal

TRUE

no

overcast

cool

normal

TRUE

yes

sunny

mild

high

FALSE

no

sunny

cool

normal

FALSE

yes

rainy

mild

normal

FALSE

yes

sunny

mild

normal

TRUE

yes

overcast

mild

high

TRUE

yes

overcast

hot

normal

FALSE

yes

rainy

mild

high

TRUE

No

统计数据:(便于计算熵值)

outlook

temperature

humidity

windy

play

yes

no

yes

no

yes

no

yes

no

yes

no

sunny

2

3

hot

2

2

high

3

4

FALSE

6

2

9

5

overcast

4

0

mild

4

2

normal

6

1

TRUR

3

3

rainy

3

2

cool

3

1

2.1 Outlook为sunny时:

temperature

humidity

windy

play

hot

high

FALSE

no

hot

high

TRUE

no

mild

high

FALSE

no

cool

normal

FALSE

yes

mild

normal

TRUE

yes

temperature

humidity

windy

play

yes

no

yes

no

yes

no

yes

no

hot

0

2

high

0

3

FALSE

1

2

2

3

mild

1

1

normal

2

0

TRUR

1

1

cool

1

0

2.1.1 humidity为high时:

temperature

windy

play

hot

FALSE

no

hot

TRUE

no

mild

FALSE

no

另外一种情况,所以的样本都属于同一类别,用相应的类别属性no来标记

2.1.2 humidity为normal时:

temperature

windy

play

cool

FALSE

yes

mild

TRUE

yes

另外一种情况,所以的样本都属于同一类别。用相应的类别属性yes来标记

2.2 Outlook为overcast时:

temperature

humidity

windy

play

hot

high

FALSE

yes

cool

normal

TRUE

yes

mild

high

TRUE

yes

hot

normal

FALSE

yes

另外一种情况。所以的样本都属于同一类别,用相应的类别属性yes来标记

2.3 Outlook为rainy时:

temperature

humidity

windy

play

mild

high

FALSE

yes

cool

normal

FALSE

yes

cool

normal

TRUE

no

mild

normal

FALSE

yes

mild

high

TRUE

no

temperature

humidity

windy

play

yes

no

yes

no

yes

no

yes

no

mild

2

1

high

1

1

FALSE

3

0

3

2

cool

1

1

normal

2

1

TRUR

0

2

2.3.1 temperature为milk时:

humidity

windy

play

high

FALSE

yes

normal

FALSE

yes

high

TRUE

no

humidity

windy

play

yes

no

yes

no

yes

no

high

1

1

FALSE

2

0

2

1

normal

1

0

TRUR

0

1

2.3.1.1 windy为false时:

humidity

play

high

yes

normal

yes

另外一种情况,所以的样本都属于同一类别。用相应的类别属性yes来标记

2.3.1.2 windy为true时:

humidity

play

high

no

另外一种情况。所以的样本都属于同一类别,用相应的类别属性no来标记

2.3.2 temperature为cool时:

temperature

humidity

windy

play

cool

normal

FALSE

yes

cool

normal

TRUE

yes

另外一种情况,所以的样本都属于同一类别,用相应的类别属性yes来标记

经计算得到的决策树:

3 ID3算法Java实现

ID3算法实现包含四个类的设计:

一、 决策树节点类(TreeNode类),包含类属性:name(节点属性名称)。rule(节点属性值域,也就是相应决策树的分裂规则),child(节点下的孩子节点)。datas(当前决策下相应的样本元组), candidateAttr(当前决策下剩余的分类属性)。

二、 最大信息增益节点计算类(Gain类):包含属性值:D(当前决策层次下的样本数据),attrList(当前决策层次下的剩余分类属性);包含方法:统计属性取值方法,统计属性不同取值计数方法,计算先验熵和条件熵的方法。筛选指定属性索引在指定值上的样本元组方法。通过先验熵减后验熵计算出最大信息增益值属性的方法。详细方法在程序中都已经凝视。在这里仅仅是依据需求给出方法的大致功能。

三、决策树建立类(DecisionTree类):包含方法:计算当前样本中分类属性的取值及其计数,并由此计算出多数类,决策树节点递归构建构成,详细实现思想同课上讲授内容。在此不在重述,借助的类是增益值计算类。

四、 ID3算法測试类(TestDecisionTree类):借助于上面决策树建立类,决策树节点之间连接已经建立完成。以下将以上第二部分的样本数据作为測试数据,而且实现递归打印方法,输出决策树详细内容。

ID3算法Java实现的更多相关文章

  1. 决策树ID3算法的java实现(基本试用所有的ID3)

    已知:流感训练数据集,预定义两个类别: 求:用ID3算法建立流感的属性描述决策树 流感训练数据集 No. 头痛 肌肉痛 体温 患流感 1 是(1) 是(1) 正常(0) 否(0) 2 是(1) 是(1 ...

  2. 决策树ID3算法的java实现

    决策树的分类过程和人的决策过程比较相似,就是先挑“权重”最大的那个考虑,然后再往下细分.比如你去看医生,症状是流鼻涕,咳嗽等,那么医生就会根据你的流鼻涕这个权重最大的症状先认为你是感冒,接着再根据你咳 ...

  3. ID3算法(Java实现)

    数据存储文件:buycomputer.properties #数据个数 datanum=14 #属性及属性值 nodeAndAttribute=年龄:青/中/老,收入:高/中/低,学生:是/否,信誉: ...

  4. 决策树ID3算法的java实现(基本适用所有的ID3)

    已知:流感训练数据集,预定义两个类别: 求:用ID3算法建立流感的属性描述决策树 流感训练数据集 No. 头痛 肌肉痛 体温 患流感 1 是(1) 是(1) 正常(0) 否(0) 2 是(1) 是(1 ...

  5. 机器学习笔记----- ID3算法的python实战

    本文申明:本文原创,如有转载请申明.数据代码来自实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. Hell ...

  6. 归纳决策树ID3(Java实现)

    先上问题吧,我们统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play).如果给出新一天的气象指标数据:sunny,c ...

  7. ID3算法(决策树)

    一,预备知识: 信息量: 单个类别的信息熵: 条件信息量: 单个类别的条件熵: 信息增益: 信息熵: 条件熵:(表示分类的类,表示属性V的取值,m为属性V的取值个数,n为分类的个数) 二.算法流程: ...

  8. 归并排序算法 java 实现

    归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...

  9. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

随机推荐

  1. Struts2 改变语言状态

    只要在请求中增加 request_locale=en_US 参数,就可以实现语言的切换,内部由拦截器实现

  2. [转]jQuery中attr() 和 val() 的区别

    [转](http://www.codeproject.com/Tips/780652/Difference-between-attr-and-val-in-jQuery)

  3. [LOJ#2330]「清华集训 2017」榕树之心

    [LOJ#2330]「清华集训 2017」榕树之心 试题描述 深秋.冷风吹散了最后一丝夏日的暑气,也吹落了榕树脚下灌木丛的叶子.相识数年的Evan和Lyra再次回到了小时候见面的茂盛榕树之下.小溪依旧 ...

  4. windows部分快捷键及terminal命令

    切换任务: win+tab terminal命令 pwd:打印当前工作目录 hostname:获取我的计算机的网络名称 mkdir:创建目录 cd:更改目录 ls/ dir -R:列出目录下的文件 r ...

  5. git refs 详解

    https://blog.csdn.net/taiyangdao/article/details/52766424 http://www.chenchunyong.com/2017/01/06/git ...

  6. codeforces round373(div.2) 题解

    这一把打得还算过得去... 最大问题在于A题细节被卡了好久...连续被hack两次... B题是个规律题...C题也是一个细节题...D由于不明原因标程错了被删掉了...E是个线段树套矩阵... 考试 ...

  7. BZOJ 3384 上帝与集合的正确用法

    上帝与集合的正确用法 [问题描述] [输入格式] 第一行一个T,接下来T行,每行一个正整数p,代表你需要取模的值. [输出格式] T行,每行一个正整数,为答案对p取模后的值. [样例输入] 3236 ...

  8. one pragmatical sqlhelper

    namespace ConsoleApplication2 { using System; using System.Collections.Generic; using System.Linq; u ...

  9. ef code first transform,add ef power tools add-in,add tangible t4 editor for enhancement.

    use ef power tools, as to .edmx file,right click at view, choose generate database from model, then ...

  10. [LeetCode] Binary Tree Postorder Traversal dfs,深度搜索

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...