scikit-learn-intelex 2025.6.1__py310-none-win_amd64.whl → 2025.8.0__py310-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.8.0.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/__init__.py +2 -2
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +258 -2
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +30 -5
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp310-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +2 -2
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +4 -4
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +616 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +15 -16
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/__init__.py +26 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/_config.py +5 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/_device_offload.py +84 -94
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +42 -57
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +6 -7
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +11 -11
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +7 -25
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +18 -2
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_backend.py +62 -37
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +32 -9
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +6 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +10 -12
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +8 -16
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +12 -2
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +156 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +61 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +8 -3
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +61 -19
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +8 -17
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +6 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +15 -9
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +14 -15
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +10 -17
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +64 -17
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/svm.py +0 -12
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +15 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +23 -6
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +25 -25
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +106 -54
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/validation.py +11 -3
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/__init__.py +2 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_config.py +17 -8
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +45 -34
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_utils.py +52 -3
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/base.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +31 -45
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +50 -55
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +30 -27
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +1 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +14 -5
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +21 -9
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +54 -2
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +13 -7
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +17 -5
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +22 -7
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +2 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +90 -73
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +83 -60
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +53 -41
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +11 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +47 -27
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +27 -61
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +577 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +8 -6
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +3 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +54 -8
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +7 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +6 -3
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +12 -8
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -8
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +11 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -7
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +21 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -7
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +16 -8
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -4
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +31 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +41 -2
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +77 -6
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -8
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +1 -1
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +13 -13
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +4 -22
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +71 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +29 -11
- {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/METADATA +2 -2
- scikit_learn_intelex-2025.8.0.dist-info/RECORD +259 -0
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +0 -1025
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +0 -111
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +0 -117
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +0 -311
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +0 -351
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +0 -71
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -134
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -43
- scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
- scikit_learn_intelex-2025.6.1.dist-info/RECORD +0 -257
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/__main__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/top_level.txt +0 -0
|
@@ -99,9 +99,11 @@ def test_incremental_linear_regression_fit_spmd_gold(
|
|
|
99
99
|
inclin.fit(dpt_X, dpt_y)
|
|
100
100
|
|
|
101
101
|
rtol = 1e-5 if (dtype == np.float32) else 1e-7
|
|
102
|
-
assert_allclose(inclin.coef_, inclin_spmd.coef_, rtol=rtol)
|
|
102
|
+
assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), rtol=rtol)
|
|
103
103
|
if fit_intercept:
|
|
104
|
-
assert_allclose(
|
|
104
|
+
assert_allclose(
|
|
105
|
+
_as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), rtol=rtol
|
|
106
|
+
)
|
|
105
107
|
|
|
106
108
|
|
|
107
109
|
@pytest.mark.skipif(
|
|
@@ -184,9 +186,11 @@ def test_incremental_linear_regression_partial_fit_spmd_gold(
|
|
|
184
186
|
inclin.fit(dpt_X, dpt_y)
|
|
185
187
|
|
|
186
188
|
rtol = 1e-5 if (dtype == np.float32) else 1e-7
|
|
187
|
-
assert_allclose(inclin.coef_, inclin_spmd.coef_, rtol=rtol)
|
|
189
|
+
assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), rtol=rtol)
|
|
188
190
|
if fit_intercept:
|
|
189
|
-
assert_allclose(
|
|
191
|
+
assert_allclose(
|
|
192
|
+
_as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), rtol=rtol
|
|
193
|
+
)
|
|
190
194
|
|
|
191
195
|
|
|
192
196
|
@pytest.mark.skipif(
|
|
@@ -242,9 +246,11 @@ def test_incremental_linear_regression_fit_spmd_random(
|
|
|
242
246
|
inclin_spmd.fit(local_dpt_X, local_dpt_y)
|
|
243
247
|
inclin.fit(dpt_X, dpt_y)
|
|
244
248
|
|
|
245
|
-
assert_allclose(inclin.coef_, inclin_spmd.coef_, atol=tol)
|
|
249
|
+
assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), atol=tol)
|
|
246
250
|
if fit_intercept:
|
|
247
|
-
assert_allclose(
|
|
251
|
+
assert_allclose(
|
|
252
|
+
_as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), atol=tol
|
|
253
|
+
)
|
|
248
254
|
|
|
249
255
|
y_pred_spmd = inclin_spmd.predict(dpt_X_test)
|
|
250
256
|
y_pred = inclin.predict(dpt_X_test)
|
|
@@ -325,9 +331,11 @@ def test_incremental_linear_regression_partial_fit_spmd_random(
|
|
|
325
331
|
inclin_spmd.partial_fit(local_dpt_X, local_dpt_y)
|
|
326
332
|
inclin.partial_fit(dpt_X, dpt_y)
|
|
327
333
|
|
|
328
|
-
assert_allclose(inclin.coef_, inclin_spmd.coef_, atol=tol)
|
|
334
|
+
assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), atol=tol)
|
|
329
335
|
if fit_intercept:
|
|
330
|
-
assert_allclose(
|
|
336
|
+
assert_allclose(
|
|
337
|
+
_as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), atol=tol
|
|
338
|
+
)
|
|
331
339
|
|
|
332
340
|
y_pred_spmd = inclin_spmd.predict(dpt_X_test)
|
|
333
341
|
y_pred = inclin.predict(dpt_X_test)
|
|
@@ -19,6 +19,7 @@ import pytest
|
|
|
19
19
|
from numpy.testing import assert_allclose
|
|
20
20
|
|
|
21
21
|
from onedal.tests.utils._dataframes_support import (
|
|
22
|
+
_as_numpy,
|
|
22
23
|
_convert_to_dataframe,
|
|
23
24
|
get_dataframes_and_queues,
|
|
24
25
|
)
|
|
@@ -83,8 +84,8 @@ def test_linear_spmd_gold(dataframe, queue):
|
|
|
83
84
|
spmd_model = LinearRegression_SPMD().fit(local_dpt_X_train, local_dpt_y_train)
|
|
84
85
|
batch_model = LinearRegression_Batch().fit(X_train, y_train)
|
|
85
86
|
|
|
86
|
-
assert_allclose(spmd_model.coef_, batch_model.coef_)
|
|
87
|
-
assert_allclose(spmd_model.intercept_, batch_model.intercept_)
|
|
87
|
+
assert_allclose(_as_numpy(spmd_model.coef_), _as_numpy(batch_model.coef_))
|
|
88
|
+
assert_allclose(_as_numpy(spmd_model.intercept_), _as_numpy(batch_model.intercept_))
|
|
88
89
|
|
|
89
90
|
# ensure predictions of batch algo match spmd
|
|
90
91
|
spmd_result = spmd_model.predict(local_dpt_X_test)
|
|
@@ -142,8 +143,15 @@ def test_linear_spmd_synthetic(
|
|
|
142
143
|
batch_model = LinearRegression_Batch().fit(X_train, y_train)
|
|
143
144
|
|
|
144
145
|
tol = 1e-3 if dtype == np.float32 else 1e-7
|
|
145
|
-
assert_allclose(
|
|
146
|
-
|
|
146
|
+
assert_allclose(
|
|
147
|
+
_as_numpy(spmd_model.coef_), _as_numpy(batch_model.coef_), rtol=tol, atol=tol
|
|
148
|
+
)
|
|
149
|
+
assert_allclose(
|
|
150
|
+
_as_numpy(spmd_model.intercept_),
|
|
151
|
+
_as_numpy(batch_model.intercept_),
|
|
152
|
+
rtol=tol,
|
|
153
|
+
atol=tol,
|
|
154
|
+
)
|
|
147
155
|
|
|
148
156
|
# ensure predictions of batch algo match spmd
|
|
149
157
|
# Configure raw input status for spmd estimator
|
|
@@ -233,7 +233,7 @@ class BaseSVC(BaseSVM):
|
|
|
233
233
|
|
|
234
234
|
le = LabelEncoder()
|
|
235
235
|
y_ind = le.fit_transform(y_)
|
|
236
|
-
if not
|
|
236
|
+
if not np.isin(classes, le.classes_).all():
|
|
237
237
|
raise ValueError("classes should have valid labels that are in y")
|
|
238
238
|
|
|
239
239
|
recip_freq = len(y_) / (len(le.classes_) * np.bincount(y_ind).astype(np.float64))
|
|
@@ -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
|
+
)
|
|
@@ -20,6 +20,7 @@ import os
|
|
|
20
20
|
import pathlib
|
|
21
21
|
import pkgutil
|
|
22
22
|
import re
|
|
23
|
+
import subprocess
|
|
23
24
|
import sys
|
|
24
25
|
import trace
|
|
25
26
|
from contextlib import redirect_stdout
|
|
@@ -31,6 +32,7 @@ from sklearn.utils import all_estimators
|
|
|
31
32
|
|
|
32
33
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
33
34
|
from onedal.tests.test_common import _check_primitive_usage_ban
|
|
35
|
+
from onedal.tests.utils._dataframes_support import test_frameworks
|
|
34
36
|
from sklearnex.base import oneDALEstimator
|
|
35
37
|
from sklearnex.tests.utils import (
|
|
36
38
|
PATCHED_MODELS,
|
|
@@ -118,7 +120,7 @@ def test_target_offload_ban():
|
|
|
118
120
|
allowed_locations=TARGET_OFFLOAD_ALLOWED_LOCATIONS,
|
|
119
121
|
)
|
|
120
122
|
output = "\n".join(output)
|
|
121
|
-
assert output == "", f"target offloading is
|
|
123
|
+
assert output == "", f"target offloading is occurring in: \n{output}"
|
|
122
124
|
|
|
123
125
|
|
|
124
126
|
def _sklearnex_walk(func):
|
|
@@ -146,7 +148,7 @@ def test_class_trailing_underscore_ban(monkeypatch):
|
|
|
146
148
|
estimators = all_estimators() # list of tuples
|
|
147
149
|
for name, obj in estimators:
|
|
148
150
|
if "preview" not in obj.__module__ and "daal4py" not in obj.__module__:
|
|
149
|
-
#
|
|
151
|
+
# properties also occur in sklearn, especially in deprecations and are expected
|
|
150
152
|
# to error if queried and the estimator is not fitted
|
|
151
153
|
assert all(
|
|
152
154
|
[
|
|
@@ -201,6 +203,43 @@ def test_oneDALEstimator_inheritance(monkeypatch):
|
|
|
201
203
|
), f"oneDALEstimator should be inherited just before BaseEstimator in {name}"
|
|
202
204
|
|
|
203
205
|
|
|
206
|
+
def test_frameworks_lazy_import(monkeypatch):
|
|
207
|
+
"""Check that all estimators defined in sklearnex do not actively
|
|
208
|
+
load data frameworks which are not numpy or pandas.
|
|
209
|
+
"""
|
|
210
|
+
active = ["numpy", "pandas", "dpctl.tensor"]
|
|
211
|
+
# handle naming conventions for data frameworks in testing
|
|
212
|
+
frameworks = test_frameworks.replace("dpctl", "dpctl.tensor")
|
|
213
|
+
frameworks = frameworks.replace("array_api", "array_api_strict")
|
|
214
|
+
lazy = ",".join([i for i in frameworks.split(",") if i not in active])
|
|
215
|
+
if not lazy:
|
|
216
|
+
pytest.skip("No lazily-imported data frameworks available in testing")
|
|
217
|
+
|
|
218
|
+
monkeypatch.setattr(pkgutil, "walk_packages", _sklearnex_walk(pkgutil.walk_packages))
|
|
219
|
+
estimators = all_estimators() # list of tuples
|
|
220
|
+
|
|
221
|
+
filtered_modules = []
|
|
222
|
+
for name, obj in estimators:
|
|
223
|
+
# do not test spmd or preview, as they are exempt
|
|
224
|
+
if "preview" not in obj.__module__ and "spmd" not in obj.__module__:
|
|
225
|
+
filtered_modules += [obj.__module__]
|
|
226
|
+
|
|
227
|
+
modules = ",".join(filtered_modules)
|
|
228
|
+
|
|
229
|
+
# import all modules with estimators and check sys.modules for the lazily-imported data
|
|
230
|
+
# frameworks. It is done in a subprocess to isolate the impact of testing infrastructure
|
|
231
|
+
# on sys.modules, which may have actively loaded those frameworks into the test env
|
|
232
|
+
teststr = (
|
|
233
|
+
"import sys,{mod};assert all([i not in sys.modules for i in '{l}'.split(',')])"
|
|
234
|
+
)
|
|
235
|
+
cmd = [sys.executable, "-c", teststr.format(mod=modules, l=lazy)]
|
|
236
|
+
|
|
237
|
+
try:
|
|
238
|
+
subprocess.run(cmd, check=True, capture_output=True, text=True)
|
|
239
|
+
except subprocess.CalledProcessError as e:
|
|
240
|
+
raise AssertionError(f"a framework in '{lazy}' is being actively loaded") from e
|
|
241
|
+
|
|
242
|
+
|
|
204
243
|
def _fullpath(path):
|
|
205
244
|
return os.path.realpath(os.path.expanduser(path))
|
|
206
245
|
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
17
|
import logging
|
|
18
|
+
from contextlib import nullcontext
|
|
19
|
+
from unittest.mock import patch
|
|
18
20
|
|
|
21
|
+
import numpy as np
|
|
19
22
|
import pytest
|
|
20
23
|
import sklearn
|
|
21
24
|
|
|
@@ -127,6 +130,27 @@ def test_config_context_works():
|
|
|
127
130
|
assert onedal_default_config_after_cc[param] == onedal_default_config[param]
|
|
128
131
|
|
|
129
132
|
|
|
133
|
+
@pytest.mark.skipif(
|
|
134
|
+
onedal._default_backend.is_dpc, reason="requires host default backend"
|
|
135
|
+
)
|
|
136
|
+
@pytest.mark.parametrize("target", ["auto", "cpu", "cpu:0", "gpu", 3])
|
|
137
|
+
def test_host_backend_target_offload(target):
|
|
138
|
+
from sklearnex.neighbors import NearestNeighbors
|
|
139
|
+
|
|
140
|
+
err_msg = (
|
|
141
|
+
r"device use via \`target_offload\` is only supported with the DPC\+\+ backend"
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
est = NearestNeighbors()
|
|
145
|
+
if target != "auto":
|
|
146
|
+
with pytest.raises(ValueError, match=err_msg):
|
|
147
|
+
with sklearnex.config_context(target_offload=target):
|
|
148
|
+
est.fit(np.eye(5, 8))
|
|
149
|
+
else:
|
|
150
|
+
with sklearnex.config_context(target_offload=target):
|
|
151
|
+
est.fit(np.eye(5, 8))
|
|
152
|
+
|
|
153
|
+
|
|
130
154
|
@pytest.mark.skipif(
|
|
131
155
|
not is_dpctl_device_available(["gpu"]), reason="Requires a gpu for fallback testing"
|
|
132
156
|
)
|
|
@@ -138,6 +162,11 @@ def test_fallback_to_host(caplog):
|
|
|
138
162
|
from sklearnex._device_offload import dispatch
|
|
139
163
|
from sklearnex._utils import PatchingConditionsChain
|
|
140
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
|
+
|
|
141
170
|
class _Estimator:
|
|
142
171
|
def _onedal_gpu_supported(self, method_name, *data):
|
|
143
172
|
patching_status = PatchingConditionsChain("")
|
|
@@ -150,11 +179,7 @@ def test_fallback_to_host(caplog):
|
|
|
150
179
|
|
|
151
180
|
def _onedal_test(self, *args, queue=None):
|
|
152
181
|
if args[0] == "cpu":
|
|
153
|
-
assert (
|
|
154
|
-
queue is None
|
|
155
|
-
and QM.__global_queue == QM.__fallback_queue
|
|
156
|
-
and QM.get_global_queue() is None
|
|
157
|
-
)
|
|
182
|
+
assert queue is None and is_fallback() and QM.get_global_queue() is None
|
|
158
183
|
elif args[0] == "gpu":
|
|
159
184
|
assert queue is not None and QM.get_global_queue() is not None
|
|
160
185
|
|
|
@@ -172,7 +197,7 @@ def test_fallback_to_host(caplog):
|
|
|
172
197
|
dispatch(
|
|
173
198
|
est,
|
|
174
199
|
"test",
|
|
175
|
-
{"onedal":
|
|
200
|
+
{"onedal": _Estimator._onedal_test, "sklearn": None},
|
|
176
201
|
"cpu" if fallback else "gpu",
|
|
177
202
|
)
|
|
178
203
|
|
|
@@ -183,3 +208,49 @@ def test_fallback_to_host(caplog):
|
|
|
183
208
|
in caplog.messages[start:]
|
|
184
209
|
)
|
|
185
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.8.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
|
+
)
|
|
@@ -35,7 +35,6 @@ from onedal.tests.utils._dataframes_support import (
|
|
|
35
35
|
)
|
|
36
36
|
from onedal.tests.utils._device_selection import get_queues, is_dpctl_device_available
|
|
37
37
|
from onedal.utils._array_api import _get_sycl_namespace
|
|
38
|
-
from onedal.utils._dpep_helpers import dpctl_available, dpnp_available
|
|
39
38
|
from sklearnex import config_context
|
|
40
39
|
from sklearnex.tests.utils import (
|
|
41
40
|
PATCHED_FUNCTIONS,
|
|
@@ -44,13 +43,6 @@ from sklearnex.tests.utils import (
|
|
|
44
43
|
DummyEstimator,
|
|
45
44
|
)
|
|
46
45
|
|
|
47
|
-
if dpctl_available:
|
|
48
|
-
from dpctl.tensor import usm_ndarray
|
|
49
|
-
|
|
50
|
-
if dpnp_available:
|
|
51
|
-
import dpnp
|
|
52
|
-
|
|
53
|
-
|
|
54
46
|
CPU_SKIP_LIST = (
|
|
55
47
|
"TSNE", # too slow for using in testing on common data size
|
|
56
48
|
"config_context", # does not malloc
|
|
@@ -95,7 +95,7 @@ def test_n_jobs_support(estimator, n_jobs, caplog):
|
|
|
95
95
|
"NearestNeighbors" in estimator and "radius" in method_name
|
|
96
96
|
):
|
|
97
97
|
# radius_neighbors and radius_neighbors_graph violate sklearn fallback guard
|
|
98
|
-
# but use sklearnex
|
|
98
|
+
# but use sklearnex internally, additional development must be done to those
|
|
99
99
|
# functions to bring them to design compliance.
|
|
100
100
|
continue
|
|
101
101
|
try:
|
|
@@ -168,25 +168,25 @@ 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 estimator == "PCA" and "score" in method:
|
|
178
|
+
pytest.skip(
|
|
179
|
+
f"PCA.{method} has sklearn array_api support which breaks with array_api_dispatching"
|
|
180
|
+
)
|
|
181
|
+
elif (
|
|
182
|
+
not sklearn_check_version("1.3")
|
|
183
|
+
and estimator == "IncrementalEmpiricalCovariance"
|
|
184
|
+
and method == "score"
|
|
185
|
+
):
|
|
186
|
+
pytest.skip(
|
|
187
|
+
f"array checking in sklearn <1.3 does not fully support array_api inputs, causes sklearnex-only estimator failure"
|
|
188
|
+
)
|
|
189
|
+
|
|
190
190
|
with config_context(array_api_dispatch=True):
|
|
191
191
|
try:
|
|
192
192
|
_check_estimator_patching(caplog, dataframe, queue, dtype, est, method)
|
|
@@ -153,7 +153,7 @@ def gen_models_info(algorithms, required_inputs=["X", "y"], fit=False, daal4py=T
|
|
|
153
153
|
required_inputs : list, tuple of strings or None
|
|
154
154
|
list of required args/kwargs for callable attribute (only non-private,
|
|
155
155
|
non-BaseEstimator attributes). Only one must be present, None
|
|
156
|
-
signifies taking all non-private
|
|
156
|
+
signifies taking all non-private attributes, callable or not.
|
|
157
157
|
|
|
158
158
|
fit: bool (default False)
|
|
159
159
|
Include "fit" method as an estimator-attribute pair
|
|
@@ -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
|
|
@@ -16,11 +16,19 @@
|
|
|
16
16
|
|
|
17
17
|
"""Tools to support array_api."""
|
|
18
18
|
|
|
19
|
+
from collections.abc import Callable
|
|
20
|
+
from typing import Union
|
|
21
|
+
|
|
19
22
|
import numpy as np
|
|
20
23
|
|
|
21
24
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
22
25
|
from onedal.utils._array_api import _get_sycl_namespace
|
|
23
26
|
|
|
27
|
+
from ..base import oneDALEstimator
|
|
28
|
+
|
|
29
|
+
if sklearn_check_version("1.6"):
|
|
30
|
+
from ..base import Tags
|
|
31
|
+
|
|
24
32
|
if sklearn_check_version("1.2"):
|
|
25
33
|
from sklearn.utils._array_api import get_namespace as sklearn_get_namespace
|
|
26
34
|
|
|
@@ -80,3 +88,66 @@ def get_namespace(*arrays):
|
|
|
80
88
|
return sklearn_get_namespace(*arrays)
|
|
81
89
|
else:
|
|
82
90
|
return np, False
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def _enable_array_api(original_class: type[oneDALEstimator]) -> type[oneDALEstimator]:
|
|
94
|
+
if sklearn_check_version("1.6"):
|
|
95
|
+
|
|
96
|
+
def __sklearn_tags__(self) -> Tags:
|
|
97
|
+
sktags = super(original_class, self).__sklearn_tags__()
|
|
98
|
+
sktags.onedal_array_api = True
|
|
99
|
+
return sktags
|
|
100
|
+
|
|
101
|
+
original_class.__sklearn_tags__ = __sklearn_tags__
|
|
102
|
+
|
|
103
|
+
elif sklearn_check_version("1.3"):
|
|
104
|
+
|
|
105
|
+
def _more_tags(self) -> dict[str, bool]:
|
|
106
|
+
return {"onedal_array_api": True}
|
|
107
|
+
|
|
108
|
+
original_class._more_tags = _more_tags
|
|
109
|
+
|
|
110
|
+
return original_class
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def enable_array_api(
|
|
114
|
+
class_or_str: Union[type[oneDALEstimator], str],
|
|
115
|
+
) -> Union[type[oneDALEstimator], Callable]:
|
|
116
|
+
"""Enable sklearnex to use dpctl, dpnp or array API inputs in oneDAL offloading.
|
|
117
|
+
|
|
118
|
+
This wrapper sets the proper flags/tags for the sklearnex infrastructure
|
|
119
|
+
to maintain the data framework, as the estimator can use it natively.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
class_or_str : oneDALEstimator subclass or str
|
|
124
|
+
Class which should enable data zero-copy support in sklearnex. By
|
|
125
|
+
default it will enable for sklearn versions >1.3. If the wrapper is
|
|
126
|
+
decorated with an argument, it must be a string defining the oldest
|
|
127
|
+
sklearn version where array API support begins.
|
|
128
|
+
|
|
129
|
+
Returns
|
|
130
|
+
-------
|
|
131
|
+
cls or wrapper : modified oneDALEstimator subclass or wrapper
|
|
132
|
+
Estimator class or wrapper.
|
|
133
|
+
|
|
134
|
+
Examples
|
|
135
|
+
--------
|
|
136
|
+
@enable_array_api # default array API support
|
|
137
|
+
class PCA():
|
|
138
|
+
...
|
|
139
|
+
|
|
140
|
+
@enable_array_api("1.5") # array API support for sklearn > 1.5
|
|
141
|
+
class Ridge():
|
|
142
|
+
...
|
|
143
|
+
"""
|
|
144
|
+
if isinstance(class_or_str, str):
|
|
145
|
+
# enable array_api for the estimator for a given sklearn version str
|
|
146
|
+
if sklearn_check_version(class_or_str):
|
|
147
|
+
return _enable_array_api
|
|
148
|
+
else:
|
|
149
|
+
# do not apply the wrapper as it is not supported
|
|
150
|
+
return lambda x: x
|
|
151
|
+
else:
|
|
152
|
+
# default setting (apply array_api enablement for sklearn >=1.3)
|
|
153
|
+
return _enable_array_api(class_or_str)
|