ID3决策树预测的java实现
刚才写了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去找对应的节点,并将该节点作为下一次迭代的节点参数。
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Predict { public static Map<String,String> getMap(String data,ArrayList<String> featureList){
Map<String,String> map=new HashMap();
String[] s=data.split(" ");
for(int i=0;i<s.length;i++){
map.put(featureList.get(i),s[i]);
}
return map;
} public static int predict(Map<String,String> map,Element e){
List<Element> childList=e.elements();
if(childList.size()==0){
System.out.println( e.getText());
return 1;
}
String value=map.get(childList.get(0).getName());
for(Element next:childList){
String t=next.attributeValue("value");//这里的属性名都为value,所以这样就能获得该属性的值
if(t.compareTo(value)==0){
predict(map,next);
}
}
return 1;
} /**
* @param args
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws DocumentException, IOException {
// TODO Auto-generated method stub
String xml="C:/Users/Administrator/Desktop/upload/DT1.xml";
String file="C:/Users/Administrator/Desktop/upload/DT.txt";
String data="sunny mild normal TRUE";
ArrayList<String> featureList=Utils.loadFeature(file);
Map<String,String> map=getMap(data,featureList); SAXReader saxReader=new SAXReader();
Document document =saxReader.read(new File(xml));
Element root=document.getRootElement(); predict(map,root);
System.out.println("finished");
} }
ID3决策树预测的java实现的更多相关文章
- 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)
1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? ...
- 【Machine Learning in Action --3】决策树ID3算法预测隐形眼睛类型
本节讲解如何预测患者需要佩戴的隐形眼镜类型. 1.使用决策树预测隐形眼镜类型的一般流程 (1)收集数据:提供的文本文件(数据来源于UCI数据库) (2)准备数据:解析tab键分隔的数据行 (3)分析数 ...
- Python3实现机器学习经典算法(三)ID3决策树
一.ID3决策树概述 ID3决策树是另一种非常重要的用来处理分类问题的结构,它形似一个嵌套N层的IF…ELSE结构,但是它的判断标准不再是一个关系表达式,而是对应的模块的信息增益.它通过信息增益的大小 ...
- ID3决策树的Java实现
package DecisionTree; import java.io.*; import java.util.*; public class ID3 { //节点类 public class DT ...
- ID3决策树---Java
1)熵与信息增益: 2)以下是实现代码: //import java.awt.color.ICC_ColorSpace; import java.io.*; import java.util.Arra ...
- java编写ID3决策树
说明:每个样本都会装入Data样本对象,决策树生成算法接收的是一个Array<Data>样本列表,所以构建测试数据时也要符合格式,最后生成的决策树是树的根节点,通过里面提供的showTre ...
- ID3决策树
决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺少不敏感,可以处理不相关特征数据 缺点:过拟合 决策树的构造 熵:混乱程度,信息的期望值 其中p(xi)是选择分类的概率 熵就是计算所有类别 ...
- python ID3决策树实现
环境:ubuntu 16.04 python 3.6 数据来源:UCI wine_data(比较经典的酒数据) 决策树要点: 1. 如何确定分裂点(CART ID3 C4.5算法有着对应的分裂计算方式 ...
- 吴裕雄--天生自然python机器学习:使用决策树预测隐形眼镜类型
解决策树如何预测患者需要佩戴的隐形眼镜类型.使用小数据 集,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要佩戴的镜片类型:一旦 理解了决策树的工作原理,我们甚至也可以帮助人们判断需要佩戴 ...
随机推荐
- Greedy Change
Greedy Change time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- ReactiveCocoa 用法实例
我个人非常推崇ReactiveCocoa,它就像中国的太极,太极生两仪,两仪生四象,四象生八卦,八卦生万物.ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛 ...
- 推荐 iOS 网站:
0. https://developer.apple.com/videos/1. http://www.raywenderlich.com2. http://nshipster.com3. http: ...
- HDU1114--Piggy-Bank(完全背包变形)
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- SDAU课程练习--problemQ(1016)
题目描述 FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'med ...
- struts2+ajax实现异步验证
由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在 ...
- js 基础对象二
大的分类 JavaScript 对象 JS Array JS Boolean JS Date JS Math JS Number JS String JS RegExp JS Functions JS ...
- Android平台设计规范整理(尺寸+组成元素+字体+滑块)
转自:http://www.ui.cn/project.php?id=12394
- UAC绕过思路(未完)
---恢复内容开始--- What is UAC?
- Python之路【第二篇】:Python基础(二)
windows的换行符:\n\r linux的换行符:\n 文件的数据处理: r 以只读模式打开文件(默认模式)w 以只写模式打开文件a 以追加模式打开文件 r+b 以读写模式打开文件(以读/写方式打 ...