Changeset 11631:44acd5d775c3 in orange


Ignore:
Timestamp:
07/15/13 14:57:26 (9 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added test for learner pickling support.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/testing/testing.py

    r11580 r11631  
    411411        """ Test learner and classifier pickling. 
    412412        """ 
     413        def clone(obj): 
     414            return pickle.loads(pickle.dumps(obj)) 
     415 
     416        cloned_learner = clone(self.learner) 
    413417        classifier = self.learner(dataset) 
    414  
    415         s = pickle.dumps(classifier) 
    416         classifier_clone = pickle.loads(s) 
     418        classifier_clone = clone(classifier) 
     419        classifier_from_cloned = cloned_learner(dataset) 
    417420 
    418421        indices = orange.MakeRandomIndices2(p0=20)(dataset) 
    419422        test = dataset.select(indices, 0) 
     423        class_var = dataset.domain.class_var 
    420424 
    421425        for ex in test: 
    422             if isinstance(dataset.domain.class_var, Orange.feature.Continuous): 
     426            prediction1 = classifier(ex, orange.GetValue) 
     427            prediction2 = classifier_clone(ex, orange.GetValue) 
     428            prediction3 = classifier_from_cloned(ex, orange.GetValue) 
     429 
     430            if isinstance(class_var, Orange.feature.Continuous): 
    423431                # Test to third digit after the decimal point 
    424                 self.assertAlmostEqual(classifier(ex, orange.GetValue).native(), 
    425                                        classifier_clone(ex, orange.GetValue).native(), 
    426                                        min(3, dataset.domain.class_var.number_of_decimals), 
    427                                        "Pickled and original classifier return a different value!") 
     432                self.assertAlmostEqual( 
     433                    prediction1.native(), prediction2.native(), 
     434                    min(3, class_var.number_of_decimals), 
     435                    "Pickled and original classifier return a different " 
     436                    "value!") 
     437 
     438                self.assertAlmostEqual( 
     439                    prediction1.native(), prediction3.native(), 
     440                    min(3, class_var.number_of_decimals), 
     441                    "Pickled and original learner return a different " 
     442                    "classifier!") 
    428443            else: 
    429                 self.assertEqual(classifier(ex, orange.GetValue), 
    430                                  classifier_clone(ex, orange.GetValue), 
    431                                  "Pickled and original classifier return a different value!") 
     444                self.assertEqual( 
     445                    prediction1, prediction2, 
     446                    "Pickled and original classifier return a different " 
     447                    "value!") 
     448 
     449                self.assertEqual( 
     450                    prediction1, prediction3, 
     451                    "Pickled and original learner return a different " 
     452                    "classifier!") 
    432453 
    433454 
Note: See TracChangeset for help on using the changeset viewer.