scikit-learn-intelex 2024.2.0__py39-none-win_amd64.whl → 2025.1.0__py39-none-win_amd64.whl

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

Potentially problematic release.


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

Files changed (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.cp39-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.cp39-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -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.2.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -28
  23. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  27. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +3 -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-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  39. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
  44. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -56
  46. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
  47. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → 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.cp39-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-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.2.0.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  97. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
  98. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  99. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  100. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  101. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  102. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  103. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
  106. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  108. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  109. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
  110. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  112. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  113. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  114. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  116. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  117. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  118. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  119. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  120. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  121. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  122. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  123. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  124. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  125. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  126. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  127. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  128. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
  129. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +10 -7
  130. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
  131. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  132. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +27 -4
  133. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  134. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
  135. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
  136. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
  137. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
  138. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  139. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +16 -7
  140. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
  141. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
  142. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
  143. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  144. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
  145. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +111 -17
  146. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
  147. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +25 -9
  148. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +222 -42
  149. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +249 -182
  150. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -21
  151. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -2
  152. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  153. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
  154. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
  155. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
  156. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
  157. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +182 -102
  158. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
  159. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
  160. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  161. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  162. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +45 -4
  163. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +4 -0
  164. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
  165. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  166. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -0
  167. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +97 -28
  168. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +53 -6
  169. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +48 -149
  170. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +43 -144
  171. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +50 -93
  172. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +6 -9
  173. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  174. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +24 -18
  175. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  176. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  177. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
  178. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  179. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model}/__init__.py +19 -19
  180. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
  181. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  182. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  183. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  184. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  185. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  186. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  187. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  188. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  189. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  190. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  191. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  192. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
  193. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  194. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  195. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  196. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  197. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  198. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
  199. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
  200. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  201. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  202. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  203. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  204. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  205. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +168 -73
  206. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +71 -66
  207. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +166 -72
  208. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +64 -63
  209. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
  210. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
  211. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  212. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
  213. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
  214. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  215. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  216. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
  217. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
  218. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
  219. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
  220. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  221. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  222. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
  223. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
  224. scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
  225. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
  226. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
  227. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  228. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  229. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -130
  230. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
  231. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
  232. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -381
  233. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
  234. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -82
  235. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  236. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -371
  237. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -374
  238. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
  239. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -222
  240. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -240
  241. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -93
  242. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  243. scikit_learn_intelex-2024.2.0.dist-info/RECORD +0 -101
  244. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  245. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  246. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  247. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  248. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  249. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  250. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  251. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  252. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  253. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  254. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  255. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  256. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  257. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  258. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  259. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  260. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  261. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  262. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  263. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  264. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  265. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  266. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  267. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  268. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  269. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  270. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  271. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  272. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  273. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  274. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
  275. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
@@ -19,46 +19,58 @@ from abc import ABC
19
19
 
20
20
  from daal4py.sklearn._utils import daal_check_version
21
21
  from daal4py.sklearn.linear_model.logistic_path import (
22
- LogisticRegression as LogisticRegression_daal4py,
22
+ LogisticRegression as _daal4py_LogisticRegression,
23
23
  )
24
- from daal4py.sklearn.linear_model.logistic_path import daal4py_fit, daal4py_predict
25
-
26
-
27
- class BaseLogisticRegression(ABC):
28
- def _save_attributes(self):
29
- assert hasattr(self, "_onedal_estimator")
30
- self.classes_ = self._onedal_estimator.classes_
31
- self.coef_ = self._onedal_estimator.coef_
32
- self.intercept_ = self._onedal_estimator.intercept_
33
- self.n_features_in_ = self._onedal_estimator.n_features_in_
34
- self.n_iter_ = self._onedal_estimator.n_iter_
35
-
36
24
 
37
25
  if daal_check_version((2024, "P", 1)):
38
26
  import numpy as np
39
27
  from scipy.sparse import issparse
40
- from sklearn.linear_model import LogisticRegression as sklearn_LogisticRegression
41
- from sklearn.utils.validation import check_X_y
28
+ from sklearn.linear_model import LogisticRegression as _sklearn_LogisticRegression
29
+ from sklearn.metrics import accuracy_score
30
+ from sklearn.utils.multiclass import type_of_target
31
+ from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
42
32
 
43
33
  from daal4py.sklearn._n_jobs_support import control_n_jobs
44
34
  from daal4py.sklearn._utils import sklearn_check_version
35
+ from daal4py.sklearn.linear_model.logistic_path import daal4py_fit, daal4py_predict
45
36
  from onedal.linear_model import LogisticRegression as onedal_LogisticRegression
46
- from onedal.utils import _num_features, _num_samples
37
+ from onedal.utils import _num_samples
47
38
 
39
+ from .._config import get_config
48
40
  from .._device_offload import dispatch, wrap_output_data
49
41
  from .._utils import PatchingConditionsChain, get_patch_message
50
- from ..utils.validation import _assert_all_finite
42
+
43
+ if sklearn_check_version("1.6"):
44
+ from sklearn.utils.validation import validate_data
45
+ else:
46
+ validate_data = _sklearn_LogisticRegression._validate_data
47
+
48
+ _sparsity_enabled = daal_check_version((2024, "P", 700))
49
+
50
+ class BaseLogisticRegression(ABC):
51
+ def _save_attributes(self):
52
+ assert hasattr(self, "_onedal_estimator")
53
+ self.classes_ = self._onedal_estimator.classes_
54
+ self.coef_ = self._onedal_estimator.coef_
55
+ self.intercept_ = self._onedal_estimator.intercept_
56
+ self.n_features_in_ = self._onedal_estimator.n_features_in_
57
+ self.n_iter_ = self._onedal_estimator.n_iter_
51
58
 
52
59
  @control_n_jobs(
53
- decorated_methods=["fit", "predict", "predict_proba", "predict_log_proba"]
60
+ decorated_methods=[
61
+ "fit",
62
+ "predict",
63
+ "predict_proba",
64
+ "predict_log_proba",
65
+ "score",
66
+ ]
54
67
  )
55
- class LogisticRegression(sklearn_LogisticRegression, BaseLogisticRegression):
56
- __doc__ = sklearn_LogisticRegression.__doc__
57
- intercept_, coef_, n_iter_ = None, None, None
68
+ class LogisticRegression(_sklearn_LogisticRegression, BaseLogisticRegression):
69
+ __doc__ = _sklearn_LogisticRegression.__doc__
58
70
 
59
71
  if sklearn_check_version("1.2"):
60
72
  _parameter_constraints: dict = {
61
- **sklearn_LogisticRegression._parameter_constraints
73
+ **_sklearn_LogisticRegression._parameter_constraints
62
74
  }
63
75
 
64
76
  def __init__(
@@ -72,9 +84,9 @@ if daal_check_version((2024, "P", 1)):
72
84
  intercept_scaling=1,
73
85
  class_weight=None,
74
86
  random_state=None,
75
- solver="lbfgs" if sklearn_check_version("0.22") else "liblinear",
87
+ solver="lbfgs",
76
88
  max_iter=100,
77
- multi_class="auto" if sklearn_check_version("0.22") else "ovr",
89
+ multi_class="deprecated" if sklearn_check_version("1.5") else "auto",
78
90
  verbose=0,
79
91
  warm_start=False,
80
92
  n_jobs=None,
@@ -101,8 +113,6 @@ if daal_check_version((2024, "P", 1)):
101
113
  _onedal_cpu_fit = daal4py_fit
102
114
 
103
115
  def fit(self, X, y, sample_weight=None):
104
- if sklearn_check_version("1.0"):
105
- self._check_feature_names(X, reset=True)
106
116
  if sklearn_check_version("1.2"):
107
117
  self._validate_params()
108
118
  dispatch(
@@ -110,7 +120,7 @@ if daal_check_version((2024, "P", 1)):
110
120
  "fit",
111
121
  {
112
122
  "onedal": self.__class__._onedal_fit,
113
- "sklearn": sklearn_LogisticRegression.fit,
123
+ "sklearn": _sklearn_LogisticRegression.fit,
114
124
  },
115
125
  X,
116
126
  y,
@@ -120,56 +130,62 @@ if daal_check_version((2024, "P", 1)):
120
130
 
121
131
  @wrap_output_data
122
132
  def predict(self, X):
123
- if sklearn_check_version("1.0"):
124
- self._check_feature_names(X, reset=False)
133
+ check_is_fitted(self)
125
134
  return dispatch(
126
135
  self,
127
136
  "predict",
128
137
  {
129
138
  "onedal": self.__class__._onedal_predict,
130
- "sklearn": sklearn_LogisticRegression.predict,
139
+ "sklearn": _sklearn_LogisticRegression.predict,
131
140
  },
132
141
  X,
133
142
  )
134
143
 
135
144
  @wrap_output_data
136
145
  def predict_proba(self, X):
137
- if sklearn_check_version("1.0"):
138
- self._check_feature_names(X, reset=False)
146
+ check_is_fitted(self)
139
147
  return dispatch(
140
148
  self,
141
- "predict",
149
+ "predict_proba",
142
150
  {
143
151
  "onedal": self.__class__._onedal_predict_proba,
144
- "sklearn": sklearn_LogisticRegression.predict_proba,
152
+ "sklearn": _sklearn_LogisticRegression.predict_proba,
145
153
  },
146
154
  X,
147
155
  )
148
156
 
149
157
  @wrap_output_data
150
158
  def predict_log_proba(self, X):
151
- if sklearn_check_version("1.0"):
152
- self._check_feature_names(X, reset=False)
159
+ check_is_fitted(self)
153
160
  return dispatch(
154
161
  self,
155
- "predict",
162
+ "predict_log_proba",
156
163
  {
157
164
  "onedal": self.__class__._onedal_predict_log_proba,
158
- "sklearn": sklearn_LogisticRegression.predict_log_proba,
165
+ "sklearn": _sklearn_LogisticRegression.predict_log_proba,
159
166
  },
160
167
  X,
161
168
  )
162
169
 
163
- def _test_type_and_finiteness(self, X_in):
164
- X = np.asarray(X_in)
170
+ @wrap_output_data
171
+ def score(self, X, y, sample_weight=None):
172
+ check_is_fitted(self)
173
+ return dispatch(
174
+ self,
175
+ "score",
176
+ {
177
+ "onedal": self.__class__._onedal_score,
178
+ "sklearn": _sklearn_LogisticRegression.score,
179
+ },
180
+ X,
181
+ y,
182
+ sample_weight=sample_weight,
183
+ )
165
184
 
166
- if np.iscomplexobj(X):
167
- return False
168
- try:
169
- _assert_all_finite(X)
170
- except BaseException:
171
- return False
172
- return True
185
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
186
+ return accuracy_score(
187
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
188
+ )
173
189
 
174
190
  def _onedal_gpu_fit_supported(self, method_name, *data):
175
191
  assert method_name == "fit"
@@ -181,11 +197,19 @@ if daal_check_version((2024, "P", 1)):
181
197
  f"sklearn.linear_model.{class_name}.fit"
182
198
  )
183
199
 
184
- dal_ready = patching_status.and_conditions(
200
+ target_type = (
201
+ type_of_target(y, input_name="y")
202
+ if sklearn_check_version("1.1")
203
+ else type_of_target(y)
204
+ )
205
+ patching_status.and_conditions(
185
206
  [
186
207
  (self.penalty == "l2", "Only l2 penalty is supported."),
187
208
  (self.dual == False, "dual=True is not supported."),
188
- (self.intercept_scaling == 1, "Intercept scaling is not supported."),
209
+ (
210
+ self.intercept_scaling == 1,
211
+ "Intercept scaling is not supported.",
212
+ ),
189
213
  (self.class_weight is None, "Class weight is not supported"),
190
214
  (self.solver == "newton-cg", "Only newton-cg solver is supported."),
191
215
  (
@@ -195,57 +219,49 @@ if daal_check_version((2024, "P", 1)):
195
219
  (self.warm_start == False, "Warm start is not supported."),
196
220
  (self.l1_ratio is None, "l1 ratio is not supported."),
197
221
  (sample_weight is None, "Sample weight is not supported."),
222
+ (
223
+ target_type == "binary",
224
+ "Only binary classification is supported",
225
+ ),
198
226
  ]
199
227
  )
200
228
 
201
- if not dal_ready:
202
- return patching_status
203
-
204
- if not patching_status.and_condition(
205
- self._test_type_and_finiteness(X), "Input X is not supported."
206
- ):
207
- return patching_status
208
-
209
- patching_status.and_condition(
210
- self._test_type_and_finiteness(y), "Input y is not supported."
211
- )
212
-
213
229
  return patching_status
214
230
 
215
231
  def _onedal_gpu_predict_supported(self, method_name, *data):
216
- assert method_name in ["predict", "predict_proba", "predict_log_proba"]
217
- assert len(data) == 1
232
+ assert method_name in [
233
+ "predict",
234
+ "predict_proba",
235
+ "predict_log_proba",
236
+ "score",
237
+ ]
218
238
 
219
239
  class_name = self.__class__.__name__
220
240
  patching_status = PatchingConditionsChain(
221
241
  f"sklearn.linear_model.{class_name}.{method_name}"
222
242
  )
223
243
 
224
- n_samples = _num_samples(*data)
225
- model_is_sparse = issparse(self.coef_) or (
226
- self.fit_intercept and issparse(self.intercept_)
227
- )
244
+ n_samples = _num_samples(data[0])
228
245
  dal_ready = patching_status.and_conditions(
229
246
  [
230
247
  (n_samples > 0, "Number of samples is less than 1."),
231
- (not issparse(*data), "Sparse input is not supported."),
232
- (not model_is_sparse, "Sparse coefficients are not supported."),
233
- (hasattr(self, "_onedal_estimator"), "oneDAL model was not trained."),
248
+ (
249
+ (not any([issparse(i) for i in data])) or _sparsity_enabled,
250
+ "Sparse input is not supported.",
251
+ ),
252
+ (
253
+ hasattr(self, "_onedal_estimator"),
254
+ "oneDAL model was not trained.",
255
+ ),
234
256
  ]
235
257
  )
236
- if not dal_ready:
237
- return patching_status
238
-
239
- patching_status.and_condition(
240
- self._test_type_and_finiteness(*data), "Input X is not supported."
241
- )
242
258
 
243
259
  return patching_status
244
260
 
245
261
  def _onedal_gpu_supported(self, method_name, *data):
246
262
  if method_name == "fit":
247
263
  return self._onedal_gpu_fit_supported(method_name, *data)
248
- if method_name in ["predict", "predict_proba", "predict_log_proba"]:
264
+ if method_name in ["predict", "predict_proba", "predict_log_proba", "score"]:
249
265
  return self._onedal_gpu_predict_supported(method_name, *data)
250
266
  raise RuntimeError(
251
267
  f"Unknown method {method_name} in {self.__class__.__name__}"
@@ -269,42 +285,68 @@ if daal_check_version((2024, "P", 1)):
269
285
  }
270
286
  self._onedal_estimator = onedal_LogisticRegression(**onedal_params)
271
287
 
272
- def _onedal_fit(self, X, y, sample_weight, queue=None):
288
+ def _onedal_fit(self, X, y, sample_weight=None, queue=None):
273
289
  if queue is None or queue.sycl_device.is_cpu:
274
290
  return self._onedal_cpu_fit(X, y, sample_weight)
275
291
 
276
292
  assert sample_weight is None
277
293
 
278
- check_params = {
279
- "X": X,
280
- "y": y,
281
- "dtype": [np.float64, np.float32],
282
- "accept_sparse": False,
283
- "multi_output": False,
284
- "force_all_finite": True,
285
- }
286
- if sklearn_check_version("1.2"):
287
- X, y = self._validate_data(**check_params)
294
+ if sklearn_check_version("1.0"):
295
+ X, y = validate_data(
296
+ self,
297
+ X,
298
+ y,
299
+ accept_sparse=_sparsity_enabled,
300
+ accept_large_sparse=_sparsity_enabled,
301
+ dtype=[np.float64, np.float32],
302
+ )
288
303
  else:
289
- X, y = check_X_y(**check_params)
304
+ X, y = check_X_y(
305
+ X,
306
+ y,
307
+ accept_sparse=_sparsity_enabled,
308
+ accept_large_sparse=_sparsity_enabled,
309
+ dtype=[np.float64, np.float32],
310
+ )
311
+
290
312
  self._initialize_onedal_estimator()
291
- try:
313
+ if get_config()["allow_sklearn_after_onedal"]:
314
+ try:
315
+ self._onedal_estimator.fit(X, y, queue=queue)
316
+ self._save_attributes()
317
+ except RuntimeError:
318
+ logging.getLogger("sklearnex").info(
319
+ f"{self.__class__.__name__}.fit "
320
+ + get_patch_message("sklearn_after_onedal")
321
+ )
322
+
323
+ del self._onedal_estimator
324
+ super().fit(X, y)
325
+ else:
292
326
  self._onedal_estimator.fit(X, y, queue=queue)
293
327
  self._save_attributes()
294
- except RuntimeError:
295
- logging.getLogger("sklearnex").info(
296
- f"{self.__class__.__name__}.fit "
297
- + get_patch_message("sklearn_after_onedal")
298
- )
299
-
300
- del self._onedal_estimator
301
- super().fit(X, y)
302
328
 
303
329
  def _onedal_predict(self, X, queue=None):
304
330
  if queue is None or queue.sycl_device.is_cpu:
305
331
  return daal4py_predict(self, X, "computeClassLabels")
306
332
 
307
- X = self._validate_data(X, accept_sparse=False, reset=False)
333
+ if sklearn_check_version("1.0"):
334
+ X = validate_data(
335
+ self,
336
+ X,
337
+ reset=False,
338
+ accept_sparse=_sparsity_enabled,
339
+ accept_large_sparse=_sparsity_enabled,
340
+ dtype=[np.float64, np.float32],
341
+ )
342
+ else:
343
+ X = check_array(
344
+ X,
345
+ accept_sparse=_sparsity_enabled,
346
+ accept_large_sparse=_sparsity_enabled,
347
+ dtype=[np.float64, np.float32],
348
+ )
349
+
308
350
  assert hasattr(self, "_onedal_estimator")
309
351
  return self._onedal_estimator.predict(X, queue=queue)
310
352
 
@@ -312,7 +354,23 @@ if daal_check_version((2024, "P", 1)):
312
354
  if queue is None or queue.sycl_device.is_cpu:
313
355
  return daal4py_predict(self, X, "computeClassProbabilities")
314
356
 
315
- X = self._validate_data(X, accept_sparse=False, reset=False)
357
+ if sklearn_check_version("1.0"):
358
+ X = validate_data(
359
+ self,
360
+ X,
361
+ reset=False,
362
+ accept_sparse=_sparsity_enabled,
363
+ accept_large_sparse=_sparsity_enabled,
364
+ dtype=[np.float64, np.float32],
365
+ )
366
+ else:
367
+ X = check_array(
368
+ X,
369
+ accept_sparse=_sparsity_enabled,
370
+ accept_large_sparse=_sparsity_enabled,
371
+ dtype=[np.float64, np.float32],
372
+ )
373
+
316
374
  assert hasattr(self, "_onedal_estimator")
317
375
  return self._onedal_estimator.predict_proba(X, queue=queue)
318
376
 
@@ -320,12 +378,34 @@ if daal_check_version((2024, "P", 1)):
320
378
  if queue is None or queue.sycl_device.is_cpu:
321
379
  return daal4py_predict(self, X, "computeClassLogProbabilities")
322
380
 
323
- X = self._validate_data(X, accept_sparse=False, reset=False)
381
+ if sklearn_check_version("1.0"):
382
+ X = validate_data(
383
+ self,
384
+ X,
385
+ reset=False,
386
+ accept_sparse=_sparsity_enabled,
387
+ accept_large_sparse=_sparsity_enabled,
388
+ dtype=[np.float64, np.float32],
389
+ )
390
+ else:
391
+ X = check_array(
392
+ X,
393
+ accept_sparse=_sparsity_enabled,
394
+ accept_large_sparse=_sparsity_enabled,
395
+ dtype=[np.float64, np.float32],
396
+ )
397
+
324
398
  assert hasattr(self, "_onedal_estimator")
325
399
  return self._onedal_estimator.predict_log_proba(X, queue=queue)
326
400
 
401
+ fit.__doc__ = _sklearn_LogisticRegression.fit.__doc__
402
+ predict.__doc__ = _sklearn_LogisticRegression.predict.__doc__
403
+ predict_proba.__doc__ = _sklearn_LogisticRegression.predict_proba.__doc__
404
+ predict_log_proba.__doc__ = _sklearn_LogisticRegression.predict_log_proba.__doc__
405
+ score.__doc__ = _sklearn_LogisticRegression.score.__doc__
406
+
327
407
  else:
328
- LogisticRegression = LogisticRegression_daal4py
408
+ LogisticRegression = _daal4py_LogisticRegression
329
409
 
330
410
  logging.warning(
331
411
  "Sklearnex LogisticRegression requires oneDAL version >= 2024.0.1 "
@@ -15,3 +15,10 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.linear_model import Ridge
18
+ from onedal._device_offload import support_input_format
19
+
20
+ # Note: `sklearnex.linear_model.Ridge` only has functional
21
+ # sycl GPU support. No GPU device will be offloaded.
22
+ Ridge.fit = support_input_format(queue_param=False)(Ridge.fit)
23
+ Ridge.predict = support_input_format(queue_param=False)(Ridge.predict)
24
+ Ridge.score = support_input_format(queue_param=False)(Ridge.score)
@@ -0,0 +1,207 @@
1
+ # ===============================================================================
2
+ # Copyright 2024 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose
20
+
21
+ from onedal.tests.utils._dataframes_support import (
22
+ _as_numpy,
23
+ _convert_to_dataframe,
24
+ get_dataframes_and_queues,
25
+ )
26
+ from sklearnex.linear_model import IncrementalLinearRegression
27
+ from sklearnex.tests.utils import _IS_INTEL
28
+
29
+
30
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
31
+ @pytest.mark.parametrize("fit_intercept", [True, False])
32
+ @pytest.mark.parametrize("macro_block", [None, 1024])
33
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
34
+ def test_sklearnex_fit_on_gold_data(dataframe, queue, fit_intercept, macro_block, dtype):
35
+ X = np.array([[1], [2]])
36
+ X = X.astype(dtype=dtype)
37
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
38
+ y = np.array([[1], [2]])
39
+ y = y.astype(dtype=dtype)
40
+ y_df = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
41
+
42
+ inclin = IncrementalLinearRegression(fit_intercept=fit_intercept)
43
+ if macro_block is not None:
44
+ hparams = inclin.get_hyperparameters("fit")
45
+ hparams.cpu_macro_block = macro_block
46
+ hparams.gpu_macro_block = macro_block
47
+ inclin.fit(X_df, y_df)
48
+
49
+ y_pred = inclin.predict(X_df)
50
+ np_y_pred = _as_numpy(y_pred)
51
+
52
+ tol = 2e-6 if dtype == np.float32 else 1e-7
53
+ assert_allclose(inclin.coef_, [1], atol=tol)
54
+ if fit_intercept:
55
+ assert_allclose(inclin.intercept_, [0], atol=tol)
56
+ assert_allclose(np_y_pred, y, atol=tol)
57
+
58
+
59
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
60
+ @pytest.mark.parametrize("fit_intercept", [True, False])
61
+ @pytest.mark.parametrize("macro_block", [None, 1024])
62
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
63
+ def test_sklearnex_partial_fit_on_gold_data(
64
+ dataframe, queue, fit_intercept, macro_block, dtype
65
+ ):
66
+ X = np.array([[1], [2], [3], [4]])
67
+ X = X.astype(dtype=dtype)
68
+ y = X + 3
69
+ y = y.astype(dtype=dtype)
70
+ X_split = np.array_split(X, 2)
71
+ y_split = np.array_split(y, 2)
72
+
73
+ inclin = IncrementalLinearRegression()
74
+ if macro_block is not None:
75
+ hparams = inclin.get_hyperparameters("fit")
76
+ hparams.cpu_macro_block = macro_block
77
+ hparams.gpu_macro_block = macro_block
78
+ for i in range(2):
79
+ X_split_df = _convert_to_dataframe(
80
+ X_split[i], sycl_queue=queue, target_df=dataframe
81
+ )
82
+ y_split_df = _convert_to_dataframe(
83
+ y_split[i], sycl_queue=queue, target_df=dataframe
84
+ )
85
+ inclin.partial_fit(X_split_df, y_split_df)
86
+
87
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
88
+ y_pred = inclin.predict(X_df)
89
+ np_y_pred = _as_numpy(y_pred)
90
+
91
+ assert inclin.n_features_in_ == 1
92
+ tol = 1e-5 if dtype == np.float32 else 1e-7
93
+ assert_allclose(inclin.coef_, [[1]], atol=tol)
94
+ if fit_intercept:
95
+ assert_allclose(inclin.intercept_, 3, atol=tol)
96
+
97
+ assert_allclose(np_y_pred, y, atol=tol)
98
+
99
+
100
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
101
+ @pytest.mark.parametrize("fit_intercept", [True, False])
102
+ @pytest.mark.parametrize("macro_block", [None, 1024])
103
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
104
+ def test_sklearnex_partial_fit_multitarget_on_gold_data(
105
+ dataframe, queue, fit_intercept, macro_block, dtype
106
+ ):
107
+ X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
108
+ X = X.astype(dtype=dtype)
109
+ y = np.dot(X, [1, 2]) + 3
110
+ y = y.astype(dtype=dtype)
111
+ X_split = np.array_split(X, 2)
112
+ y_split = np.array_split(y, 2)
113
+
114
+ inclin = IncrementalLinearRegression()
115
+ if macro_block is not None:
116
+ hparams = inclin.get_hyperparameters("fit")
117
+ hparams.cpu_macro_block = macro_block
118
+ hparams.gpu_macro_block = macro_block
119
+ for i in range(2):
120
+ X_split_df = _convert_to_dataframe(
121
+ X_split[i], sycl_queue=queue, target_df=dataframe
122
+ )
123
+ y_split_df = _convert_to_dataframe(
124
+ y_split[i], sycl_queue=queue, target_df=dataframe
125
+ )
126
+ inclin.partial_fit(X_split_df, y_split_df)
127
+
128
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
129
+ y_pred = inclin.predict(X_df)
130
+ np_y_pred = _as_numpy(y_pred)
131
+
132
+ assert inclin.n_features_in_ == 2
133
+ tol = 1e-7
134
+ if dtype == np.float32:
135
+ tol = 7e-6 if _IS_INTEL else 2e-5
136
+
137
+ assert_allclose(inclin.coef_, [1.0, 2.0], atol=tol)
138
+ if fit_intercept:
139
+ assert_allclose(inclin.intercept_, 3.0, atol=tol)
140
+
141
+ assert_allclose(np_y_pred, y, atol=tol)
142
+
143
+
144
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
145
+ @pytest.mark.parametrize("fit_intercept", [True, False])
146
+ @pytest.mark.parametrize("num_samples", [100, 1000])
147
+ @pytest.mark.parametrize("num_features", [5, 10])
148
+ @pytest.mark.parametrize("num_targets", [1, 2])
149
+ @pytest.mark.parametrize("num_blocks", [1, 10])
150
+ @pytest.mark.parametrize("macro_block", [None, 1024])
151
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
152
+ def test_sklearnex_partial_fit_on_random_data(
153
+ dataframe,
154
+ queue,
155
+ fit_intercept,
156
+ num_samples,
157
+ num_features,
158
+ num_targets,
159
+ num_blocks,
160
+ macro_block,
161
+ dtype,
162
+ ):
163
+ seed = 42
164
+ gen = np.random.default_rng(seed)
165
+ intercept = gen.random(size=num_targets, dtype=dtype)
166
+ coef = gen.random(size=(num_targets, num_features), dtype=dtype).T
167
+
168
+ X = gen.random(size=(num_samples, num_features), dtype=dtype)
169
+ if fit_intercept:
170
+ y = X @ coef + intercept[np.newaxis, :]
171
+ else:
172
+ y = X @ coef
173
+
174
+ X_split = np.array_split(X, num_blocks)
175
+ y_split = np.array_split(y, num_blocks)
176
+
177
+ inclin = IncrementalLinearRegression(fit_intercept=fit_intercept)
178
+ if macro_block is not None:
179
+ hparams = inclin.get_hyperparameters("fit")
180
+ hparams.cpu_macro_block = macro_block
181
+ hparams.gpu_macro_block = macro_block
182
+ for i in range(num_blocks):
183
+ X_split_df = _convert_to_dataframe(
184
+ X_split[i], sycl_queue=queue, target_df=dataframe
185
+ )
186
+ y_split_df = _convert_to_dataframe(
187
+ y_split[i], sycl_queue=queue, target_df=dataframe
188
+ )
189
+ inclin.partial_fit(X_split_df, y_split_df)
190
+
191
+ tol = 1e-4 if inclin.coef_.dtype == np.float32 else 1e-7
192
+ assert_allclose(coef.T.squeeze(), inclin.coef_, atol=tol)
193
+
194
+ if fit_intercept:
195
+ assert_allclose(intercept, inclin.intercept_, atol=tol)
196
+
197
+ X_test = gen.random(size=(num_samples, num_features), dtype=dtype)
198
+ if fit_intercept:
199
+ expected_y_pred = (X_test @ coef + intercept[np.newaxis, :]).squeeze()
200
+ else:
201
+ expected_y_pred = (X_test @ coef).squeeze()
202
+
203
+ X_test_df = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
204
+
205
+ y_pred = inclin.predict(X_test_df)
206
+
207
+ assert_allclose(expected_y_pred, _as_numpy(y_pred), atol=tol)