資源簡介
使用Java實現的ID3決策樹,內含數據文件及ID3類的源代碼。實現了決策樹分類,結果存儲為XML文件,以及基于模型進行的分類預測。

代碼片段和文件信息
package?ID3;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileReader;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.lang.Character.Subset;
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;
import?org.w3c.dom.NodeList;
public?class?ID3?{
/**
?*?同時保留訓練集和測試集的數據在模型中,防止訓練集和測試集的列順序不同
?*/
private?ArrayList?trainAttribute?=?new?ArrayList();?//?存儲訓練集屬性的名稱?
????private?ArrayList>?train_attributeValue?=?new?ArrayList>();?//?存儲訓練集每個屬性的取值?
????private?ArrayList?predictAttribute?=?new?ArrayList();?//?存儲測試集屬性的名稱?
????private?ArrayList>?predict_attributeValue?=?new?ArrayList>();?//?存儲測試集每個屬性的取值?
????
????
????private?ArrayList?train_data?=?new?ArrayList();?//?訓練集數據?,即arff文件中的data字符串
????private?ArrayList?predict_data?=?new?ArrayList();?//?測試集數據
????
????private?String[]?preLable;
????
????int?decatt;?//?決策變量在屬性集中的索引(即類標所在列)?
????public?static?final?String?patternString?=?“@attribute(.*)[{](.*?)[}]“;?
????//正則表達,其中*??表示重復任意次,但盡可能少重復,防止匹配到更后面的“}“符號
???
????Document?xmldoc;?
????Element?root;?
????public?ID3()?{?
???? //創建并初始化xml文件,以用于儲存決策樹結構
????????xmldoc?=?DocumentHelper.createDocument();?
????????root?=?xmldoc.addElement(“root“);?
????????root.addElement(“DecisionTree“).addAttribute(“value“?“null“);?
????}?
????/**
?????*?模型訓練函數
?????*?@param?class_name??類標變量
?????*?@param?data_pathname?訓練集
?????*?@return?xml決策樹文件
?????*/
????public?Document?train(String?class_nameString?data_pathname){
???? read_trainARFF(new?File(data_pathname));?
???? setDec(class_name);
???? linkedList?ll=new?linkedList();?//linkList用于增刪比ArrayList有優勢
????????for(int?i=0;i ????????????if(i!=decatt)?ll.add(i);??//防止類別變量不在最后一列發生錯誤?
????????}?
????????
????????ArrayList?al=new?ArrayList();?
????????for(int?i=0;i ????????????al.add(i);?
????????}
????????buildDT(“DecisionTree“?“null“?al?ll);
???? return?xmldoc;
????}
????
????/**
?????*?預測/分類函數(利用保留在類里的xml決策時模型進行預測)
?????*?@param?data_pathname??測試集
?????*?@return?預測結果集
?????*/
????public?String[]?predict(String?data_pathname){
???? read_predictARFF(new?File(data_pathname));?
????????preLable=new?String[predict_data.size()];
???? ArrayList?subset=new?ArrayList();
????
???? for(int?i=0;i ???? subset.add(i);
???? }
????
???? Element?root=xmldoc.getRootElement();
???? Element?DecisionTree=root.element(“DecisionTree“);
????
???? giveLable(DecisionTree?subset);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????533??2017-09-20?15:03??ID3_Decision_Tree\.classpath
?????文件????????393??2017-09-20?15:12??ID3_Decision_Tree\.project
?????文件????????598??2017-09-18?17:38??ID3_Decision_Tree\.settings\org.eclipse.jdt.core.prefs
?????文件?????313898??2017-09-18?18:35??ID3_Decision_Tree\bin\dom4j-1.6.1.jar
?????文件??????10960??2017-09-20?15:12??ID3_Decision_Tree\bin\ID3\ID3.class
?????文件????????398??2017-09-20?11:35??ID3_Decision_Tree\bin\ID3\ID3_Tree.xm
?????文件???????1186??2017-09-20?15:12??ID3_Decision_Tree\bin\ID3\Main.class
?????文件????????530??2017-09-20?10:41??ID3_Decision_Tree\bin\ID3\predict.arff
?????文件????????606??2017-09-18?18:27??ID3_Decision_Tree\bin\ID3\train.arff
?????文件?????226915??2017-09-19?11:50??ID3_Decision_Tree\bin\jaxen-1.1.1.jar
?????文件?????313898??2017-09-18?18:35??ID3_Decision_Tree\external?jars\dom4j-1.6.1.jar
?????文件?????226915??2017-09-19?11:50??ID3_Decision_Tree\external?jars\jaxen-1.1.1.jar
?????文件????????398??2017-09-20?11:35??ID3_Decision_Tree\files\ID3\ID3_Tree.xm
?????文件????????530??2017-09-20?10:41??ID3_Decision_Tree\files\ID3\predict.arff
?????文件????????606??2017-09-18?18:27??ID3_Decision_Tree\files\ID3\train.arff
?????文件??????12820??2017-09-20?15:07??ID3_Decision_Tree\src\ID3\ID3.java
?????文件????????349??2017-09-20?15:04??ID3_Decision_Tree\src\ID3\Main.java
?????目錄??????????0??2017-09-20?15:12??ID3_Decision_Tree\bin\ID3
?????目錄??????????0??2017-09-20?11:03??ID3_Decision_Tree\files\ID3
?????目錄??????????0??2017-09-19?14:26??ID3_Decision_Tree\src\ID3
?????目錄??????????0??2017-09-18?17:38??ID3_Decision_Tree\.settings
?????目錄??????????0??2017-09-20?15:12??ID3_Decision_Tree\bin
?????目錄??????????0??2017-09-18?18:35??ID3_Decision_Tree\external?jars
?????目錄??????????0??2017-09-19?11:42??ID3_Decision_Tree\files
?????目錄??????????0??2017-09-20?15:04??ID3_Decision_Tree\src
?????目錄??????????0??2017-09-20?15:03??ID3_Decision_Tree
-----------?---------??----------?-----??----
??????????????1111533????????????????????26
- 上一篇:C4.5決策樹Java實現
- 下一篇:jsp+mysql實現圖書管理系統
評論
共有 條評論