Exemple #1
0
 def test_predict(self):
     """...Test PoissonRegression predict
     """
     X_train, y_train, _, _ = self.get_train_data(n_samples=200,
                                                  n_features=12)
     learner = PoissonRegression(random_state=32789, tol=1e-9)
     learner.fit(X_train, y_train)
     X_test, y_test, _, _ = self.get_train_data(n_samples=5, n_features=12)
     y_pred = np.array([1., 5., 0., 5., 6.])
     np.testing.assert_array_almost_equal(learner.predict(X_test), y_pred)
Exemple #2
0
 def test_loglik(self):
     """...Test PoissonRegression loglik function
     """
     X_train, y_train, _, _ = self.get_train_data(n_samples=200,
                                                  n_features=12)
     learner = PoissonRegression(random_state=32789, tol=1e-9)
     learner.fit(X_train, y_train)
     X_test, y_test, _, _ = self.get_train_data(n_samples=5, n_features=12)
     np.testing.assert_array_almost_equal(learner.loglik(X_test, y_test),
                                          1.8254,
                                          decimal=4)
Exemple #3
0
 def test_decision_function(self):
     """...Test PoissonRegression decision function
     """
     X_train, y_train, _, _ = self.get_train_data(n_samples=200,
                                                  n_features=12)
     learner = PoissonRegression(random_state=32789, tol=1e-9)
     learner.fit(X_train, y_train)
     X_test, y_test, _, _ = self.get_train_data(n_samples=5, n_features=12)
     y_pred = np.array([1.1448, 5.2194, 0.2624, 4.5525, 6.4168])
     np.testing.assert_array_almost_equal(learner.decision_function(X_test),
                                          y_pred,
                                          decimal=4)
Exemple #4
0
    def test_PoissonRegression_fit(self):
        """...Test PoissonRegression fit with default parameters
        """
        n_samples = 2000
        n_features = 20

        for fit_intercept in [False, True]:
            X, y, weights0, intercept0 = self.get_train_data(
                n_samples=n_samples,
                n_features=n_features,
                fit_intercept=fit_intercept)

            learner = PoissonRegression(C=1e3,
                                        verbose=False,
                                        fit_intercept=fit_intercept,
                                        solver='bfgs')
            learner.fit(X, y)
            err = np.linalg.norm(learner.weights - weights0) / n_features
            self.assertLess(err, 1e-2)
            if fit_intercept:
                self.assertLess(np.abs(learner.intercept - intercept0), 1e-1)
Exemple #5
0
    def test_PoissonRegression_run(self):
        """...Test PoissonRegression runs with different solvers and penalties
        """
        n_samples = 200
        n_features = 10

        for fit_intercept in [False, True]:
            X, y, weights0, intercept0 = self.get_train_data(
                n_samples=n_samples,
                n_features=n_features,
                fit_intercept=fit_intercept)
            for solver, penalty in product(PoissonRegression._solvers,
                                           PoissonRegression._penalties):
                if solver == 'bfgs' and (penalty not in ['zero', 'l2']):
                    continue

                if penalty == 'binarsity':
                    learner = PoissonRegression(verbose=False,
                                                fit_intercept=fit_intercept,
                                                solver=solver,
                                                penalty=penalty,
                                                max_iter=1,
                                                step=1e-5,
                                                blocks_start=[0],
                                                blocks_length=[1])
                else:
                    learner = PoissonRegression(verbose=False,
                                                fit_intercept=fit_intercept,
                                                solver=solver,
                                                penalty=penalty,
                                                max_iter=1,
                                                step=1e-5)

                learner.fit(X, y)
                self.assertTrue(np.isfinite(learner.weights).all())
                if fit_intercept:
                    self.assertTrue(np.isfinite(learner.intercept))