From 8bedde1a45d31b3fff8caff90f313eadf417d388 Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Wed, 2 Oct 2024 03:20:56 -0700 Subject: [PATCH 1/8] ENH: array api dispatching added array-api-compat to test env --- requirements-test.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-test.txt b/requirements-test.txt index d9de92c2da..8cc7049d33 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -11,4 +11,5 @@ xgboost==2.1.1 lightgbm==4.5.0 catboost==1.2.7 ; python_version < '3.11' # TODO: Remove 3.11 condition when catboost supports numpy 2.0 shap==0.46.0 +array-api-compat==1.8.0 array-api-strict==2.0.1 From b11fcf3c3e5e4b61116039f748f84405bfbc5f0c Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Fri, 4 Oct 2024 05:18:57 -0700 Subject: [PATCH 2/8] Deselect some scikit-learn Array API tests --- deselected_tests.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index 4f10264586..e658ad0ae2 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -25,6 +25,12 @@ # will exclude deselection in versions 0.18.1, and 0.18.2 only. deselected_tests: + # Array API support + # sklearnex functional Array API support doesn't guaranty namespace consistency for the estimator's array attributes. + - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh')-check_array_api_input_and_values-array_api_strict-None-None] + - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_input_and_values-array_api_strict-None-None] + - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_input_and_values-array_api_strict-None-None] + # 'kulsinski' distance was deprecated in scipy 1.11 but still marked as supported in scikit-learn < 1.3 - neighbors/tests/test_neighbors.py::test_kneighbors_brute_backend[float64-kulsinski] <1.3 - neighbors/tests/test_neighbors.py::test_radius_neighbors_brute_backend[kulsinski] <1.3 From 943796e3710617e459a4579ea2f339d44787fc2f Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Tue, 8 Oct 2024 08:35:01 -0500 Subject: [PATCH 3/8] deselect more tests --- deselected_tests.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index 2ab5fb6fa2..42fcc22978 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -29,6 +29,8 @@ deselected_tests: # sklearnex functional Array API support doesn't guaranty namespace consistency for the estimator's array attributes. - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh')-check_array_api_input_and_values-array_api_strict-None-None] - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_input_and_values-array_api_strict-None-None] + - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh')-check_array_api_get_precision-array_api_strict-None-None] + - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_get_precision-array_api_strict-None-None] - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_input_and_values-array_api_strict-None-None] # 'kulsinski' distance was deprecated in scipy 1.11 but still marked as supported in scikit-learn < 1.3 From ef42daa0c909d39058c8bf005eef7654685d67c5 Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Tue, 8 Oct 2024 08:53:17 -0500 Subject: [PATCH 4/8] deselect more tests --- deselected_tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index 42fcc22978..d46c9ded6d 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -31,6 +31,7 @@ deselected_tests: - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_input_and_values-array_api_strict-None-None] - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh')-check_array_api_get_precision-array_api_strict-None-None] - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_get_precision-array_api_strict-None-None] + - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_attributes-array_api_strict-None-None] - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_input_and_values-array_api_strict-None-None] # 'kulsinski' distance was deprecated in scipy 1.11 but still marked as supported in scikit-learn < 1.3 From 3bc755d874e6cf44fdc64b852b8c815ccc8e9aa9 Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Tue, 8 Oct 2024 09:03:33 -0500 Subject: [PATCH 5/8] disabled tests for --- deselected_tests.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index d46c9ded6d..934b6bb21a 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -33,6 +33,10 @@ deselected_tests: - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_get_precision-array_api_strict-None-None] - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_attributes-array_api_strict-None-None] - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_input_and_values-array_api_strict-None-None] + # `test_array_api_train_test_split` inconsistency for Array API inputs. + - model_selection/tests/test_split.py::test_array_api_train_test_split[True-None-array_api_strict-None-None] + - model_selection/tests/test_split.py::test_array_api_train_test_split[True-stratify1-array_api_strict-None-None] + - model_selection/tests/test_split.py::test_array_api_train_test_split[False-None-array_api_strict-None-None] # 'kulsinski' distance was deprecated in scipy 1.11 but still marked as supported in scikit-learn < 1.3 - neighbors/tests/test_neighbors.py::test_kneighbors_brute_backend[float64-kulsinski] <1.3 From 76f1876be95d1cf356b788c3b71ceea4da361373 Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Tue, 8 Oct 2024 09:04:58 -0500 Subject: [PATCH 6/8] fix the deselection comment --- deselected_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index 934b6bb21a..edcb4db49e 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -33,7 +33,7 @@ deselected_tests: - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,svd_solver='covariance_eigh',whiten=True)-check_array_api_get_precision-array_api_strict-None-None] - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_attributes-array_api_strict-None-None] - linear_model/tests/test_ridge.py::test_ridge_array_api_compliance[Ridge(solver='svd')-check_array_api_input_and_values-array_api_strict-None-None] - # `test_array_api_train_test_split` inconsistency for Array API inputs. + # `train_test_split` inconsistency for Array API inputs. - model_selection/tests/test_split.py::test_array_api_train_test_split[True-None-array_api_strict-None-None] - model_selection/tests/test_split.py::test_array_api_train_test_split[True-stratify1-array_api_strict-None-None] - model_selection/tests/test_split.py::test_array_api_train_test_split[False-None-array_api_strict-None-None] From ce0b8e1d7aa01809a84402253c64f3594ec156fb Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Tue, 8 Oct 2024 13:15:56 -0500 Subject: [PATCH 7/8] disabled test for Ridge regression --- deselected_tests.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index edcb4db49e..6da88115c5 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -37,6 +37,8 @@ deselected_tests: - model_selection/tests/test_split.py::test_array_api_train_test_split[True-None-array_api_strict-None-None] - model_selection/tests/test_split.py::test_array_api_train_test_split[True-stratify1-array_api_strict-None-None] - model_selection/tests/test_split.py::test_array_api_train_test_split[False-None-array_api_strict-None-None] + # Ridge regression. Array API functionally supported for all solvers. Not raising error for non-svd solvers. + - linear_model/tests/test_ridge.py::test_array_api_error_and_warnings_for_solver_parameter[array_api_strict] # 'kulsinski' distance was deprecated in scipy 1.11 but still marked as supported in scikit-learn < 1.3 - neighbors/tests/test_neighbors.py::test_kneighbors_brute_backend[float64-kulsinski] <1.3 From 404e8c0abf708f2a0c8d82b04ef5e7a83bf24b3e Mon Sep 17 00:00:00 2001 From: Samir Nasibli Date: Tue, 8 Oct 2024 15:03:28 -0500 Subject: [PATCH 8/8] Disabled tests and added comment --- deselected_tests.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deselected_tests.yaml b/deselected_tests.yaml index 6da88115c5..364e597393 100755 --- a/deselected_tests.yaml +++ b/deselected_tests.yaml @@ -37,6 +37,11 @@ deselected_tests: - model_selection/tests/test_split.py::test_array_api_train_test_split[True-None-array_api_strict-None-None] - model_selection/tests/test_split.py::test_array_api_train_test_split[True-stratify1-array_api_strict-None-None] - model_selection/tests/test_split.py::test_array_api_train_test_split[False-None-array_api_strict-None-None] + # PCA. Array API functionally supported for all factorizations. power_iteration_normalizer=["LU", "QR"] + - decomposition/tests/test_pca.py::test_array_api_error_and_warnings_on_unsupported_params + # PCA. InvalidParameterError: The 'M' parameter of randomized_svd must be an instance of 'numpy.ndarray' or a sparse matrix. + - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,power_iteration_normalizer='QR',random_state=0,svd_solver='randomized')-check_array_api_input_and_values-array_api_strict-None-None] + - decomposition/tests/test_pca.py::test_pca_array_api_compliance[PCA(n_components=2,power_iteration_normalizer='QR',random_state=0,svd_solver='randomized')-check_array_api_get_precision-array_api_strict-None-None] # Ridge regression. Array API functionally supported for all solvers. Not raising error for non-svd solvers. - linear_model/tests/test_ridge.py::test_array_api_error_and_warnings_for_solver_parameter[array_api_strict]