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.

Files changed (269) hide show
  1. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/__main__.py +1 -1
  2. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
  3. {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
  4. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +83 -0
  5. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +855 -0
  6. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +217 -0
  7. 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
  8. {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
  9. {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
  10. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +1 -1
  11. {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
  12. {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
  13. {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
  14. {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
  15. {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
  16. {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
  17. {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
  18. {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
  19. {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
  20. {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
  21. {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
  22. {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
  23. {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
  24. {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
  25. {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
  26. {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
  27. {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
  28. {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
  29. {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
  30. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/__init__.py +125 -83
  31. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/_config.py +27 -2
  32. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/_device_offload.py +79 -83
  33. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
  34. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
  35. {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
  36. {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
  37. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +35 -42
  38. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +83 -74
  39. {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
  40. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/common/_backend.py +233 -0
  41. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +4 -4
  42. {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
  43. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +27 -19
  44. {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
  45. {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
  46. {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
  47. {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
  48. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +28 -16
  49. {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
  50. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +130 -93
  51. {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
  52. {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
  53. {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
  54. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +156 -119
  55. {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
  56. {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
  57. {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
  58. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/svm.py +80 -32
  59. {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
  60. {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
  61. {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
  62. {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
  63. {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
  64. {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
  65. {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
  66. {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
  67. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +147 -0
  68. {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
  69. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/validation.py +47 -16
  70. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/__init__.py +3 -2
  71. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
  72. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/_config.py +48 -6
  73. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +143 -0
  74. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/_utils.py +28 -2
  75. {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
  76. {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
  77. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +6 -8
  78. {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
  79. {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
  80. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +7 -17
  81. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +4 -4
  82. {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
  83. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +106 -362
  84. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
  85. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +1 -1
  86. {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
  87. {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
  88. {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
  89. {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
  90. {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
  91. {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
  92. {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
  93. {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
  94. {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
  95. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +1 -3
  96. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +1 -1
  97. {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
  98. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +7 -54
  99. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +3 -3
  100. {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
  101. {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
  102. {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
  103. {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
  104. {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
  105. {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
  106. {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
  107. {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
  108. {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
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +12 -25
  120. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +35 -128
  121. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +9 -21
  122. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +33 -126
  123. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +9 -21
  124. {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
  125. {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
  126. {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
  127. {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
  128. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +8 -22
  129. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/METADATA +2 -2
  130. scikit_learn_intelex-2025.5.0.dist-info/RECORD +257 -0
  131. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
  132. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
  133. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
  134. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_base.py +0 -38
  135. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_policy.py +0 -55
  136. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +0 -30
  137. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +0 -76
  138. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/__init__.py +0 -49
  139. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -126
  140. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -19
  141. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -25
  142. scikit_learn_intelex-2025.4.0.dist-info/RECORD +0 -259
  143. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
  144. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
  145. {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
  146. {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
  147. {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
  148. {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
  149. {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
  150. {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
  151. {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
  152. {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
  153. {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
  154. {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
  155. {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
  156. {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
  157. {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
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {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
  167. {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
  168. {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
  169. {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
  170. {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
  171. {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
  172. {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
  173. {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
  174. {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
  175. {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
  176. {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
  177. {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
  178. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
  179. {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
  180. {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
  181. {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
  182. {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
  183. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
  184. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
  185. {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
  186. {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
  187. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +0 -0
  188. {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
  189. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
  190. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {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
  197. {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
  198. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
  199. {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
  200. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
  201. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  208. {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
  209. {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
  210. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  211. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  212. {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
  213. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  214. {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
  215. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  222. {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
  223. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  224. {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
  225. {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
  226. {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
  227. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  228. {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
  229. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
  230. {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
  231. {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
  232. {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
  233. {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
  234. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {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
  253. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  264. {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
  265. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  266. {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
  267. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/LICENSE.txt +0 -0
  268. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/WHEEL +0 -0
  269. {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 _backend, _is_dpc_backend
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
- if _is_dpc_backend:
57
- from daal4py.sklearn._utils import get_dtype
58
- from onedal.cluster.dbscan import BaseDBSCAN
59
- from onedal.common._policy import _get_policy
60
-
61
- class DummyEstimatorWithTableConversions:
62
-
63
- def fit(self, X, y=None):
64
- sua_iface, xp, _ = _get_sycl_namespace(X)
65
- policy = _get_policy(X.sycl_queue, None)
66
- bs_DBSCAN = BaseDBSCAN()
67
- types = [xp.float32, xp.float64]
68
- if get_dtype(X) not in types:
69
- X = xp.astype(X, dtype=xp.float64)
70
- dtype = get_dtype(X)
71
- params = bs_DBSCAN._get_onedal_params(dtype)
72
- X_table = to_table(X)
73
- # TODO:
74
- # check other candidates for the dummy base oneDAL func.
75
- # oneDAL backend func is needed to check result table checks.
76
- result = _backend.dbscan.clustering.compute(
77
- policy, params, X_table, to_table(None)
78
- )
79
- result_responses_table = result.responses
80
- result_responses_df = from_table(
81
- result_responses_table,
82
- sua_iface=sua_iface,
83
- sycl_queue=X.sycl_queue,
84
- xp=xp,
85
- )
86
- return X_table, result_responses_table, result_responses_df
87
-
88
- else:
89
-
90
- class DummyEstimatorWithTableConversions:
91
- pass
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 _is_dpc_backend,
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 test_input_sua_iface_zero_copy(dataframe, queue, order, dtype):
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 _is_dpc_backend,
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 test_table_conversions(dataframe, queue, order, data_shape, dtype):
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 test_sua_iface_interop_invalid_shape(dataframe, queue, data_shape):
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
- "Unable to convert from SUA interface: only 1D & 2D tensors are allowed"
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 test_sua_iface_interop_unsupported_dtypes(dataframe, queue, dtype):
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
- sua_iface, _, _ = _get_sycl_namespace(X)
376
+ expected_err_msg = r"Found unsupported (array|tensor) type"
359
377
 
360
- expected_err_msg = "Unable to convert from SUA interface: unknown data type"
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 _is_dpc_backend:
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
- _is_dpc_backend,
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 test_sua_iface_interop_if_no_dpc_backend(dataframe, queue, dtype):
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
- @pytest.mark.skipif(
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 = np.random.rand(100, 100).astype(dtype)
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 [np.float64, np.float32, np.int64, np.int32]:
446
- err_str = "Found unsupported array type"
447
- elif not (X is None or isinstance(X, np.ndarray)):
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(ValueError, match=err_str):
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 _is_dpc_backend, reason="Requires DPC backend for dtype conversion"
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 test_low_precision_non_array(X):
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 daal4py.sklearn._utils import get_dtype
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 _check_array
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
- module = self._get_backend("decomposition", "dim_reduction")
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
- def partial_fit(self, X, queue):
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._get_backend(
165
- "decomposition",
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, queue=None):
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
- module = self._get_backend("decomposition", "dim_reduction")
193
- if queue is not None:
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
- self._need_to_finalize = False
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 ..common._base import BaseEstimator
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(BaseEstimator, metaclass=ABCMeta):
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._get_backend("decomposition", "dim_reduction", "model")
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._get_backend(
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.predict(X, queue=queue)
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.predict(X, queue=queue)
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_