• 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去找对应的节点,并将该节点作为下一次迭代的节点参数。

     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 }
  • 相关阅读:
    02---控制移动底座8
    02---控制移动底座7
    02---控制移动底座6
    02---控制移动底座5
    第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
    第四章输入/输出(I/O)4.1I/O涉及的设备及相关概念简介
    1.6 opencv视频操作基础
    1.5快速上手OpenCV图像处理
    02---控制移动底座4
    函数cvtColor
  • 原文地址:https://www.cnblogs.com/sunrye/p/4562764.html
Copyright © 2020-2023  润新知