import dask.array as da import dask.dataframe as dd import numpy as np import pandas as pd import pytest from dask.dataframe.utils import assert_eq from dask_glm.regularizers import Regularizer from sklearn.pipeline import make_pipeline from dask_ml.datasets import make_classification, make_counts, make_regression from dask_ml.linear_model import LinearRegression, LogisticRegression, PoissonRegression from dask_ml.linear_model.utils import add_intercept from dask_ml.model_selection import GridSearchCV @pytest.fixture(params=[r() for r in Regularizer.__subclasses__()]) def solver(request): """Parametrized fixture for all the solver names""" return request.param @pytest.fixture(params=[r() for r in Regularizer.__subclasses__()]) def regularizer(request): """Parametrized fixture for all the regularizer names""" return request.param class DoNothingTransformer: def fit(self, X, y=None): return self
opt = family.pointwise_loss(result, X, y).compute() test_val = family.pointwise_loss(test_vec, X, y).compute() assert opt < test_val @pytest.mark.parametrize('func,kwargs', [ (admm, {'abstol': 1e-4}), (proximal_grad, {'tol': 1e-7}), ]) @pytest.mark.parametrize('N', [1000]) @pytest.mark.parametrize('nchunks', [1, 10]) @pytest.mark.parametrize('family', [Logistic, Normal, Poisson]) @pytest.mark.parametrize('lam', [0.01, 1.2, 4.05]) @pytest.mark.parametrize('reg', [r() for r in Regularizer.__subclasses__()]) def test_basic_reg_descent(func, kwargs, N, nchunks, family, lam, reg): beta = np.random.normal(size=2) M = len(beta) X = da.random.random((N, M), chunks=(N // nchunks, M)) y = make_y(X, beta=np.array(beta), chunks=(N // nchunks,)) X, y = persist(X, y) result = func(X, y, family=family, lamduh=lam, regularizer=reg, **kwargs) test_vec = np.random.normal(size=2) f = reg.add_reg_f(family.pointwise_loss, lam) opt = f(result, X, y).compute() test_val = f(test_vec, X, y).compute()