scikit-learn-intelex 2024.1.0__py310-none-win_amd64.whl → 2025.1.0__py310-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of scikit-learn-intelex might be problematic. Click here for more details.

Files changed (277) hide show
  1. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp310-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition}/__init__.py +3 -3
  16. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
  18. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
  19. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -29
  23. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  27. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +4 -2
  34. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
  37. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  39. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
  44. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -42
  46. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
  47. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  56. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
  61. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_device_offload.py +222 -0
  62. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  65. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  66. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  67. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  68. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  69. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  70. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  71. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +564 -0
  72. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  73. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  74. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  75. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  76. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  77. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  78. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  79. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  80. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  81. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
  82. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
  83. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance}/__init__.py +3 -2
  84. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  85. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  86. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  88. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  89. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +154 -0
  90. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
  91. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +414 -0
  92. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  97. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
  98. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  99. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  100. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  101. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  102. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  103. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
  106. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  108. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  109. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
  110. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  112. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  113. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  114. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  116. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  117. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  118. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  119. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  120. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  121. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  122. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  123. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  124. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  125. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  126. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  127. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  128. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
  129. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +10 -7
  130. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
  131. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  132. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +27 -4
  133. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  134. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
  135. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
  136. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
  137. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
  138. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  139. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +19 -10
  140. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
  141. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
  142. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
  143. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  144. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  145. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
  146. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
  147. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
  148. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +25 -9
  149. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +241 -60
  150. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +250 -188
  151. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -21
  152. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -2
  153. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  154. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
  155. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
  156. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
  157. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
  158. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex}/linear_model/logistic_regression.py +194 -133
  159. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
  160. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
  161. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  162. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  163. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
  164. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +4 -0
  165. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
  166. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  167. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -0
  168. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -1
  169. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
  170. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +53 -6
  171. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +51 -155
  172. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +46 -149
  173. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +55 -100
  174. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +16 -18
  175. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
  176. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +138 -0
  177. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  178. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  179. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
  180. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  181. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model}/__init__.py +19 -19
  182. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
  183. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  184. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
  185. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  186. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  187. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  188. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  189. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  190. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  191. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  192. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  193. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  194. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  195. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  196. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
  197. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +11 -12
  198. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  199. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  200. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  201. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  202. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +3 -1
  203. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
  204. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  205. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  206. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  207. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  208. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  209. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  210. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +172 -78
  211. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +74 -70
  212. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +170 -77
  213. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +66 -66
  214. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
  215. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
  216. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  217. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
  218. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
  219. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  220. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  221. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
  222. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
  223. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
  224. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
  225. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  226. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  227. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
  228. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
  229. scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
  230. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
  231. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
  232. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  233. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  234. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
  235. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
  236. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -388
  237. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
  238. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -82
  239. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -28
  240. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -436
  241. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  242. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -376
  243. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -98
  244. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -376
  245. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_preview_logistic_regression.py +0 -59
  246. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
  247. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -225
  248. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -227
  249. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  250. scikit_learn_intelex-2024.1.0.dist-info/RECORD +0 -97
  251. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  252. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  253. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  254. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  255. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  256. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  257. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  258. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  259. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  260. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  261. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  262. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  263. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  264. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  265. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  266. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  267. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  268. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  269. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  270. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  271. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  272. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  273. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  274. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  275. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  276. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
  277. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
@@ -17,20 +17,25 @@
17
17
  import numbers
18
18
  from abc import ABC
19
19
 
20
- import numpy as np
21
20
  from scipy import sparse as sp
22
- from sklearn.cluster import DBSCAN as sklearn_DBSCAN
21
+ from sklearn.cluster import DBSCAN as _sklearn_DBSCAN
23
22
  from sklearn.utils.validation import _check_sample_weight
24
23
 
25
- from daal4py.sklearn._utils import control_n_jobs, run_with_n_jobs, sklearn_check_version
24
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
25
+ from daal4py.sklearn._utils import sklearn_check_version
26
26
  from onedal.cluster import DBSCAN as onedal_DBSCAN
27
27
 
28
- from .._device_offload import dispatch, wrap_output_data
28
+ from .._device_offload import dispatch
29
29
  from .._utils import PatchingConditionsChain
30
30
 
31
31
  if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
32
32
  from sklearn.utils import check_scalar
33
33
 
34
+ if sklearn_check_version("1.6"):
35
+ from sklearn.utils.validation import validate_data
36
+ else:
37
+ validate_data = _sklearn_DBSCAN._validate_data
38
+
34
39
 
35
40
  class BaseDBSCAN(ABC):
36
41
  def _onedal_dbscan(self, **onedal_params):
@@ -45,12 +50,12 @@ class BaseDBSCAN(ABC):
45
50
  self.n_features_in_ = self._onedal_estimator.n_features_in_
46
51
 
47
52
 
48
- @control_n_jobs
49
- class DBSCAN(sklearn_DBSCAN, BaseDBSCAN):
50
- __doc__ = sklearn_DBSCAN.__doc__
53
+ @control_n_jobs(decorated_methods=["fit"])
54
+ class DBSCAN(_sklearn_DBSCAN, BaseDBSCAN):
55
+ __doc__ = _sklearn_DBSCAN.__doc__
51
56
 
52
57
  if sklearn_check_version("1.2"):
53
- _parameter_constraints: dict = {**sklearn_DBSCAN._parameter_constraints}
58
+ _parameter_constraints: dict = {**_sklearn_DBSCAN._parameter_constraints}
54
59
 
55
60
  def __init__(
56
61
  self,
@@ -83,8 +88,10 @@ class DBSCAN(sklearn_DBSCAN, BaseDBSCAN):
83
88
  self.p = p
84
89
  self.n_jobs = n_jobs
85
90
 
86
- @run_with_n_jobs
87
91
  def _onedal_fit(self, X, y, sample_weight=None, queue=None):
92
+ if sklearn_check_version("1.0"):
93
+ X = validate_data(self, X, force_all_finite=False)
94
+
88
95
  onedal_params = {
89
96
  "eps": self.eps,
90
97
  "min_samples": self.min_samples,
@@ -178,7 +185,7 @@ class DBSCAN(sklearn_DBSCAN, BaseDBSCAN):
178
185
  "fit",
179
186
  {
180
187
  "onedal": self.__class__._onedal_fit,
181
- "sklearn": sklearn_DBSCAN.fit,
188
+ "sklearn": _sklearn_DBSCAN.fit,
182
189
  },
183
190
  X,
184
191
  y,
@@ -186,3 +193,5 @@ class DBSCAN(sklearn_DBSCAN, BaseDBSCAN):
186
193
  )
187
194
 
188
195
  return self
196
+
197
+ fit.__doc__ = _sklearn_DBSCAN.fit.__doc__
@@ -0,0 +1,395 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ import logging
18
+
19
+ from daal4py.sklearn._utils import daal_check_version
20
+
21
+ if daal_check_version((2023, "P", 200)):
22
+
23
+ import numbers
24
+ import warnings
25
+
26
+ import numpy as np
27
+ from scipy.sparse import issparse
28
+ from sklearn.cluster import KMeans as _sklearn_KMeans
29
+ from sklearn.utils._openmp_helpers import _openmp_effective_n_threads
30
+ from sklearn.utils.validation import (
31
+ _check_sample_weight,
32
+ _num_samples,
33
+ check_is_fitted,
34
+ )
35
+
36
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
37
+ from daal4py.sklearn._utils import sklearn_check_version
38
+ from onedal.cluster import KMeans as onedal_KMeans
39
+ from onedal.utils import _is_csr
40
+
41
+ from .._device_offload import dispatch, wrap_output_data
42
+ from .._utils import PatchingConditionsChain
43
+
44
+ if sklearn_check_version("1.6"):
45
+ from sklearn.utils.validation import validate_data
46
+ else:
47
+ validate_data = _sklearn_KMeans._validate_data
48
+
49
+ @control_n_jobs(decorated_methods=["fit", "fit_transform", "predict", "score"])
50
+ class KMeans(_sklearn_KMeans):
51
+ __doc__ = _sklearn_KMeans.__doc__
52
+
53
+ if sklearn_check_version("1.2"):
54
+ _parameter_constraints: dict = {**_sklearn_KMeans._parameter_constraints}
55
+
56
+ def __init__(
57
+ self,
58
+ n_clusters=8,
59
+ *,
60
+ init="k-means++",
61
+ n_init=(
62
+ "auto"
63
+ if sklearn_check_version("1.4")
64
+ else "warn" if sklearn_check_version("1.2") else 10
65
+ ),
66
+ max_iter=300,
67
+ tol=1e-4,
68
+ verbose=0,
69
+ random_state=None,
70
+ copy_x=True,
71
+ algorithm="lloyd" if sklearn_check_version("1.1") else "auto",
72
+ ):
73
+ super().__init__(
74
+ n_clusters=n_clusters,
75
+ init=init,
76
+ max_iter=max_iter,
77
+ tol=tol,
78
+ n_init=n_init,
79
+ verbose=verbose,
80
+ random_state=random_state,
81
+ copy_x=copy_x,
82
+ algorithm=algorithm,
83
+ )
84
+
85
+ def _initialize_onedal_estimator(self):
86
+ onedal_params = {
87
+ "n_clusters": self.n_clusters,
88
+ "init": self.init,
89
+ "max_iter": self.max_iter,
90
+ "tol": self.tol,
91
+ "n_init": self.n_init,
92
+ "verbose": self.verbose,
93
+ "random_state": self.random_state,
94
+ }
95
+
96
+ self._onedal_estimator = onedal_KMeans(**onedal_params)
97
+
98
+ def _onedal_fit_supported(self, method_name, X, y=None, sample_weight=None):
99
+ assert method_name == "fit"
100
+
101
+ class_name = self.__class__.__name__
102
+ patching_status = PatchingConditionsChain(f"sklearn.cluster.{class_name}.fit")
103
+
104
+ sample_count = _num_samples(X)
105
+ supported_algs = ["auto", "full", "lloyd", "elkan"]
106
+
107
+ if self.algorithm == "elkan":
108
+ logging.getLogger("sklearnex").info(
109
+ "oneDAL does not support 'elkan', using 'lloyd' algorithm instead."
110
+ )
111
+ correct_count = self.n_clusters < sample_count
112
+
113
+ is_data_supported = (
114
+ _is_csr(X) and daal_check_version((2024, "P", 700))
115
+ ) or not issparse(X)
116
+
117
+ _acceptable_sample_weights = self._validate_sample_weight(sample_weight, X)
118
+
119
+ patching_status.and_conditions(
120
+ [
121
+ (
122
+ self.algorithm in supported_algs,
123
+ "Only 'lloyd' algorithm is supported, 'elkan' is computed using lloyd",
124
+ ),
125
+ (correct_count, "n_clusters is smaller than number of samples"),
126
+ (
127
+ _acceptable_sample_weights,
128
+ "oneDAL doesn't support sample_weight. Accepted options are None, constant, or equal weights.",
129
+ ),
130
+ (
131
+ is_data_supported,
132
+ "Supported data formats: Dense, CSR (oneDAL version >= 2024.7.0).",
133
+ ),
134
+ ]
135
+ )
136
+
137
+ return patching_status
138
+
139
+ def fit(self, X, y=None, sample_weight=None):
140
+ if sklearn_check_version("1.2"):
141
+ self._validate_params()
142
+
143
+ dispatch(
144
+ self,
145
+ "fit",
146
+ {
147
+ "onedal": self.__class__._onedal_fit,
148
+ "sklearn": _sklearn_KMeans.fit,
149
+ },
150
+ X,
151
+ y,
152
+ sample_weight,
153
+ )
154
+
155
+ return self
156
+
157
+ def _onedal_fit(self, X, _, sample_weight, queue=None):
158
+ X = validate_data(
159
+ self,
160
+ X,
161
+ accept_sparse="csr",
162
+ dtype=[np.float64, np.float32],
163
+ order="C",
164
+ copy=self.copy_x,
165
+ accept_large_sparse=False,
166
+ )
167
+
168
+ if sklearn_check_version("1.2"):
169
+ self._check_params_vs_input(X)
170
+ else:
171
+ self._check_params(X)
172
+
173
+ self._n_features_out = self.n_clusters
174
+
175
+ self._initialize_onedal_estimator()
176
+ self._n_threads = _openmp_effective_n_threads()
177
+ self._onedal_estimator.fit(X, queue=queue)
178
+
179
+ self._save_attributes()
180
+
181
+ def _validate_sample_weight(self, sample_weight, X):
182
+ if sample_weight is None:
183
+ return True
184
+ elif isinstance(sample_weight, numbers.Number) or isinstance(
185
+ sample_weight, str
186
+ ):
187
+ return True
188
+ else:
189
+ sample_weight = _check_sample_weight(
190
+ sample_weight,
191
+ X,
192
+ dtype=X.dtype if hasattr(X, "dtype") else None,
193
+ )
194
+ if np.all(sample_weight == sample_weight[0]):
195
+ return True
196
+ else:
197
+ return False
198
+
199
+ def _onedal_predict_supported(self, method_name, *data):
200
+ class_name = self.__class__.__name__
201
+
202
+ patching_status = PatchingConditionsChain(
203
+ f"sklearn.cluster.{class_name}.{method_name}"
204
+ )
205
+
206
+ X = data[0]
207
+ sample_weight = data[-1] if len(data) > 1 else None
208
+
209
+ is_data_supported = (
210
+ _is_csr(X) and daal_check_version((2024, "P", 700))
211
+ ) or not issparse(X)
212
+
213
+ # algorithm "auto" has been deprecated since 1.1,
214
+ # algorithm "full" has been replaced by "lloyd"
215
+ supported_algs = ["auto", "full", "lloyd", "elkan"]
216
+ if self.algorithm == "elkan":
217
+ logging.getLogger("sklearnex").info(
218
+ "oneDAL does not support 'elkan', using 'lloyd' algorithm instead."
219
+ )
220
+
221
+ _acceptable_sample_weights = True
222
+ if not sklearn_check_version("1.5"):
223
+ _acceptable_sample_weights = self._validate_sample_weight(
224
+ sample_weight, X
225
+ )
226
+
227
+ patching_status.and_conditions(
228
+ [
229
+ (
230
+ self.algorithm in supported_algs,
231
+ "Only 'lloyd' algorithm is supported, 'elkan' is computed using lloyd.",
232
+ ),
233
+ (
234
+ is_data_supported,
235
+ "Supported data formats: Dense, CSR (oneDAL version >= 2024.7.0).",
236
+ ),
237
+ (
238
+ _acceptable_sample_weights,
239
+ "oneDAL doesn't support sample_weight. Acceptable options are None, constant, or equal weights.",
240
+ ),
241
+ ]
242
+ )
243
+
244
+ return patching_status
245
+
246
+ if sklearn_check_version("1.5"):
247
+
248
+ @wrap_output_data
249
+ def predict(self, X):
250
+ self._validate_params()
251
+ check_is_fitted(self)
252
+ return dispatch(
253
+ self,
254
+ "predict",
255
+ {
256
+ "onedal": self.__class__._onedal_predict,
257
+ "sklearn": _sklearn_KMeans.predict,
258
+ },
259
+ X,
260
+ )
261
+
262
+ else:
263
+
264
+ @wrap_output_data
265
+ def predict(
266
+ self,
267
+ X,
268
+ sample_weight="deprecated" if sklearn_check_version("1.3") else None,
269
+ ):
270
+ if sklearn_check_version("1.2"):
271
+ self._validate_params()
272
+
273
+ if sklearn_check_version("1.3"):
274
+ if isinstance(sample_weight, str) and sample_weight == "deprecated":
275
+ sample_weight = None
276
+
277
+ if sample_weight is not None:
278
+ warnings.warn(
279
+ "'sample_weight' was deprecated in version 1.3 and "
280
+ "will be removed in 1.5.",
281
+ FutureWarning,
282
+ )
283
+ check_is_fitted(self)
284
+ return dispatch(
285
+ self,
286
+ "predict",
287
+ {
288
+ "onedal": self.__class__._onedal_predict,
289
+ "sklearn": _sklearn_KMeans.predict,
290
+ },
291
+ X,
292
+ sample_weight,
293
+ )
294
+
295
+ def _onedal_predict(self, X, sample_weight=None, queue=None):
296
+ X = validate_data(
297
+ self,
298
+ X,
299
+ accept_sparse="csr",
300
+ reset=False,
301
+ dtype=[np.float64, np.float32],
302
+ )
303
+
304
+ if not hasattr(self, "_onedal_estimator"):
305
+ self._initialize_onedal_estimator()
306
+ self._onedal_estimator.cluster_centers_ = self.cluster_centers_
307
+
308
+ return self._onedal_estimator.predict(X, queue=queue)
309
+
310
+ def _onedal_supported(self, method_name, *data):
311
+ if method_name == "fit":
312
+ return self._onedal_fit_supported(method_name, *data)
313
+ if method_name in ["predict", "score"]:
314
+ return self._onedal_predict_supported(method_name, *data)
315
+ raise RuntimeError(
316
+ f"Unknown method {method_name} in {self.__class__.__name__}"
317
+ )
318
+
319
+ _onedal_gpu_supported = _onedal_supported
320
+ _onedal_cpu_supported = _onedal_supported
321
+
322
+ @wrap_output_data
323
+ def fit_transform(self, X, y=None, sample_weight=None):
324
+ return self.fit(X, sample_weight=sample_weight)._transform(X)
325
+
326
+ @wrap_output_data
327
+ def transform(self, X):
328
+ check_is_fitted(self)
329
+
330
+ X = self._check_test_data(X)
331
+ return self._transform(X)
332
+
333
+ @wrap_output_data
334
+ def score(self, X, y=None, sample_weight=None):
335
+ check_is_fitted(self)
336
+ return dispatch(
337
+ self,
338
+ "score",
339
+ {
340
+ "onedal": self.__class__._onedal_score,
341
+ "sklearn": _sklearn_KMeans.score,
342
+ },
343
+ X,
344
+ y,
345
+ sample_weight,
346
+ )
347
+
348
+ def _onedal_score(self, X, y=None, sample_weight=None, queue=None):
349
+ X = validate_data(
350
+ self,
351
+ X,
352
+ accept_sparse="csr",
353
+ reset=False,
354
+ dtype=[np.float64, np.float32],
355
+ )
356
+
357
+ if not sklearn_check_version("1.5") and sklearn_check_version("1.3"):
358
+ if isinstance(sample_weight, str) and sample_weight == "deprecated":
359
+ sample_weight = None
360
+
361
+ if sample_weight is not None:
362
+ warnings.warn(
363
+ "'sample_weight' was deprecated in version 1.3 and "
364
+ "will be removed in 1.5.",
365
+ FutureWarning,
366
+ )
367
+
368
+ if not hasattr(self, "_onedal_estimator"):
369
+ self._initialize_onedal_estimator()
370
+ self._onedal_estimator.cluster_centers_ = self.cluster_centers_
371
+
372
+ return self._onedal_estimator.score(X, queue=queue)
373
+
374
+ def _save_attributes(self):
375
+ assert hasattr(self, "_onedal_estimator")
376
+ self.cluster_centers_ = self._onedal_estimator.cluster_centers_
377
+ self.labels_ = self._onedal_estimator.labels_
378
+ self.inertia_ = self._onedal_estimator.inertia_
379
+ self.n_iter_ = self._onedal_estimator.n_iter_
380
+ self.n_features_in_ = self._onedal_estimator.n_features_in_
381
+
382
+ self._n_init = self._onedal_estimator._n_init
383
+
384
+ fit.__doc__ = _sklearn_KMeans.fit.__doc__
385
+ predict.__doc__ = _sklearn_KMeans.predict.__doc__
386
+ transform.__doc__ = _sklearn_KMeans.transform.__doc__
387
+ fit_transform.__doc__ = _sklearn_KMeans.fit_transform.__doc__
388
+ score.__doc__ = _sklearn_KMeans.score.__doc__
389
+
390
+ else:
391
+ from daal4py.sklearn.cluster import KMeans
392
+
393
+ logging.warning(
394
+ "Sklearnex KMeans requires oneDAL version >= 2023.2, falling back to daal4py."
395
+ )
@@ -18,16 +18,18 @@ import numpy as np
18
18
  import pytest
19
19
  from numpy.testing import assert_allclose
20
20
 
21
+ from onedal.tests.utils._dataframes_support import (
22
+ _convert_to_dataframe,
23
+ get_dataframes_and_queues,
24
+ )
21
25
 
22
- # TODO:
23
- # adding this parameterized testing
24
- # somehow breaks other test with preview module patch:
25
- # sklearnex/tests/test_monkeypatch.py::test_preview_namespace.
26
- # @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
27
- def test_sklearnex_import_dbscan():
26
+
27
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
28
+ def test_sklearnex_import_dbscan(dataframe, queue):
28
29
  from sklearnex.cluster import DBSCAN
29
30
 
30
31
  X = np.array([[1, 2], [2, 2], [2, 3], [8, 7], [8, 8], [25, 80]])
32
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
31
33
  dbscan = DBSCAN(eps=3, min_samples=2).fit(X)
32
34
  assert "sklearnex" in dbscan.__module__
33
35
 
@@ -0,0 +1,159 @@
1
+ # ===============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose
20
+ from scipy.sparse import csr_matrix
21
+ from sklearn.datasets import make_blobs
22
+
23
+ from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
24
+ from onedal.tests.utils._dataframes_support import (
25
+ _as_numpy,
26
+ _convert_to_dataframe,
27
+ get_dataframes_and_queues,
28
+ get_queues,
29
+ )
30
+ from sklearnex import config_context
31
+ from sklearnex.tests.utils import _IS_INTEL
32
+
33
+
34
+ def generate_dense_dataset(n_samples, n_features, density, n_clusters):
35
+ np.random.seed(2024 + n_samples + n_features + n_clusters)
36
+ X, _ = make_blobs(
37
+ n_samples=n_samples,
38
+ n_features=n_features,
39
+ centers=n_clusters,
40
+ cluster_std=1.0,
41
+ random_state=42,
42
+ )
43
+ mask = np.random.binomial(1, density, (n_samples, n_features))
44
+ X = X * mask
45
+ return X
46
+
47
+
48
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
49
+ @pytest.mark.parametrize(
50
+ "algorithm", ["lloyd" if sklearn_check_version("1.1") else "full", "elkan"]
51
+ )
52
+ @pytest.mark.parametrize("init", ["k-means++", "random"])
53
+ def test_sklearnex_import_for_dense_data(dataframe, queue, algorithm, init):
54
+ from sklearnex.cluster import KMeans
55
+
56
+ X_dense = generate_dense_dataset(1000, 10, 0.5, 3)
57
+ X_dense_df = _convert_to_dataframe(X_dense, sycl_queue=queue, target_df=dataframe)
58
+
59
+ kmeans_dense = KMeans(
60
+ n_clusters=3, random_state=0, algorithm=algorithm, init=init
61
+ ).fit(X_dense_df)
62
+
63
+ if daal_check_version((2023, "P", 200)):
64
+ assert "sklearnex" in kmeans_dense.__module__
65
+ else:
66
+ assert "daal4py" in kmeans_dense.__module__
67
+
68
+
69
+ @pytest.mark.skipif(
70
+ not daal_check_version((2024, "P", 700)),
71
+ reason="Sparse data requires oneDAL>=2024.7.0",
72
+ )
73
+ @pytest.mark.parametrize("queue", get_queues())
74
+ @pytest.mark.parametrize(
75
+ "algorithm", ["lloyd" if sklearn_check_version("1.1") else "full", "elkan"]
76
+ )
77
+ @pytest.mark.parametrize("init", ["k-means++", "random"])
78
+ def test_sklearnex_import_for_sparse_data(queue, algorithm, init):
79
+ from sklearnex.cluster import KMeans
80
+
81
+ X_dense = generate_dense_dataset(1000, 10, 0.5, 3)
82
+ X_sparse = csr_matrix(X_dense)
83
+
84
+ kmeans_sparse = KMeans(
85
+ n_clusters=3, random_state=0, algorithm=algorithm, init=init
86
+ ).fit(X_sparse)
87
+
88
+ assert "sklearnex" in kmeans_sparse.__module__
89
+
90
+
91
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
92
+ @pytest.mark.parametrize(
93
+ "algorithm", ["lloyd" if sklearn_check_version("1.1") else "full", "elkan"]
94
+ )
95
+ def test_results_on_dense_gold_data(dataframe, queue, algorithm):
96
+ from sklearnex.cluster import KMeans
97
+
98
+ X_train = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
99
+ X_test = np.array([[0, 0], [12, 3]])
100
+ X_train_df = _convert_to_dataframe(X_train, sycl_queue=queue, target_df=dataframe)
101
+ X_test_df = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
102
+
103
+ kmeans = KMeans(n_clusters=2, random_state=0, algorithm=algorithm).fit(X_train_df)
104
+
105
+ if queue and queue.sycl_device.is_gpu:
106
+ # KMeans Init Dense GPU implementation is different from CPU
107
+ expected_cluster_labels = np.array([0, 1], dtype=np.int32)
108
+ expected_cluster_centers = np.array([[1.0, 2.0], [10.0, 2.0]], dtype=np.float32)
109
+ expected_inertia = 16.0
110
+ else:
111
+ expected_cluster_labels = np.array([1, 0], dtype=np.int32)
112
+ expected_cluster_centers = np.array([[10.0, 2.0], [1.0, 2.0]], dtype=np.float32)
113
+ expected_inertia = 16.0
114
+
115
+ assert_allclose(expected_cluster_labels, _as_numpy(kmeans.predict(X_test_df)))
116
+ assert_allclose(expected_cluster_centers, _as_numpy(kmeans.cluster_centers_))
117
+ assert expected_inertia == kmeans.inertia_
118
+
119
+
120
+ @pytest.mark.skipif(
121
+ not daal_check_version((2024, "P", 700)),
122
+ reason="Sparse data requires oneDAL>=2024.7.0",
123
+ )
124
+ @pytest.mark.parametrize("queue", get_queues())
125
+ @pytest.mark.parametrize("init", ["k-means++", "random", "arraylike"])
126
+ @pytest.mark.parametrize(
127
+ "algorithm", ["lloyd" if sklearn_check_version("1.1") else "full", "elkan"]
128
+ )
129
+ @pytest.mark.parametrize(
130
+ "dims", [(1000, 10, 0.95, 3), (50000, 100, 0.75, 10), (10000, 10, 0.8, 5)]
131
+ )
132
+ def test_dense_vs_sparse(queue, init, algorithm, dims):
133
+ from sklearnex.cluster import KMeans
134
+
135
+ if init == "random" or (not _IS_INTEL and init == "k-means++"):
136
+ if daal_check_version((2025, "P", 200)):
137
+ pytest.fail("Re-verify failure of k-means++ in 2025.2 oneDAL")
138
+ pytest.skip(f"{init} initialization for sparse K-means is non-conformant.")
139
+
140
+ # For higher level of sparsity (smaller density) the test may fail
141
+ n_samples, n_features, density, n_clusters = dims
142
+ X_dense = generate_dense_dataset(n_samples, n_features, density, n_clusters)
143
+ X_sparse = csr_matrix(X_dense)
144
+
145
+ if init == "arraylike":
146
+ np.random.seed(2024 + n_samples + n_features + n_clusters)
147
+ init = X_dense[np.random.choice(n_samples, size=n_clusters, replace=False)]
148
+
149
+ kmeans_dense = KMeans(
150
+ n_clusters=n_clusters, random_state=0, init=init, algorithm=algorithm
151
+ ).fit(X_dense)
152
+ kmeans_sparse = KMeans(
153
+ n_clusters=n_clusters, random_state=0, init=init, algorithm=algorithm
154
+ ).fit(X_sparse)
155
+
156
+ assert_allclose(
157
+ kmeans_dense.cluster_centers_,
158
+ kmeans_sparse.cluster_centers_,
159
+ )