• 大小: 961KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Java
  • 标签: ID3决策树  

资源简介

使用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.xml

     文件       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.xml

     文件        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


评论

共有 条评论