刚才写了ID3决策树的建立,这个是通过决策树来进行预测。这里主要用到的就是XML的遍历解析,比较简单。

关于xml的解析,参考了:

http://blog.csdn.net/soszou/article/details/8049220

http://lavasoft.blog.51cto.com/62575/71669/

思路:

先将要预测的数据,例如"sunny mild normal TRUE"根据特征表变成一个map,方便后续查找,结果为

outlook sunny

temperature windy

humidity normal

windy TRUE这样的map

接着就变量xml文件,从root的子节点开始,如果该节点不存在子节点,就说明是叶节点了,那么就直接输出text,就是其分类的类别。如果有子节点,就根据map中的value去找对应的节点,并将该节点作为下一次迭代的节点参数。

 1 import java.io.File;
 2 import java.io.IOException;
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7
 8 import org.dom4j.Document;
 9 import org.dom4j.DocumentException;
10 import org.dom4j.Element;
11 import org.dom4j.io.SAXReader;
12
13 public class Predict {
14
15     public static Map<String,String> getMap(String data,ArrayList<String> featureList){
16         Map<String,String> map=new HashMap();
17         String[] s=data.split(" ");
18         for(int i=0;i<s.length;i++){
19             map.put(featureList.get(i),s[i]);
20         }
21         return map;
22     }
23
24     public static int predict(Map<String,String> map,Element e){
25         List<Element> childList=e.elements();
26         if(childList.size()==0){
27             System.out.println( e.getText());
28             return 1;
29         }
30         String value=map.get(childList.get(0).getName());
31         for(Element next:childList){
32             String t=next.attributeValue("value");//这里的属性名都为value,所以这样就能获得该属性的值
33             if(t.compareTo(value)==0){
34                 predict(map,next);
35             }
36         }
37         return 1;
38     }
39
40
41     /**
42      * @param args
43      * @throws DocumentException
44      * @throws IOException
45      */
46     public static void main(String[] args) throws DocumentException, IOException {
47         // TODO Auto-generated method stub
48         String xml="C:/Users/Administrator/Desktop/upload/DT1.xml";
49         String file="C:/Users/Administrator/Desktop/upload/DT.txt";
50         String data="sunny mild normal TRUE";
51         ArrayList<String> featureList=Utils.loadFeature(file);
52         Map<String,String> map=getMap(data,featureList);
53
54         SAXReader saxReader=new SAXReader();
55         Document document =saxReader.read(new File(xml));
56         Element root=document.getRootElement();
57
58         predict(map,root);
59         System.out.println("finished");
60     }
61
62 }

转载于:https://www.cnblogs.com/sunrye/p/4562764.html

ID3决策树预测的java实现相关推荐

  1. ID3构造决策树预测隐形眼镜类型(代码笔记)

    决策树可以从数据集合中提取出一系列规则,从而分类样本.它的优势是理解数据蕴含信息. 思想:利用信息增益(information gain)[度量数据集信息的方式-香农熵(entropy)]计算得出最好 ...

  2. 西瓜书 课后习题6.3 SVM,bpa神经网络,ID3决策树 比较

    import csv from sklearn import svm import numpy as np from math import log import operatordef dataSe ...

  3. python决策树id3算法_决策树ID3算法预测隐形眼睛类型--python实现

    标签: 本节讲解如何预测患者需要佩戴的隐形眼镜类型. 1.使用决策树预测隐形眼镜类型的一般流程 (1)收集数据:提供的文本文件(数据来源于UCI数据库) (2)准备数据:解析tab键分隔的数据行 (3 ...

  4. id3决策树 鸢尾花 python_决策树算法——集成学的基础!

    文 | 菊子皮 (转载请注明出处)同名B站:AIAS编程有道 「摘要:」  决策树在机器学习算法中是一个相对简单的算法,如果不能进行适当的剪枝就容易造成模型的过拟合.决策树算法也是当前很多集成学习算法 ...

  5. 机器学习入门学习笔记:(3.2)ID3决策树程序实现

    前言 之前的博客中介绍了决策树算法的原理并进行了数学推导(机器学习入门学习笔记:(3.1)决策树算法).决策树的原理相对简单,决策树算法有:ID3,C4.5,CART等算法.接下来将对ID3决策树算法 ...

  6. id3决策树 鸢尾花 python_C4.5决策树Python代码实现

    C4.5决策树Python代码实现 我们知道C4.5决策树与ID3决策树最主要的区别就是C4.5使用信息增益率来划分最优属性.因为使用信息增益来划分属性的话会存在以下这些缺点:对可取属性多的特征有偏好 ...

  7. 【2016年第1期】基于大数据的小麦蚜虫发生程度决策树预测分类模型

    张晴晴,刘勇,牟少敏,温孚江 山东农业大学农业大数据研究中心,山东 泰安 271018 摘要:小麦蚜虫是危害小麦的主要害虫.其发生程度预测特别是短期预测一直是植物保护领域难以解决的科学问题.传统预测方 ...

  8. 决策树(四):使用决策树预测隐形眼镜类型

    使用决策树预测隐形眼镜类型 介绍 代码部分 总结 介绍 本节我们将通过一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类型.使用小数据集 ,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要 ...

  9. ID3决策树的Python实现与理解

    简单介绍 决策树是一个非常常见并且优秀的机器学习中监督学习的算法,它易于理解.可解释性强,是一种简单且广泛使用的分类器.通过数据来训练该预测模型,从而高效对未打标签的数据进行分类.因此简单来说那,决策 ...

最新文章

  1. 为什么LINKBUTTON不能插在LTEMTEMPLATE里???
  2. 条件编译#ifdef的妙用详解
  3. 2020测试机械硬盘软件,YDT 3825-2020面向互联网应用的机械硬盘测试规范.pdf
  4. MySQL buffer pool中的三种链
  5. linux 并行执行脚本,在bash / linux中并行运行shell脚本
  6. 回溯算法 ------回溯算法的几个例子
  7. unbuntu cmake安装mysql_ubuntu下编译安装mysql5.5
  8. spark的java源码,Spark源码包的编译
  9. Linux系统调用表(x86_64)
  10. 【转】SpringCloud学习
  11. Helm 3 完整教程(十五):Helm 函数讲解(9)网络函数、文件路径函数、类型检查函数
  12. Curve Modeling:车道线检测新工作(CVPR2022)
  13. 几个轻巧好用的代码检查工具!
  14. word文档可以压缩大小吗,详细压缩步骤
  15. 内存分区0x00000000-0x0000FFFF共64K是null指针
  16. pycharm2019版本去掉下划线的方法
  17. Java输入1~12之间的整数,显示该月份的英语单词及这个月属第几季度。
  18. java nio MappedByteBuffer 文件映射
  19. C/C++ 余弦函数 cos - C语言零基础入门教程
  20. 二分查找法-floor和ceil函数实现(C++)

热门文章

  1. C#从新浪新闻上提取新闻标题
  2. Linux C 多线程编程----互斥锁与条件变量-转
  3. 华为鸿蒙11什么时候发布,原创 华为EMUI11正式发布,今年12月可升级为鸿蒙OS2.0国产操作系统...
  4. java项目学习_一个Java项目的学习
  5. 创建对象、原型、原型链
  6. p1198bzoj1012 最大数
  7. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer
  8. 大数据全球战略布局全面升级
  9. linux centos java 应用服务器配置
  10. 为vsftpd添加虚拟用户的脚本