Ejemplo n.º 1
0
 def test_fit_predict(self):
     metric = Metric({"name": "logloss"})
     cat = CatBoostAlgorithm(self.params)
     loss_prev = None
     for _ in range(5):
         cat.fit(self.X, self.y)
         y_predicted = cat.predict(self.X)
         loss = metric(self.y, y_predicted)
         if loss_prev is not None:
             self.assertTrue(loss + 0.001 < loss_prev)
         loss_prev = loss
Ejemplo n.º 2
0
 def test_fit_predict(self):
     metric = Metric({"name": "logloss"})
     loss_prev = None
     for _ in range(2):
         cat = CatBoostAlgorithm(self.params)
         cat.fit(self.X, self.y)
         y_predicted = cat.predict(self.X)
         loss = metric(self.y, y_predicted)
         if loss_prev is not None:
             assert_almost_equal(loss, loss_prev)
         loss_prev = loss
Ejemplo n.º 3
0
 def test_reproduce_fit(self):
     metric = Metric({"name": "logloss"})
     prev_loss = None
     for _ in range(3):
         model = CatBoostAlgorithm(self.params)
         model.fit(self.X, self.y)
         y_predicted = model.predict(self.X)
         loss = metric(self.y, y_predicted)
         if prev_loss is not None:
             assert_almost_equal(prev_loss, loss)
         prev_loss = loss
Ejemplo n.º 4
0
 def test_copy(self):
     # train model #1
     metric = Metric({"name": "logloss"})
     cat = CatBoostAlgorithm(self.params)
     cat.fit(self.X, self.y)
     y_predicted = cat.predict(self.X)
     loss = metric(self.y, y_predicted)
     # create model #2
     cat2 = CatBoostAlgorithm(self.params)
     # model #2 is initialized in constructor
     self.assertTrue(cat2.model is not None)
     # do a copy and use it for predictions
     cat2 = cat.copy()
     self.assertEqual(type(cat), type(cat2))
     y_predicted = cat2.predict(self.X)
     loss2 = metric(self.y, y_predicted)
     self.assertEqual(loss, loss2)
Ejemplo n.º 5
0
 def test_get_metric_name(self):
     model = CatBoostAlgorithm(self.params)
     self.assertEqual(model.get_metric_name(), "logloss")
     params = dict(self.params)
     params["loss_function"] = "MultiClass"
     model = CatBoostAlgorithm(params)
     self.assertEqual(model.get_metric_name(), "logloss")
Ejemplo n.º 6
0
 def test_copy(self):
     # train model #1
     metric = Metric({"name": "logloss"})
     cat = CatBoostAlgorithm(self.params)
     cat.fit(self.X, self.y)
     y_predicted = cat.predict(self.X)
     loss = metric(self.y, y_predicted)
     # create model #2
     cat2 = CatBoostAlgorithm(self.params)
     # model #2 is initialized in constructor
     self.assertTrue(cat2.model is not None)
     # do a copy and use it for predictions
     cat2 = cat.copy()
     self.assertEqual(type(cat), type(cat2))
     y_predicted = cat2.predict(self.X)
     loss2 = metric(self.y, y_predicted)
     self.assertEqual(loss, loss2)
     # fit model #1, there should be improvement in loss
     cat.fit(self.X, self.y)
     y_predicted = cat.predict(self.X)
     loss3 = metric(self.y, y_predicted)
     self.assertTrue(loss3 < loss)
     # the loss of model #2 should not change
     y_predicted = cat2.predict(self.X)
     loss4 = metric(self.y, y_predicted)
     assert_almost_equal(loss2, loss4)
Ejemplo n.º 7
0
    def test_save_and_load(self):
        metric = Metric({"name": "logloss"})
        cat = CatBoostAlgorithm(self.params)
        cat.fit(self.X, self.y)
        y_predicted = cat.predict(self.X)
        loss = metric(self.y, y_predicted)

        with tempfile.NamedTemporaryFile() as tmp:
            cat.save(tmp.name)
            cat2 = CatBoostAlgorithm(self.params)
            self.assertTrue(cat.uid != cat2.uid)
            self.assertTrue(cat2.model is not None)
            cat2.load(tmp.name)

            y_predicted = cat2.predict(self.X)
            loss2 = metric(self.y, y_predicted)
            assert_almost_equal(loss, loss2)
Ejemplo n.º 8
0
    def test_save_and_load(self):
        metric = Metric({"name": "logloss"})
        cat = CatBoostAlgorithm(self.params)
        cat.fit(self.X, self.y)
        y_predicted = cat.predict(self.X)
        loss = metric(self.y, y_predicted)

        filename = os.path.join(tempfile.gettempdir(), os.urandom(12).hex())

        cat.save(filename)
        cat2 = CatBoostAlgorithm(self.params)
        self.assertTrue(cat.uid != cat2.uid)
        self.assertTrue(cat2.model is not None)
        cat2.load(filename)
        # Finished with the file, delete it
        os.remove(filename)

        y_predicted = cat2.predict(self.X)
        loss2 = metric(self.y, y_predicted)
        assert_almost_equal(loss, loss2)
Ejemplo n.º 9
0
 def test_get_metric_name(self):
     model = CatBoostAlgorithm(self.params)
     self.assertEqual(model.get_metric_name(), "rmse")
Ejemplo n.º 10
0
 def test_is_fitted(self):
     cat = CatBoostAlgorithm(self.params)
     self.assertFalse(cat.is_fitted())
     cat.fit(self.X, self.y)
     self.assertTrue(cat.is_fitted())
Ejemplo n.º 11
0
    def test_save_and_load(self):
        metric = Metric({"name": "logloss"})
        cat = CatBoostAlgorithm(self.params)
        cat.fit(self.X, self.y)
        y_predicted = cat.predict(self.X)
        loss = metric(self.y, y_predicted)

        json_desc = cat.save()
        cat2 = CatBoostAlgorithm({})
        self.assertTrue(cat.uid != cat2.uid)
        self.assertTrue(cat2.model is not None)
        cat2.load(json_desc)
        self.assertTrue(cat.uid == cat2.uid)

        y_predicted = cat2.predict(self.X)
        loss2 = metric(self.y, y_predicted)
        assert_almost_equal(loss, loss2)