From 17212fcbb0e48b1facf1c4c4374d0150599de870 Mon Sep 17 00:00:00 2001 From: OmarManzoor Date: Tue, 11 Apr 2023 17:40:21 +0500 Subject: [PATCH 1/3] Adjust tol in SGD benchmark --- asv_benchmarks/benchmarks/linear_model.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/asv_benchmarks/benchmarks/linear_model.py b/asv_benchmarks/benchmarks/linear_model.py index 663ceca61d063..f7f4f9825e1f5 100644 --- a/asv_benchmarks/benchmarks/linear_model.py +++ b/asv_benchmarks/benchmarks/linear_model.py @@ -1,3 +1,4 @@ +from sklearn.exceptions import ConvergenceWarning from sklearn.linear_model import ( LogisticRegression, Ridge, @@ -6,6 +7,7 @@ LinearRegression, SGDRegressor, ) +from sklearn.utils._testing import ignore_warnings from .common import Benchmark, Estimator, Predictor from .datasets import ( @@ -164,13 +166,19 @@ def make_data(self, params): return data def make_estimator(self, params): - estimator = SGDRegressor(max_iter=1000, tol=1e-16, random_state=0) + estimator = SGDRegressor(max_iter=1000, tol=None, random_state=0) return estimator def make_scorers(self): make_gen_reg_scorers(self) + def time_fit(self, *args): + with ignore_warnings(category=ConvergenceWarning): + self.estimator.fit(self.X, self.y) + + assert self.estimator.n_iter_ == self.estimator.max_iter + class ElasticNetBenchmark(Predictor, Estimator, Benchmark): """ From acfab771af78ca29ca3c269d68d46a2037030a93 Mon Sep 17 00:00:00 2001 From: OmarManzoor Date: Wed, 12 Apr 2023 14:04:59 +0500 Subject: [PATCH 2/3] PR suggestions --- asv_benchmarks/benchmarks/common.py | 6 +++++- asv_benchmarks/benchmarks/linear_model.py | 12 +++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/asv_benchmarks/benchmarks/common.py b/asv_benchmarks/benchmarks/common.py index c3e114a212047..045e3ce3fcb0f 100644 --- a/asv_benchmarks/benchmarks/common.py +++ b/asv_benchmarks/benchmarks/common.py @@ -9,6 +9,9 @@ import numpy as np +from sklearn.exceptions import ConvergenceWarning +from sklearn.utils._testing import ignore_warnings + def get_from_config(): """Get benchmarks configuration from the config.json file""" @@ -178,7 +181,8 @@ def setup(self, *params): self.make_scorers() def time_fit(self, *args): - self.estimator.fit(self.X, self.y) + with ignore_warnings(category=ConvergenceWarning): + self.estimator.fit(self.X, self.y) def peakmem_fit(self, *args): self.estimator.fit(self.X, self.y) diff --git a/asv_benchmarks/benchmarks/linear_model.py b/asv_benchmarks/benchmarks/linear_model.py index f7f4f9825e1f5..8925891c97096 100644 --- a/asv_benchmarks/benchmarks/linear_model.py +++ b/asv_benchmarks/benchmarks/linear_model.py @@ -1,4 +1,3 @@ -from sklearn.exceptions import ConvergenceWarning from sklearn.linear_model import ( LogisticRegression, Ridge, @@ -7,7 +6,6 @@ LinearRegression, SGDRegressor, ) -from sklearn.utils._testing import ignore_warnings from .common import Benchmark, Estimator, Predictor from .datasets import ( @@ -166,19 +164,15 @@ def make_data(self, params): return data def make_estimator(self, params): - estimator = SGDRegressor(max_iter=1000, tol=None, random_state=0) + (representation,) = params + max_iter = 60 if representation == "dense" else 300 + estimator = SGDRegressor(max_iter=max_iter, tol=None, random_state=0) return estimator def make_scorers(self): make_gen_reg_scorers(self) - def time_fit(self, *args): - with ignore_warnings(category=ConvergenceWarning): - self.estimator.fit(self.X, self.y) - - assert self.estimator.n_iter_ == self.estimator.max_iter - class ElasticNetBenchmark(Predictor, Estimator, Benchmark): """ From 787359a9871c67cc464b635c83e74f5fe7dc9e35 Mon Sep 17 00:00:00 2001 From: jeremie du boisberranger Date: Fri, 14 Apr 2023 10:51:14 +0200 Subject: [PATCH 3/3] removed unnecessary warning filter --- asv_benchmarks/benchmarks/common.py | 6 +----- asv_benchmarks/benchmarks/linear_model.py | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/asv_benchmarks/benchmarks/common.py b/asv_benchmarks/benchmarks/common.py index 045e3ce3fcb0f..c3e114a212047 100644 --- a/asv_benchmarks/benchmarks/common.py +++ b/asv_benchmarks/benchmarks/common.py @@ -9,9 +9,6 @@ import numpy as np -from sklearn.exceptions import ConvergenceWarning -from sklearn.utils._testing import ignore_warnings - def get_from_config(): """Get benchmarks configuration from the config.json file""" @@ -181,8 +178,7 @@ def setup(self, *params): self.make_scorers() def time_fit(self, *args): - with ignore_warnings(category=ConvergenceWarning): - self.estimator.fit(self.X, self.y) + self.estimator.fit(self.X, self.y) def peakmem_fit(self, *args): self.estimator.fit(self.X, self.y) diff --git a/asv_benchmarks/benchmarks/linear_model.py b/asv_benchmarks/benchmarks/linear_model.py index 8925891c97096..b694a109329f0 100644 --- a/asv_benchmarks/benchmarks/linear_model.py +++ b/asv_benchmarks/benchmarks/linear_model.py @@ -165,7 +165,9 @@ def make_data(self, params): def make_estimator(self, params): (representation,) = params + max_iter = 60 if representation == "dense" else 300 + estimator = SGDRegressor(max_iter=max_iter, tol=None, random_state=0) return estimator