Esempio n. 1
0
 def test_fit_predict(self):
     metric = Metric({"name": "logloss"})
     nn = NeuralNetworkAlgorithm(self.params)
     loss_prev = None
     for _ in range(3):
         nn.fit(self.X, self.y)
         y_predicted = nn.predict(self.X)
         loss = metric(self.y, y_predicted)
         if loss_prev is not None:
             self.assertTrue(loss + 0.000001 < loss_prev)
         loss_prev = loss
Esempio n. 2
0
    def test_save_and_load(self):
        metric = Metric({"name": "logloss"})
        nn = NeuralNetworkAlgorithm(self.params)
        nn.fit(self.X, self.y)
        y_predicted = nn.predict(self.X)
        loss = metric(self.y, y_predicted)

        with tempfile.NamedTemporaryFile() as tmp:

            nn.save(tmp.name)
            json_desc = nn.get_params()
            nn2 = NeuralNetworkAlgorithm(json_desc["params"])
            nn2.load(tmp.name)

            y_predicted = nn2.predict(self.X)
            loss2 = metric(self.y, y_predicted)
            assert_almost_equal(loss, loss2)
Esempio n. 3
0
 def test_copy(self):
     # train model #1
     metric = Metric({"name": "logloss"})
     nn = NeuralNetworkAlgorithm(self.params)
     nn.fit(self.X, self.y)
     y_predicted = nn.predict(self.X)
     loss = metric(self.y, y_predicted)
     # create model #2
     nn2 = NeuralNetworkAlgorithm(self.params)
     # model #2 is not initialized in constructor
     self.assertTrue(nn2.model is None)
     # do a copy and use it for predictions
     nn2 = nn.copy()
     self.assertEqual(type(nn), type(nn2))
     y_predicted = nn2.predict(self.X)
     loss2 = metric(self.y, y_predicted)
     self.assertEqual(loss, loss2)
     # fit model #1, there should be improvement in loss
     nn.fit(self.X, self.y)
     y_predicted = nn.predict(self.X)
     loss3 = metric(self.y, y_predicted)
     self.assertTrue(loss3 < loss)
     # the loss of model #2 should not change
     y_predicted = nn2.predict(self.X)
     loss4 = metric(self.y, y_predicted)
     assert_almost_equal(loss2, loss4)
Esempio n. 4
0
    def test_save_and_load(self):
        metric = Metric({"name": "logloss"})
        nn = NeuralNetworkAlgorithm(self.params)
        nn.fit(self.X, self.y)
        y_predicted = nn.predict(self.X)
        loss = metric(self.y, y_predicted)

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

        nn.save(filename)
        json_desc = nn.get_params()
        nn2 = NeuralNetworkAlgorithm(json_desc["params"])
        nn2.load(filename)
        #Finished with the file, delete it
        os.remove(filename)

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