scikit-learn-intelex 2025.7.0__py39-none-win_amd64.whl → 2025.9.0__py39-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of scikit-learn-intelex might be problematic. Click here for more details.
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/__init__.py +19 -8
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +17 -23
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp39-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +4 -4
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +545 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +5 -2
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +2 -2
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/_device_offload.py +41 -40
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +52 -76
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +26 -41
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +6 -7
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +11 -11
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +7 -25
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +1 -1
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +31 -11
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +5 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +7 -16
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +13 -18
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +3 -3
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +6 -3
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +9 -24
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +85 -18
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +39 -40
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +11 -5
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +5 -5
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +48 -160
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +75 -188
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +25 -11
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +10 -17
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +5 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +14 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +3 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +51 -25
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/_third_party.py +52 -2
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/__init__.py +2 -1
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -5
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +13 -12
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/_utils.py +31 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +26 -37
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +33 -42
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +30 -27
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +1 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +139 -98
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +30 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +1 -6
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +8 -2
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +22 -7
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +2 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +76 -68
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +69 -53
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +53 -41
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +122 -38
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +42 -31
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +27 -61
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +8 -6
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +260 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +55 -1
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +7 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +6 -3
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +12 -8
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +7 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +18 -8
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +7 -2
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +6 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +2 -2
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +19 -6
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +21 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +16 -8
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -4
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +136 -13
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +71 -8
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +31 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -1
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +55 -6
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +1 -1
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +18 -14
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +3 -21
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +19 -1
- {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/METADATA +83 -92
- scikit_learn_intelex-2025.9.0.dist-info/RECORD +259 -0
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +0 -1039
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +0 -110
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +0 -200
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -423
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -115
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -134
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -129
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -119
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -227
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -19
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -43
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +0 -82
- scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
- scikit_learn_intelex-2025.7.0.dist-info/RECORD +0 -258
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/__main__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/_config.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/_backend.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/svm.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/validation.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/base.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/top_level.txt +0 -0
|
@@ -24,9 +24,9 @@ from onedal.tests.utils._dataframes_support import (
|
|
|
24
24
|
)
|
|
25
25
|
from sklearnex import config_context
|
|
26
26
|
from sklearnex.tests.utils.spmd import (
|
|
27
|
-
_assert_unordered_allclose,
|
|
28
27
|
_generate_classification_data,
|
|
29
28
|
_generate_regression_data,
|
|
29
|
+
_generate_statistic_data,
|
|
30
30
|
_get_local_tensor,
|
|
31
31
|
_mpi_libs_and_gpu_available,
|
|
32
32
|
_spmd_assert_allclose,
|
|
@@ -94,8 +94,8 @@ def test_knncls_spmd_gold(dataframe, queue):
|
|
|
94
94
|
spmd_result = spmd_model.predict(local_dpt_X_test)
|
|
95
95
|
batch_result = batch_model.predict(X_test)
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
98
|
+
_spmd_assert_allclose(spmd_dists, batch_dists)
|
|
99
99
|
_spmd_assert_allclose(spmd_result, batch_result)
|
|
100
100
|
|
|
101
101
|
|
|
@@ -164,10 +164,8 @@ def test_knncls_spmd_synthetic(
|
|
|
164
164
|
|
|
165
165
|
tol = 1e-4
|
|
166
166
|
if dtype == np.float64:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
spmd_dists, batch_dists, localize=True, rtol=tol, atol=tol
|
|
170
|
-
)
|
|
167
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
168
|
+
_spmd_assert_allclose(spmd_dists, batch_dists, rtol=tol, atol=tol)
|
|
171
169
|
_spmd_assert_allclose(spmd_result, batch_result)
|
|
172
170
|
|
|
173
171
|
|
|
@@ -231,8 +229,8 @@ def test_knnreg_spmd_gold(dataframe, queue):
|
|
|
231
229
|
spmd_result = spmd_model.predict(local_dpt_X_test)
|
|
232
230
|
batch_result = batch_model.predict(X_test)
|
|
233
231
|
|
|
234
|
-
|
|
235
|
-
|
|
232
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
233
|
+
_spmd_assert_allclose(spmd_dists, batch_dists)
|
|
236
234
|
_spmd_assert_allclose(spmd_result, batch_result)
|
|
237
235
|
|
|
238
236
|
|
|
@@ -303,8 +301,133 @@ def test_knnreg_spmd_synthetic(
|
|
|
303
301
|
|
|
304
302
|
tol = 0.005 if dtype == np.float32 else 1e-4
|
|
305
303
|
if dtype == np.float64:
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
spmd_dists, batch_dists, localize=True, rtol=tol, atol=tol
|
|
309
|
-
)
|
|
304
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
305
|
+
_spmd_assert_allclose(spmd_dists, batch_dists, rtol=tol, atol=tol)
|
|
310
306
|
_spmd_assert_allclose(spmd_result, batch_result, rtol=tol, atol=tol)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
@pytest.mark.skipif(
|
|
310
|
+
not _mpi_libs_and_gpu_available,
|
|
311
|
+
reason="GPU device and MPI libs required for test",
|
|
312
|
+
)
|
|
313
|
+
@pytest.mark.parametrize(
|
|
314
|
+
"dataframe,queue",
|
|
315
|
+
get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
|
|
316
|
+
)
|
|
317
|
+
@pytest.mark.mpi
|
|
318
|
+
def test_knnsearch_spmd_gold(dataframe, queue):
|
|
319
|
+
# Import spmd and batch algo
|
|
320
|
+
from sklearnex.neighbors import NearestNeighbors as NearestNeighbors_Batch
|
|
321
|
+
from sklearnex.spmd.neighbors import NearestNeighbors as NearestNeighbors_SPMD
|
|
322
|
+
|
|
323
|
+
# Create gold data and convert to dataframe
|
|
324
|
+
X_train = np.array(
|
|
325
|
+
[[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2], [10, 10], [9, 9]]
|
|
326
|
+
)
|
|
327
|
+
local_dpt_X_train = _convert_to_dataframe(
|
|
328
|
+
_get_local_tensor(X_train), sycl_queue=queue, target_df=dataframe
|
|
329
|
+
)
|
|
330
|
+
|
|
331
|
+
# Ensure predictions of batch algo match spmd
|
|
332
|
+
spmd_model = NearestNeighbors_SPMD(n_neighbors=2, algorithm="brute").fit(
|
|
333
|
+
local_dpt_X_train
|
|
334
|
+
)
|
|
335
|
+
batch_model = NearestNeighbors_Batch(n_neighbors=2, algorithm="brute").fit(X_train)
|
|
336
|
+
spmd_dists, spmd_indcs = spmd_model.kneighbors(local_dpt_X_train)
|
|
337
|
+
batch_dists, batch_indcs = batch_model.kneighbors(X_train)
|
|
338
|
+
|
|
339
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
340
|
+
_spmd_assert_allclose(spmd_dists, batch_dists)
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
@pytest.mark.skipif(
|
|
344
|
+
not _mpi_libs_and_gpu_available,
|
|
345
|
+
reason="GPU device and MPI libs required for test",
|
|
346
|
+
)
|
|
347
|
+
@pytest.mark.parametrize(
|
|
348
|
+
"dimensions", [{"n": 100, "m": 10, "k": 2}, {"n": 100000, "m": 100, "k": 100}]
|
|
349
|
+
)
|
|
350
|
+
@pytest.mark.parametrize(
|
|
351
|
+
"dataframe,queue",
|
|
352
|
+
get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
|
|
353
|
+
)
|
|
354
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
355
|
+
@pytest.mark.mpi
|
|
356
|
+
def test_knnsearch_spmd_synthetic(
|
|
357
|
+
dimensions,
|
|
358
|
+
dataframe,
|
|
359
|
+
queue,
|
|
360
|
+
dtype,
|
|
361
|
+
):
|
|
362
|
+
if dimensions["n"] > 10000 and dtype == np.float32:
|
|
363
|
+
pytest.skip("Skipping large float32 test due to expected precision issues")
|
|
364
|
+
|
|
365
|
+
# Import spmd and batch algo
|
|
366
|
+
from sklearnex.neighbors import NearestNeighbors as NearestNeighbors_Batch
|
|
367
|
+
from sklearnex.spmd.neighbors import NearestNeighbors as NearestNeighbors_SPMD
|
|
368
|
+
|
|
369
|
+
# Generate data and convert to dataframe
|
|
370
|
+
X_train = _generate_statistic_data(dimensions["n"], dimensions["m"], dtype=dtype)
|
|
371
|
+
|
|
372
|
+
local_dpt_X_train = _convert_to_dataframe(
|
|
373
|
+
_get_local_tensor(X_train), sycl_queue=queue, target_df=dataframe
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
# Ensure search results of batch algo match spmd
|
|
377
|
+
spmd_model = NearestNeighbors_SPMD(
|
|
378
|
+
n_neighbors=dimensions["k"], algorithm="brute"
|
|
379
|
+
).fit(local_dpt_X_train)
|
|
380
|
+
batch_model = NearestNeighbors_Batch(
|
|
381
|
+
n_neighbors=dimensions["k"], algorithm="brute"
|
|
382
|
+
).fit(X_train)
|
|
383
|
+
spmd_dists, spmd_indcs = spmd_model.kneighbors(local_dpt_X_train)
|
|
384
|
+
batch_dists, batch_indcs = batch_model.kneighbors(X_train)
|
|
385
|
+
|
|
386
|
+
tol = 0.005 if dtype == np.float32 else 1e-6
|
|
387
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
388
|
+
_spmd_assert_allclose(spmd_dists, batch_dists, rtol=tol, atol=tol)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
@pytest.mark.skipif(
|
|
392
|
+
not _mpi_libs_and_gpu_available,
|
|
393
|
+
reason="GPU device and MPI libs required for test",
|
|
394
|
+
)
|
|
395
|
+
@pytest.mark.parametrize(
|
|
396
|
+
"dataframe,queue",
|
|
397
|
+
get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
|
|
398
|
+
)
|
|
399
|
+
@pytest.mark.mpi
|
|
400
|
+
def test_knn_spmd_empty_kneighbors(dataframe, queue):
|
|
401
|
+
# Import spmd and batch algo
|
|
402
|
+
from sklearnex.neighbors import NearestNeighbors as NearestNeighbors_Batch
|
|
403
|
+
from sklearnex.spmd.neighbors import (
|
|
404
|
+
KNeighborsClassifier,
|
|
405
|
+
KNeighborsRegressor,
|
|
406
|
+
NearestNeighbors,
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
# Create gold data and convert to dataframe
|
|
410
|
+
X_train = np.array(
|
|
411
|
+
[[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2], [10, 10], [9, 9]]
|
|
412
|
+
)
|
|
413
|
+
y_train = np.array([0, 1, 0, 1, 0, 1, 0, 1])
|
|
414
|
+
local_dpt_X_train = _convert_to_dataframe(
|
|
415
|
+
_get_local_tensor(X_train), sycl_queue=queue, target_df=dataframe
|
|
416
|
+
)
|
|
417
|
+
local_dpt_y_train = _convert_to_dataframe(
|
|
418
|
+
_get_local_tensor(y_train), sycl_queue=queue, target_df=dataframe
|
|
419
|
+
)
|
|
420
|
+
|
|
421
|
+
# Run each estimator without an input to kneighbors() and ensure functionality and equivalence
|
|
422
|
+
for CurrentEstimator in [KNeighborsClassifier, KNeighborsRegressor, NearestNeighbors]:
|
|
423
|
+
spmd_model = CurrentEstimator(n_neighbors=1, algorithm="brute").fit(
|
|
424
|
+
local_dpt_X_train, local_dpt_y_train
|
|
425
|
+
)
|
|
426
|
+
batch_model = NearestNeighbors_Batch(n_neighbors=1, algorithm="brute").fit(
|
|
427
|
+
X_train, y_train
|
|
428
|
+
)
|
|
429
|
+
spmd_dists, spmd_indcs = spmd_model.kneighbors()
|
|
430
|
+
batch_dists, batch_indcs = batch_model.kneighbors()
|
|
431
|
+
|
|
432
|
+
_spmd_assert_allclose(spmd_indcs, batch_indcs)
|
|
433
|
+
_spmd_assert_allclose(spmd_dists, batch_dists)
|
|
@@ -19,20 +19,69 @@ from numbers import Number, Real
|
|
|
19
19
|
|
|
20
20
|
import numpy as np
|
|
21
21
|
from scipy import sparse as sp
|
|
22
|
-
from sklearn.base import
|
|
22
|
+
from sklearn.base import ClassifierMixin
|
|
23
23
|
from sklearn.calibration import CalibratedClassifierCV
|
|
24
24
|
from sklearn.metrics import r2_score
|
|
25
25
|
from sklearn.preprocessing import LabelEncoder
|
|
26
26
|
|
|
27
27
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
28
28
|
from daal4py.sklearn.utils.validation import get_requires_y_tag
|
|
29
|
-
from onedal.utils.validation import _check_array,
|
|
29
|
+
from onedal.utils.validation import _check_array, _column_or_1d
|
|
30
30
|
|
|
31
31
|
from .._config import config_context, get_config
|
|
32
32
|
from .._utils import PatchingConditionsChain
|
|
33
33
|
from ..base import oneDALEstimator
|
|
34
34
|
from ..utils.validation import validate_data
|
|
35
35
|
|
|
36
|
+
if sklearn_check_version("1.6"):
|
|
37
|
+
from sklearn.calibration import _fit_calibrator
|
|
38
|
+
from sklearn.frozen import FrozenEstimator
|
|
39
|
+
from sklearn.utils import indexable
|
|
40
|
+
from sklearn.utils._response import _get_response_values
|
|
41
|
+
from sklearn.utils.multiclass import check_classification_targets
|
|
42
|
+
from sklearn.utils.validation import check_is_fitted
|
|
43
|
+
|
|
44
|
+
def _prefit_CalibratedClassifierCV_fit(self, X, y, **fit_params):
|
|
45
|
+
# This is a stop-gap solution where the cv='prefit' of CalibratedClassifierCV
|
|
46
|
+
# was removed and the single fold solution needs to be maintained. Discussion
|
|
47
|
+
# of the mathematical and performance implications of this choice can be found
|
|
48
|
+
# here: https://github.com/uxlfoundation/scikit-learn-intelex/pull/1879
|
|
49
|
+
# This is distilled from the sklearn CalibratedClassifierCV for sklearn <1.8 for
|
|
50
|
+
# use in sklearn > 1.8 to maintain performance.
|
|
51
|
+
check_classification_targets(y)
|
|
52
|
+
X, y = indexable(X, y)
|
|
53
|
+
|
|
54
|
+
estimator = self._get_estimator()
|
|
55
|
+
|
|
56
|
+
self.calibrated_classifiers_ = []
|
|
57
|
+
check_is_fitted(self.estimator, attributes=["classes_"])
|
|
58
|
+
self.classes_ = self.estimator.classes_
|
|
59
|
+
|
|
60
|
+
predictions, _ = _get_response_values(
|
|
61
|
+
estimator,
|
|
62
|
+
X,
|
|
63
|
+
response_method=["decision_function", "predict_proba"],
|
|
64
|
+
)
|
|
65
|
+
if predictions.ndim == 1:
|
|
66
|
+
# Reshape binary output from `(n_samples,)` to `(n_samples, 1)`
|
|
67
|
+
predictions = predictions.reshape(-1, 1)
|
|
68
|
+
|
|
69
|
+
calibrated_classifier = _fit_calibrator(
|
|
70
|
+
estimator,
|
|
71
|
+
predictions,
|
|
72
|
+
y,
|
|
73
|
+
self.classes_,
|
|
74
|
+
self.method,
|
|
75
|
+
)
|
|
76
|
+
self.calibrated_classifiers_.append(calibrated_classifier)
|
|
77
|
+
|
|
78
|
+
first_clf = self.calibrated_classifiers_[0].estimator
|
|
79
|
+
if hasattr(first_clf, "n_features_in_"):
|
|
80
|
+
self.n_features_in_ = first_clf.n_features_in_
|
|
81
|
+
if hasattr(first_clf, "feature_names_in_"):
|
|
82
|
+
self.feature_names_in_ = first_clf.feature_names_in_
|
|
83
|
+
return self
|
|
84
|
+
|
|
36
85
|
|
|
37
86
|
class BaseSVM(oneDALEstimator):
|
|
38
87
|
|
|
@@ -262,12 +311,26 @@ class BaseSVC(BaseSVM):
|
|
|
262
311
|
cfg["target_offload"] = queue
|
|
263
312
|
with config_context(**cfg):
|
|
264
313
|
clf_base.fit(X, y)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
314
|
+
|
|
315
|
+
# Forced use of FrozenEstimator starting in sklearn 1.6
|
|
316
|
+
if sklearn_check_version("1.6"):
|
|
317
|
+
clf_base = FrozenEstimator(clf_base)
|
|
318
|
+
|
|
319
|
+
self.clf_prob = CalibratedClassifierCV(
|
|
320
|
+
clf_base,
|
|
321
|
+
ensemble=False,
|
|
322
|
+
method="sigmoid",
|
|
323
|
+
)
|
|
324
|
+
# see custom stopgap solution defined above
|
|
325
|
+
_prefit_CalibratedClassifierCV_fit(self.clf_prob, X, y)
|
|
326
|
+
else:
|
|
327
|
+
|
|
328
|
+
self.clf_prob = CalibratedClassifierCV(
|
|
329
|
+
clf_base,
|
|
330
|
+
ensemble=False,
|
|
331
|
+
cv="prefit",
|
|
332
|
+
method="sigmoid",
|
|
333
|
+
).fit(X, y)
|
|
271
334
|
|
|
272
335
|
def _save_attributes(self):
|
|
273
336
|
self.support_vectors_ = self._onedal_estimator.support_vectors_
|
|
@@ -18,6 +18,11 @@ import numpy as np
|
|
|
18
18
|
import pytest
|
|
19
19
|
from numpy.testing import assert_allclose
|
|
20
20
|
|
|
21
|
+
try:
|
|
22
|
+
from scipy.sparse import csr_array as csr_class
|
|
23
|
+
except ImportError:
|
|
24
|
+
from scipy.sparse import csr_matrix as csr_class
|
|
25
|
+
|
|
21
26
|
from onedal.tests.utils._dataframes_support import (
|
|
22
27
|
_as_numpy,
|
|
23
28
|
_convert_to_dataframe,
|
|
@@ -91,3 +96,29 @@ def test_sklearnex_import_nusvr(dataframe, queue):
|
|
|
91
96
|
_as_numpy(svc.dual_coef_), [[-1.0, 0.611111, 1.0, -0.611111]], rtol=1e-3
|
|
92
97
|
)
|
|
93
98
|
assert_allclose(_as_numpy(svc.support_), [1, 2, 3, 5])
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# https://github.com/uxlfoundation/scikit-learn-intelex/issues/1880
|
|
102
|
+
def test_works_with_unsorted_indices():
|
|
103
|
+
from sklearnex.svm import SVC
|
|
104
|
+
|
|
105
|
+
X = csr_class(
|
|
106
|
+
(
|
|
107
|
+
np.array(
|
|
108
|
+
[0.44943642, 0.6316672, 0.6316672, 0.44943642, 0.6316672, 0.6316672]
|
|
109
|
+
),
|
|
110
|
+
np.array([1, 4, 3, 1, 2, 0], dtype=np.int32),
|
|
111
|
+
np.array([0, 3, 6], dtype=np.int32),
|
|
112
|
+
),
|
|
113
|
+
shape=(2, 5),
|
|
114
|
+
)
|
|
115
|
+
y = np.array([1, 0])
|
|
116
|
+
X_test_single = np.array([[1, 0, 0, 0, 0]], dtype=np.float64)
|
|
117
|
+
X_test_multi = np.array([[1, 0, 0, 0, 0], [1, 0, 0, 0, 0]], dtype=np.float64)
|
|
118
|
+
model = SVC(probability=True).fit(X, y)
|
|
119
|
+
pred_single = model.predict_proba(X_test_single)
|
|
120
|
+
pred_multi = model.predict_proba(X_test_multi)[0]
|
|
121
|
+
np.testing.assert_array_equal(
|
|
122
|
+
pred_single.reshape(-1),
|
|
123
|
+
pred_multi.reshape(-1),
|
|
124
|
+
)
|
|
@@ -52,7 +52,6 @@ TARGET_OFFLOAD_ALLOWED_LOCATIONS = [
|
|
|
52
52
|
]
|
|
53
53
|
|
|
54
54
|
_DESIGN_RULE_VIOLATIONS = {
|
|
55
|
-
"PCA-fit_transform-call_validate_data": "calls both 'fit' and 'transform'",
|
|
56
55
|
"IncrementalEmpiricalCovariance-score-call_validate_data": "must call clone of itself",
|
|
57
56
|
"SVC(probability=True)-fit-call_validate_data": "SVC fit can use sklearn estimator",
|
|
58
57
|
"NuSVC(probability=True)-fit-call_validate_data": "NuSVC fit can use sklearn estimator",
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
17
|
import logging
|
|
18
|
+
from contextlib import nullcontext
|
|
19
|
+
from unittest.mock import patch
|
|
18
20
|
|
|
19
21
|
import numpy as np
|
|
20
22
|
import pytest
|
|
@@ -160,6 +162,11 @@ def test_fallback_to_host(caplog):
|
|
|
160
162
|
from sklearnex._device_offload import dispatch
|
|
161
163
|
from sklearnex._utils import PatchingConditionsChain
|
|
162
164
|
|
|
165
|
+
# This is done due to the use of name mangling in _sycl_queue_manager which
|
|
166
|
+
# doesn't operate in classes directly. This impacts sklearnex's ``dispatch``
|
|
167
|
+
# routine, which expects class methods rather than instance methods.
|
|
168
|
+
is_fallback = lambda: QM.__global_queue == QM.__fallback_queue
|
|
169
|
+
|
|
163
170
|
class _Estimator:
|
|
164
171
|
def _onedal_gpu_supported(self, method_name, *data):
|
|
165
172
|
patching_status = PatchingConditionsChain("")
|
|
@@ -172,11 +179,7 @@ def test_fallback_to_host(caplog):
|
|
|
172
179
|
|
|
173
180
|
def _onedal_test(self, *args, queue=None):
|
|
174
181
|
if args[0] == "cpu":
|
|
175
|
-
assert (
|
|
176
|
-
queue is None
|
|
177
|
-
and QM.__global_queue == QM.__fallback_queue
|
|
178
|
-
and QM.get_global_queue() is None
|
|
179
|
-
)
|
|
182
|
+
assert queue is None and is_fallback() and QM.get_global_queue() is None
|
|
180
183
|
elif args[0] == "gpu":
|
|
181
184
|
assert queue is not None and QM.get_global_queue() is not None
|
|
182
185
|
|
|
@@ -194,7 +197,7 @@ def test_fallback_to_host(caplog):
|
|
|
194
197
|
dispatch(
|
|
195
198
|
est,
|
|
196
199
|
"test",
|
|
197
|
-
{"onedal":
|
|
200
|
+
{"onedal": _Estimator._onedal_test, "sklearn": None},
|
|
198
201
|
"cpu" if fallback else "gpu",
|
|
199
202
|
)
|
|
200
203
|
|
|
@@ -205,3 +208,49 @@ def test_fallback_to_host(caplog):
|
|
|
205
208
|
in caplog.messages[start:]
|
|
206
209
|
)
|
|
207
210
|
start = len(caplog.messages)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def test_other_device_fallback():
|
|
214
|
+
# force a fallback to cpu with direct use of dispatch and PatchingConditionsChain
|
|
215
|
+
# it should complete with allow_fallback_to_host. The data should be moved to cpu
|
|
216
|
+
# by calling ``to_device``.
|
|
217
|
+
from onedal.utils import _sycl_queue_manager as QM
|
|
218
|
+
from sklearnex._device_offload import dispatch
|
|
219
|
+
from sklearnex._utils import PatchingConditionsChain
|
|
220
|
+
|
|
221
|
+
class FakeCUDA:
|
|
222
|
+
def __init__(self, data):
|
|
223
|
+
self.__data = data
|
|
224
|
+
|
|
225
|
+
def to_device(self, *args):
|
|
226
|
+
return self.__data
|
|
227
|
+
|
|
228
|
+
def __dlpack_device__(self):
|
|
229
|
+
return (2, 0)
|
|
230
|
+
|
|
231
|
+
class _CPUEstimator:
|
|
232
|
+
def _onedal_cpu_supported(self, method_name, *data):
|
|
233
|
+
patching_status = PatchingConditionsChain("")
|
|
234
|
+
return patching_status
|
|
235
|
+
|
|
236
|
+
def _onedal_test(self, data, queue=None):
|
|
237
|
+
assert queue is None and QM.get_global_queue() is None
|
|
238
|
+
assert isinstance(data, np.ndarray)
|
|
239
|
+
|
|
240
|
+
est = _CPUEstimator()
|
|
241
|
+
err_msg = "Device support is not implemented for the supplied data type."
|
|
242
|
+
data = FakeCUDA(np.eye(5, 8))
|
|
243
|
+
|
|
244
|
+
for fallback in [True, False]:
|
|
245
|
+
ctx = nullcontext() if fallback else pytest.raises(RuntimeError, match=err_msg)
|
|
246
|
+
_mock = patch.object(FakeCUDA, "to_device", wraps=data.to_device)
|
|
247
|
+
with sklearnex.config_context(allow_fallback_to_host=fallback), ctx, _mock as spy:
|
|
248
|
+
dispatch(
|
|
249
|
+
est,
|
|
250
|
+
"test",
|
|
251
|
+
{"onedal": _CPUEstimator._onedal_test, "sklearn": None},
|
|
252
|
+
data,
|
|
253
|
+
)
|
|
254
|
+
if fallback:
|
|
255
|
+
# verify ``FakeCUDA.to_device`` was used
|
|
256
|
+
spy.assert_called_once_with("cpu")
|
scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
import pytest
|
|
19
|
+
from sklearn.datasets import make_classification, make_regression
|
|
20
|
+
|
|
21
|
+
from daal4py.sklearn._utils import daal_check_version
|
|
22
|
+
from sklearnex.decomposition import PCA
|
|
23
|
+
from sklearnex.ensemble import RandomForestClassifier
|
|
24
|
+
from sklearnex.linear_model import IncrementalLinearRegression, LinearRegression
|
|
25
|
+
from sklearnex.preview.covariance import EmpiricalCovariance
|
|
26
|
+
|
|
27
|
+
# Table of estimators to test hyperparameter reset functionality.
|
|
28
|
+
# Each row contains the following elements:
|
|
29
|
+
#
|
|
30
|
+
# [estimator, estimator_type, operation, hyperparameter_name, non_default_value]
|
|
31
|
+
#
|
|
32
|
+
# estimator: the estimator class to test. For example, EmpiricalCovariance.
|
|
33
|
+
# estimator_type: the type of operation to get.
|
|
34
|
+
# Possible values: "compute", "regression", "classification".
|
|
35
|
+
# operation: the argument used in get_hyperparameters() and reset_hyperparameters()
|
|
36
|
+
# methods of the estimator.
|
|
37
|
+
# hyperparameter_name: the name of the hyperparameter to test.
|
|
38
|
+
# non_default_value: the value to set for the hyperparameter before resetting it.
|
|
39
|
+
# This value should be different from the default value of the hyperparameter.
|
|
40
|
+
test_estimators = [
|
|
41
|
+
[EmpiricalCovariance, "compute", "fit", "cpu_macro_block", 10],
|
|
42
|
+
[IncrementalLinearRegression, "regression", "fit", "cpu_macro_block", 10],
|
|
43
|
+
[IncrementalLinearRegression, "regression", "partial_fit", "cpu_macro_block", 10],
|
|
44
|
+
[LinearRegression, "regression", "fit", "cpu_macro_block", 10],
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
if daal_check_version((2024, "P", 300)):
|
|
48
|
+
test_estimators.append(
|
|
49
|
+
[RandomForestClassifier, "classification", "predict", "block_size", 8]
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
if daal_check_version((2025, "P", 700)):
|
|
53
|
+
test_estimators.append([EmpiricalCovariance, "compute", "fit", "cpu_grain_size", 2])
|
|
54
|
+
test_estimators.append([PCA, "compute", "fit", "cpu_macro_block", 10])
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def call_estimator(estimator_object, estimator_type, op, X, y=None):
|
|
58
|
+
if estimator_type == "compute":
|
|
59
|
+
return estimator_object.fit(X)
|
|
60
|
+
elif estimator_type == "regression" or estimator_type == "classification":
|
|
61
|
+
if y is None:
|
|
62
|
+
raise ValueError("y must be provided for regression or classification tasks")
|
|
63
|
+
if op == "partial_fit":
|
|
64
|
+
result = estimator_object.partial_fit(X, y)
|
|
65
|
+
else:
|
|
66
|
+
result = estimator_object.fit(X, y)
|
|
67
|
+
if op == "predict":
|
|
68
|
+
return estimator_object.predict(X)
|
|
69
|
+
else:
|
|
70
|
+
return result
|
|
71
|
+
else:
|
|
72
|
+
raise ValueError(f"Unknown estimator type: {estimator_type}")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_reset_hyperparameters():
|
|
76
|
+
for estimator, estimator_type, op, param_name, non_default_value in test_estimators:
|
|
77
|
+
|
|
78
|
+
if estimator_type == "compute":
|
|
79
|
+
X = np.random.rand(100, 5)
|
|
80
|
+
y = None
|
|
81
|
+
elif estimator_type == "regression":
|
|
82
|
+
X, y = make_regression(n_features=5, n_informative=5, random_state=777)
|
|
83
|
+
elif estimator_type == "classification":
|
|
84
|
+
X, y = make_classification(n_features=5, random_state=777)
|
|
85
|
+
|
|
86
|
+
# Create an instance of the estimator
|
|
87
|
+
est_object = estimator()
|
|
88
|
+
|
|
89
|
+
# Fit the model to the data with the default hyperparameters
|
|
90
|
+
call_estimator(est_object, estimator_type, op, X, y)
|
|
91
|
+
|
|
92
|
+
# Get the hyperparameters before resetting
|
|
93
|
+
hparams_before = estimator.get_hyperparameters(op)
|
|
94
|
+
default_hparam_value = getattr(hparams_before, param_name)
|
|
95
|
+
|
|
96
|
+
# Fit the model to the data with non-default hyperparameters
|
|
97
|
+
setattr(hparams_before, param_name, non_default_value)
|
|
98
|
+
call_estimator(est_object, estimator_type, op, X, y)
|
|
99
|
+
|
|
100
|
+
# Check if the hyperparameters have been set to non-default values
|
|
101
|
+
assert getattr(hparams_before, param_name) == non_default_value
|
|
102
|
+
assert getattr(estimator.get_hyperparameters(op), param_name) == non_default_value
|
|
103
|
+
|
|
104
|
+
# Reset the hyperparameters
|
|
105
|
+
estimator.reset_hyperparameters(op)
|
|
106
|
+
call_estimator(est_object, estimator_type, op, X, y)
|
|
107
|
+
|
|
108
|
+
# Check if the hyperparameters have been reset to default values
|
|
109
|
+
assert (
|
|
110
|
+
getattr(estimator.get_hyperparameters(op), param_name) == default_hparam_value
|
|
111
|
+
)
|
|
@@ -273,7 +273,7 @@ def _kfold_function_template(
|
|
|
273
273
|
|
|
274
274
|
@pytest.mark.parametrize("order", ["F", "C"])
|
|
275
275
|
@pytest.mark.parametrize(
|
|
276
|
-
"dataframe,queue", get_dataframes_and_queues("numpy,pandas
|
|
276
|
+
"dataframe,queue", get_dataframes_and_queues("numpy,pandas", "cpu")
|
|
277
277
|
)
|
|
278
278
|
@pytest.mark.parametrize("estimator", CPU_ESTIMATORS.keys())
|
|
279
279
|
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
@@ -27,7 +27,7 @@ import numpy.random as nprnd
|
|
|
27
27
|
import pytest
|
|
28
28
|
from sklearn.base import BaseEstimator
|
|
29
29
|
|
|
30
|
-
from daal4py.sklearn._utils import sklearn_check_version
|
|
30
|
+
from daal4py.sklearn._utils import _package_check_version, sklearn_check_version
|
|
31
31
|
from onedal.tests.utils._dataframes_support import (
|
|
32
32
|
_convert_to_dataframe,
|
|
33
33
|
get_dataframes_and_queues,
|
|
@@ -168,25 +168,29 @@ def test_standard_estimator_patching(caplog, dataframe, queue, dtype, estimator,
|
|
|
168
168
|
)
|
|
169
169
|
elif method and not hasattr(est, method):
|
|
170
170
|
pytest.skip(f"sklearn available_if prevents testing {estimator}.{method}")
|
|
171
|
-
elif dataframe == "array_api" and estimator == "PCA" and "score" in method:
|
|
172
|
-
pytest.skip(
|
|
173
|
-
f"PCA.{method} has sklearn array_api support which breaks with array_api_dispatching"
|
|
174
|
-
)
|
|
175
|
-
elif (
|
|
176
|
-
dataframe == "array_api"
|
|
177
|
-
and not sklearn_check_version("1.3")
|
|
178
|
-
and estimator == "IncrementalEmpiricalCovariance"
|
|
179
|
-
and method == "score"
|
|
180
|
-
):
|
|
181
|
-
pytest.skip(
|
|
182
|
-
f"array checking in sklearn <1.3 does not fully support array_api inputs, causes sklearnex-only estimator failure"
|
|
183
|
-
)
|
|
184
171
|
|
|
185
172
|
if dataframe == "array_api":
|
|
186
173
|
# as array_api dispatching is experimental, sklearn support isn't guaranteed.
|
|
187
174
|
# the infrastructure from sklearn that sklearnex depends on is also susceptible
|
|
188
175
|
# to failure. In this case compare to sklearn for the same failure. By design
|
|
189
176
|
# the patching of sklearn should act similarly. Technically this is conformance.
|
|
177
|
+
if (
|
|
178
|
+
(estimator == "PCA" and "transform" in method)
|
|
179
|
+
or (estimator == "IncrementalEmpiricalCovariance" and method == "mahalanobis")
|
|
180
|
+
) and not _package_check_version("2.0", np.__version__):
|
|
181
|
+
# issue not to be observed with normal numpy usage
|
|
182
|
+
pytest.skip(
|
|
183
|
+
f"numpy backend does not properly handle the __dlpack__ attribute."
|
|
184
|
+
)
|
|
185
|
+
elif (
|
|
186
|
+
not sklearn_check_version("1.3")
|
|
187
|
+
and estimator == "IncrementalEmpiricalCovariance"
|
|
188
|
+
and method == "score"
|
|
189
|
+
):
|
|
190
|
+
pytest.skip(
|
|
191
|
+
f"array checking in sklearn <1.3 does not fully support array_api inputs, causes sklearnex-only estimator failure"
|
|
192
|
+
)
|
|
193
|
+
|
|
190
194
|
with config_context(array_api_dispatch=True):
|
|
191
195
|
try:
|
|
192
196
|
_check_estimator_patching(caplog, dataframe, queue, dtype, est, method)
|
|
@@ -398,25 +398,13 @@ def _get_processor_info():
|
|
|
398
398
|
class DummyEstimator(BaseEstimator):
|
|
399
399
|
|
|
400
400
|
def fit(self, X, y=None):
|
|
401
|
-
sua_iface, xp, _ = _get_sycl_namespace(X)
|
|
402
401
|
X_table = to_table(X)
|
|
403
402
|
y_table = to_table(y)
|
|
404
403
|
# The presence of the fitted attributes (ending with a trailing
|
|
405
404
|
# underscore) is required for the correct check. The cleanup of
|
|
406
405
|
# the memory will occur at the estimator instance deletion.
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
X_table, sua_iface=sua_iface, sycl_queue=X.sycl_queue, xp=xp
|
|
410
|
-
)
|
|
411
|
-
self.y_attr_ = from_table(
|
|
412
|
-
y_table,
|
|
413
|
-
sua_iface=sua_iface,
|
|
414
|
-
sycl_queue=X.sycl_queue if y is None else y.sycl_queue,
|
|
415
|
-
xp=xp,
|
|
416
|
-
)
|
|
417
|
-
else:
|
|
418
|
-
self.x_attr_ = from_table(X_table)
|
|
419
|
-
self.y_attr_ = from_table(y_table)
|
|
406
|
+
self.x_attr_ = from_table(X_table, like=X)
|
|
407
|
+
self.y_attr_ = from_table(y_table, like=X if y is None else y)
|
|
420
408
|
|
|
421
409
|
return self
|
|
422
410
|
|
|
@@ -424,13 +412,7 @@ class DummyEstimator(BaseEstimator):
|
|
|
424
412
|
# Checks if the estimator is fitted by verifying the presence of
|
|
425
413
|
# fitted attributes (ending with a trailing underscore).
|
|
426
414
|
check_is_fitted(self)
|
|
427
|
-
sua_iface, xp, _ = _get_sycl_namespace(X)
|
|
428
415
|
X_table = to_table(X)
|
|
429
|
-
|
|
430
|
-
returned_X = from_table(
|
|
431
|
-
X_table, sua_iface=sua_iface, sycl_queue=X.sycl_queue, xp=xp
|
|
432
|
-
)
|
|
433
|
-
else:
|
|
434
|
-
returned_X = from_table(X_table)
|
|
416
|
+
returned_X = from_table(X_table, like=X)
|
|
435
417
|
|
|
436
418
|
return returned_X
|