package com.haolidong.Decisiontree;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map.Entry;
/**
* @author haolidong
* @Description: [该类主要用于HashMap进行自定义的排序(从大到小)]
*/
public class ComparatorImpl implements Comparator<HashMap<String,Integer>>{
@SuppressWarnings("unchecked")
@Override
public int compare(HashMap<String, Integer> o1, HashMap<String, Integer> o2) {
// TODO Auto-generated method stub
Entry<String, Integer> obj1 = (Entry<String, Integer>) o1;
Entry<String, Integer> obj2 = (Entry<String, Integer>) o2;
return ((Integer) (obj2.getValue()) - (Integer) (obj1.getValue()));
}
}
package com.haolidong.Decisiontree;
import java.util.ArrayList;
/**
*
* @author haolidong
* @Description: [该类主要用于保存特征信息]
* @parameter data: [主要保存特征矩阵]
*/
public class Matrix {
public ArrayList<ArrayList<String>> data;
public Matrix() {
// TODO Auto-generated constructor stub
data = new ArrayList<ArrayList<String>>();
}
}
package com.haolidong.Decisiontree;
import java.util.ArrayList;
/**
*
* @author haolidong
* @Description: [该类主要用于保存特征信息以及标签值]
* @parameter labels: [主要保存标签值]
*/
public class CreateDataSet extends Matrix{
public ArrayList<String> labels;
public CreateDataSet() {
// TODO Auto-generated constructor stub
super();
labels = new ArrayList<String>();
}
/**
* @author haolidong
* @Description: [机器学习实战决策树第一个案例的数据]
*/
public void initTest()
{
ArrayList<String> ab1 = new ArrayList<String>();
ArrayList<String> ab2 = new ArrayList<String>();
ArrayList<String> ab3 = new ArrayList<String>();
ArrayList<String> ab4 = new ArrayList<String>();
ArrayList<String> ab5 = new ArrayList<String>();
ab1.add("1");ab1.add("1");ab1.add("yes");
ab2.add("1");ab2.add("1");ab2.add("yes");
ab3.add("1");ab3.add("0");ab3.add("no");
ab4.add("0");ab4.add("1");ab4.add("no");
ab5.add("0");ab5.add("1");ab5.add("no");
data.add(ab1);
data.add(ab2);
data.add(ab3);
data.add(ab4);
data.add(ab5);
labels.add("no surfacing");
labels.add("flippers");
}
}
package com.haolidong.Decisiontree;
import java.util.ArrayList;
/**
*
* @author haolidong
* @Description: [该类主要用于模拟Python的字典,最终保存生成树的信息]
* @parameter arrow: [主要保存父节点指向自己的标签名字]
* @parameter name: [主要保存当前节点的名字]
* @parameter arrDic: [主要保存子节点的信息]
*/
public class Dictionary {
public String arrow;
public String name;
public ArrayList<Dictionary> arrDic;
/**
* @author haolidong
* @Description: [类的构造函数,分配空间,根节点只要arrow什么也不填]
*/
public Dictionary() {
// TODO Auto-generated constructor stub
arrow = new String("");
name = new String("");
arrDic = new ArrayList<Dictionary>();
}