这学期hadoop的作业是实现ID3算法,在网上找到了一篇非常好的资料,但是代码没有详细介绍。研究一番之后写出了自己ID3算法的普通实现和线程模拟分布式实现。
先附上原文地址:
http://www.cnblogs.com/zhangchaoyang/articles/2196631.html
博主写的非常好,基本上简单易懂的描述了ID3算法的原理。
###问题
统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球。
###ID3原理
直接看博客链接,非常详细http://www.cnblogs.com/zhangchaoyang/articles/2196631.html
###代码实现
别忘了放入输入文件,按我的程序保存在指定位置,保存名为weather.arff
@relation weather.symbolic
@attribute outlook {sunny, overcast, rainy}
@attribute temperature {hot, mild, cool}
@attribute humidity {high, normal}
@attribute windy {TRUE, FALSE}
@attribute play {yes, no}
@data
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
package com.coderfish.id3;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* date:2015年6月15日<br/ >
* description:
* 统计了14天的气象数据(outlook天气状况,temperature温度,humidity湿度,windy风力),并已知这些天气是否打球(play)
* 如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球。<br/ >
*
* @author 周凌宇 <