From 992ce4444b43a1f0d64652925e5a44e8645c9be0 Mon Sep 17 00:00:00 2001 From: Christian Jorgensen Date: Wed, 11 Jun 2025 14:50:18 -0500 Subject: [PATCH 1/6] DCH inherits from base estimator --- pyproject.toml | 2 +- src/skmatter/sample_selection/_base.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 65b945518..9834937cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ classifiers = [ "Topic :: Scientific/Engineering", ] dependencies = [ - "scikit-learn >= 1.6, < 1.7", + "scikit-learn >= 1.7", "scipy >= 1.15", # explicit to adhere to scikit-learn dependencies ] dynamic = ["version"] diff --git a/src/skmatter/sample_selection/_base.py b/src/skmatter/sample_selection/_base.py index 0abdca1fa..f16767aec 100644 --- a/src/skmatter/sample_selection/_base.py +++ b/src/skmatter/sample_selection/_base.py @@ -7,6 +7,7 @@ from scipy.interpolate._interpnd import _ndim_coords_from_arrays from scipy.spatial import ConvexHull from sklearn.utils.validation import check_array, check_is_fitted, check_X_y +from sklearn.base import BaseEstimator from .._selection import _CUR, _FPS, _PCovCUR, _PCovFPS @@ -479,7 +480,7 @@ def _directional_distance(equations, points): return -orthogonal_distances / equations[:, :1].T -class DirectionalConvexHull: +class DirectionalConvexHull(BaseEstimator): """ Performs Sample Selection by constructing a Directional Convex Hull and determining the distance to the hull as outlined in the reference [dch]_. From cb6cc26aed93f01dc1061d6c82f04d38e387aafc Mon Sep 17 00:00:00 2001 From: Christian Jorgensen Date: Wed, 11 Jun 2025 14:54:30 -0500 Subject: [PATCH 2/6] Fix linting --- src/skmatter/sample_selection/_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skmatter/sample_selection/_base.py b/src/skmatter/sample_selection/_base.py index f16767aec..01d5fae8a 100644 --- a/src/skmatter/sample_selection/_base.py +++ b/src/skmatter/sample_selection/_base.py @@ -6,8 +6,8 @@ from scipy.interpolate import LinearNDInterpolator, interp1d from scipy.interpolate._interpnd import _ndim_coords_from_arrays from scipy.spatial import ConvexHull -from sklearn.utils.validation import check_array, check_is_fitted, check_X_y from sklearn.base import BaseEstimator +from sklearn.utils.validation import check_array, check_is_fitted, check_X_y from .._selection import _CUR, _FPS, _PCovCUR, _PCovFPS From 46228388157d238a30a4894c5afeb0a4fd33bef3 Mon Sep 17 00:00:00 2001 From: Christian Jorgensen Date: Wed, 11 Jun 2025 14:59:06 -0500 Subject: [PATCH 3/6] Adding BaseEstimator to identity regressor --- src/skmatter/linear_model/_ridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skmatter/linear_model/_ridge.py b/src/skmatter/linear_model/_ridge.py index d16cce2ea..3819f286b 100644 --- a/src/skmatter/linear_model/_ridge.py +++ b/src/skmatter/linear_model/_ridge.py @@ -303,7 +303,7 @@ def _2fold_loss_tikhonov(alpha): return ((Vt.T[:, :n_alpha] / s[:n_alpha]) @ (U.T[:n_alpha] @ y)).T -class _IdentityRegressor: +class _IdentityRegressor(BaseEstimator): """Fake regressor which will directly output the prediction.""" def predict(self, y_predict): From 8f2e663e3db7381e2d2680440b55b7cea50c5cf5 Mon Sep 17 00:00:00 2001 From: "Rose K. Cersonsky" <47536110+rosecers@users.noreply.github.com> Date: Wed, 11 Jun 2025 15:04:34 -0500 Subject: [PATCH 4/6] Update Ridge2FoldCVRegularization.py --- examples/regression/Ridge2FoldCVRegularization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/regression/Ridge2FoldCVRegularization.py b/examples/regression/Ridge2FoldCVRegularization.py index b4c78cf63..82dad96ab 100644 --- a/examples/regression/Ridge2FoldCVRegularization.py +++ b/examples/regression/Ridge2FoldCVRegularization.py @@ -203,7 +203,7 @@ def get_train_test_error(estimator): RidgeCV( alphas=alphas, cv=None, - store_cv_values=True, + store_cv_results=True, scoring=None, # uses by default mean squared error fit_intercept=False, ) From a669bad125e1704dece96e5978b9c9ab3ac48bcd Mon Sep 17 00:00:00 2001 From: Christian Jorgensen Date: Wed, 11 Jun 2025 15:43:39 -0500 Subject: [PATCH 5/6] Fixing Ridge example --- examples/regression/Ridge2FoldCVRegularization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/regression/Ridge2FoldCVRegularization.py b/examples/regression/Ridge2FoldCVRegularization.py index 82dad96ab..cee2eebbb 100644 --- a/examples/regression/Ridge2FoldCVRegularization.py +++ b/examples/regression/Ridge2FoldCVRegularization.py @@ -208,7 +208,7 @@ def get_train_test_error(estimator): fit_intercept=False, ) .fit(X_train, y_train) - .cv_values_ + .cv_results_ ) results["sklearn LOO CV Tikhonov"]["MSE validation"] = np.mean( From 19d8c6b622125f9822a6b7ad4d20e1261b28b4d6 Mon Sep 17 00:00:00 2001 From: Christian Jorgensen Date: Wed, 11 Jun 2025 15:45:36 -0500 Subject: [PATCH 6/6] Fix pyproject.toml based on Philip's comment --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9834937cb..e6f22d3af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ classifiers = [ "Topic :: Scientific/Engineering", ] dependencies = [ - "scikit-learn >= 1.7", + "scikit-learn >= 1.7, < 1.8", "scipy >= 1.15", # explicit to adhere to scikit-learn dependencies ] dynamic = ["version"]