scikit-learn-intelex 2024.0.1__py312-none-win_amd64.whl → 2025.1.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 (275) hide show
  1. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp312-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/cluster/__init__.py +3 -3
  12. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +4 -2
  16. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
  18. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
  19. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -30
  23. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  27. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +4 -3
  34. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
  37. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -3
  39. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
  44. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -42
  46. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
  47. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/linear_model → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
  56. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
  61. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_device_offload.py +222 -0
  62. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  65. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  66. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  67. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  68. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  69. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  70. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  71. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +564 -0
  72. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  73. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  74. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  75. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  76. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  77. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  78. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  79. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  80. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  81. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
  82. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
  83. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  84. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  85. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  86. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  88. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  89. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +154 -0
  90. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
  91. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +414 -0
  92. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -3
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  97. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
  98. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  99. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  100. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  101. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  102. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  103. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
  106. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  108. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  109. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
  110. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  112. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  113. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  114. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  116. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  117. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  118. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  119. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  120. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  121. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  122. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  123. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  124. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  125. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  126. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  127. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  128. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
  129. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +12 -7
  130. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -1
  131. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
  132. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  133. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +42 -5
  134. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  135. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
  136. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
  137. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
  138. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
  139. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -2
  140. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +18 -8
  141. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
  142. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -7
  143. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
  144. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  145. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  146. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
  147. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
  148. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -1
  149. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
  150. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +26 -6
  151. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +242 -28
  152. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -1
  153. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +262 -180
  154. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -22
  155. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -1
  156. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -3
  157. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  158. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -1
  159. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
  160. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
  161. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
  162. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +413 -0
  163. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +24 -0
  164. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
  165. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  166. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  167. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
  168. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -1
  169. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +21 -0
  170. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -1
  171. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -1
  172. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -1
  173. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -1
  174. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -1
  175. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -1
  176. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -1
  177. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -1
  178. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -2
  179. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
  180. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +54 -8
  181. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +51 -151
  182. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +46 -146
  183. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +53 -95
  184. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +16 -19
  185. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
  186. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance}/__init__.py +19 -20
  187. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +138 -0
  188. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +66 -0
  189. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  190. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
  191. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  192. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +19 -18
  193. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
  194. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  195. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
  196. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  197. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  198. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  199. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  200. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  201. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  202. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  203. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  204. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  205. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  206. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  207. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
  208. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  209. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  210. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  211. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  212. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  213. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
  214. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
  215. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  216. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  217. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  218. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  219. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  220. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -1
  221. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  222. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +172 -73
  223. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +73 -66
  224. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +171 -73
  225. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +65 -62
  226. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -21
  227. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
  228. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  229. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
  230. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
  231. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  232. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  233. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
  234. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
  235. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
  236. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
  237. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  238. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  239. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
  240. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -1
  241. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
  242. scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
  243. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
  244. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
  245. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -18
  246. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -31
  247. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -18
  248. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -28
  249. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -373
  250. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -18
  251. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -77
  252. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -29
  253. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -437
  254. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  255. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -370
  256. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -376
  257. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
  258. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -225
  259. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -210
  260. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  261. scikit_learn_intelex-2024.0.1.dist-info/RECORD +0 -90
  262. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  263. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  264. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  265. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  266. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  267. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  268. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  269. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  270. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  271. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  272. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  273. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  274. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
  275. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ==============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -21,13 +20,16 @@ from abc import ABC
21
20
 
22
21
  import numpy as np
23
22
  from scipy import sparse as sp
24
- from sklearn.base import clone
25
- from sklearn.ensemble import ExtraTreesClassifier as sklearn_ExtraTreesClassifier
26
- from sklearn.ensemble import ExtraTreesRegressor as sklearn_ExtraTreesRegressor
27
- from sklearn.ensemble import RandomForestClassifier as sklearn_RandomForestClassifier
28
- from sklearn.ensemble import RandomForestRegressor as sklearn_RandomForestRegressor
23
+ from sklearn.base import BaseEstimator, clone
24
+ from sklearn.ensemble import ExtraTreesClassifier as _sklearn_ExtraTreesClassifier
25
+ from sklearn.ensemble import ExtraTreesRegressor as _sklearn_ExtraTreesRegressor
26
+ from sklearn.ensemble import RandomForestClassifier as _sklearn_RandomForestClassifier
27
+ from sklearn.ensemble import RandomForestRegressor as _sklearn_RandomForestRegressor
28
+ from sklearn.ensemble._forest import ForestClassifier as _sklearn_ForestClassifier
29
+ from sklearn.ensemble._forest import ForestRegressor as _sklearn_ForestRegressor
29
30
  from sklearn.ensemble._forest import _get_n_samples_bootstrap
30
31
  from sklearn.exceptions import DataConversionWarning
32
+ from sklearn.metrics import accuracy_score, r2_score
31
33
  from sklearn.tree import (
32
34
  DecisionTreeClassifier,
33
35
  DecisionTreeRegressor,
@@ -37,12 +39,13 @@ from sklearn.tree import (
37
39
  from sklearn.tree._tree import Tree
38
40
  from sklearn.utils import check_random_state, deprecated
39
41
  from sklearn.utils.validation import (
42
+ _check_sample_weight,
40
43
  check_array,
41
- check_consistent_length,
42
44
  check_is_fitted,
43
45
  check_X_y,
44
46
  )
45
47
 
48
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
46
49
  from daal4py.sklearn._utils import (
47
50
  check_tree_nodes,
48
51
  daal_check_version,
@@ -52,53 +55,43 @@ from onedal.ensemble import ExtraTreesClassifier as onedal_ExtraTreesClassifier
52
55
  from onedal.ensemble import ExtraTreesRegressor as onedal_ExtraTreesRegressor
53
56
  from onedal.ensemble import RandomForestClassifier as onedal_RandomForestClassifier
54
57
  from onedal.ensemble import RandomForestRegressor as onedal_RandomForestRegressor
55
-
56
- # try catch needed for changes in structures observed in Scikit-learn around v0.22
57
- try:
58
- from sklearn.ensemble._forest import ForestClassifier as sklearn_ForestClassifier
59
- from sklearn.ensemble._forest import ForestRegressor as sklearn_ForestRegressor
60
- except ModuleNotFoundError:
61
- from sklearn.ensemble.forest import ForestClassifier as sklearn_ForestClassifier
62
- from sklearn.ensemble.forest import ForestRegressor as sklearn_ForestRegressor
63
-
64
58
  from onedal.primitives import get_tree_state_cls, get_tree_state_reg
65
59
  from onedal.utils import _num_features, _num_samples
60
+ from sklearnex import get_hyperparameters
61
+ from sklearnex._utils import register_hyperparameters
66
62
 
67
- from .._config import get_config
68
63
  from .._device_offload import dispatch, wrap_output_data
69
64
  from .._utils import PatchingConditionsChain
65
+ from ..utils._array_api import get_namespace
70
66
 
71
67
  if sklearn_check_version("1.2"):
72
68
  from sklearn.utils._param_validation import Interval
73
69
  if sklearn_check_version("1.4"):
74
70
  from daal4py.sklearn.utils import _assert_all_finite
75
71
 
72
+ if sklearn_check_version("1.6"):
73
+ from sklearn.utils.validation import validate_data
74
+ else:
75
+ validate_data = BaseEstimator._validate_data
76
+
76
77
 
77
78
  class BaseForest(ABC):
78
79
  _onedal_factory = None
79
80
 
80
81
  def _onedal_fit(self, X, y, sample_weight=None, queue=None):
81
- if sklearn_check_version("0.24"):
82
- X, y = self._validate_data(
83
- X,
84
- y,
85
- multi_output=False,
86
- accept_sparse=False,
87
- dtype=[np.float64, np.float32],
88
- force_all_finite=False,
89
- )
90
- else:
91
- X, y = check_X_y(
92
- X,
93
- y,
94
- accept_sparse=False,
95
- dtype=[np.float64, np.float32],
96
- multi_output=False,
97
- force_all_finite=False,
98
- )
82
+ X, y = validate_data(
83
+ self,
84
+ X,
85
+ y,
86
+ multi_output=True,
87
+ accept_sparse=False,
88
+ dtype=[np.float64, np.float32],
89
+ force_all_finite=False,
90
+ ensure_2d=True,
91
+ )
99
92
 
100
93
  if sample_weight is not None:
101
- sample_weight = self.check_sample_weight(sample_weight, X)
94
+ sample_weight = _check_sample_weight(sample_weight, X)
102
95
 
103
96
  if y.ndim == 2 and y.shape[1] == 1:
104
97
  warnings.warn(
@@ -114,9 +107,9 @@ class BaseForest(ABC):
114
107
  # [:, np.newaxis] that does not.
115
108
  y = np.reshape(y, (-1, 1))
116
109
 
117
- y, expanded_class_weight = self._validate_y_class_weight(y)
110
+ self._n_samples, self.n_outputs_ = y.shape
118
111
 
119
- self.n_features_in_ = X.shape[1]
112
+ y, expanded_class_weight = self._validate_y_class_weight(y)
120
113
 
121
114
  if expanded_class_weight is not None:
122
115
  if sample_weight is not None:
@@ -133,7 +126,9 @@ class BaseForest(ABC):
133
126
  "min_samples_split": self.min_samples_split,
134
127
  "min_samples_leaf": self.min_samples_leaf,
135
128
  "min_weight_fraction_leaf": self.min_weight_fraction_leaf,
136
- "max_features": self.max_features,
129
+ "max_features": self._to_absolute_max_features(
130
+ self.max_features, self.n_features_in_
131
+ ),
137
132
  "max_leaf_nodes": self.max_leaf_nodes,
138
133
  "min_impurity_decrease": self.min_impurity_decrease,
139
134
  "bootstrap": self.bootstrap,
@@ -171,15 +166,6 @@ class BaseForest(ABC):
171
166
 
172
167
  return self
173
168
 
174
- def _fit_proba(self, X, y, sample_weight=None, queue=None):
175
- params = self.get_params()
176
- self.__class__(**params)
177
-
178
- # We use stock metaestimators below, so the only way
179
- # to pass a queue is using config_context.
180
- cfg = get_config()
181
- cfg["target_offload"] = queue
182
-
183
169
  def _save_attributes(self):
184
170
  if self.oob_score:
185
171
  self.oob_score_ = self._onedal_estimator.oob_score_
@@ -189,12 +175,58 @@ class BaseForest(ABC):
189
175
  self.oob_decision_function_ = (
190
176
  self._onedal_estimator.oob_decision_function_
191
177
  )
192
-
178
+ if self.bootstrap:
179
+ self._n_samples_bootstrap = max(
180
+ round(
181
+ self._onedal_estimator.observations_per_tree_fraction
182
+ * self._n_samples
183
+ ),
184
+ 1,
185
+ )
186
+ else:
187
+ self._n_samples_bootstrap = None
193
188
  self._validate_estimator()
194
189
  return self
195
190
 
196
- # TODO:
197
- # move to onedal modul.
191
+ def _to_absolute_max_features(self, max_features, n_features):
192
+ if max_features is None:
193
+ return n_features
194
+ if isinstance(max_features, str):
195
+ if max_features == "auto":
196
+ if not sklearn_check_version("1.3"):
197
+ if sklearn_check_version("1.1"):
198
+ warnings.warn(
199
+ "`max_features='auto'` has been deprecated in 1.1 "
200
+ "and will be removed in 1.3. To keep the past behaviour, "
201
+ "explicitly set `max_features=1.0` or remove this "
202
+ "parameter as it is also the default value for "
203
+ "RandomForestRegressors and ExtraTreesRegressors.",
204
+ FutureWarning,
205
+ )
206
+ return (
207
+ max(1, int(np.sqrt(n_features)))
208
+ if isinstance(self, ForestClassifier)
209
+ else n_features
210
+ )
211
+ if max_features == "sqrt":
212
+ return max(1, int(np.sqrt(n_features)))
213
+ if max_features == "log2":
214
+ return max(1, int(np.log2(n_features)))
215
+ allowed_string_values = (
216
+ '"sqrt" or "log2"'
217
+ if sklearn_check_version("1.3")
218
+ else '"auto", "sqrt" or "log2"'
219
+ )
220
+ raise ValueError(
221
+ "Invalid value for max_features. Allowed string "
222
+ f"values are {allowed_string_values}."
223
+ )
224
+ if isinstance(max_features, (numbers.Integral, np.integer)):
225
+ return max_features
226
+ if max_features > 0.0:
227
+ return max(1, int(max_features * n_features))
228
+ return 0
229
+
198
230
  def _check_parameters(self):
199
231
  if isinstance(self.min_samples_leaf, numbers.Integral):
200
232
  if not 1 <= self.min_samples_leaf:
@@ -270,38 +302,6 @@ class BaseForest(ABC):
270
302
  "min_bin_size must be integral number but was " "%r" % self.min_bin_size
271
303
  )
272
304
 
273
- def check_sample_weight(self, sample_weight, X, dtype=None):
274
- n_samples = _num_samples(X)
275
-
276
- if dtype is not None and dtype not in [np.float32, np.float64]:
277
- dtype = np.float64
278
-
279
- if sample_weight is None:
280
- sample_weight = np.ones(n_samples, dtype=dtype)
281
- elif isinstance(sample_weight, numbers.Number):
282
- sample_weight = np.full(n_samples, sample_weight, dtype=dtype)
283
- else:
284
- if dtype is None:
285
- dtype = [np.float64, np.float32]
286
- sample_weight = check_array(
287
- sample_weight,
288
- accept_sparse=False,
289
- ensure_2d=False,
290
- dtype=dtype,
291
- order="C",
292
- force_all_finite=False,
293
- )
294
- if sample_weight.ndim != 1:
295
- raise ValueError("Sample weights must be 1D array or scalar")
296
-
297
- if sample_weight.shape != (n_samples,):
298
- raise ValueError(
299
- "sample_weight.shape == {}, expected {}!".format(
300
- sample_weight.shape, (n_samples,)
301
- )
302
- )
303
- return sample_weight
304
-
305
305
  @property
306
306
  def estimators_(self):
307
307
  if hasattr(self, "_cached_estimators_"):
@@ -402,7 +402,7 @@ class BaseForest(ABC):
402
402
  self.estimator = estimator
403
403
 
404
404
 
405
- class ForestClassifier(sklearn_ForestClassifier, BaseForest):
405
+ class ForestClassifier(_sklearn_ForestClassifier, BaseForest):
406
406
  # Surprisingly, even though scikit-learn warns against using
407
407
  # their ForestClassifier directly, it actually has a more stable
408
408
  # API than the user-facing objects (over time). If they change it
@@ -442,14 +442,12 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
442
442
 
443
443
  # The estimator is checked against the class attribute for conformance.
444
444
  # This should only trigger if the user uses this class directly.
445
- if (
446
- self.estimator.__class__ == DecisionTreeClassifier
447
- and self._onedal_factory != onedal_RandomForestClassifier
445
+ if self.estimator.__class__ == DecisionTreeClassifier and not issubclass(
446
+ self._onedal_factory, onedal_RandomForestClassifier
448
447
  ):
449
448
  self._onedal_factory = onedal_RandomForestClassifier
450
- elif (
451
- self.estimator.__class__ == ExtraTreeClassifier
452
- and self._onedal_factory != onedal_ExtraTreesClassifier
449
+ elif self.estimator.__class__ == ExtraTreeClassifier and not issubclass(
450
+ self._onedal_factory, onedal_ExtraTreesClassifier
453
451
  ):
454
452
  self._onedal_factory = onedal_ExtraTreesClassifier
455
453
 
@@ -468,7 +466,7 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
468
466
  "fit",
469
467
  {
470
468
  "onedal": self.__class__._onedal_fit,
471
- "sklearn": sklearn_ForestClassifier.fit,
469
+ "sklearn": _sklearn_ForestClassifier.fit,
472
470
  },
473
471
  X,
474
472
  y,
@@ -541,18 +539,14 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
541
539
  )
542
540
 
543
541
  if patching_status.get_status():
544
- if sklearn_check_version("0.24"):
545
- X, y = self._validate_data(
546
- X,
547
- y,
548
- multi_output=True,
549
- accept_sparse=True,
550
- dtype=[np.float64, np.float32],
551
- force_all_finite=False,
552
- )
553
- else:
554
- X = check_array(X, dtype=[np.float64, np.float32], force_all_finite=False)
555
- y = check_array(y, ensure_2d=False, dtype=X.dtype, force_all_finite=False)
542
+ X, y = check_X_y(
543
+ X,
544
+ y,
545
+ multi_output=True,
546
+ accept_sparse=True,
547
+ dtype=[np.float64, np.float32],
548
+ force_all_finite=False,
549
+ )
556
550
 
557
551
  if y.ndim == 2 and y.shape[1] == 1:
558
552
  warnings.warn(
@@ -606,12 +600,13 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
606
600
 
607
601
  @wrap_output_data
608
602
  def predict(self, X):
603
+ check_is_fitted(self)
609
604
  return dispatch(
610
605
  self,
611
606
  "predict",
612
607
  {
613
608
  "onedal": self.__class__._onedal_predict,
614
- "sklearn": sklearn_ForestClassifier.predict,
609
+ "sklearn": _sklearn_ForestClassifier.predict,
615
610
  },
616
611
  X,
617
612
  )
@@ -621,34 +616,50 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
621
616
  # TODO:
622
617
  # _check_proba()
623
618
  # self._check_proba()
624
- if sklearn_check_version("1.0"):
625
- self._check_feature_names(X, reset=False)
626
- if hasattr(self, "n_features_in_"):
627
- try:
628
- num_features = _num_features(X)
629
- except TypeError:
630
- num_features = _num_samples(X)
631
- if num_features != self.n_features_in_:
632
- raise ValueError(
633
- (
634
- f"X has {num_features} features, "
635
- f"but {self.__class__.__name__} is expecting "
636
- f"{self.n_features_in_} features as input"
637
- )
638
- )
619
+ check_is_fitted(self)
639
620
  return dispatch(
640
621
  self,
641
622
  "predict_proba",
642
623
  {
643
624
  "onedal": self.__class__._onedal_predict_proba,
644
- "sklearn": sklearn_ForestClassifier.predict_proba,
625
+ "sklearn": _sklearn_ForestClassifier.predict_proba,
645
626
  },
646
627
  X,
647
628
  )
648
629
 
649
- fit.__doc__ = sklearn_ForestClassifier.fit.__doc__
650
- predict.__doc__ = sklearn_ForestClassifier.predict.__doc__
651
- predict_proba.__doc__ = sklearn_ForestClassifier.predict_proba.__doc__
630
+ def predict_log_proba(self, X):
631
+ xp, _ = get_namespace(X)
632
+ proba = self.predict_proba(X)
633
+
634
+ if self.n_outputs_ == 1:
635
+ return xp.log(proba)
636
+
637
+ else:
638
+ for k in range(self.n_outputs_):
639
+ proba[k] = xp.log(proba[k])
640
+
641
+ return proba
642
+
643
+ @wrap_output_data
644
+ def score(self, X, y, sample_weight=None):
645
+ check_is_fitted(self)
646
+ return dispatch(
647
+ self,
648
+ "score",
649
+ {
650
+ "onedal": self.__class__._onedal_score,
651
+ "sklearn": _sklearn_ForestClassifier.score,
652
+ },
653
+ X,
654
+ y,
655
+ sample_weight=sample_weight,
656
+ )
657
+
658
+ fit.__doc__ = _sklearn_ForestClassifier.fit.__doc__
659
+ predict.__doc__ = _sklearn_ForestClassifier.predict.__doc__
660
+ predict_proba.__doc__ = _sklearn_ForestClassifier.predict_proba.__doc__
661
+ predict_log_proba.__doc__ = _sklearn_ForestClassifier.predict_log_proba.__doc__
662
+ score.__doc__ = _sklearn_ForestClassifier.score.__doc__
652
663
 
653
664
  def _onedal_cpu_supported(self, method_name, *data):
654
665
  class_name = self.__class__.__name__
@@ -675,7 +686,7 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
675
686
  ]
676
687
  )
677
688
 
678
- elif method_name in ["predict", "predict_proba"]:
689
+ elif method_name in ["predict", "predict_proba", "score"]:
679
690
  X = data[0]
680
691
 
681
692
  patching_status.and_conditions(
@@ -736,11 +747,15 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
736
747
  or self.estimator.__class__ == DecisionTreeClassifier,
737
748
  "ExtraTrees only supported starting from oneDAL version 2023.1",
738
749
  ),
739
- (sample_weight is not None, "sample_weight is not supported."),
750
+ (
751
+ not self.oob_score,
752
+ "oob_scores using r2 or accuracy not implemented.",
753
+ ),
754
+ (sample_weight is None, "sample_weight is not supported."),
740
755
  ]
741
756
  )
742
757
 
743
- elif method_name in ["predict", "predict_proba"]:
758
+ elif method_name in ["predict", "predict_proba", "score"]:
744
759
  X = data[0]
745
760
 
746
761
  patching_status.and_conditions(
@@ -775,31 +790,68 @@ class ForestClassifier(sklearn_ForestClassifier, BaseForest):
775
790
  return patching_status
776
791
 
777
792
  def _onedal_predict(self, X, queue=None):
778
- X = check_array(
779
- X,
780
- dtype=[np.float64, np.float32],
781
- force_all_finite=False,
782
- ) # Warning, order of dtype matters
783
- check_is_fitted(self, "_onedal_estimator")
784
793
 
785
794
  if sklearn_check_version("1.0"):
786
- self._check_feature_names(X, reset=False)
795
+ X = validate_data(
796
+ self,
797
+ X,
798
+ dtype=[np.float64, np.float32],
799
+ force_all_finite=False,
800
+ reset=False,
801
+ ensure_2d=True,
802
+ )
803
+ else:
804
+ X = check_array(
805
+ X,
806
+ dtype=[np.float64, np.float32],
807
+ force_all_finite=False,
808
+ ) # Warning, order of dtype matters
809
+ if hasattr(self, "n_features_in_"):
810
+ try:
811
+ num_features = _num_features(X)
812
+ except TypeError:
813
+ num_features = _num_samples(X)
814
+ if num_features != self.n_features_in_:
815
+ raise ValueError(
816
+ (
817
+ f"X has {num_features} features, "
818
+ f"but {self.__class__.__name__} is expecting "
819
+ f"{self.n_features_in_} features as input"
820
+ )
821
+ )
822
+ self._check_n_features(X, reset=False)
787
823
 
788
824
  res = self._onedal_estimator.predict(X, queue=queue)
789
825
  return np.take(self.classes_, res.ravel().astype(np.int64, casting="unsafe"))
790
826
 
791
827
  def _onedal_predict_proba(self, X, queue=None):
792
- X = check_array(X, dtype=[np.float64, np.float32], force_all_finite=False)
793
- check_is_fitted(self, "_onedal_estimator")
794
828
 
795
- if sklearn_check_version("0.23"):
796
- self._check_n_features(X, reset=False)
797
829
  if sklearn_check_version("1.0"):
798
- self._check_feature_names(X, reset=False)
830
+ X = validate_data(
831
+ self,
832
+ X,
833
+ dtype=[np.float64, np.float32],
834
+ force_all_finite=False,
835
+ reset=False,
836
+ ensure_2d=True,
837
+ )
838
+ else:
839
+ X = check_array(
840
+ X,
841
+ dtype=[np.float64, np.float32],
842
+ force_all_finite=False,
843
+ ) # Warning, order of dtype matters
844
+ self._check_n_features(X, reset=False)
845
+
799
846
  return self._onedal_estimator.predict_proba(X, queue=queue)
800
847
 
848
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
849
+ return accuracy_score(
850
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
851
+ )
852
+
801
853
 
802
- class ForestRegressor(sklearn_ForestRegressor, BaseForest):
854
+ class ForestRegressor(_sklearn_ForestRegressor, BaseForest):
803
855
  _err = "out_of_bag_error_r2|out_of_bag_error_prediction"
804
856
  _get_tree_state = staticmethod(get_tree_state_reg)
805
857
 
@@ -832,14 +884,12 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
832
884
 
833
885
  # The splitter is checked against the class attribute for conformance
834
886
  # This should only trigger if the user uses this class directly.
835
- if (
836
- self.estimator.__class__ == DecisionTreeRegressor
837
- and self._onedal_factory != onedal_RandomForestRegressor
887
+ if self.estimator.__class__ == DecisionTreeRegressor and not issubclass(
888
+ self._onedal_factory, onedal_RandomForestRegressor
838
889
  ):
839
890
  self._onedal_factory = onedal_RandomForestRegressor
840
- elif (
841
- self.estimator.__class__ == ExtraTreeRegressor
842
- and self._onedal_factory != onedal_ExtraTreesRegressor
891
+ elif self.estimator.__class__ == ExtraTreeRegressor and not issubclass(
892
+ self._onedal_factory, onedal_ExtraTreesRegressor
843
893
  ):
844
894
  self._onedal_factory = onedal_ExtraTreesRegressor
845
895
 
@@ -909,18 +959,14 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
909
959
  )
910
960
 
911
961
  if patching_status.get_status():
912
- if sklearn_check_version("0.24"):
913
- X, y = self._validate_data(
914
- X,
915
- y,
916
- multi_output=True,
917
- accept_sparse=True,
918
- dtype=[np.float64, np.float32],
919
- force_all_finite=False,
920
- )
921
- else:
922
- X = check_array(X, dtype=[np.float64, np.float32], force_all_finite=False)
923
- y = check_array(y, ensure_2d=False, dtype=X.dtype, force_all_finite=False)
962
+ X, y = check_X_y(
963
+ X,
964
+ y,
965
+ multi_output=True,
966
+ accept_sparse=True,
967
+ dtype=[np.float64, np.float32],
968
+ force_all_finite=False,
969
+ )
924
970
 
925
971
  if y.ndim == 2 and y.shape[1] == 1:
926
972
  warnings.warn(
@@ -995,7 +1041,7 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
995
1041
  ]
996
1042
  )
997
1043
 
998
- elif method_name == "predict":
1044
+ elif method_name in ["predict", "score"]:
999
1045
  X = data[0]
1000
1046
 
1001
1047
  patching_status.and_conditions(
@@ -1045,11 +1091,12 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
1045
1091
  or self.estimator.__class__ == DecisionTreeClassifier,
1046
1092
  "ExtraTrees only supported starting from oneDAL version 2023.1",
1047
1093
  ),
1048
- (sample_weight is not None, "sample_weight is not supported."),
1094
+ (not self.oob_score, "oob_score value is not sklearn conformant."),
1095
+ (sample_weight is None, "sample_weight is not supported."),
1049
1096
  ]
1050
1097
  )
1051
1098
 
1052
- elif method_name == "predict":
1099
+ elif method_name in ["predict", "score"]:
1053
1100
  X = data[0]
1054
1101
 
1055
1102
  patching_status.and_conditions(
@@ -1082,23 +1129,36 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
1082
1129
  return patching_status
1083
1130
 
1084
1131
  def _onedal_predict(self, X, queue=None):
1085
- X = check_array(
1086
- X, dtype=[np.float64, np.float32], force_all_finite=False
1087
- ) # Warning, order of dtype matters
1088
1132
  check_is_fitted(self, "_onedal_estimator")
1089
1133
 
1090
1134
  if sklearn_check_version("1.0"):
1091
- self._check_feature_names(X, reset=False)
1135
+ X = validate_data(
1136
+ self,
1137
+ X,
1138
+ dtype=[np.float64, np.float32],
1139
+ force_all_finite=False,
1140
+ reset=False,
1141
+ ensure_2d=True,
1142
+ ) # Warning, order of dtype matters
1143
+ else:
1144
+ X = check_array(
1145
+ X, dtype=[np.float64, np.float32], force_all_finite=False
1146
+ ) # Warning, order of dtype matters
1092
1147
 
1093
1148
  return self._onedal_estimator.predict(X, queue=queue)
1094
1149
 
1150
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
1151
+ return r2_score(
1152
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
1153
+ )
1154
+
1095
1155
  def fit(self, X, y, sample_weight=None):
1096
1156
  dispatch(
1097
1157
  self,
1098
1158
  "fit",
1099
1159
  {
1100
1160
  "onedal": self.__class__._onedal_fit,
1101
- "sklearn": sklearn_ForestRegressor.fit,
1161
+ "sklearn": _sklearn_ForestRegressor.fit,
1102
1162
  },
1103
1163
  X,
1104
1164
  y,
@@ -1108,27 +1168,46 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
1108
1168
 
1109
1169
  @wrap_output_data
1110
1170
  def predict(self, X):
1171
+ check_is_fitted(self)
1111
1172
  return dispatch(
1112
1173
  self,
1113
1174
  "predict",
1114
1175
  {
1115
1176
  "onedal": self.__class__._onedal_predict,
1116
- "sklearn": sklearn_ForestRegressor.predict,
1177
+ "sklearn": _sklearn_ForestRegressor.predict,
1178
+ },
1179
+ X,
1180
+ )
1181
+
1182
+ @wrap_output_data
1183
+ def score(self, X, y, sample_weight=None):
1184
+ check_is_fitted(self)
1185
+ return dispatch(
1186
+ self,
1187
+ "score",
1188
+ {
1189
+ "onedal": self.__class__._onedal_score,
1190
+ "sklearn": _sklearn_ForestRegressor.score,
1117
1191
  },
1118
1192
  X,
1193
+ y,
1194
+ sample_weight=sample_weight,
1119
1195
  )
1120
1196
 
1121
- fit.__doc__ = sklearn_ForestRegressor.fit.__doc__
1122
- predict.__doc__ = sklearn_ForestRegressor.predict.__doc__
1197
+ fit.__doc__ = _sklearn_ForestRegressor.fit.__doc__
1198
+ predict.__doc__ = _sklearn_ForestRegressor.predict.__doc__
1199
+ score.__doc__ = _sklearn_ForestRegressor.score.__doc__
1123
1200
 
1124
1201
 
1202
+ @register_hyperparameters({"infer": get_hyperparameters("decision_forest", "infer")})
1203
+ @control_n_jobs(decorated_methods=["fit", "predict", "predict_proba", "score"])
1125
1204
  class RandomForestClassifier(ForestClassifier):
1126
- __doc__ = sklearn_RandomForestClassifier.__doc__
1205
+ __doc__ = _sklearn_RandomForestClassifier.__doc__
1127
1206
  _onedal_factory = onedal_RandomForestClassifier
1128
1207
 
1129
1208
  if sklearn_check_version("1.2"):
1130
1209
  _parameter_constraints: dict = {
1131
- **sklearn_RandomForestClassifier._parameter_constraints,
1210
+ **_sklearn_RandomForestClassifier._parameter_constraints,
1132
1211
  "max_bins": [Interval(numbers.Integral, 2, None, closed="left")],
1133
1212
  "min_bin_size": [Interval(numbers.Integral, 1, None, closed="left")],
1134
1213
  }
@@ -1331,13 +1410,14 @@ class RandomForestClassifier(ForestClassifier):
1331
1410
  self.min_bin_size = min_bin_size
1332
1411
 
1333
1412
 
1413
+ @control_n_jobs(decorated_methods=["fit", "predict", "score"])
1334
1414
  class RandomForestRegressor(ForestRegressor):
1335
- __doc__ = sklearn_RandomForestRegressor.__doc__
1415
+ __doc__ = _sklearn_RandomForestRegressor.__doc__
1336
1416
  _onedal_factory = onedal_RandomForestRegressor
1337
1417
 
1338
1418
  if sklearn_check_version("1.2"):
1339
1419
  _parameter_constraints: dict = {
1340
- **sklearn_RandomForestRegressor._parameter_constraints,
1420
+ **_sklearn_RandomForestRegressor._parameter_constraints,
1341
1421
  "max_bins": [Interval(numbers.Integral, 2, None, closed="left")],
1342
1422
  "min_bin_size": [Interval(numbers.Integral, 1, None, closed="left")],
1343
1423
  }
@@ -1531,13 +1611,14 @@ class RandomForestRegressor(ForestRegressor):
1531
1611
  self.min_bin_size = min_bin_size
1532
1612
 
1533
1613
 
1614
+ @control_n_jobs(decorated_methods=["fit", "predict", "predict_proba", "score"])
1534
1615
  class ExtraTreesClassifier(ForestClassifier):
1535
- __doc__ = sklearn_ExtraTreesClassifier.__doc__
1616
+ __doc__ = _sklearn_ExtraTreesClassifier.__doc__
1536
1617
  _onedal_factory = onedal_ExtraTreesClassifier
1537
1618
 
1538
1619
  if sklearn_check_version("1.2"):
1539
1620
  _parameter_constraints: dict = {
1540
- **sklearn_ExtraTreesClassifier._parameter_constraints,
1621
+ **_sklearn_ExtraTreesClassifier._parameter_constraints,
1541
1622
  "max_bins": [Interval(numbers.Integral, 2, None, closed="left")],
1542
1623
  "min_bin_size": [Interval(numbers.Integral, 1, None, closed="left")],
1543
1624
  }
@@ -1740,13 +1821,14 @@ class ExtraTreesClassifier(ForestClassifier):
1740
1821
  self.min_bin_size = min_bin_size
1741
1822
 
1742
1823
 
1824
+ @control_n_jobs(decorated_methods=["fit", "predict", "score"])
1743
1825
  class ExtraTreesRegressor(ForestRegressor):
1744
- __doc__ = sklearn_ExtraTreesRegressor.__doc__
1826
+ __doc__ = _sklearn_ExtraTreesRegressor.__doc__
1745
1827
  _onedal_factory = onedal_ExtraTreesRegressor
1746
1828
 
1747
1829
  if sklearn_check_version("1.2"):
1748
1830
  _parameter_constraints: dict = {
1749
- **sklearn_ExtraTreesRegressor._parameter_constraints,
1831
+ **_sklearn_ExtraTreesRegressor._parameter_constraints,
1750
1832
  "max_bins": [Interval(numbers.Integral, 2, None, closed="left")],
1751
1833
  "min_bin_size": [Interval(numbers.Integral, 1, None, closed="left")],
1752
1834
  }
@@ -1941,7 +2023,7 @@ class ExtraTreesRegressor(ForestRegressor):
1941
2023
 
1942
2024
 
1943
2025
  # Allow for isinstance calls without inheritance changes using ABCMeta
1944
- sklearn_RandomForestClassifier.register(RandomForestClassifier)
1945
- sklearn_RandomForestRegressor.register(RandomForestRegressor)
1946
- sklearn_ExtraTreesClassifier.register(ExtraTreesClassifier)
1947
- sklearn_ExtraTreesRegressor.register(ExtraTreesRegressor)
2026
+ _sklearn_RandomForestClassifier.register(RandomForestClassifier)
2027
+ _sklearn_RandomForestRegressor.register(RandomForestRegressor)
2028
+ _sklearn_ExtraTreesClassifier.register(ExtraTreesClassifier)
2029
+ _sklearn_ExtraTreesRegressor.register(ExtraTreesRegressor)