public void RunTest() { double[][] inputs; int[] outputs; int training = 6000; DecisionTree tree = ReducedErrorPruningTest.createNurseryExample(out inputs, out outputs, training); int nodeCount = 0; foreach (var node in tree) nodeCount++; var pruningInputs = inputs.Submatrix(training, inputs.Length - 1); var pruningOutputs = outputs.Submatrix(training, inputs.Length - 1); ErrorBasedPruning prune = new ErrorBasedPruning(tree, pruningInputs, pruningOutputs); prune.Threshold = 0.1; double lastError, error = Double.PositiveInfinity; do { lastError = error; error = prune.Run(); } while (error < lastError); int nodeCount2 = 0; foreach (var node in tree) nodeCount2++; Assert.AreEqual(0.25459770114942532, error); Assert.AreEqual(447, nodeCount); Assert.AreEqual(193, nodeCount2); }
private static void repeat(double[][] inputs, int[] outputs, DecisionTree tree, int training, double threshold, out int nodeCount2) { int nodeCount = 0; foreach (var node in tree) nodeCount++; var pruningInputs = inputs.Submatrix(training, inputs.Length - 1); var pruningOutputs = outputs.Submatrix(training, inputs.Length - 1); ErrorBasedPruning prune = new ErrorBasedPruning(tree, pruningInputs, pruningOutputs); prune.Threshold = threshold; double lastError; double error = Double.PositiveInfinity; do { lastError = error; error = prune.Run(); } while (error < lastError); nodeCount2 = 0; foreach (var node in tree) nodeCount2++; }