Example #1
0
 def fit(self, X, y):
     import statick.linear_model.bin.statick_linear_model as statick_linear_model
     TMLR.fit(self, X, y)
     func = ModelLogReg.CFUNC_RESOLVER(self, "_dao_")
     object.__setattr__(self, "_dao",
                        getattr(statick_linear_model, func)(X, y))
     return self
Example #2
0
    def _test_solver_astype_consistency(self, create_solver):
        # Launch this test only once
        if self.dtype != 'float64':
            return

        prox = ProxL2Sq(0.1)

        use_intercept = True
        y_64, X_64, coeffs0_64, interc0 = self.generate_logistic_data(
            100, 30, 'float64', use_intercept)

        model_64 = ModelLogReg(fit_intercept=use_intercept)
        model_64.fit(X_64, y_64)
        solver_64 = create_solver()
        solver_64.set_model(model_64).set_prox(prox)
        solution_64 = solver_64.solve()

        solver_32 = solver_64.astype('float32')
        solution_32 = solver_32.solve()

        self.assertEqual(solution_64.dtype, 'float64')
        self.assertEqual(solution_32.dtype, 'float32')

        np.testing.assert_array_almost_equal(solution_32,
                                             solution_64,
                                             decimal=3)
Example #3
0
    def test_asaga_solver(self):
        """...Check ASAGA solver for a Logistic Regression with Elastic net
        penalization
        """
        seed = 1398
        np.random.seed(seed)
        n_samples = 4000
        n_features = 30
        weights = weights_sparse_gauss(n_features, nnz=3).astype(self.dtype)
        intercept = 0.2
        penalty_strength = 1e-3
        sparsity = 1e-4
        features = sparse.rand(n_samples, n_features, density=sparsity,
                               format='csr', random_state=8).astype(self.dtype)

        simulator = SimuLogReg(weights, n_samples=n_samples, features=features,
                               verbose=False, intercept=intercept,
                               dtype=self.dtype)
        features, labels = simulator.simulate()

        model = ModelLogReg(fit_intercept=True)
        model.fit(features, labels)
        prox = ProxElasticNet(penalty_strength, ratio=0.1, range=(0,
                                                                  n_features))
        solver_step = 1. / model.get_lip_max()
        saga = SAGA(step=solver_step, max_iter=100, tol=1e-10, verbose=False,
                    n_threads=1, record_every=10, seed=seed)
        saga.set_model(model).set_prox(prox)
        saga.solve()

        asaga = SAGA(step=solver_step, max_iter=100, tol=1e-10, verbose=False,
                     n_threads=2, record_every=10, seed=seed)
        asaga.set_model(model).set_prox(prox)
        asaga.solve()

        np.testing.assert_array_almost_equal(saga.solution, asaga.solution,
                                             decimal=4)
        self.assertGreater(np.linalg.norm(saga.solution[:-1]), 0)
Example #4
0
n_samples = 40000
n_features = 20000
sparsity = 1e-4
penalty_strength = 1e-5

weights = weights_sparse_gauss(n_features, nnz=1000)
intercept = 0.2
features = sparse.rand(n_samples, n_features, density=sparsity, format='csr')

simulator = SimuLogReg(weights, n_samples=n_samples, features=features,
                       verbose=False, intercept=intercept)
features, labels = simulator.simulate()

model = ModelLogReg(fit_intercept=True)
model.fit(features, labels)
prox = ProxElasticNet(penalty_strength, ratio=0.5, range=(0, n_features))
svrg_step = 1. / model.get_lip_max()

test_n_threads = [1, 2, 4]

fig, axes = plt.subplots(1, 2, figsize=(8, 4))

for ax, SolverClass in zip(axes, [SVRG, SAGA]):
    solver_list = []
    solver_labels = []

    for n_threads in test_n_threads:
        solver = SolverClass(step=svrg_step, seed=seed, max_iter=50,
                             verbose=False, n_threads=n_threads, tol=0,
                             record_every=3)