scikit-learn-intelex 2024.6.0__py310-none-win_amd64.whl → 2025.0.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 (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.cp310-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.cp310-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.cp310-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-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
@@ -0,0 +1,720 @@
1
+ # ==============================================================================
2
+ # Copyright 2023 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 numbers
18
+ import warnings
19
+ from abc import ABCMeta, abstractmethod
20
+ from math import ceil
21
+ from numbers import Number
22
+
23
+ import numpy as np
24
+ from sklearn.ensemble import BaseEnsemble
25
+ from sklearn.utils import check_random_state
26
+
27
+ from daal4py.sklearn._utils import daal_check_version
28
+ from onedal import _backend
29
+
30
+ from ..common._base import BaseEstimator
31
+ from ..common._estimator_checks import _check_is_fitted
32
+ from ..common._mixin import ClassifierMixin, RegressorMixin
33
+ from ..datatypes import _convert_to_supported, from_table, to_table
34
+ from ..utils import (
35
+ _check_array,
36
+ _check_n_features,
37
+ _check_X_y,
38
+ _column_or_1d,
39
+ _validate_targets,
40
+ )
41
+
42
+
43
+ class BaseForest(BaseEstimator, BaseEnsemble, metaclass=ABCMeta):
44
+ @abstractmethod
45
+ def __init__(
46
+ self,
47
+ n_estimators,
48
+ criterion,
49
+ max_depth,
50
+ min_samples_split,
51
+ min_samples_leaf,
52
+ min_weight_fraction_leaf,
53
+ max_features,
54
+ max_leaf_nodes,
55
+ min_impurity_decrease,
56
+ min_impurity_split,
57
+ bootstrap,
58
+ oob_score,
59
+ random_state,
60
+ warm_start,
61
+ class_weight,
62
+ ccp_alpha,
63
+ max_samples,
64
+ max_bins,
65
+ min_bin_size,
66
+ infer_mode,
67
+ splitter_mode,
68
+ voting_mode,
69
+ error_metric_mode,
70
+ variable_importance_mode,
71
+ algorithm,
72
+ **kwargs,
73
+ ):
74
+ self.n_estimators = n_estimators
75
+ self.bootstrap = bootstrap
76
+ self.oob_score = oob_score
77
+ self.random_state = random_state
78
+ self.warm_start = warm_start
79
+ self.class_weight = class_weight
80
+ self.max_samples = max_samples
81
+ self.criterion = criterion
82
+ self.max_depth = max_depth
83
+ self.min_samples_split = min_samples_split
84
+ self.min_samples_leaf = min_samples_leaf
85
+ self.min_weight_fraction_leaf = min_weight_fraction_leaf
86
+ self.max_features = max_features
87
+ self.max_leaf_nodes = max_leaf_nodes
88
+ self.min_impurity_decrease = min_impurity_decrease
89
+ self.min_impurity_split = min_impurity_split
90
+ self.ccp_alpha = ccp_alpha
91
+ self.max_bins = max_bins
92
+ self.min_bin_size = min_bin_size
93
+ self.infer_mode = infer_mode
94
+ self.splitter_mode = splitter_mode
95
+ self.voting_mode = voting_mode
96
+ self.error_metric_mode = error_metric_mode
97
+ self.variable_importance_mode = variable_importance_mode
98
+ self.algorithm = algorithm
99
+
100
+ def _to_absolute_max_features(self, n_features):
101
+ if self.max_features is None:
102
+ return n_features
103
+ elif isinstance(self.max_features, str):
104
+ return max(1, int(getattr(np, self.max_features)(n_features)))
105
+ elif isinstance(self.max_features, (numbers.Integral, np.integer)):
106
+ return self.max_features
107
+ elif self.max_features > 0.0:
108
+ return max(1, int(self.max_features * n_features))
109
+ return 0
110
+
111
+ def _get_observations_per_tree_fraction(self, n_samples, max_samples):
112
+ if max_samples is None:
113
+ return 1.0
114
+
115
+ if isinstance(max_samples, numbers.Integral):
116
+ if not (1 <= max_samples <= n_samples):
117
+ msg = "`max_samples` must be in range 1 to {} but got value {}"
118
+ raise ValueError(msg.format(n_samples, max_samples))
119
+ return max(float(max_samples / n_samples), 1 / n_samples)
120
+
121
+ if isinstance(max_samples, numbers.Real):
122
+ return max(float(max_samples), 1 / n_samples)
123
+
124
+ msg = "`max_samples` should be int or float, but got type '{}'"
125
+ raise TypeError(msg.format(type(max_samples)))
126
+
127
+ def _get_onedal_params(self, data):
128
+ n_samples, n_features = data.shape
129
+
130
+ self.observations_per_tree_fraction = self._get_observations_per_tree_fraction(
131
+ n_samples=n_samples, max_samples=self.max_samples
132
+ )
133
+ self.observations_per_tree_fraction = (
134
+ self.observations_per_tree_fraction if bool(self.bootstrap) else 1.0
135
+ )
136
+
137
+ if not self.bootstrap and self.max_samples is not None:
138
+ raise ValueError(
139
+ "`max_sample` cannot be set if `bootstrap=False`. "
140
+ "Either switch to `bootstrap=True` or set "
141
+ "`max_sample=None`."
142
+ )
143
+ if not self.bootstrap and self.oob_score:
144
+ raise ValueError("Out of bag estimation only available" " if bootstrap=True")
145
+
146
+ min_observations_in_leaf_node = (
147
+ self.min_samples_leaf
148
+ if isinstance(self.min_samples_leaf, numbers.Integral)
149
+ else int(ceil(self.min_samples_leaf * n_samples))
150
+ )
151
+
152
+ min_observations_in_split_node = (
153
+ self.min_samples_split
154
+ if isinstance(self.min_samples_split, numbers.Integral)
155
+ else int(ceil(self.min_samples_split * n_samples))
156
+ )
157
+
158
+ rs = check_random_state(self.random_state)
159
+ seed = rs.randint(0, np.iinfo("i").max)
160
+
161
+ onedal_params = {
162
+ "fptype": "float" if data.dtype == np.float32 else "double",
163
+ "method": self.algorithm,
164
+ "infer_mode": self.infer_mode,
165
+ "voting_mode": self.voting_mode,
166
+ "observations_per_tree_fraction": self.observations_per_tree_fraction,
167
+ "impurity_threshold": float(
168
+ 0.0 if self.min_impurity_split is None else self.min_impurity_split
169
+ ),
170
+ "min_weight_fraction_in_leaf_node": self.min_weight_fraction_leaf,
171
+ "min_impurity_decrease_in_split_node": self.min_impurity_decrease,
172
+ "tree_count": int(self.n_estimators),
173
+ "features_per_node": self._to_absolute_max_features(n_features),
174
+ "max_tree_depth": int(0 if self.max_depth is None else self.max_depth),
175
+ "min_observations_in_leaf_node": min_observations_in_leaf_node,
176
+ "min_observations_in_split_node": min_observations_in_split_node,
177
+ "max_leaf_nodes": (0 if self.max_leaf_nodes is None else self.max_leaf_nodes),
178
+ "max_bins": self.max_bins,
179
+ "min_bin_size": self.min_bin_size,
180
+ "seed": seed,
181
+ "memory_saving_mode": False,
182
+ "bootstrap": bool(self.bootstrap),
183
+ "error_metric_mode": self.error_metric_mode,
184
+ "variable_importance_mode": self.variable_importance_mode,
185
+ }
186
+ if isinstance(self, ClassifierMixin):
187
+ onedal_params["class_count"] = (
188
+ 0 if self.classes_ is None else len(self.classes_)
189
+ )
190
+ if daal_check_version((2023, "P", 101)):
191
+ onedal_params["splitter_mode"] = self.splitter_mode
192
+ return onedal_params
193
+
194
+ def _check_parameters(self):
195
+ if isinstance(self.min_samples_leaf, numbers.Integral):
196
+ if not 1 <= self.min_samples_leaf:
197
+ raise ValueError(
198
+ "min_samples_leaf must be at least 1 "
199
+ "or in (0, 0.5], got %s" % self.min_samples_leaf
200
+ )
201
+ else: # float
202
+ if not 0.0 < self.min_samples_leaf <= 0.5:
203
+ raise ValueError(
204
+ "min_samples_leaf must be at least 1 "
205
+ "or in (0, 0.5], got %s" % self.min_samples_leaf
206
+ )
207
+ if isinstance(self.min_samples_split, numbers.Integral):
208
+ if not 2 <= self.min_samples_split:
209
+ raise ValueError(
210
+ "min_samples_split must be an integer "
211
+ "greater than 1 or a float in (0.0, 1.0]; "
212
+ "got the integer %s" % self.min_samples_split
213
+ )
214
+ else: # float
215
+ if not 0.0 < self.min_samples_split <= 1.0:
216
+ raise ValueError(
217
+ "min_samples_split must be an integer "
218
+ "greater than 1 or a float in (0.0, 1.0]; "
219
+ "got the float %s" % self.min_samples_split
220
+ )
221
+ if not 0 <= self.min_weight_fraction_leaf <= 0.5:
222
+ raise ValueError("min_weight_fraction_leaf must in [0, 0.5]")
223
+ if self.min_impurity_split is not None:
224
+ warnings.warn(
225
+ "The min_impurity_split parameter is deprecated. "
226
+ "Its default value has changed from 1e-7 to 0 in "
227
+ "version 0.23, and it will be removed in 0.25. "
228
+ "Use the min_impurity_decrease parameter instead.",
229
+ FutureWarning,
230
+ )
231
+
232
+ if self.min_impurity_split < 0.0:
233
+ raise ValueError(
234
+ "min_impurity_split must be greater than " "or equal to 0"
235
+ )
236
+ if self.min_impurity_decrease < 0.0:
237
+ raise ValueError(
238
+ "min_impurity_decrease must be greater than " "or equal to 0"
239
+ )
240
+ if self.max_leaf_nodes is not None:
241
+ if not isinstance(self.max_leaf_nodes, numbers.Integral):
242
+ raise ValueError(
243
+ "max_leaf_nodes must be integral number but was "
244
+ "%r" % self.max_leaf_nodes
245
+ )
246
+ if self.max_leaf_nodes < 2:
247
+ raise ValueError(
248
+ ("max_leaf_nodes {0} must be either None " "or larger than 1").format(
249
+ self.max_leaf_nodes
250
+ )
251
+ )
252
+ if isinstance(self.max_bins, numbers.Integral):
253
+ if not 2 <= self.max_bins:
254
+ raise ValueError("max_bins must be at least 2, got %s" % self.max_bins)
255
+ else:
256
+ raise ValueError(
257
+ "max_bins must be integral number but was " "%r" % self.max_bins
258
+ )
259
+ if isinstance(self.min_bin_size, numbers.Integral):
260
+ if not 1 <= self.min_bin_size:
261
+ raise ValueError(
262
+ "min_bin_size must be at least 1, got %s" % self.min_bin_size
263
+ )
264
+ else:
265
+ raise ValueError(
266
+ "min_bin_size must be integral number but was " "%r" % self.min_bin_size
267
+ )
268
+
269
+ def _validate_targets(self, y, dtype):
270
+ self.class_weight_ = None
271
+ self.classes_ = None
272
+ return _column_or_1d(y, warn=True).astype(dtype, copy=False)
273
+
274
+ def _get_sample_weight(self, sample_weight, X):
275
+ sample_weight = np.asarray(sample_weight, dtype=X.dtype).ravel()
276
+
277
+ sample_weight = _check_array(
278
+ sample_weight, accept_sparse=False, ensure_2d=False, dtype=X.dtype, order="C"
279
+ )
280
+
281
+ if sample_weight.size != X.shape[0]:
282
+ raise ValueError(
283
+ "sample_weight and X have incompatible shapes: "
284
+ "%r vs %r\n"
285
+ "Note: Sparse matrices cannot be indexed w/"
286
+ "boolean masks (use `indices=True` in CV)."
287
+ % (sample_weight.shape, X.shape)
288
+ )
289
+
290
+ return sample_weight
291
+
292
+ def _fit(self, X, y, sample_weight, module, queue):
293
+ X, y = _check_X_y(
294
+ X,
295
+ y,
296
+ dtype=[np.float64, np.float32],
297
+ force_all_finite=True,
298
+ accept_sparse="csr",
299
+ )
300
+ y = self._validate_targets(y, X.dtype)
301
+
302
+ self.n_features_in_ = X.shape[1]
303
+
304
+ if sample_weight is not None and len(sample_weight) > 0:
305
+ sample_weight = self._get_sample_weight(sample_weight, X)
306
+ data = (X, y, sample_weight)
307
+ else:
308
+ data = (X, y)
309
+ policy = self._get_policy(queue, *data)
310
+ data = _convert_to_supported(policy, *data)
311
+ params = self._get_onedal_params(data[0])
312
+ train_result = module.train(policy, params, *to_table(*data))
313
+
314
+ self._onedal_model = train_result.model
315
+
316
+ if self.oob_score:
317
+ if isinstance(self, ClassifierMixin):
318
+ self.oob_score_ = from_table(train_result.oob_err_accuracy).item()
319
+ self.oob_decision_function_ = from_table(
320
+ train_result.oob_err_decision_function
321
+ )
322
+ if np.any(self.oob_decision_function_ == 0):
323
+ warnings.warn(
324
+ "Some inputs do not have OOB scores. This probably means "
325
+ "too few trees were used to compute any reliable OOB "
326
+ "estimates.",
327
+ UserWarning,
328
+ )
329
+ else:
330
+ self.oob_score_ = from_table(train_result.oob_err_r2).item()
331
+ self.oob_prediction_ = from_table(
332
+ train_result.oob_err_prediction
333
+ ).reshape(-1)
334
+ if np.any(self.oob_prediction_ == 0):
335
+ warnings.warn(
336
+ "Some inputs do not have OOB scores. This probably means "
337
+ "too few trees were used to compute any reliable OOB "
338
+ "estimates.",
339
+ UserWarning,
340
+ )
341
+
342
+ return self
343
+
344
+ def _create_model(self, module):
345
+ # TODO:
346
+ # upate error msg.
347
+ raise NotImplementedError("Creating model is not supported.")
348
+
349
+ def _predict(self, X, module, queue):
350
+ _check_is_fitted(self)
351
+ X = _check_array(
352
+ X, dtype=[np.float64, np.float32], force_all_finite=True, accept_sparse=False
353
+ )
354
+ _check_n_features(self, X, False)
355
+ policy = self._get_policy(queue, X)
356
+
357
+ model = self._onedal_model
358
+ X = _convert_to_supported(policy, X)
359
+ params = self._get_onedal_params(X)
360
+ result = module.infer(policy, params, model, to_table(X))
361
+ y = from_table(result.responses)
362
+ return y
363
+
364
+ def _predict_proba(self, X, module, queue):
365
+ _check_is_fitted(self)
366
+ X = _check_array(
367
+ X, dtype=[np.float64, np.float32], force_all_finite=True, accept_sparse=False
368
+ )
369
+ _check_n_features(self, X, False)
370
+ policy = self._get_policy(queue, X)
371
+ X = _convert_to_supported(policy, X)
372
+ params = self._get_onedal_params(X)
373
+ params["infer_mode"] = "class_probabilities"
374
+
375
+ model = self._onedal_model
376
+ result = module.infer(policy, params, model, to_table(X))
377
+ y = from_table(result.probabilities)
378
+ return y
379
+
380
+
381
+ class RandomForestClassifier(ClassifierMixin, BaseForest, metaclass=ABCMeta):
382
+ def __init__(
383
+ self,
384
+ n_estimators=100,
385
+ criterion="gini",
386
+ max_depth=None,
387
+ min_samples_split=2,
388
+ min_samples_leaf=1,
389
+ min_weight_fraction_leaf=0.0,
390
+ max_features="sqrt",
391
+ max_leaf_nodes=None,
392
+ min_impurity_decrease=0.0,
393
+ min_impurity_split=None,
394
+ bootstrap=True,
395
+ oob_score=False,
396
+ random_state=None,
397
+ warm_start=False,
398
+ class_weight=None,
399
+ ccp_alpha=0.0,
400
+ max_samples=None,
401
+ max_bins=256,
402
+ min_bin_size=1,
403
+ infer_mode="class_responses",
404
+ splitter_mode="best",
405
+ voting_mode="weighted",
406
+ error_metric_mode="none",
407
+ variable_importance_mode="none",
408
+ algorithm="hist",
409
+ **kwargs,
410
+ ):
411
+ super().__init__(
412
+ n_estimators=n_estimators,
413
+ criterion=criterion,
414
+ max_depth=max_depth,
415
+ min_samples_split=min_samples_split,
416
+ min_samples_leaf=min_samples_leaf,
417
+ min_weight_fraction_leaf=min_weight_fraction_leaf,
418
+ max_features=max_features,
419
+ max_leaf_nodes=max_leaf_nodes,
420
+ min_impurity_decrease=min_impurity_decrease,
421
+ min_impurity_split=min_impurity_split,
422
+ bootstrap=bootstrap,
423
+ oob_score=oob_score,
424
+ random_state=random_state,
425
+ warm_start=warm_start,
426
+ class_weight=class_weight,
427
+ ccp_alpha=ccp_alpha,
428
+ max_samples=max_samples,
429
+ max_bins=max_bins,
430
+ min_bin_size=min_bin_size,
431
+ infer_mode=infer_mode,
432
+ splitter_mode=splitter_mode,
433
+ voting_mode=voting_mode,
434
+ error_metric_mode=error_metric_mode,
435
+ variable_importance_mode=variable_importance_mode,
436
+ algorithm=algorithm,
437
+ )
438
+
439
+ def _validate_targets(self, y, dtype):
440
+ y, self.class_weight_, self.classes_ = _validate_targets(
441
+ y, self.class_weight, dtype
442
+ )
443
+
444
+ # Decapsulate classes_ attributes
445
+ # TODO:
446
+ # align with `n_classes_` and `classes_` attr with daal4py implementations.
447
+ # if hasattr(self, "classes_"):
448
+ # self.n_classes_ = self.classes_
449
+ return y
450
+
451
+ def fit(self, X, y, sample_weight=None, queue=None):
452
+ return self._fit(
453
+ X,
454
+ y,
455
+ sample_weight,
456
+ self._get_backend("decision_forest", "classification", None),
457
+ queue,
458
+ )
459
+
460
+ def predict(self, X, queue=None):
461
+ pred = super()._predict(
462
+ X, self._get_backend("decision_forest", "classification", None), queue
463
+ )
464
+
465
+ return np.take(self.classes_, pred.ravel().astype(np.int64, casting="unsafe"))
466
+
467
+ def predict_proba(self, X, queue=None):
468
+ return super()._predict_proba(
469
+ X, self._get_backend("decision_forest", "classification", None), queue
470
+ )
471
+
472
+
473
+ class RandomForestRegressor(RegressorMixin, BaseForest, metaclass=ABCMeta):
474
+ def __init__(
475
+ self,
476
+ n_estimators=100,
477
+ criterion="squared_error",
478
+ max_depth=None,
479
+ min_samples_split=2,
480
+ min_samples_leaf=1,
481
+ min_weight_fraction_leaf=0.0,
482
+ max_features=1.0,
483
+ max_leaf_nodes=None,
484
+ min_impurity_decrease=0.0,
485
+ min_impurity_split=None,
486
+ bootstrap=True,
487
+ oob_score=False,
488
+ random_state=None,
489
+ warm_start=False,
490
+ class_weight=None,
491
+ ccp_alpha=0.0,
492
+ max_samples=None,
493
+ max_bins=256,
494
+ min_bin_size=1,
495
+ infer_mode="class_responses",
496
+ splitter_mode="best",
497
+ voting_mode="weighted",
498
+ error_metric_mode="none",
499
+ variable_importance_mode="none",
500
+ algorithm="hist",
501
+ **kwargs,
502
+ ):
503
+ super().__init__(
504
+ n_estimators=n_estimators,
505
+ criterion=criterion,
506
+ max_depth=max_depth,
507
+ min_samples_split=min_samples_split,
508
+ min_samples_leaf=min_samples_leaf,
509
+ min_weight_fraction_leaf=min_weight_fraction_leaf,
510
+ max_features=max_features,
511
+ max_leaf_nodes=max_leaf_nodes,
512
+ min_impurity_decrease=min_impurity_decrease,
513
+ min_impurity_split=min_impurity_split,
514
+ bootstrap=bootstrap,
515
+ oob_score=oob_score,
516
+ random_state=random_state,
517
+ warm_start=warm_start,
518
+ class_weight=class_weight,
519
+ ccp_alpha=ccp_alpha,
520
+ max_samples=max_samples,
521
+ max_bins=max_bins,
522
+ min_bin_size=min_bin_size,
523
+ infer_mode=infer_mode,
524
+ splitter_mode=splitter_mode,
525
+ voting_mode=voting_mode,
526
+ error_metric_mode=error_metric_mode,
527
+ variable_importance_mode=variable_importance_mode,
528
+ algorithm=algorithm,
529
+ )
530
+
531
+ def fit(self, X, y, sample_weight=None, queue=None):
532
+ if sample_weight is not None:
533
+ if hasattr(sample_weight, "__array__"):
534
+ sample_weight[sample_weight == 0.0] = 1.0
535
+ sample_weight = [sample_weight]
536
+ return super()._fit(
537
+ X,
538
+ y,
539
+ sample_weight,
540
+ self._get_backend("decision_forest", "regression", None),
541
+ queue,
542
+ )
543
+
544
+ def predict(self, X, queue=None):
545
+ return (
546
+ super()
547
+ ._predict(X, self._get_backend("decision_forest", "regression", None), queue)
548
+ .ravel()
549
+ )
550
+
551
+
552
+ class ExtraTreesClassifier(ClassifierMixin, BaseForest, metaclass=ABCMeta):
553
+ def __init__(
554
+ self,
555
+ n_estimators=100,
556
+ criterion="gini",
557
+ max_depth=None,
558
+ min_samples_split=2,
559
+ min_samples_leaf=1,
560
+ min_weight_fraction_leaf=0.0,
561
+ max_features="sqrt",
562
+ max_leaf_nodes=None,
563
+ min_impurity_decrease=0.0,
564
+ min_impurity_split=None,
565
+ bootstrap=False,
566
+ oob_score=False,
567
+ random_state=None,
568
+ warm_start=False,
569
+ class_weight=None,
570
+ ccp_alpha=0.0,
571
+ max_samples=None,
572
+ max_bins=256,
573
+ min_bin_size=1,
574
+ infer_mode="class_responses",
575
+ splitter_mode="random",
576
+ voting_mode="weighted",
577
+ error_metric_mode="none",
578
+ variable_importance_mode="none",
579
+ algorithm="hist",
580
+ **kwargs,
581
+ ):
582
+ super().__init__(
583
+ n_estimators=n_estimators,
584
+ criterion=criterion,
585
+ max_depth=max_depth,
586
+ min_samples_split=min_samples_split,
587
+ min_samples_leaf=min_samples_leaf,
588
+ min_weight_fraction_leaf=min_weight_fraction_leaf,
589
+ max_features=max_features,
590
+ max_leaf_nodes=max_leaf_nodes,
591
+ min_impurity_decrease=min_impurity_decrease,
592
+ min_impurity_split=min_impurity_split,
593
+ bootstrap=bootstrap,
594
+ oob_score=oob_score,
595
+ random_state=random_state,
596
+ warm_start=warm_start,
597
+ class_weight=class_weight,
598
+ ccp_alpha=ccp_alpha,
599
+ max_samples=max_samples,
600
+ max_bins=max_bins,
601
+ min_bin_size=min_bin_size,
602
+ infer_mode=infer_mode,
603
+ splitter_mode=splitter_mode,
604
+ voting_mode=voting_mode,
605
+ error_metric_mode=error_metric_mode,
606
+ variable_importance_mode=variable_importance_mode,
607
+ algorithm=algorithm,
608
+ )
609
+
610
+ def _validate_targets(self, y, dtype):
611
+ y, self.class_weight_, self.classes_ = _validate_targets(
612
+ y, self.class_weight, dtype
613
+ )
614
+
615
+ # Decapsulate classes_ attributes
616
+ # TODO:
617
+ # align with `n_classes_` and `classes_` attr with daal4py implementations.
618
+ # if hasattr(self, "classes_"):
619
+ # self.n_classes_ = self.classes_
620
+ return y
621
+
622
+ def fit(self, X, y, sample_weight=None, queue=None):
623
+ return self._fit(
624
+ X,
625
+ y,
626
+ sample_weight,
627
+ self._get_backend("decision_forest", "classification", None),
628
+ queue,
629
+ )
630
+
631
+ def predict(self, X, queue=None):
632
+ pred = super()._predict(
633
+ X, self._get_backend("decision_forest", "classification", None), queue
634
+ )
635
+
636
+ return np.take(self.classes_, pred.ravel().astype(np.int64, casting="unsafe"))
637
+
638
+ def predict_proba(self, X, queue=None):
639
+ return super()._predict_proba(
640
+ X, self._get_backend("decision_forest", "classification", None), queue
641
+ )
642
+
643
+
644
+ class ExtraTreesRegressor(RegressorMixin, BaseForest, metaclass=ABCMeta):
645
+ def __init__(
646
+ self,
647
+ n_estimators=100,
648
+ criterion="squared_error",
649
+ max_depth=None,
650
+ min_samples_split=2,
651
+ min_samples_leaf=1,
652
+ min_weight_fraction_leaf=0.0,
653
+ max_features=1.0,
654
+ max_leaf_nodes=None,
655
+ min_impurity_decrease=0.0,
656
+ min_impurity_split=None,
657
+ bootstrap=False,
658
+ oob_score=False,
659
+ random_state=None,
660
+ warm_start=False,
661
+ class_weight=None,
662
+ ccp_alpha=0.0,
663
+ max_samples=None,
664
+ max_bins=256,
665
+ min_bin_size=1,
666
+ infer_mode="class_responses",
667
+ splitter_mode="random",
668
+ voting_mode="weighted",
669
+ error_metric_mode="none",
670
+ variable_importance_mode="none",
671
+ algorithm="hist",
672
+ **kwargs,
673
+ ):
674
+ super().__init__(
675
+ n_estimators=n_estimators,
676
+ criterion=criterion,
677
+ max_depth=max_depth,
678
+ min_samples_split=min_samples_split,
679
+ min_samples_leaf=min_samples_leaf,
680
+ min_weight_fraction_leaf=min_weight_fraction_leaf,
681
+ max_features=max_features,
682
+ max_leaf_nodes=max_leaf_nodes,
683
+ min_impurity_decrease=min_impurity_decrease,
684
+ min_impurity_split=min_impurity_split,
685
+ bootstrap=bootstrap,
686
+ oob_score=oob_score,
687
+ random_state=random_state,
688
+ warm_start=warm_start,
689
+ class_weight=class_weight,
690
+ ccp_alpha=ccp_alpha,
691
+ max_samples=max_samples,
692
+ max_bins=max_bins,
693
+ min_bin_size=min_bin_size,
694
+ infer_mode=infer_mode,
695
+ splitter_mode=splitter_mode,
696
+ voting_mode=voting_mode,
697
+ error_metric_mode=error_metric_mode,
698
+ variable_importance_mode=variable_importance_mode,
699
+ algorithm=algorithm,
700
+ )
701
+
702
+ def fit(self, X, y, sample_weight=None, queue=None):
703
+ if sample_weight is not None:
704
+ if hasattr(sample_weight, "__array__"):
705
+ sample_weight[sample_weight == 0.0] = 1.0
706
+ sample_weight = [sample_weight]
707
+ return super()._fit(
708
+ X,
709
+ y,
710
+ sample_weight,
711
+ self._get_backend("decision_forest", "regression", None),
712
+ queue,
713
+ )
714
+
715
+ def predict(self, X, queue=None):
716
+ return (
717
+ super()
718
+ ._predict(X, self._get_backend("decision_forest", "regression", None), queue)
719
+ .ravel()
720
+ )