public static Output ProcessInstance(Tree tree, Instance i) { if (tree.Leaf != null) { return tree.Leaf; } return ProcessInstance(tree.TreeForInstance(i), i); }
public void DecideOnTree() { var tree = GetDataSet().BuildTree(); var instance = new Instance { Features = new List<Feature> { new Feature("1", CAN_SURVIVE_WITHOUT_SURFACING), new Feature("1", HAS_FLIPPERS) } }; var output = Tree.ProcessInstance(tree, instance); Assert.That(output.Axis, Is.EqualTo(IS_FISH)); Assert.That(output.Value, Is.EqualTo("yes")); }
private DecisionTreeSet GetDataSet() { #region data var instance1 = new Instance { Output = new Output("yes", IS_FISH), Features = new List<Feature> { new Feature("1", CAN_SURVIVE_WITHOUT_SURFACING), new Feature("1", HAS_FLIPPERS) } }; var instance2 = new Instance { Output = new Output("yes", IS_FISH), Features = new List<Feature> { new Feature("1", CAN_SURVIVE_WITHOUT_SURFACING), new Feature("1", HAS_FLIPPERS) } }; var instance3 = new Instance { Output = new Output("no", IS_FISH), Features = new List<Feature> { new Feature("1", CAN_SURVIVE_WITHOUT_SURFACING), new Feature("0", HAS_FLIPPERS) } }; var instance4 = new Instance { Output = new Output("no", IS_FISH), Features = new List<Feature> { new Feature("0", CAN_SURVIVE_WITHOUT_SURFACING), new Feature("1", HAS_FLIPPERS) } }; var instance5 = new Instance { Output = new Output("no", IS_FISH), Features = new List<Feature> { new Feature("0", CAN_SURVIVE_WITHOUT_SURFACING), new Feature("1", HAS_FLIPPERS) } }; #endregion return new DecisionTreeSet { Instances = new List<Instance> { instance1, instance2, instance3, instance4, instance5 } }; }
private Tree TreeForInstance(Instance instance) { var tree = instance.Features.Select(TreeForFeature).FirstOrDefault(f => f != null); return tree; }