1、youth medium no fair noyouth low yes fair yessenior medium yes fair yesyes excellent yes high yes fair yes no excellent noC4.5建立树类package C45Test;import java.util.ArrayList;import java.util.List;import java.util.Map;public class DecisionTree public TreeNode createDT(ListArrayList data,List attribute
2、List) System.out.println(当前的DATA为); for(int i=0;idata.size();i+) ArrayList temp = data.get(i); for(int j=0;jtemp.size();j+) System.out.print(temp.get(j)+ System.out.println();-当前的ATTR为attributeList.size(); System.out.print(attributeList.get(i)+ TreeNode node = new TreeNode(); String result = InfoGai
3、n.IsPure(InfoGain.getTarget(data); if(result != null) node.setNodeName(leafNode node.setTargetFunValue(result); return node; if(attributeList.size() = 0) else InfoGain gain = new InfoGain(data,attributeList); double maxGain = 0.0; int attrIndex = -1; double tempGain = gain.getGainRatio(i); if(maxGai
4、n tempGain) maxGain = tempGain; attrIndex = i;选择出的最大增益率属性为: + attributeList.get(attrIndex); node.setAttributeValue(attributeList.get(attrIndex); List resultData = null; Map attrvalueMap = gain.getAttributeValue(attrIndex); for(Map.Entry entry : attrvalueMap.entrySet() resultData = gain.getData4Value
5、(entry.getKey(), attrIndex); TreeNode leafNode = null;当前为+attributeList.get(attrIndex)+的+entry.getKey()+分支。 if(resultData.size() = 0) leafNode = new TreeNode(); leafNode.setNodeName(attributeList.get(attrIndex); leafNode.setTargetFunValue(result); leafNode.setAttributeValue(entry.getKey(); for (int
6、j = 0; j resultData.size(); j+) resultData.get(j).remove(attrIndex); resultAttr = new ArrayList(attributeList); resultAttr.remove(attrIndex); leafNode = createDT(resultData,resultAttr); node.getChildTreeNode().add(leafNode); node.getPathName().add(entry.getKey(); class TreeNode private String attrib
7、uteValue; private List childTreeNode; pathName; private String targetFunValue; private String nodeName; public TreeNode(String nodeName) this.nodeName = nodeName; this.childTreeNode = new ArrayList(); this.pathName = new ArrayList public TreeNode() public String getAttributeValue() return attributeV
8、alue; public void setAttributeValue(String attributeValue) this.attributeValue = attributeValue; public List getChildTreeNode() return childTreeNode; public void setChildTreeNode(List childTreeNode) this.childTreeNode = childTreeNode; public String getTargetFunValue() return targetFunValue; public v
9、oid setTargetFunValue(String targetFunValue) this.targetFunValue = targetFunValue; public String getNodeName() return nodeName; public void setNodeName(String nodeName) getPathName() return pathName; public void setPathName(List pathName) this.pathName = pathName;增益率计算类(取log的时候底用的是e,没用2)import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Set;/C 4.5 实现public class InfoGain data; attribute; public InfoGain(List attribute) this.data = new ArrayList t = new ArrayList t.add(temp.get(j); this.data.add(t); this.attribute = new ArrayListSt
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1