public void testDecisionListHandlesEmptyDataSet() { // tests first base case of recursion DecisionList dlist = new DecisionList("Yes", "No"); DLTest test1 = new DLTest(); test1.add("type", "Thai"); // doesn't match first example dlist.add(test1, "test1success"); }
public void testDecisionListWithSingleTestReturnsTestValueIfTestSuccessful() { DecisionList dlist = new DecisionList("Yes", "No"); DataSet ds = DataSetFactory.getRestaurantDataSet(); DLTest test = new DLTest(); test.add("type", "French"); dlist.add(test, "test1success"); Assert.AreEqual("test1success", dlist.predict(ds.getExample(0))); }
public DecisionList mergeWith(DecisionList dlist2) { DecisionList merged = new DecisionList(positive, negative); foreach (DLTest test in tests) { merged.add(test, testOutcomes[test]); } foreach (DLTest test in dlist2.tests) { merged.add(test, dlist2.testOutcomes[test]); } return merged; }
public DecisionList mergeWith(DecisionList dlist2) { DecisionList merged = new DecisionList(positive, negative); foreach (DLTest test in tests) { merged.add(test, testOutcomes[test]); } foreach (DLTest test in dlist2.tests) { merged.add(test, dlist2.testOutcomes[test]); } return(merged); }
public void testDecisionListFallsThruToDefaultIfNoTestMatches() { DecisionList dlist = new DecisionList("Yes", "No"); DataSet ds = DataSetFactory.getRestaurantDataSet(); DLTest test1 = new DLTest(); test1.add("type", "Thai"); // doesn't match first example dlist.add(test1, "test1success"); DLTest test2 = new DLTest(); test2.add("type", "Burger"); dlist.add(test2, "test2success");// doesn't match first example Assert.AreEqual("No", dlist.predict(ds.getExample(0))); }
public void testDecisionListMerge() { DecisionList dlist1 = new DecisionList("Yes", "No"); DecisionList dlist2 = new DecisionList("Yes", "No"); DataSet ds = DataSetFactory.getRestaurantDataSet(); DLTest test1 = new DLTest(); test1.add("type", "Thai"); // doesn't match first example dlist1.add(test1, "test1success"); DLTest test2 = new DLTest(); test2.add("type", "French"); dlist2.add(test2, "test2success");// matches first example DecisionList dlist3 = dlist1.mergeWith(dlist2); Assert.AreEqual("test2success", dlist3.predict(ds.getExample(0))); }
// // PRIVATE METHODS // private DecisionList decisionListLearning(DataSet ds) { if (ds.size() == 0) { return new DecisionList(positive, negative); } List<DLTest> possibleTests = testFactory .createDLTestsWithAttributeCount(ds, 1); DLTest test = getValidTest(possibleTests, ds); if (test == null) { return new DecisionList(null, FAILURE); } // at this point there is a test that classifies some subset of examples // with the same target value DataSet matched = test.matchedExamples(ds); DecisionList list = new DecisionList(positive, negative); list.add(test, matched.getExample(0).targetValue()); return list.mergeWith(decisionListLearning(test.unmatchedExamples(ds))); }
public void testDecisonListWithNoTestsReturnsDefaultValue() { DecisionList dlist = new DecisionList("Yes", "No"); DataSet ds = DataSetFactory.getRestaurantDataSet(); Assert.AreEqual("No", dlist.predict(ds.getExample(0))); }
public void train(DataSet ds) { this.decisionList = decisionListLearning(ds); }