// // PRIVATE METHODS // private DecisionTree decisionTreeLearning(DataSet ds, List<String> attributeNames, ConstantDecisonTree defaultTree) { if (ds.size() == 0) { return defaultTree; } if (allExamplesHaveSameClassification(ds)) { return new ConstantDecisonTree(ds.getExample(0).targetValue()); } if (attributeNames.Count == 0) { return majorityValue(ds); } String chosenAttribute = chooseAttribute(ds, attributeNames); DecisionTree tree = new DecisionTree(chosenAttribute); ConstantDecisonTree m = majorityValue(ds); List<String> values = ds.getPossibleAttributeValues(chosenAttribute); foreach (String v in values) { DataSet filtered = ds.matchingDataSet(chosenAttribute, v); List<String> newAttribs = Util.removeFrom(attributeNames, chosenAttribute); DecisionTree subTree = decisionTreeLearning(filtered, newAttribs, m); tree.addNode(v, subTree); } return tree; }
public virtual void addLeaf(String attributeValue, String decision) { if (nodes.ContainsKey(attributeValue)) { nodes[attributeValue] = new ConstantDecisonTree(decision); } else { nodes.Add(attributeValue, new ConstantDecisonTree(decision)); } }
public virtual void addLeaf(String attributeValue, String decision) { if (nodes.ContainsKey(attributeValue)) { nodes[attributeValue] = new ConstantDecisonTree(decision); } else { nodes.Add(attributeValue, new ConstantDecisonTree(decision)); } }