diff --git a/_unittests/ut_mlmodel/test_quantile_regression.py b/_unittests/ut_mlmodel/test_quantile_regression.py index 4b6d40b3..cbbe3d3a 100644 --- a/_unittests/ut_mlmodel/test_quantile_regression.py +++ b/_unittests/ut_mlmodel/test_quantile_regression.py @@ -61,7 +61,7 @@ def test_quantile_regression_intercept(self): self.assertNotEqual(clr.intercept_, 0) self.assertNotEqual(clq.intercept_, 0) self.assertEqualArray(clr.intercept_, clq.intercept_) - self.assertEqualArray(clr.coef_, clq.coef_) + self.assertEqualArray(clr.coef_, clq.coef_, atol=1e-10) @unittest.skipIf( compare_module_version(sklver, "0.24") == -1, @@ -77,7 +77,7 @@ def test_quantile_regression_intercept_positive(self): self.assertNotEqual(clr.intercept_, 0) self.assertNotEqual(clq.intercept_, 0) self.assertEqualArray(clr.intercept_, clq.intercept_) - self.assertEqualArray(clr.coef_, clq.coef_) + self.assertEqualArray(clr.coef_, clq.coef_, atol=1e-10) self.assertGreater(clr.coef_.min(), 0) self.assertGreater(clq.coef_.min(), 0) @@ -92,7 +92,7 @@ def test_quantile_regression_intercept_weights(self): self.assertNotEqual(clr.intercept_, 0) self.assertNotEqual(clq.intercept_, 0) self.assertEqualArray(clr.intercept_, clq.intercept_) - self.assertEqualArray(clr.coef_, clq.coef_) + self.assertEqualArray(clr.coef_, clq.coef_, atol=1e-10) def test_quantile_regression_diff(self): X = numpy.array([[0.1], [0.2], [0.3], [0.4], [0.5]]) diff --git a/appveyor.yml b/appveyor.yml index 143ac0b5..20257516 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,7 @@ init: install: - "%PYTHON%\\python -m pip install --upgrade pip" # for many packages - - pip install llvmlite numba + - "%PYTHON%\\Scripts\\pip install llvmlite numba" - "%PYTHON%\\Scripts\\pip install -r requirements-win.txt" # install precompiled versions not available on pypi - "%PYTHON%\\Scripts\\pip install torch torchvision torchaudio" diff --git a/mlinsights/mlmodel/quantile_regression.py b/mlinsights/mlmodel/quantile_regression.py index 2afaac5a..903ed8e2 100644 --- a/mlinsights/mlmodel/quantile_regression.py +++ b/mlinsights/mlmodel/quantile_regression.py @@ -29,7 +29,7 @@ class QuantileLinearRegression(LinearRegression): value. """ - def __init__(self, fit_intercept=True, normalize=False, copy_X=True, + def __init__(self, fit_intercept=True, copy_X=True, n_jobs=1, delta=0.0001, max_iter=10, quantile=0.5, positive=False, verbose=False): """ @@ -37,13 +37,6 @@ def __init__(self, fit_intercept=True, normalize=False, copy_X=True, whether to calculate the intercept for this model. If set to False, no intercept will be used in calculations (e.g. data is expected to be already centered). - :param normalize: boolean, optional, default False - This parameter is ignored when ``fit_intercept`` is set to False. - If True, the regressors X will be normalized before regression by - subtracting the mean and dividing by the l2-norm. - If you wish to standardize, please use - :class:`sklearn.preprocessing.StandardScaler` before calling ``fit`` on - an estimator with ``normalize=False``. :param copy_X: boolean, optional, default True If True, X will be copied; else, it may be overwritten. :param n_jobs: int, optional, default 1 @@ -65,12 +58,12 @@ def __init__(self, fit_intercept=True, normalize=False, copy_X=True, """ try: LinearRegression.__init__( - self, fit_intercept=fit_intercept, normalize=normalize, + self, fit_intercept=fit_intercept, copy_X=copy_X, n_jobs=n_jobs, positive=positive) except TypeError: # scikit-learn<0.24 LinearRegression.__init__( - self, fit_intercept=fit_intercept, normalize=normalize, + self, fit_intercept=fit_intercept, copy_X=copy_X, n_jobs=n_jobs) self.max_iter = max_iter self.verbose = verbose @@ -140,12 +133,12 @@ def compute_z(Xm, beta, Y, W, delta=0.0001): try: clr = LinearRegression(fit_intercept=False, copy_X=self.copy_X, - n_jobs=self.n_jobs, normalize=self.normalize, + n_jobs=self.n_jobs, positive=self.positive) except AttributeError: # scikit-learn<0.24 clr = LinearRegression(fit_intercept=False, copy_X=self.copy_X, - n_jobs=self.n_jobs, normalize=self.normalize) + n_jobs=self.n_jobs) W = numpy.ones(X.shape[0]) if sample_weight is None else sample_weight self.n_iter_ = 0