scikit-learn-intelex 2024.6.0__py312-none-win_amd64.whl → 2025.0.0__py312-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 (260) hide show
  1. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp312-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +242 -0
  10. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +241 -0
  11. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. {scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -2
  16. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  18. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +318 -0
  19. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
  23. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  27. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +196 -0
  32. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +3 -3
  34. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +155 -0
  37. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -2
  39. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +161 -0
  44. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +87 -0
  46. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +118 -0
  47. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. {scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
  56. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_config.py +53 -0
  61. {scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal}/_device_offload.py +104 -132
  62. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  65. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  66. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  67. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  68. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  69. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  70. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +560 -0
  71. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  72. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  73. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  74. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  75. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  76. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  77. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  78. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  79. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  80. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +116 -0
  81. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +75 -0
  82. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  83. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  84. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  85. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  86. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  87. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  88. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +95 -0
  89. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +235 -0
  90. {scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  91. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  92. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  93. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  94. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  95. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +720 -0
  96. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  97. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  98. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  99. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  100. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  101. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  102. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  103. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +149 -0
  104. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  105. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  106. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  107. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +778 -0
  108. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  109. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  110. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  111. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  112. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  113. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  114. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  115. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  116. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  117. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  118. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  119. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  120. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/tests/test_common.py +41 -0
  121. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +168 -0
  122. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +107 -0
  123. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  124. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +91 -0
  125. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/utils/validation.py +432 -0
  126. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/_config.py +3 -15
  127. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +121 -0
  128. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  129. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +140 -0
  130. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +5 -5
  131. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +251 -0
  132. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +1 -1
  133. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  134. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -1
  135. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +383 -0
  136. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +153 -0
  137. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +68 -17
  138. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +46 -0
  139. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +25 -1
  140. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +113 -9
  141. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +9 -36
  142. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +9 -12
  143. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +2 -0
  144. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
  145. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +5 -6
  146. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +418 -0
  147. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +2 -34
  148. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +79 -59
  149. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +24 -0
  150. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +13 -10
  151. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  152. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +28 -3
  153. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +46 -3
  154. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +21 -0
  155. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
  156. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  157. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -0
  158. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +11 -1
  159. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +45 -1
  160. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +1 -20
  161. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +1 -20
  162. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +31 -7
  163. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  164. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +8 -8
  165. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +2 -2
  166. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +19 -17
  167. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +419 -0
  168. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  169. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  170. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  171. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  172. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  173. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  174. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  175. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  176. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  177. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  178. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  179. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  180. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  181. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  182. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  183. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  184. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
  185. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
  186. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  187. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  188. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +166 -0
  189. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  190. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +19 -21
  191. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +1 -1
  192. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +1 -1
  193. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
  194. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/_utils.py +143 -20
  195. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/tests/_utils_spmd.py +198 -0
  196. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +4 -0
  197. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +2 -1
  198. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +12 -4
  199. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +16 -14
  200. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +33 -20
  201. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +1 -2
  202. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +5 -20
  203. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/METADATA +3 -2
  204. scikit_learn_intelex-2025.0.0.dist-info/RECORD +255 -0
  205. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  206. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  207. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  208. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -303
  209. scikit_learn_intelex-2024.6.0.dist-info/RECORD +0 -108
  210. {scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal}/basic_statistics/__init__.py +0 -0
  211. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
  212. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  213. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
  214. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  215. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  216. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  217. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  218. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
  219. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  220. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  221. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  222. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  223. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -0
  224. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  225. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  226. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  227. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  228. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  229. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  230. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  231. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  232. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  233. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -0
  234. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
  235. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  236. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  237. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  238. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  239. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  240. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  241. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  242. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  243. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  244. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
  245. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  246. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  247. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  248. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  249. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  250. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
  251. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
  252. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -0
  253. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
  254. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  255. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  256. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +0 -0
  257. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  258. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/LICENSE.txt +0 -0
  259. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/WHEEL +0 -0
  260. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/top_level.txt +0 -0
@@ -16,13 +16,19 @@
16
16
 
17
17
  import numpy as np
18
18
  import pytest
19
+ from numpy.linalg import slogdet
19
20
  from numpy.testing import assert_allclose
21
+ from scipy.linalg import pinvh
20
22
  from sklearn.covariance.tests.test_covariance import (
21
23
  test_covariance,
22
24
  test_EmpiricalCovariance_validates_mahalanobis,
23
25
  )
26
+ from sklearn.datasets import load_diabetes
27
+ from sklearn.decomposition import PCA
24
28
 
29
+ from daal4py.sklearn._utils import daal_check_version
25
30
  from onedal.tests.utils._dataframes_support import (
31
+ _as_numpy,
26
32
  _convert_to_dataframe,
27
33
  get_dataframes_and_queues,
28
34
  )
@@ -32,6 +38,11 @@ from onedal.tests.utils._dataframes_support import (
32
38
  @pytest.mark.parametrize("dtype", [np.float32, np.float64])
33
39
  @pytest.mark.parametrize("assume_centered", [True, False])
34
40
  def test_sklearnex_partial_fit_on_gold_data(dataframe, queue, dtype, assume_centered):
41
+ is_gpu = queue is not None and queue.sycl_device.is_gpu
42
+ if assume_centered and is_gpu and not daal_check_version((2025, "P", 0)):
43
+ pytest.skip(
44
+ "Due to a bug on oneDAL side, means are not set to zero when assume_centered=True"
45
+ )
35
46
  from sklearnex.covariance import IncrementalEmpiricalCovariance
36
47
 
37
48
  X = np.array([[0, 1], [0, 1]])
@@ -138,6 +149,11 @@ def test_sklearnex_partial_fit_on_random_data(
138
149
  def test_sklearnex_fit_on_random_data(
139
150
  dataframe, queue, num_batches, row_count, column_count, dtype, assume_centered
140
151
  ):
152
+ is_gpu = queue is not None and queue.sycl_device.is_gpu
153
+ if assume_centered and is_gpu and not daal_check_version((2025, "P", 0)):
154
+ pytest.skip(
155
+ "Due to a bug on oneDAL side, means are not set to zero when assume_centered=True"
156
+ )
141
157
  from sklearnex.covariance import IncrementalEmpiricalCovariance
142
158
 
143
159
  seed = 77
@@ -163,6 +179,36 @@ def test_sklearnex_fit_on_random_data(
163
179
  assert_allclose(expected_means, result.location_, atol=1e-6)
164
180
 
165
181
 
182
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
183
+ def test_whitened_toy_score(dataframe, queue):
184
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
185
+
186
+ # Load a sklearn toy dataset with sufficient data
187
+ X, _ = load_diabetes(return_X_y=True)
188
+ n = X.shape[1]
189
+
190
+ # Transform the data into uncorrelated, unity variance components
191
+ X = PCA(whiten=True).fit_transform(X)
192
+
193
+ # change dataframe
194
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
195
+
196
+ # fit data
197
+ est = IncrementalEmpiricalCovariance()
198
+ est.fit(X_df)
199
+ # location_ attribute approximately zero (10,), covariance_ identity (10,10)
200
+
201
+ # The log-likelihood can be calculated simply due to covariance_
202
+ # use of scipy.linalg.pinvh, np.linalg.sloget and np.cov for estimator
203
+ # independence
204
+ expected_result = (
205
+ -(n - slogdet(pinvh(np.cov(X.T, bias=1)))[1] + n * np.log(2 * np.pi)) / 2
206
+ )
207
+ # expected_result = -14.1780602988
208
+ result = _as_numpy(est.score(X_df))
209
+ assert_allclose(expected_result, result, atol=1e-6)
210
+
211
+
166
212
  # Monkeypatch IncrementalEmpiricalCovariance into relevant sklearn.covariance tests
167
213
  @pytest.mark.allow_sklearn_fallback
168
214
  @pytest.mark.parametrize(
@@ -32,6 +32,7 @@ if daal_check_version((2024, "P", 100)):
32
32
 
33
33
  from .._device_offload import dispatch, wrap_output_data
34
34
  from .._utils import PatchingConditionsChain
35
+ from ..utils._array_api import get_namespace
35
36
 
36
37
  if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
37
38
  from sklearn.utils import check_scalar
@@ -42,7 +43,6 @@ if daal_check_version((2024, "P", 100)):
42
43
  from sklearn.decomposition import PCA as sklearn_PCA
43
44
 
44
45
  from onedal.decomposition import PCA as onedal_PCA
45
- from sklearnex.utils import get_namespace
46
46
 
47
47
  @control_n_jobs(decorated_methods=["fit", "transform", "fit_transform"])
48
48
  class PCA(sklearn_PCA):
@@ -210,6 +210,29 @@ if daal_check_version((2024, "P", 100)):
210
210
  # Scikit-learn PCA["covariance_eigh"] was fit
211
211
  return self._transform(X_fit, xp, x_is_centered=x_is_centered)
212
212
 
213
+ @wrap_output_data
214
+ def inverse_transform(self, X):
215
+ xp, _ = get_namespace(X)
216
+
217
+ mean = self.mean_
218
+ if self.whiten:
219
+ components = (
220
+ xp.sqrt(self.explained_variance_[:, np.newaxis]) * self.components_
221
+ )
222
+ else:
223
+ components = self.components_
224
+
225
+ if "numpy" not in xp.__name__:
226
+ # DPCtl and dpnp require inputs to be on the same device for
227
+ # matrix multiplication and division. The type and location
228
+ # of the components and mean are dependent on the sklearn
229
+ # version, this makes sure it is of the same type and on the
230
+ # same device as the data (compute follows data).
231
+ components = xp.asarray(components, device=X.device)
232
+ mean = xp.asarray(mean, device=X.device)
233
+
234
+ return X @ components + mean
235
+
213
236
  def _onedal_supported(self, method_name, X):
214
237
  class_name = self.__class__.__name__
215
238
  patching_status = PatchingConditionsChain(
@@ -381,6 +404,7 @@ if daal_check_version((2024, "P", 100)):
381
404
  fit.__doc__ = sklearn_PCA.fit.__doc__
382
405
  transform.__doc__ = sklearn_PCA.transform.__doc__
383
406
  fit_transform.__doc__ = sklearn_PCA.fit_transform.__doc__
407
+ inverse_transform.__doc__ = sklearn_PCA.inverse_transform.__doc__
384
408
 
385
409
  else:
386
410
  from daal4py.sklearn.decomposition import PCA
@@ -48,25 +48,17 @@ def get_patch_map_core(preview=False):
48
48
  import sklearn.decomposition as decomposition_module
49
49
 
50
50
  # Preview classes for patching
51
- from .preview.cluster import KMeans as KMeans_sklearnex
52
51
  from .preview.covariance import (
53
52
  EmpiricalCovariance as EmpiricalCovariance_sklearnex,
54
53
  )
55
54
  from .preview.decomposition import IncrementalPCA as IncrementalPCA_sklearnex
55
+ from .preview.linear_model import Ridge as Ridge_sklearnex
56
56
 
57
57
  # Since the state of the lru_cache without preview cannot be
58
58
  # guaranteed to not have already enabled sklearnex algorithms
59
59
  # when preview is used, setting the mapping element[1] to None
60
60
  # should NOT be done. This may lose track of the unpatched
61
61
  # sklearn estimator or function.
62
- # KMeans
63
- cluster_module, _, _ = mapping["kmeans"][0][0]
64
- sklearn_obj = mapping["kmeans"][0][1]
65
- mapping.pop("kmeans")
66
- mapping["kmeans"] = [
67
- [(cluster_module, "KMeans", KMeans_sklearnex), sklearn_obj]
68
- ]
69
-
70
62
  # Covariance
71
63
  mapping["empiricalcovariance"] = [
72
64
  [
@@ -90,6 +82,15 @@ def get_patch_map_core(preview=False):
90
82
  None,
91
83
  ]
92
84
  ]
85
+
86
+ # Ridge
87
+ linear_model_module, _, _ = mapping["ridge"][0][0]
88
+ sklearn_obj = mapping["ridge"][0][1]
89
+ mapping.pop("ridge")
90
+ mapping["ridge"] = [
91
+ [(linear_model_module, "Ridge", Ridge_sklearnex), sklearn_obj]
92
+ ]
93
+
93
94
  return mapping
94
95
 
95
96
  from daal4py.sklearn.monkeypatch.dispatcher import _get_map_of_algorithms
@@ -111,6 +112,9 @@ def get_patch_map_core(preview=False):
111
112
  import sklearn.decomposition as decomposition_module
112
113
  import sklearn.ensemble as ensemble_module
113
114
  import sklearn.linear_model as linear_model_module
115
+ import sklearn.manifold as manifold_module
116
+ import sklearn.metrics as metrics_module
117
+ import sklearn.model_selection as model_selection_module
114
118
  import sklearn.neighbors as neighbors_module
115
119
  import sklearn.svm as svm_module
116
120
 
@@ -130,6 +134,7 @@ def get_patch_map_core(preview=False):
130
134
  from .utils.parallel import _FuncWrapperOld as _FuncWrapper_sklearnex
131
135
 
132
136
  from .cluster import DBSCAN as DBSCAN_sklearnex
137
+ from .cluster import KMeans as KMeans_sklearnex
133
138
  from .covariance import (
134
139
  IncrementalEmpiricalCovariance as IncrementalEmpiricalCovariance_sklearnex,
135
140
  )
@@ -138,11 +143,19 @@ def get_patch_map_core(preview=False):
138
143
  from .ensemble import ExtraTreesRegressor as ExtraTreesRegressor_sklearnex
139
144
  from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
140
145
  from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
146
+ from .linear_model import ElasticNet as ElasticNet_sklearnex
141
147
  from .linear_model import (
142
148
  IncrementalLinearRegression as IncrementalLinearRegression_sklearnex,
143
149
  )
150
+ from .linear_model import IncrementalRidge as IncrementalRidge_sklearnex
151
+ from .linear_model import Lasso as Lasso_sklearnex
144
152
  from .linear_model import LinearRegression as LinearRegression_sklearnex
145
153
  from .linear_model import LogisticRegression as LogisticRegression_sklearnex
154
+ from .linear_model import Ridge as Ridge_sklearnex
155
+ from .manifold import TSNE as TSNE_sklearnex
156
+ from .metrics import pairwise_distances as pairwise_distances_sklearnex
157
+ from .metrics import roc_auc_score as roc_auc_score_sklearnex
158
+ from .model_selection import train_test_split as train_test_split_sklearnex
146
159
  from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
147
160
  from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
148
161
  from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
@@ -156,6 +169,10 @@ def get_patch_map_core(preview=False):
156
169
  mapping.pop("dbscan")
157
170
  mapping["dbscan"] = [[(cluster_module, "DBSCAN", DBSCAN_sklearnex), None]]
158
171
 
172
+ # KMeans
173
+ mapping.pop("kmeans")
174
+ mapping["kmeans"] = [[(cluster_module, "KMeans", KMeans_sklearnex), None]]
175
+
159
176
  # PCA
160
177
  mapping.pop("pca")
161
178
  mapping["pca"] = [[(decomposition_module, "PCA", PCA_sklearnex), None]]
@@ -168,6 +185,32 @@ def get_patch_map_core(preview=False):
168
185
  mapping["nusvr"] = [[(svm_module, "NuSVR", NuSVR_sklearnex), None]]
169
186
  mapping["nusvc"] = [[(svm_module, "NuSVC", NuSVC_sklearnex), None]]
170
187
 
188
+ # ElasticNet
189
+ mapping.pop("elasticnet")
190
+ mapping["elasticnet"] = [
191
+ [
192
+ (
193
+ linear_model_module,
194
+ "ElasticNet",
195
+ ElasticNet_sklearnex,
196
+ ),
197
+ None,
198
+ ]
199
+ ]
200
+
201
+ # Lasso
202
+ mapping.pop("lasso")
203
+ mapping["lasso"] = [
204
+ [
205
+ (
206
+ linear_model_module,
207
+ "Lasso",
208
+ Lasso_sklearnex,
209
+ ),
210
+ None,
211
+ ]
212
+ ]
213
+
171
214
  # Linear Regression
172
215
  mapping.pop("linear")
173
216
  mapping.pop("linearregression")
@@ -201,6 +244,54 @@ def get_patch_map_core(preview=False):
201
244
  ]
202
245
  mapping["logisticregression"] = mapping["log_reg"]
203
246
 
247
+ # Ridge
248
+ mapping.pop("ridge")
249
+ mapping["ridge"] = [
250
+ [
251
+ (
252
+ linear_model_module,
253
+ "Ridge",
254
+ Ridge_sklearnex,
255
+ ),
256
+ None,
257
+ ]
258
+ ]
259
+
260
+ # manifold
261
+ mapping.pop("tsne")
262
+ mapping["tsne"] = [
263
+ [
264
+ (manifold_module, "TSNE", TSNE_sklearnex),
265
+ None,
266
+ ]
267
+ ]
268
+
269
+ # metrics
270
+ mapping.pop("distances")
271
+ mapping.pop("roc_auc_score")
272
+ mapping["distances"] = [
273
+ [
274
+ (metrics_module, "pairwise_distances", pairwise_distances_sklearnex),
275
+ None,
276
+ ]
277
+ ]
278
+ mapping["pairwise_distances"] = mapping["distances"]
279
+ mapping["roc_auc_score"] = [
280
+ [
281
+ (metrics_module, "roc_auc_score", roc_auc_score_sklearnex),
282
+ None,
283
+ ]
284
+ ]
285
+
286
+ # model_selection
287
+ mapping.pop("train_test_split")
288
+ mapping["train_test_split"] = [
289
+ [
290
+ (model_selection_module, "train_test_split", train_test_split_sklearnex),
291
+ None,
292
+ ]
293
+ ]
294
+
204
295
  # kNN
205
296
  mapping.pop("knn_classifier")
206
297
  mapping.pop("kneighborsclassifier")
@@ -318,6 +409,19 @@ def get_patch_map_core(preview=False):
318
409
  ]
319
410
  ]
320
411
 
412
+ if daal_check_version((2024, "P", 600)):
413
+ # IncrementalRidge
414
+ mapping["incrementalridge"] = [
415
+ [
416
+ (
417
+ linear_model_module,
418
+ "IncrementalRidge",
419
+ IncrementalRidge_sklearnex,
420
+ ),
421
+ None,
422
+ ]
423
+ ]
424
+
321
425
  # Configs
322
426
  mapping["set_config"] = [
323
427
  [(base_module, "set_config", set_config_sklearnex), None]
@@ -38,7 +38,12 @@ from sklearn.tree import (
38
38
  )
39
39
  from sklearn.tree._tree import Tree
40
40
  from sklearn.utils import check_random_state, deprecated
41
- from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
41
+ from sklearn.utils.validation import (
42
+ _check_sample_weight,
43
+ check_array,
44
+ check_is_fitted,
45
+ check_X_y,
46
+ )
42
47
 
43
48
  from daal4py.sklearn._n_jobs_support import control_n_jobs
44
49
  from daal4py.sklearn._utils import (
@@ -52,10 +57,10 @@ from onedal.ensemble import RandomForestClassifier as onedal_RandomForestClassif
52
57
  from onedal.ensemble import RandomForestRegressor as onedal_RandomForestRegressor
53
58
  from onedal.primitives import get_tree_state_cls, get_tree_state_reg
54
59
  from onedal.utils import _num_features, _num_samples
55
- from sklearnex.utils import get_namespace
56
60
 
57
61
  from .._device_offload import dispatch, wrap_output_data
58
62
  from .._utils import PatchingConditionsChain
63
+ from ..utils._array_api import get_namespace
59
64
 
60
65
  if sklearn_check_version("1.2"):
61
66
  from sklearn.utils._param_validation import Interval
@@ -70,7 +75,7 @@ class BaseForest(ABC):
70
75
  X, y = self._validate_data(
71
76
  X,
72
77
  y,
73
- multi_output=False,
78
+ multi_output=True,
74
79
  accept_sparse=False,
75
80
  dtype=[np.float64, np.float32],
76
81
  force_all_finite=False,
@@ -78,7 +83,7 @@ class BaseForest(ABC):
78
83
  )
79
84
 
80
85
  if sample_weight is not None:
81
- sample_weight = self.check_sample_weight(sample_weight, X)
86
+ sample_weight = _check_sample_weight(sample_weight, X)
82
87
 
83
88
  if y.ndim == 2 and y.shape[1] == 1:
84
89
  warnings.warn(
@@ -289,38 +294,6 @@ class BaseForest(ABC):
289
294
  "min_bin_size must be integral number but was " "%r" % self.min_bin_size
290
295
  )
291
296
 
292
- def check_sample_weight(self, sample_weight, X, dtype=None):
293
- n_samples = _num_samples(X)
294
-
295
- if dtype is not None and dtype not in [np.float32, np.float64]:
296
- dtype = np.float64
297
-
298
- if sample_weight is None:
299
- sample_weight = np.ones(n_samples, dtype=dtype)
300
- elif isinstance(sample_weight, numbers.Number):
301
- sample_weight = np.full(n_samples, sample_weight, dtype=dtype)
302
- else:
303
- if dtype is None:
304
- dtype = [np.float64, np.float32]
305
- sample_weight = check_array(
306
- sample_weight,
307
- accept_sparse=False,
308
- ensure_2d=False,
309
- dtype=dtype,
310
- order="C",
311
- force_all_finite=False,
312
- )
313
- if sample_weight.ndim != 1:
314
- raise ValueError("Sample weights must be 1D array or scalar")
315
-
316
- if sample_weight.shape != (n_samples,):
317
- raise ValueError(
318
- "sample_weight.shape == {}, expected {}!".format(
319
- sample_weight.shape, (n_samples,)
320
- )
321
- )
322
- return sample_weight
323
-
324
297
  @property
325
298
  def estimators_(self):
326
299
  if hasattr(self, "_cached_estimators_"):
@@ -46,11 +46,10 @@ def test_sklearnex_import_rf_classifier(dataframe, queue):
46
46
  assert_allclose([1], _as_numpy(rf.predict([[0, 0, 0, 0]])))
47
47
 
48
48
 
49
- # TODO: fix RF regressor predict for the GPU sycl_queue.
50
- @pytest.mark.parametrize(
51
- "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
52
- )
49
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
53
50
  def test_sklearnex_import_rf_regression(dataframe, queue):
51
+ if queue and queue.sycl_device.is_gpu:
52
+ pytest.skip("RF regressor predict for the GPU sycl_queue is buggy.")
54
53
  from sklearnex.ensemble import RandomForestRegressor
55
54
 
56
55
  X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)
@@ -69,11 +68,10 @@ def test_sklearnex_import_rf_regression(dataframe, queue):
69
68
  assert_allclose([-6.839], pred, atol=1e-2)
70
69
 
71
70
 
72
- # TODO: fix ET classifier predict for the GPU sycl_queue.
73
- @pytest.mark.parametrize(
74
- "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
75
- )
71
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
76
72
  def test_sklearnex_import_et_classifier(dataframe, queue):
73
+ if queue and queue.sycl_device.is_gpu:
74
+ pytest.skip("ET classifier predict for the GPU sycl_queue is buggy.")
77
75
  from sklearnex.ensemble import ExtraTreesClassifier
78
76
 
79
77
  X, y = make_classification(
@@ -93,11 +91,10 @@ def test_sklearnex_import_et_classifier(dataframe, queue):
93
91
  assert_allclose([1], _as_numpy(rf.predict([[0, 0, 0, 0]])))
94
92
 
95
93
 
96
- # TODO: fix ET regressor predict for the GPU sycl_queue.
97
- @pytest.mark.parametrize(
98
- "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
99
- )
94
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
100
95
  def test_sklearnex_import_et_regression(dataframe, queue):
96
+ if queue and queue.sycl_device.is_gpu:
97
+ pytest.skip("ET regressor predict for the GPU sycl_queue is buggy.")
101
98
  from sklearnex.ensemble import ExtraTreesRegressor
102
99
 
103
100
  X, y = make_regression(n_features=1, random_state=0, shuffle=False)
@@ -16,6 +16,7 @@
16
16
 
17
17
  from .coordinate_descent import ElasticNet, Lasso
18
18
  from .incremental_linear import IncrementalLinearRegression
19
+ from .incremental_ridge import IncrementalRidge
19
20
  from .linear import LinearRegression
20
21
  from .logistic_regression import LogisticRegression
21
22
  from .ridge import Ridge
@@ -23,6 +24,7 @@ from .ridge import Ridge
23
24
  __all__ = [
24
25
  "ElasticNet",
25
26
  "IncrementalLinearRegression",
27
+ "IncrementalRidge",
26
28
  "Lasso",
27
29
  "LinearRegression",
28
30
  "LogisticRegression",
@@ -15,3 +15,16 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.linear_model import ElasticNet, Lasso
18
+ from onedal._device_offload import support_input_format
19
+
20
+ # Note: `sklearnex.linear_model.ElasticNet` only has functional
21
+ # sycl GPU support. No GPU device will be offloaded.
22
+ ElasticNet.fit = support_input_format(queue_param=False)(ElasticNet.fit)
23
+ ElasticNet.predict = support_input_format(queue_param=False)(ElasticNet.predict)
24
+ ElasticNet.score = support_input_format(queue_param=False)(ElasticNet.score)
25
+
26
+ # Note: `sklearnex.linear_model.Lasso` only has functional
27
+ # sycl GPU support. No GPU device will be offloaded.
28
+ Lasso.fit = support_input_format(queue_param=False)(Lasso.fit)
29
+ Lasso.predict = support_input_format(queue_param=False)(Lasso.predict)
30
+ Lasso.score = support_input_format(queue_param=False)(Lasso.score)
@@ -147,7 +147,7 @@ class IncrementalLinearRegression(MultiOutputMixin, RegressorMixin, BaseEstimato
147
147
  assert hasattr(self, "_onedal_estimator")
148
148
  if self._need_to_finalize:
149
149
  self._onedal_finalize_fit()
150
- return self._onedal_estimator.predict(X, queue)
150
+ return self._onedal_estimator.predict(X, queue=queue)
151
151
 
152
152
  def _onedal_score(self, X, y, sample_weight=None, queue=None):
153
153
  return r2_score(
@@ -194,17 +194,17 @@ class IncrementalLinearRegression(MultiOutputMixin, RegressorMixin, BaseEstimato
194
194
  onedal_params = {"fit_intercept": self.fit_intercept, "copy_X": self.copy_X}
195
195
  if not hasattr(self, "_onedal_estimator"):
196
196
  self._onedal_estimator = self._onedal_incremental_linear(**onedal_params)
197
- self._onedal_estimator.partial_fit(X, y, queue)
197
+ self._onedal_estimator.partial_fit(X, y, queue=queue)
198
198
  self._need_to_finalize = True
199
199
 
200
- def _onedal_finalize_fit(self):
200
+ def _onedal_finalize_fit(self, queue=None):
201
201
  assert hasattr(self, "_onedal_estimator")
202
202
  is_underdetermined = self.n_samples_seen_ < self.n_features_in_ + int(
203
203
  self.fit_intercept
204
204
  )
205
205
  if is_underdetermined:
206
206
  raise ValueError("Not enough samples to finalize")
207
- self._onedal_estimator.finalize_fit()
207
+ self._onedal_estimator.finalize_fit(queue=queue)
208
208
  self._need_to_finalize = False
209
209
 
210
210
  def _onedal_fit(self, X, y, queue=None):
@@ -263,8 +263,7 @@ class IncrementalLinearRegression(MultiOutputMixin, RegressorMixin, BaseEstimato
263
263
  "Only one sample available. You may want to reshape your data array"
264
264
  )
265
265
 
266
- self._onedal_finalize_fit()
267
-
266
+ self._onedal_finalize_fit(queue=queue)
268
267
  return self
269
268
 
270
269
  def get_intercept_(self):