scikit-learn-intelex 2025.4.0__py39-none-win_amd64.whl → 2025.5.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.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/__main__.py +1 -1
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +1 -1
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +83 -0
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +855 -0
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +217 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py → scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +99 -91
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp39-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +6 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +6 -38
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +12 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +2 -6
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +3 -7
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +41 -153
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +13 -15
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +7 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +22 -57
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +3 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +8 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +30 -7
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +6 -16
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +4 -7
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +3 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +4 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +8 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +82 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/__init__.py +125 -83
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/_config.py +27 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/_device_offload.py +79 -83
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +21 -17
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +44 -39
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +35 -42
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +83 -74
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +57 -24
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/common/_backend.py +233 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +27 -12
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +27 -19
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +35 -32
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +6 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +179 -78
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +39 -25
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +28 -16
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +130 -93
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +76 -57
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +63 -37
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +96 -68
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +156 -119
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +5 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +21 -18
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/svm.py +80 -32
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +10 -9
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +10 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +8 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +5 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +10 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +1 -13
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +3 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +16 -1
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +147 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +3 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/validation.py +47 -16
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/__init__.py +3 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/_config.py +48 -6
- scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +143 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/_utils.py +28 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +13 -20
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +34 -40
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +6 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +2 -6
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +42 -60
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +7 -17
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +106 -362
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +6 -6
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +41 -126
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +42 -85
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +48 -39
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +34 -71
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +14 -18
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +60 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +2 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +1 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +1 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +7 -54
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +3 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +31 -73
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +30 -70
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +5 -13
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +3 -13
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +48 -62
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +10 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +8 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +13 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +10 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +7 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +13 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +9 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +7 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +25 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +6 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +12 -5
- {scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb → scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors}/__init__.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +27 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +12 -25
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +35 -128
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +9 -21
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +33 -126
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +9 -21
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +26 -11
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +16 -23
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +8 -22
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/METADATA +2 -2
- scikit_learn_intelex-2025.5.0.dist-info/RECORD +257 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_base.py +0 -38
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_policy.py +0 -55
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +0 -30
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +0 -76
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/__init__.py +0 -49
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -126
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -19
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -25
- scikit_learn_intelex-2025.4.0.dist-info/RECORD +0 -259
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/top_level.txt +0 -0
|
@@ -19,19 +19,25 @@ import pytest
|
|
|
19
19
|
import scipy.sparse as sp
|
|
20
20
|
from numpy.testing import assert_allclose
|
|
21
21
|
|
|
22
|
-
from onedal import
|
|
22
|
+
from onedal import _default_backend, _dpc_backend
|
|
23
|
+
from onedal._device_offload import supports_queue
|
|
23
24
|
from onedal.datatypes import from_table, to_table
|
|
24
25
|
from onedal.utils._dpep_helpers import dpctl_available
|
|
25
26
|
|
|
27
|
+
backend = _dpc_backend or _default_backend
|
|
28
|
+
|
|
26
29
|
if dpctl_available:
|
|
27
30
|
from onedal.datatypes.tests.common import (
|
|
28
31
|
_assert_sua_iface_fields,
|
|
29
32
|
_assert_tensor_attr,
|
|
30
33
|
)
|
|
31
34
|
|
|
35
|
+
from daal4py.sklearn._utils import get_dtype
|
|
36
|
+
from onedal.cluster.dbscan import DBSCAN
|
|
32
37
|
from onedal.primitives import linear_kernel
|
|
33
38
|
from onedal.tests.utils._dataframes_support import (
|
|
34
39
|
_convert_to_dataframe,
|
|
40
|
+
array_api_modules,
|
|
35
41
|
get_dataframes_and_queues,
|
|
36
42
|
)
|
|
37
43
|
from onedal.tests.utils._device_selection import get_queues
|
|
@@ -53,42 +59,61 @@ unsupported_data_shapes = [
|
|
|
53
59
|
ORDER_DICT = {"F": np.asfortranarray, "C": np.ascontiguousarray}
|
|
54
60
|
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
62
|
+
class DummyEstimatorWithTableConversions:
|
|
63
|
+
|
|
64
|
+
@supports_queue
|
|
65
|
+
def fit(self, X, y=None, queue=None):
|
|
66
|
+
if not backend.is_dpc:
|
|
67
|
+
raise RuntimeError("Table conversions should be done with DPC backend.")
|
|
68
|
+
|
|
69
|
+
sua_iface, xp, _ = _get_sycl_namespace(X)
|
|
70
|
+
dbscan = DBSCAN()
|
|
71
|
+
types = [xp.float32, xp.float64]
|
|
72
|
+
if get_dtype(X) not in types:
|
|
73
|
+
X = xp.astype(X, dtype=xp.float64)
|
|
74
|
+
dtype = get_dtype(X)
|
|
75
|
+
params = dbscan._get_onedal_params(dtype)
|
|
76
|
+
X_table = to_table(X)
|
|
77
|
+
# TODO:
|
|
78
|
+
# check other candidates for the dummy base oneDAL func.
|
|
79
|
+
# oneDAL backend func is needed to check result table checks.
|
|
80
|
+
result = dbscan.compute(params, X_table, to_table(None))
|
|
81
|
+
result_responses_table = result.responses
|
|
82
|
+
result_responses_df = from_table(
|
|
83
|
+
result_responses_table,
|
|
84
|
+
sua_iface=sua_iface,
|
|
85
|
+
sycl_queue=X.sycl_queue,
|
|
86
|
+
xp=xp,
|
|
87
|
+
)
|
|
88
|
+
return X_table, result_responses_table, result_responses_df
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class _OnlyDLTensor:
|
|
92
|
+
"""This is a temporary class to force use of the '__dlpack__' logic branch
|
|
93
|
+
in `to_table` as `__dlpack__` conversion is lower priority by design.
|
|
94
|
+
dpctl data with CPU SyclQueues are shown as on KDLOneAPI devices, which serve
|
|
95
|
+
to test the SYCL device support in `__dlpack__` logic without GPU hardware.
|
|
96
|
+
This takes inspiration from sklearn's `_NotAnArray`."""
|
|
97
|
+
|
|
98
|
+
def __init__(self, data):
|
|
99
|
+
self.data = data
|
|
100
|
+
|
|
101
|
+
def __dlpack__(self):
|
|
102
|
+
return self.data.__dlpack__()
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _to_table_supported(array):
|
|
106
|
+
"""This function provides a quick and easy way to determine characteristics
|
|
107
|
+
or behaviors of the to_table function. For example, returned errors are
|
|
108
|
+
tested and are firstly dependent if they are of a proper array type. This is
|
|
109
|
+
pertinent for circumstances such as direct use of other dataframe types (e.g.
|
|
110
|
+
Pandas)."""
|
|
111
|
+
return (
|
|
112
|
+
isinstance(array, np.ndarray)
|
|
113
|
+
or hasattr(array, "__sycl_usm_ndarray_interface__")
|
|
114
|
+
or hasattr(array, "__dlpack__")
|
|
115
|
+
or sp.issparse(array)
|
|
116
|
+
)
|
|
92
117
|
|
|
93
118
|
|
|
94
119
|
def _test_input_format_c_contiguous_numpy(queue, dtype):
|
|
@@ -221,7 +246,7 @@ def test_conversion_to_table(dtype):
|
|
|
221
246
|
reason="dpctl is required for checks.",
|
|
222
247
|
)
|
|
223
248
|
@pytest.mark.skipif(
|
|
224
|
-
not
|
|
249
|
+
not backend.is_dpc,
|
|
225
250
|
reason="__sycl_usm_array_interface__ support requires DPC backend.",
|
|
226
251
|
)
|
|
227
252
|
@pytest.mark.parametrize(
|
|
@@ -229,7 +254,7 @@ def test_conversion_to_table(dtype):
|
|
|
229
254
|
)
|
|
230
255
|
@pytest.mark.parametrize("order", ["C", "F"])
|
|
231
256
|
@pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64])
|
|
232
|
-
def
|
|
257
|
+
def test_input_zero_copy_sycl_usm(dataframe, queue, order, dtype):
|
|
233
258
|
"""Checking that values representing USM allocations `__sycl_usm_array_interface__`
|
|
234
259
|
are preserved during conversion to onedal table.
|
|
235
260
|
"""
|
|
@@ -257,7 +282,7 @@ def test_input_sua_iface_zero_copy(dataframe, queue, order, dtype):
|
|
|
257
282
|
reason="dpctl is required for checks.",
|
|
258
283
|
)
|
|
259
284
|
@pytest.mark.skipif(
|
|
260
|
-
not
|
|
285
|
+
not backend.is_dpc,
|
|
261
286
|
reason="__sycl_usm_array_interface__ support requires DPC backend.",
|
|
262
287
|
)
|
|
263
288
|
@pytest.mark.parametrize(
|
|
@@ -266,7 +291,7 @@ def test_input_sua_iface_zero_copy(dataframe, queue, order, dtype):
|
|
|
266
291
|
@pytest.mark.parametrize("order", ["F", "C"])
|
|
267
292
|
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
268
293
|
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
269
|
-
def
|
|
294
|
+
def test_table_conversions_sycl_usm(dataframe, queue, order, data_shape, dtype):
|
|
270
295
|
"""Checking that values representing USM allocations `__sycl_usm_array_interface__`
|
|
271
296
|
are preserved during conversion to onedal table and from onedal table to
|
|
272
297
|
sycl usm array dataformat.
|
|
@@ -313,32 +338,25 @@ def test_table_conversions(dataframe, queue, order, data_shape, dtype):
|
|
|
313
338
|
)
|
|
314
339
|
|
|
315
340
|
|
|
316
|
-
@pytest.mark.skipif(
|
|
317
|
-
not _is_dpc_backend,
|
|
318
|
-
reason="__sycl_usm_array_interface__ support requires DPC backend.",
|
|
319
|
-
)
|
|
320
341
|
@pytest.mark.parametrize(
|
|
321
|
-
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp", "cpu,gpu")
|
|
342
|
+
"dataframe,queue", get_dataframes_and_queues("numpy,dpctl,dpnp,array_api", "cpu,gpu")
|
|
322
343
|
)
|
|
323
344
|
@pytest.mark.parametrize("data_shape", unsupported_data_shapes)
|
|
324
|
-
def
|
|
345
|
+
def test_interop_invalid_shape(dataframe, queue, data_shape):
|
|
325
346
|
X = np.zeros(data_shape)
|
|
326
347
|
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
327
|
-
sua_iface, _, _ = _get_sycl_namespace(X)
|
|
328
348
|
|
|
329
|
-
expected_err_msg = (
|
|
330
|
-
|
|
331
|
-
|
|
349
|
+
expected_err_msg = r"Input array has wrong dimensionality \(must be 2d\)."
|
|
350
|
+
if dataframe in "dpctl,dpnp":
|
|
351
|
+
expected_err_msg = (
|
|
352
|
+
"Unable to convert from SUA interface: only 1D & 2D tensors are allowed"
|
|
353
|
+
)
|
|
332
354
|
with pytest.raises(ValueError, match=expected_err_msg):
|
|
333
355
|
to_table(X)
|
|
334
356
|
|
|
335
357
|
|
|
336
|
-
@pytest.mark.skipif(
|
|
337
|
-
not _is_dpc_backend,
|
|
338
|
-
reason="__sycl_usm_array_interface__ support requires DPC backend.",
|
|
339
|
-
)
|
|
340
358
|
@pytest.mark.parametrize(
|
|
341
|
-
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp", "cpu,gpu")
|
|
359
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp,array_api", "cpu,gpu")
|
|
342
360
|
)
|
|
343
361
|
@pytest.mark.parametrize(
|
|
344
362
|
"dtype",
|
|
@@ -348,17 +366,16 @@ def test_sua_iface_interop_invalid_shape(dataframe, queue, data_shape):
|
|
|
348
366
|
pytest.param(np.uint64, id=np.dtype(np.uint64).name),
|
|
349
367
|
],
|
|
350
368
|
)
|
|
351
|
-
def
|
|
369
|
+
def test_interop_unsupported_dtypes(dataframe, queue, dtype):
|
|
352
370
|
# sua iface interobility supported only for oneDAL supported dtypes
|
|
353
371
|
# for input data: int32, int64, float32, float64.
|
|
354
372
|
# Checking some common dtypes supported by dpctl, dpnp for exception
|
|
355
373
|
# raise.
|
|
356
374
|
X = np.zeros((10, 20), dtype=dtype)
|
|
357
375
|
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
358
|
-
|
|
376
|
+
expected_err_msg = r"Found unsupported (array|tensor) type"
|
|
359
377
|
|
|
360
|
-
|
|
361
|
-
with pytest.raises(ValueError, match=expected_err_msg):
|
|
378
|
+
with pytest.raises(TypeError, match=expected_err_msg):
|
|
362
379
|
to_table(X)
|
|
363
380
|
|
|
364
381
|
|
|
@@ -366,27 +383,25 @@ def test_sua_iface_interop_unsupported_dtypes(dataframe, queue, dtype):
|
|
|
366
383
|
"dataframe,queue", get_dataframes_and_queues("numpy,dpctl,dpnp", "cpu,gpu")
|
|
367
384
|
)
|
|
368
385
|
def test_to_table_non_contiguous_input(dataframe, queue):
|
|
369
|
-
if dataframe in "dpnp,dpctl" and not
|
|
386
|
+
if dataframe in "dpnp,dpctl" and not backend.is_dpc:
|
|
370
387
|
pytest.skip("__sycl_usm_array_interface__ support requires DPC backend.")
|
|
371
388
|
X, _ = np.mgrid[:10, :10]
|
|
372
389
|
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
373
390
|
X = X[:, :3]
|
|
374
|
-
sua_iface, _, _ = _get_sycl_namespace(X)
|
|
375
|
-
# X expected to be non-contiguous.
|
|
376
391
|
assert not X.flags.c_contiguous and not X.flags.f_contiguous
|
|
377
392
|
X_t = to_table(X)
|
|
378
393
|
assert X_t and X_t.shape == (10, 3) and X_t.has_data
|
|
379
394
|
|
|
380
395
|
|
|
381
396
|
@pytest.mark.skipif(
|
|
382
|
-
|
|
397
|
+
backend.is_dpc,
|
|
383
398
|
reason="Required check should be done if no DPC backend.",
|
|
384
399
|
)
|
|
385
400
|
@pytest.mark.parametrize(
|
|
386
401
|
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp", "cpu,gpu")
|
|
387
402
|
)
|
|
388
403
|
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
389
|
-
def
|
|
404
|
+
def test_interop_if_no_dpc_backend_sycl_usm(dataframe, queue, dtype):
|
|
390
405
|
X = np.zeros((10, 20), dtype=dtype)
|
|
391
406
|
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
392
407
|
sua_iface, _, _ = _get_sycl_namespace(X)
|
|
@@ -396,12 +411,7 @@ def test_sua_iface_interop_if_no_dpc_backend(dataframe, queue, dtype):
|
|
|
396
411
|
to_table(X)
|
|
397
412
|
|
|
398
413
|
|
|
399
|
-
|
|
400
|
-
not _is_dpc_backend, reason="Requires DPC backend for dtype conversion"
|
|
401
|
-
)
|
|
402
|
-
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
403
|
-
@pytest.mark.parametrize("sparse", [True, False])
|
|
404
|
-
def test_low_precision_gpu_conversion(dtype, sparse):
|
|
414
|
+
def _test_low_precision_gpu_conversion(dtype, sparse, dataframe):
|
|
405
415
|
# Use a dummy queue as fp32 hardware is not in public testing
|
|
406
416
|
|
|
407
417
|
class DummySyclQueue:
|
|
@@ -418,7 +428,9 @@ def test_low_precision_gpu_conversion(dtype, sparse):
|
|
|
418
428
|
if sparse:
|
|
419
429
|
X = sp.random(100, 100, format="csr", dtype=dtype)
|
|
420
430
|
else:
|
|
421
|
-
X =
|
|
431
|
+
X = _convert_to_dataframe(
|
|
432
|
+
np.random.rand(100, 100).astype(dtype), target_df=dataframe
|
|
433
|
+
)
|
|
422
434
|
|
|
423
435
|
if dtype == np.float64:
|
|
424
436
|
with pytest.warns(
|
|
@@ -434,21 +446,51 @@ def test_low_precision_gpu_conversion(dtype, sparse):
|
|
|
434
446
|
assert_allclose(X, from_table(X_table))
|
|
435
447
|
|
|
436
448
|
|
|
449
|
+
@pytest.mark.skipif(
|
|
450
|
+
not backend.is_dpc, reason="Requires DPC backend for dtype conversion"
|
|
451
|
+
)
|
|
452
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
453
|
+
@pytest.mark.parametrize("sparse", [True, False])
|
|
454
|
+
def test_low_precision_gpu_conversion_numpy(dtype, sparse):
|
|
455
|
+
_test_low_precision_gpu_conversion(dtype, sparse, "numpy")
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
@pytest.mark.skipif(
|
|
459
|
+
not backend.is_dpc or "array_api" not in array_api_modules,
|
|
460
|
+
reason="Requires DPC backend and array_api_strict for the test",
|
|
461
|
+
)
|
|
462
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
463
|
+
def test_low_precision_gpu_conversion_array_api(dtype):
|
|
464
|
+
_test_low_precision_gpu_conversion(dtype, False, "array_api")
|
|
465
|
+
|
|
466
|
+
|
|
437
467
|
@pytest.mark.parametrize("X", [None, 5, "test", True, [], np.pi, lambda: None])
|
|
438
468
|
@pytest.mark.parametrize("queue", get_queues())
|
|
439
469
|
def test_non_array(X, queue):
|
|
440
470
|
# Verify that to and from table doesn't raise errors
|
|
441
471
|
# no guarantee is made about type or content
|
|
472
|
+
error = ValueError
|
|
442
473
|
err_str = ""
|
|
443
474
|
|
|
475
|
+
xp = X.__array_namespace__() if hasattr(X, "__array_namespace__") else np
|
|
476
|
+
types = [xp.float64, xp.float32, xp.int64, xp.int32]
|
|
477
|
+
|
|
444
478
|
if np.isscalar(X):
|
|
445
|
-
if np.atleast_2d(X).dtype not in
|
|
446
|
-
|
|
447
|
-
|
|
479
|
+
if np.atleast_2d(X).dtype not in types:
|
|
480
|
+
error = TypeError
|
|
481
|
+
err_str = r"Found unsupported array type"
|
|
482
|
+
elif _to_table_supported(X):
|
|
483
|
+
if X.dtype not in types:
|
|
484
|
+
error = TypeError
|
|
485
|
+
err_str = r"Found unsupported (array|tensor) type"
|
|
486
|
+
if 0 in X.shape:
|
|
487
|
+
# not set to a consistent string between the various conversions
|
|
488
|
+
err_str = r".*"
|
|
489
|
+
elif X is not None:
|
|
448
490
|
err_str = r"\[convert_to_table\] Not available input format for convert Python object to onedal table."
|
|
449
491
|
|
|
450
492
|
if err_str:
|
|
451
|
-
with pytest.raises(
|
|
493
|
+
with pytest.raises(error, match=err_str):
|
|
452
494
|
to_table(X)
|
|
453
495
|
else:
|
|
454
496
|
X_table = to_table(X, queue=queue)
|
|
@@ -456,10 +498,10 @@ def test_non_array(X, queue):
|
|
|
456
498
|
|
|
457
499
|
|
|
458
500
|
@pytest.mark.skipif(
|
|
459
|
-
not
|
|
501
|
+
not backend.is_dpc, reason="Requires DPC backend for dtype conversion"
|
|
460
502
|
)
|
|
461
503
|
@pytest.mark.parametrize("X", [None, 5, "test", True, [], np.pi, lambda: None])
|
|
462
|
-
def
|
|
504
|
+
def test_low_precision_non_array_numpy(X):
|
|
463
505
|
# Use a dummy queue as fp32 hardware is not in public testing
|
|
464
506
|
|
|
465
507
|
class DummySyclQueue:
|
|
@@ -473,3 +515,62 @@ def test_low_precision_non_array(X):
|
|
|
473
515
|
|
|
474
516
|
queue = DummySyclQueue()
|
|
475
517
|
test_non_array(X, queue)
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
@pytest.mark.parametrize("X", [5, True, np.pi])
|
|
521
|
+
def test_basic_ndarray_types_numpy(X):
|
|
522
|
+
# Verify that the various supported basic types can go in and out of tables
|
|
523
|
+
test_non_array(np.asarray(X), None)
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
@pytest.mark.parametrize(
|
|
527
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,numpy", "cpu,gpu")
|
|
528
|
+
)
|
|
529
|
+
@pytest.mark.parametrize("can_copy", [True, False])
|
|
530
|
+
def test_to_table_non_contiguous_input_dlpack(dataframe, queue, can_copy):
|
|
531
|
+
X, _ = np.mgrid[:10, :10]
|
|
532
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, dataframe=dataframe)
|
|
533
|
+
if not hasattr(X_df, "__dlpack__"):
|
|
534
|
+
pytest.skip("underlying array doesn't support dlpack")
|
|
535
|
+
|
|
536
|
+
X_tens = _OnlyDLTensor(X_df[:, :3])
|
|
537
|
+
|
|
538
|
+
# give the _OnlyDLTensor the ability to copy
|
|
539
|
+
if can_copy:
|
|
540
|
+
X_tens.copy = lambda: _OnlyDLTensor(
|
|
541
|
+
X_tens.data.__array_namespace__().copy(X_tens.data)
|
|
542
|
+
if hasattr(X_tens.data, "__array_namespace__")
|
|
543
|
+
else X_tens.data.copy()
|
|
544
|
+
)
|
|
545
|
+
X_table = to_table(X_tens)
|
|
546
|
+
X_out = from_table(X_table)
|
|
547
|
+
assert_allclose(X[:, :3], X_out)
|
|
548
|
+
else:
|
|
549
|
+
with pytest.raises(RuntimeError, match="Wrong strides"):
|
|
550
|
+
to_table(X_tens)
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
@pytest.mark.parametrize(
|
|
554
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,numpy", "cpu,gpu")
|
|
555
|
+
)
|
|
556
|
+
@pytest.mark.parametrize("order", ["F", "C"])
|
|
557
|
+
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
558
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
559
|
+
def test_table_conversions_dlpack(dataframe, queue, order, data_shape, dtype):
|
|
560
|
+
"""Test if __dlpack__ data can be properly consumed when only __dlpack__ attribute is exposed.
|
|
561
|
+
This tests kDLOneAPI devices as well as kDLCPU devices
|
|
562
|
+
"""
|
|
563
|
+
rng = np.random.RandomState(0)
|
|
564
|
+
X = np.array(5 * rng.random_sample(data_shape), dtype=dtype)
|
|
565
|
+
|
|
566
|
+
X = ORDER_DICT[order](X)
|
|
567
|
+
|
|
568
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
569
|
+
X_tens = _OnlyDLTensor(X_df)
|
|
570
|
+
|
|
571
|
+
X_table = to_table(X_tens)
|
|
572
|
+
X_out = from_table(X_table)
|
|
573
|
+
print(X_table.shape, X_tens.data.shape)
|
|
574
|
+
# oneDAL table construction sets 1d arrays to 2d arrays with 1 col
|
|
575
|
+
# this is counter the numpy strategy, and requires numpy's squeeze
|
|
576
|
+
assert_allclose(np.squeeze(X), np.squeeze(X_out))
|
|
@@ -16,10 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
|
|
19
|
-
from
|
|
19
|
+
from onedal._device_offload import supports_queue
|
|
20
|
+
from onedal.common._backend import bind_default_backend
|
|
21
|
+
from onedal.utils import _sycl_queue_manager as QM
|
|
20
22
|
|
|
23
|
+
from .._config import _get_config
|
|
21
24
|
from ..datatypes import from_table, to_table
|
|
22
|
-
from ..utils import
|
|
25
|
+
from ..utils._array_api import _get_sycl_namespace
|
|
26
|
+
from ..utils.validation import _check_array
|
|
23
27
|
from .pca import BasePCA
|
|
24
28
|
|
|
25
29
|
|
|
@@ -96,14 +100,24 @@ class IncrementalPCA(BasePCA):
|
|
|
96
100
|
self.method = method
|
|
97
101
|
self.is_deterministic = is_deterministic
|
|
98
102
|
self.whiten = whiten
|
|
103
|
+
self._queue = None
|
|
99
104
|
self._reset()
|
|
100
105
|
|
|
106
|
+
@bind_default_backend("decomposition.dim_reduction")
|
|
107
|
+
def finalize_train(self, params, partial_result): ...
|
|
108
|
+
|
|
109
|
+
@bind_default_backend("decomposition.dim_reduction")
|
|
110
|
+
def partial_train(self, params, partial_result, X_table): ...
|
|
111
|
+
|
|
112
|
+
@bind_default_backend("decomposition.dim_reduction")
|
|
113
|
+
def partial_train_result(self): ...
|
|
114
|
+
|
|
101
115
|
def _reset(self):
|
|
102
116
|
self._need_to_finalize = False
|
|
103
|
-
|
|
117
|
+
self._queue = None
|
|
118
|
+
self._partial_result = self.partial_train_result()
|
|
104
119
|
if hasattr(self, "components_"):
|
|
105
120
|
del self.components_
|
|
106
|
-
self._partial_result = module.partial_train_result()
|
|
107
121
|
|
|
108
122
|
def __getstate__(self):
|
|
109
123
|
# Since finalize_fit can't be dispatched without directly provided queue
|
|
@@ -113,10 +127,10 @@ class IncrementalPCA(BasePCA):
|
|
|
113
127
|
self.finalize_fit()
|
|
114
128
|
data = self.__dict__.copy()
|
|
115
129
|
data.pop("_queue", None)
|
|
116
|
-
|
|
117
130
|
return data
|
|
118
131
|
|
|
119
|
-
|
|
132
|
+
@supports_queue
|
|
133
|
+
def partial_fit(self, X, queue=None):
|
|
120
134
|
"""Incremental fit with X. All of X is processed as a single batch.
|
|
121
135
|
|
|
122
136
|
Parameters
|
|
@@ -133,9 +147,17 @@ class IncrementalPCA(BasePCA):
|
|
|
133
147
|
self : object
|
|
134
148
|
Returns the instance itself.
|
|
135
149
|
"""
|
|
136
|
-
X = _check_array(X)
|
|
137
|
-
n_samples, n_features = X.shape
|
|
138
150
|
|
|
151
|
+
use_raw_input = _get_config().get("use_raw_input", False) is True
|
|
152
|
+
sua_iface, _, _ = _get_sycl_namespace(X)
|
|
153
|
+
|
|
154
|
+
# All data should use the same sycl queue
|
|
155
|
+
if use_raw_input and sua_iface:
|
|
156
|
+
queue = X.sycl_queue
|
|
157
|
+
if not use_raw_input:
|
|
158
|
+
X = _check_array(X, dtype=[np.float64, np.float32], ensure_2d=True)
|
|
159
|
+
|
|
160
|
+
n_samples, n_features = X.shape
|
|
139
161
|
first_pass = not hasattr(self, "components_")
|
|
140
162
|
if first_pass:
|
|
141
163
|
self.components_ = None
|
|
@@ -154,26 +176,20 @@ class IncrementalPCA(BasePCA):
|
|
|
154
176
|
|
|
155
177
|
self._queue = queue
|
|
156
178
|
|
|
157
|
-
policy = self._get_policy(queue, X)
|
|
158
179
|
X_table = to_table(X, queue=queue)
|
|
159
180
|
|
|
160
181
|
if not hasattr(self, "_dtype"):
|
|
161
182
|
self._dtype = X_table.dtype
|
|
162
183
|
self._params = self._get_onedal_params(X_table)
|
|
163
184
|
|
|
164
|
-
self._partial_result = self.
|
|
165
|
-
|
|
166
|
-
"dim_reduction",
|
|
167
|
-
"partial_train",
|
|
168
|
-
policy,
|
|
169
|
-
self._params,
|
|
170
|
-
self._partial_result,
|
|
171
|
-
X_table,
|
|
185
|
+
self._partial_result = self.partial_train(
|
|
186
|
+
self._params, self._partial_result, X_table
|
|
172
187
|
)
|
|
173
188
|
self._need_to_finalize = True
|
|
189
|
+
self._queue = queue
|
|
174
190
|
return self
|
|
175
191
|
|
|
176
|
-
def finalize_fit(self
|
|
192
|
+
def finalize_fit(self):
|
|
177
193
|
"""
|
|
178
194
|
Finalizes principal components computation and obtains resulting
|
|
179
195
|
attributes from the current `_partial_result`.
|
|
@@ -189,12 +205,8 @@ class IncrementalPCA(BasePCA):
|
|
|
189
205
|
Returns the instance itself.
|
|
190
206
|
"""
|
|
191
207
|
if self._need_to_finalize:
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
policy = self._get_policy(queue)
|
|
195
|
-
else:
|
|
196
|
-
policy = self._get_policy(self._queue)
|
|
197
|
-
result = module.finalize_train(policy, self._params, self._partial_result)
|
|
208
|
+
with QM.manage_global_queue(self._queue):
|
|
209
|
+
result = self.finalize_train(self._params, self._partial_result)
|
|
198
210
|
self.mean_ = from_table(result.means).ravel()
|
|
199
211
|
self.var_ = from_table(result.variances).ravel()
|
|
200
212
|
self.components_ = from_table(result.eigenvectors)
|
|
@@ -210,5 +222,7 @@ class IncrementalPCA(BasePCA):
|
|
|
210
222
|
self.noise_variance_ = self._compute_noise_variance(
|
|
211
223
|
self.n_components_, min(self.n_samples_seen_, self.n_features_in_)
|
|
212
224
|
)
|
|
213
|
-
|
|
225
|
+
self._need_to_finalize = False
|
|
226
|
+
self._queue = None
|
|
227
|
+
|
|
214
228
|
return self
|
|
@@ -21,11 +21,15 @@ import numpy as np
|
|
|
21
21
|
from sklearn.decomposition._pca import _infer_dimension
|
|
22
22
|
from sklearn.utils.extmath import stable_cumsum
|
|
23
23
|
|
|
24
|
-
from
|
|
24
|
+
from onedal._device_offload import supports_queue
|
|
25
|
+
from onedal.common._backend import bind_default_backend
|
|
26
|
+
|
|
27
|
+
from .._config import _get_config
|
|
25
28
|
from ..datatypes import from_table, to_table
|
|
29
|
+
from ..utils._array_api import _get_sycl_namespace
|
|
26
30
|
|
|
27
31
|
|
|
28
|
-
class BasePCA(
|
|
32
|
+
class BasePCA(metaclass=ABCMeta):
|
|
29
33
|
"""
|
|
30
34
|
Base class for PCA oneDAL implementation.
|
|
31
35
|
"""
|
|
@@ -42,6 +46,16 @@ class BasePCA(BaseEstimator, metaclass=ABCMeta):
|
|
|
42
46
|
self.is_deterministic = is_deterministic
|
|
43
47
|
self.whiten = whiten
|
|
44
48
|
|
|
49
|
+
# provides direct access to the backend model constructor
|
|
50
|
+
@bind_default_backend("decomposition.dim_reduction")
|
|
51
|
+
def model(self): ...
|
|
52
|
+
|
|
53
|
+
@bind_default_backend("decomposition.dim_reduction")
|
|
54
|
+
def train(self, params, X): ...
|
|
55
|
+
|
|
56
|
+
@bind_default_backend("decomposition.dim_reduction")
|
|
57
|
+
def infer(self, params, X, model): ...
|
|
58
|
+
|
|
45
59
|
def _get_onedal_params(self, data, stage=None):
|
|
46
60
|
if stage is None:
|
|
47
61
|
n_components = self._resolve_n_components_for_training(data.shape)
|
|
@@ -119,7 +133,7 @@ class BasePCA(BaseEstimator, metaclass=ABCMeta):
|
|
|
119
133
|
return 0.0
|
|
120
134
|
|
|
121
135
|
def _create_model(self):
|
|
122
|
-
m = self.
|
|
136
|
+
m = self.model()
|
|
123
137
|
m.eigenvectors = to_table(self.components_)
|
|
124
138
|
m.means = to_table(self.mean_)
|
|
125
139
|
if self.whiten:
|
|
@@ -127,26 +141,30 @@ class BasePCA(BaseEstimator, metaclass=ABCMeta):
|
|
|
127
141
|
self._onedal_model = m
|
|
128
142
|
return m
|
|
129
143
|
|
|
144
|
+
@supports_queue
|
|
130
145
|
def predict(self, X, queue=None):
|
|
131
|
-
policy = self._get_policy(queue, X)
|
|
132
146
|
model = self._create_model()
|
|
133
147
|
X_table = to_table(X, queue=queue)
|
|
134
148
|
params = self._get_onedal_params(X_table, stage="predict")
|
|
135
|
-
|
|
136
|
-
result = self._get_backend(
|
|
137
|
-
"decomposition", "dim_reduction", "infer", policy, params, model, X_table
|
|
138
|
-
)
|
|
149
|
+
result = self.infer(params, model, X_table)
|
|
139
150
|
return from_table(result.transformed_data)
|
|
140
151
|
|
|
152
|
+
transform = predict
|
|
153
|
+
|
|
141
154
|
|
|
142
155
|
class PCA(BasePCA):
|
|
143
156
|
|
|
157
|
+
@supports_queue
|
|
144
158
|
def fit(self, X, y=None, queue=None):
|
|
159
|
+
use_raw_input = _get_config().get("use_raw_input", False) is True
|
|
160
|
+
sua_iface, xp, _ = _get_sycl_namespace(X)
|
|
161
|
+
if use_raw_input and sua_iface:
|
|
162
|
+
queue = X.sycl_queue
|
|
163
|
+
|
|
145
164
|
n_samples, n_features = X.shape
|
|
146
165
|
n_sf_min = min(n_samples, n_features)
|
|
147
166
|
self._validate_n_components(self.n_components, n_samples, n_features)
|
|
148
167
|
|
|
149
|
-
policy = self._get_policy(queue, X)
|
|
150
168
|
# TODO: investigate why np.ndarray with OWNDATA=FALSE flag
|
|
151
169
|
# fails to be converted to oneDAL table
|
|
152
170
|
if isinstance(X, np.ndarray) and not X.flags["OWNDATA"]:
|
|
@@ -154,9 +172,7 @@ class PCA(BasePCA):
|
|
|
154
172
|
|
|
155
173
|
X = to_table(X, queue=queue)
|
|
156
174
|
params = self._get_onedal_params(X)
|
|
157
|
-
result = self.
|
|
158
|
-
"decomposition", "dim_reduction", "train", policy, params, X
|
|
159
|
-
)
|
|
175
|
+
result = self.train(params, X)
|
|
160
176
|
|
|
161
177
|
self.mean_ = from_table(result.means).ravel()
|
|
162
178
|
self.variances_ = from_table(result.variances)
|
|
@@ -169,10 +185,6 @@ class PCA(BasePCA):
|
|
|
169
185
|
self.n_samples_ = n_samples
|
|
170
186
|
self.n_features_ = n_features
|
|
171
187
|
|
|
172
|
-
U = None
|
|
173
|
-
S = self.singular_values_
|
|
174
|
-
Vt = self.components_
|
|
175
|
-
|
|
176
188
|
n_components = self._resolve_n_components_for_result(X.shape)
|
|
177
189
|
self.n_components_ = n_components
|
|
178
190
|
self.noise_variance_ = self._compute_noise_variance(n_components, n_sf_min)
|
|
@@ -40,7 +40,7 @@ def test_on_gold_data(queue, is_deterministic, whiten, num_blocks, dtype):
|
|
|
40
40
|
|
|
41
41
|
result = incpca.finalize_fit()
|
|
42
42
|
|
|
43
|
-
transformed_data = incpca.
|
|
43
|
+
transformed_data = incpca.transform(X, queue=queue)
|
|
44
44
|
|
|
45
45
|
expected_n_components_ = 2
|
|
46
46
|
expected_components_ = np.array([[0.83849224, 0.54491354], [-0.54491354, 0.83849224]])
|
|
@@ -128,7 +128,7 @@ def test_on_random_data(
|
|
|
128
128
|
|
|
129
129
|
incpca.finalize_fit()
|
|
130
130
|
|
|
131
|
-
transformed_data = incpca.
|
|
131
|
+
transformed_data = incpca.transform(X, queue=queue)
|
|
132
132
|
tol = 3e-3 if transformed_data.dtype == np.float32 else 2e-6
|
|
133
133
|
|
|
134
134
|
n_components = incpca.n_components_
|