コード例 #1
0
        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");
        }
コード例 #2
0
        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)));
        }
コード例 #3
0
ファイル: DecisionList.cs プロジェクト: PaulMineau/AIMA.Net
 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;
 }
コード例 #4
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);
        }
コード例 #5
0
        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)));
        }
コード例 #6
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)));
        }
コード例 #7
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)));
 }
コード例 #8
0
 public void testDecisonListWithNoTestsReturnsDefaultValue()
 {
     DecisionList dlist = new DecisionList("Yes", "No");
     DataSet ds = DataSetFactory.getRestaurantDataSet();
     Assert.AreEqual("No", dlist.predict(ds.getExample(0)));
 }
コード例 #9
0
 public void train(DataSet ds)
 {
     this.decisionList = decisionListLearning(ds);
 }