scikit-learn-intelex 2025.10.0__py313-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.
Files changed (267) hide show
  1. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
  5. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
  6. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
  7. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
  8. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
  9. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  10. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
  11. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  12. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  13. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  14. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
  15. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  16. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
  17. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
  18. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  19. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
  20. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  21. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
  22. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  23. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
  24. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
  25. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
  26. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
  27. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  28. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  29. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  30. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
  31. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  32. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
  33. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
  34. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  35. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
  36. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
  37. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  38. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
  39. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  40. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  41. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  42. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  43. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  44. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  45. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
  46. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  47. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
  48. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
  49. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  50. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
  51. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
  52. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
  53. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  54. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  55. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  56. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
  57. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  58. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
  59. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  60. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
  61. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
  62. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
  63. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
  64. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
  65. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
  66. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  67. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
  68. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
  69. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
  70. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  71. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  72. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  73. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
  74. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
  75. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
  76. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  77. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  78. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  79. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
  80. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  81. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  82. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
  83. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
  84. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  85. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
  86. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
  87. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  88. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
  89. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
  90. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
  91. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
  92. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
  93. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
  94. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
  95. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
  96. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
  97. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
  98. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
  99. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
  100. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
  101. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  102. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
  103. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  104. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  105. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
  106. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
  107. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
  108. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  109. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  110. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
  111. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  112. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  113. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  114. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
  115. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  116. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  117. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
  118. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
  119. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  120. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  121. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
  122. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
  123. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  124. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  125. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  126. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  127. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
  128. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
  129. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
  130. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
  131. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
  132. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
  133. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  134. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
  135. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__init__.py +69 -0
  136. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
  137. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
  138. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
  139. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
  140. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
  141. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  142. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
  143. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +338 -0
  144. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  145. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
  146. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
  147. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +199 -0
  148. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
  149. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
  150. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
  151. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  152. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  153. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
  154. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
  155. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/__init__.py +19 -0
  156. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
  157. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
  158. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +572 -0
  159. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +629 -0
  160. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -0
  161. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
  162. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
  163. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
  164. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1799 -0
  165. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
  166. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
  167. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
  168. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  169. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
  170. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
  171. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
  172. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
  173. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
  174. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
  175. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  176. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  177. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  178. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
  179. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  180. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
  181. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +28 -0
  182. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
  183. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
  184. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +20 -0
  185. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
  186. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
  187. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
  188. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +20 -0
  189. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
  190. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
  191. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +189 -0
  192. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +313 -0
  193. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +189 -0
  194. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +167 -0
  195. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +170 -0
  196. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
  197. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
  198. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
  199. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
  200. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
  201. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  202. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
  203. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
  204. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +25 -0
  205. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  206. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
  207. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  208. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
  209. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
  210. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
  211. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
  212. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
  213. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
  214. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
  215. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  216. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
  217. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
  218. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
  219. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
  220. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  221. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
  222. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +23 -0
  223. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
  224. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
  225. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +19 -0
  226. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  227. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
  228. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
  229. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
  230. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +24 -0
  231. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  232. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
  233. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
  234. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
  235. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
  236. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
  237. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/__init__.py +29 -0
  238. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
  239. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +278 -0
  240. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +158 -0
  241. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +306 -0
  242. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +155 -0
  243. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +124 -0
  244. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
  245. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
  246. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  247. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
  248. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
  249. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
  250. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
  251. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +418 -0
  252. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
  253. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
  254. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
  255. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  256. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
  257. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
  258. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
  259. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  260. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
  261. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  262. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
  263. scikit_learn_intelex-2025.10.0.dist-info/LICENSE.txt +202 -0
  264. scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
  265. scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
  266. scikit_learn_intelex-2025.10.0.dist-info/WHEEL +5 -0
  267. scikit_learn_intelex-2025.10.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,561 @@
1
+ # ==============================================================================
2
+ # Copyright 2014 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ import numbers
18
+
19
+ import numpy as np
20
+ import scipy.optimize as optimize
21
+ import scipy.sparse as sparse
22
+ import sklearn.linear_model._logistic as logistic_module
23
+ from sklearn.linear_model._logistic import _LOGISTIC_SOLVER_CONVERGENCE_MSG
24
+ from sklearn.linear_model._logistic import (
25
+ LogisticRegression as LogisticRegression_original,
26
+ )
27
+ from sklearn.linear_model._logistic import _check_solver
28
+ from sklearn.utils import check_array, check_consistent_length, check_random_state
29
+ from sklearn.utils.optimize import _check_optimize_result, _newton_cg
30
+ from sklearn.utils.validation import check_is_fitted
31
+
32
+ import daal4py as d4p
33
+
34
+ from .._n_jobs_support import control_n_jobs
35
+ from .._utils import PatchingConditionsChain, getFPType, sklearn_check_version
36
+ from ..utils.validation import check_feature_names
37
+ from .logistic_loss import (
38
+ _daal4py_cross_entropy_loss_extra_args,
39
+ _daal4py_grad_,
40
+ _daal4py_grad_hess_,
41
+ _daal4py_logistic_loss_extra_args,
42
+ _daal4py_loss_,
43
+ _daal4py_loss_and_grad,
44
+ )
45
+
46
+ if sklearn_check_version("1.7.1"):
47
+ from sklearn.utils.fixes import _get_additional_lbfgs_options_dict
48
+ else:
49
+ # From https://github.com/scikit-learn/scikit-learn/blob/760edca5fb5cc3538b98ebc55171806e2a6e3e84/sklearn/utils/fixes.py#L408
50
+ # This should be removed if SciPy>=1.15 becomes the minimum required at some point
51
+ def _get_additional_lbfgs_options_dict(k, v):
52
+ return {k: v}
53
+
54
+
55
+ from sklearn.linear_model._logistic import _logistic_regression_path as lr_path_original
56
+ from sklearn.preprocessing import LabelBinarizer, LabelEncoder
57
+
58
+
59
+ # This code is a patch for sklearn 1.8, which is related to https://github.com/scikit-learn/scikit-learn/pull/32073
60
+ # where the multi_class keyword is deprecated and this aspect is removed.
61
+ def _check_multi_class(multi_class, solver, n_classes):
62
+ """Computes the multi class type, either "multinomial" or "ovr".
63
+ For `n_classes` > 2 and a solver that supports it, returns "multinomial".
64
+ For all other cases, in particular binary classification, return "ovr".
65
+ """
66
+ if multi_class == "auto":
67
+ if solver in ("liblinear",):
68
+ multi_class = "ovr"
69
+ elif n_classes > 2:
70
+ multi_class = "multinomial"
71
+ else:
72
+ multi_class = "ovr"
73
+ if multi_class == "multinomial" and solver in ("liblinear",):
74
+ raise ValueError("Solver %s does not support a multinomial backend." % solver)
75
+ return multi_class
76
+
77
+
78
+ # Code adapted from sklearn.linear_model.logistic version 0.21
79
+ def __logistic_regression_path(
80
+ X,
81
+ y,
82
+ pos_class=None,
83
+ Cs=10,
84
+ fit_intercept=True,
85
+ max_iter=100,
86
+ tol=1e-4,
87
+ verbose=0,
88
+ solver="lbfgs",
89
+ coef=None,
90
+ class_weight=None,
91
+ dual=False,
92
+ penalty="l2",
93
+ intercept_scaling=1.0,
94
+ multi_class="auto",
95
+ random_state=None,
96
+ check_input=True,
97
+ max_squared_sum=None,
98
+ sample_weight=None,
99
+ l1_ratio=None,
100
+ n_threads=1,
101
+ ):
102
+
103
+ # Comment 2025-08-04: this file might have dead code paths from unsupported solvers.
104
+ # It appears to have initially been a copy-paste of scikit-learn with a few additions
105
+ # for varying levels of offloading to oneDAL, but later on a check was added that
106
+ # calls 'lr_path_original' early on when it won't end up offloading anything to oneDAL.
107
+ # Some parts of the file have been selectively updated since the initial copy-paste
108
+ # to reflect newer additions to sklearn, but they are not synch. The rest of the file
109
+ # remains as it was before the early offload conditions, so some sections might have
110
+ # become unreachable.
111
+
112
+ if isinstance(Cs, numbers.Integral):
113
+ Cs = np.logspace(-4, 4, Cs)
114
+
115
+ solver = _check_solver(solver, penalty, dual)
116
+
117
+ # Preprocessing.
118
+ if check_input:
119
+ X = check_array(
120
+ X,
121
+ accept_sparse=False,
122
+ dtype=np.float64,
123
+ accept_large_sparse=False,
124
+ )
125
+ y = check_array(y, ensure_2d=False, dtype=None)
126
+ check_consistent_length(X, y)
127
+ _, n_features = X.shape
128
+
129
+ classes = np.unique(y)
130
+ random_state = check_random_state(random_state)
131
+
132
+ multi_class = _check_multi_class(multi_class, solver, len(classes))
133
+ if pos_class is None and multi_class != "multinomial":
134
+ if classes.size > 2:
135
+ raise ValueError("To fit OvR, use the pos_class argument")
136
+ # np.unique(y) gives labels in sorted order.
137
+ pos_class = classes[1]
138
+
139
+ le = LabelEncoder()
140
+
141
+ # For doing a ovr, we need to mask the labels first. for the
142
+ # multinomial case this is not necessary.
143
+ if multi_class == "ovr":
144
+ y_bin = (y == pos_class).astype(X.dtype)
145
+ w0 = np.zeros(n_features + 1, dtype=X.dtype)
146
+ else:
147
+ Y_multi = le.fit_transform(y).astype(X.dtype, copy=False)
148
+ w0 = np.zeros((classes.size, n_features + 1), order="C", dtype=X.dtype)
149
+
150
+ # Adoption of https://github.com/scikit-learn/scikit-learn/pull/26721
151
+ sw_sum = len(X)
152
+
153
+ if coef is not None:
154
+ # it must work both giving the bias term and not
155
+ if multi_class == "ovr":
156
+ if coef.size not in (n_features, w0.size):
157
+ raise ValueError(
158
+ "Initialization coef is of shape %d, expected shape "
159
+ "%d or %d" % (coef.size, n_features, w0.size)
160
+ )
161
+ w0[-coef.size :] = np.roll(coef, 1, -1) if coef.size != n_features else coef
162
+ else:
163
+ # For binary problems coef.shape[0] should be 1, otherwise it
164
+ # should be classes.size.
165
+ n_classes = classes.size
166
+ if n_classes == 2:
167
+ n_classes = 1
168
+
169
+ if coef.shape[0] != n_classes or coef.shape[1] not in (
170
+ n_features,
171
+ n_features + 1,
172
+ ):
173
+ raise ValueError(
174
+ "Initialization coef is of shape (%d, %d), expected "
175
+ "shape (%d, %d) or (%d, %d)"
176
+ % (
177
+ coef.shape[0],
178
+ coef.shape[1],
179
+ classes.size,
180
+ n_features,
181
+ classes.size,
182
+ n_features + 1,
183
+ )
184
+ )
185
+
186
+ w0[:, -coef.shape[1] :] = (
187
+ np.roll(coef, 1, -1) if coef.shape[1] != n_features else coef
188
+ )
189
+
190
+ C_daal_multiplier = 1
191
+
192
+ if multi_class == "multinomial":
193
+ # fmin_l_bfgs_b and newton-cg accepts only ravelled parameters.
194
+ if classes.size == 2:
195
+ w0 = w0[-1:, :]
196
+ w0 = w0.ravel(order="C")
197
+ target = Y_multi
198
+
199
+ # Note: scikit-learn does a theoretically incorrect procedure when using
200
+ # multi_class='multinomial' with two classes. This converts the problem
201
+ # into an equivalent problem for binary logistic regression.
202
+ if solver == "lbfgs":
203
+ if classes.size == 2:
204
+ C_daal_multiplier = 2
205
+ w0 *= 2
206
+ daal_extra_args_func = _daal4py_logistic_loss_extra_args
207
+ else:
208
+ daal_extra_args_func = _daal4py_cross_entropy_loss_extra_args
209
+ func = _daal4py_loss_and_grad
210
+
211
+ elif solver == "newton-cg":
212
+ if classes.size == 2:
213
+ C_daal_multiplier = 2
214
+ w0 *= 2
215
+ daal_extra_args_func = _daal4py_logistic_loss_extra_args
216
+ else:
217
+ daal_extra_args_func = _daal4py_cross_entropy_loss_extra_args
218
+ func = _daal4py_loss_
219
+ grad = _daal4py_grad_
220
+ hess = _daal4py_grad_hess_
221
+ else:
222
+ target = y_bin
223
+ if solver == "lbfgs":
224
+ func = _daal4py_loss_and_grad
225
+ daal_extra_args_func = _daal4py_logistic_loss_extra_args
226
+ elif solver == "newton-cg":
227
+ daal_extra_args_func = _daal4py_logistic_loss_extra_args
228
+ func = _daal4py_loss_
229
+ grad = _daal4py_grad_
230
+ hess = _daal4py_grad_hess_
231
+
232
+ coefs = list()
233
+ n_iter = np.zeros(len(Cs), dtype=np.int32)
234
+ for i, C in enumerate(Cs):
235
+ if solver == "lbfgs":
236
+ extra_args = daal_extra_args_func(
237
+ classes.size,
238
+ w0,
239
+ X,
240
+ target,
241
+ 0.0,
242
+ 1.0 / (2 * C * C_daal_multiplier * sw_sum),
243
+ fit_intercept,
244
+ value=True,
245
+ gradient=True,
246
+ hessian=False,
247
+ )
248
+
249
+ iprint = [-1, 50, 1, 100, 101][
250
+ np.searchsorted(np.array([0, 1, 2, 3]), verbose)
251
+ ]
252
+ # Note: this uses more correction pairs than the implementation in scikit-learn,
253
+ # which means better approximation of the Hessian at the expense of slower updates.
254
+ # This is beneficial for high-dimensional convex problems without bound constraints
255
+ # like the logistic regression being fitted here. For larger problems with sparse
256
+ # data (currently not supported), it might benefit from increasing the number further.
257
+ opt_res = optimize.minimize(
258
+ func,
259
+ w0,
260
+ method="L-BFGS-B",
261
+ jac=True,
262
+ args=extra_args,
263
+ options={
264
+ "maxiter": max_iter,
265
+ "maxcor": 50,
266
+ "maxls": 50,
267
+ "gtol": tol,
268
+ "ftol": 64 * np.finfo(float).eps,
269
+ **_get_additional_lbfgs_options_dict("iprint", iprint),
270
+ },
271
+ )
272
+ n_iter_i = _check_optimize_result(
273
+ solver,
274
+ opt_res,
275
+ max_iter,
276
+ extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG,
277
+ )
278
+ w0, loss = opt_res.x, opt_res.fun
279
+ if C_daal_multiplier == 2:
280
+ w0 /= 2
281
+ elif solver == "newton-cg":
282
+
283
+ def make_ncg_funcs(f, value=False, gradient=False, hessian=False):
284
+ daal_penaltyL2 = 1.0 / (2 * C * C_daal_multiplier * sw_sum)
285
+ _obj_, X_, y_, n_samples = daal_extra_args_func(
286
+ classes.size,
287
+ w0,
288
+ X,
289
+ target,
290
+ 0.0,
291
+ daal_penaltyL2,
292
+ fit_intercept,
293
+ value=value,
294
+ gradient=gradient,
295
+ hessian=hessian,
296
+ )
297
+
298
+ def _func_(x, *args):
299
+ return f(x, _obj_, *args)
300
+
301
+ return _func_, (X_, y_, n_samples, daal_penaltyL2)
302
+
303
+ loss_func, extra_args = make_ncg_funcs(func, value=True)
304
+ grad_func, _ = make_ncg_funcs(grad, gradient=True)
305
+ grad_hess_func, _ = make_ncg_funcs(hess, gradient=True)
306
+ w0, n_iter_i = _newton_cg(
307
+ grad_hess_func,
308
+ loss_func,
309
+ grad_func,
310
+ w0,
311
+ args=extra_args,
312
+ maxiter=max_iter,
313
+ tol=tol,
314
+ )
315
+ if C_daal_multiplier == 2:
316
+ w0 /= 2
317
+
318
+ else:
319
+ raise ValueError(
320
+ "solver must be one of {'lbfgs', 'newton-cg'}, got '%s' instead" % solver
321
+ )
322
+
323
+ if multi_class == "multinomial":
324
+ if classes.size == 2:
325
+ multi_w0 = w0[np.newaxis, :]
326
+ else:
327
+ multi_w0 = np.reshape(w0, (classes.size, -1))
328
+ coefs.append(multi_w0.copy())
329
+ else:
330
+ coefs.append(w0.copy())
331
+
332
+ n_iter[i] = n_iter_i
333
+
334
+ if fit_intercept:
335
+ for i, ci in enumerate(coefs):
336
+ coefs[i] = np.roll(ci, -1, -1)
337
+ else:
338
+ for i, ci in enumerate(coefs):
339
+ coefs[i] = np.delete(ci, 0, axis=-1)
340
+
341
+ return np.array(coefs), np.array(Cs), n_iter
342
+
343
+
344
+ def daal4py_fit(self, X, y, sample_weight=None):
345
+ which, what = logistic_module, "_logistic_regression_path"
346
+ replacer = logistic_regression_path
347
+ descriptor = getattr(which, what, None)
348
+ setattr(which, what, replacer)
349
+ try:
350
+ clf = LogisticRegression_original.fit(self, X, y, sample_weight)
351
+ finally:
352
+ setattr(which, what, descriptor)
353
+ return clf
354
+
355
+
356
+ def daal4py_predict(self, X, resultsToEvaluate):
357
+ check_is_fitted(self)
358
+ check_feature_names(self, X, reset=False)
359
+ X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
360
+ try:
361
+ fptype = getFPType(X)
362
+ except ValueError:
363
+ fptype = None
364
+
365
+ if resultsToEvaluate == "computeClassLabels":
366
+ _function_name = "predict"
367
+ elif resultsToEvaluate == "computeClassProbabilities":
368
+ _function_name = "predict_proba"
369
+ elif resultsToEvaluate == "computeClassLogProbabilities":
370
+ _function_name = "predict_log_proba"
371
+ else:
372
+ raise ValueError(
373
+ "resultsToEvaluate must be in [computeClassLabels, \
374
+ computeClassProbabilities, computeClassLogProbabilities]"
375
+ )
376
+
377
+ _patching_status = PatchingConditionsChain(
378
+ f"sklearn.linear_model.LogisticRegression.{_function_name}"
379
+ )
380
+ if _function_name != "predict":
381
+ multi_class = getattr(self, "multi_class", "auto")
382
+ _patching_status.and_conditions(
383
+ [
384
+ (
385
+ self.classes_.size == 2
386
+ or _check_multi_class(
387
+ multi_class if multi_class != "deprecated" else "auto",
388
+ self.solver,
389
+ self.classes_.size,
390
+ )
391
+ != "ovr",
392
+ f"selected multiclass option is not supported for n_classes > 2.",
393
+ ),
394
+ (
395
+ not (self.classes_.size == 2 and multi_class == "multinomial"),
396
+ "multi_class='multinomial' not supported with binary data",
397
+ ),
398
+ ],
399
+ )
400
+
401
+ _dal_ready = _patching_status.and_conditions(
402
+ [
403
+ (not sparse.issparse(X), "X is sparse. Sparse input is not supported."),
404
+ (
405
+ not sparse.issparse(self.coef_),
406
+ "self.coef_ is sparse. Sparse coefficients are not supported.",
407
+ ),
408
+ (fptype is not None, "Unable to get dtype."),
409
+ ]
410
+ )
411
+
412
+ _patching_status.write_log()
413
+ if _dal_ready:
414
+ n_features = self.coef_.shape[1]
415
+ if X.shape[1] != n_features:
416
+ raise ValueError(
417
+ f"X has {X.shape[1]} features, "
418
+ f"but LogisticRegression is expecting {n_features} features as input"
419
+ )
420
+ builder = d4p.logistic_regression_model_builder(X.shape[1], len(self.classes_))
421
+ builder.set_beta(self.coef_, self.intercept_)
422
+ predict = d4p.logistic_regression_prediction(
423
+ nClasses=len(self.classes_),
424
+ fptype=fptype,
425
+ method="defaultDense",
426
+ resultsToEvaluate=resultsToEvaluate,
427
+ )
428
+ res = predict.compute(X, builder.model)
429
+ if resultsToEvaluate == "computeClassLabels":
430
+ res = res.prediction
431
+ if (
432
+ not np.array_equal(self.classes_, np.arange(0, len(self.classes_)))
433
+ or self.classes_.dtype != X.dtype
434
+ ):
435
+ res = self.classes_.take(np.asarray(res, dtype=np.intp))
436
+ elif resultsToEvaluate == "computeClassProbabilities":
437
+ res = res.probabilities
438
+ elif resultsToEvaluate == "computeClassLogProbabilities":
439
+ res = res.logProbabilities
440
+ else:
441
+ raise ValueError(
442
+ "resultsToEvaluate must be in [computeClassLabels, \
443
+ computeClassProbabilities, computeClassLogProbabilities]"
444
+ )
445
+ if res.shape[1] == 1:
446
+ res = np.ravel(res)
447
+ return res
448
+
449
+ if resultsToEvaluate == "computeClassLabels":
450
+ return LogisticRegression_original.predict(self, X)
451
+ if resultsToEvaluate == "computeClassProbabilities":
452
+ return LogisticRegression_original.predict_proba(self, X)
453
+ if resultsToEvaluate == "computeClassLogProbabilities":
454
+ return LogisticRegression_original.predict_log_proba(self, X)
455
+
456
+
457
+ def logistic_regression_path(*args, **kwargs):
458
+
459
+ _patching_status = PatchingConditionsChain(
460
+ "sklearn.linear_model.LogisticRegression.fit"
461
+ )
462
+ _dal_ready = _patching_status.and_conditions(
463
+ [
464
+ (
465
+ kwargs["solver"] in ["lbfgs", "newton-cg"],
466
+ f"'{kwargs['solver']}' solver is not supported. "
467
+ "Only 'lbfgs' and 'newton-cg' solvers are supported.",
468
+ ),
469
+ (not sparse.issparse(args[0]), "X is sparse. Sparse input is not supported."),
470
+ (kwargs["sample_weight"] is None, "Sample weights are not supported."),
471
+ (kwargs["class_weight"] is None, "Class weights are not supported."),
472
+ (
473
+ kwargs["penalty"]
474
+ in (["l2", "deprecated"] if sklearn_check_version("1.8") else ["l2"]),
475
+ "Penalties other than l2 are not supported.",
476
+ ),
477
+ (not kwargs["l1_ratio"], "L1 regularization is not supported."),
478
+ (
479
+ not (kwargs["solver"] == "newton-cg" and not kwargs["fit_intercept"]),
480
+ "'newton-cg' solver without intercept is not supported.",
481
+ ),
482
+ ]
483
+ )
484
+ if not _dal_ready:
485
+ _patching_status.write_log()
486
+ return lr_path_original(*args, **kwargs)
487
+
488
+ if sklearn_check_version("1.8"):
489
+ kwargs.pop("classes", None)
490
+ res = __logistic_regression_path(*(args[:2]), **kwargs)
491
+ else:
492
+ res = __logistic_regression_path(*args, **kwargs)
493
+
494
+ _patching_status.write_log()
495
+ return res
496
+
497
+
498
+ @control_n_jobs(
499
+ decorated_methods=["fit", "predict", "predict_proba", "predict_log_proba"]
500
+ )
501
+ class LogisticRegression(LogisticRegression_original):
502
+ __doc__ = LogisticRegression_original.__doc__
503
+
504
+ if sklearn_check_version("1.2"):
505
+ _parameter_constraints: dict = {
506
+ **LogisticRegression_original._parameter_constraints
507
+ }
508
+
509
+ def __init__(
510
+ self,
511
+ penalty="l2",
512
+ dual=False,
513
+ tol=1e-4,
514
+ C=1.0,
515
+ fit_intercept=True,
516
+ intercept_scaling=1,
517
+ class_weight=None,
518
+ random_state=None,
519
+ solver="lbfgs",
520
+ max_iter=100,
521
+ multi_class="auto",
522
+ verbose=0,
523
+ warm_start=False,
524
+ n_jobs=None,
525
+ l1_ratio=None,
526
+ ):
527
+ self.penalty = penalty
528
+ self.dual = dual
529
+ self.tol = tol
530
+ self.C = C
531
+ self.fit_intercept = fit_intercept
532
+ self.intercept_scaling = intercept_scaling
533
+ self.class_weight = class_weight
534
+ self.random_state = random_state
535
+ self.solver = solver
536
+ self.max_iter = max_iter
537
+ self.multi_class = multi_class
538
+ self.verbose = verbose
539
+ self.warm_start = warm_start
540
+ self.n_jobs = n_jobs
541
+ self.l1_ratio = l1_ratio
542
+
543
+ def fit(self, X, y, sample_weight=None):
544
+ check_feature_names(self, X, reset=True)
545
+ if sklearn_check_version("1.2"):
546
+ self._validate_params()
547
+ return daal4py_fit(self, X, y, sample_weight)
548
+
549
+ def predict(self, X):
550
+ return daal4py_predict(self, X, "computeClassLabels")
551
+
552
+ def predict_log_proba(self, X):
553
+ return daal4py_predict(self, X, "computeClassLogProbabilities")
554
+
555
+ def predict_proba(self, X):
556
+ return daal4py_predict(self, X, "computeClassProbabilities")
557
+
558
+ fit.__doc__ = LogisticRegression_original.fit.__doc__
559
+ predict.__doc__ = LogisticRegression_original.predict.__doc__
560
+ predict_log_proba.__doc__ = LogisticRegression_original.predict_log_proba.__doc__
561
+ predict_proba.__doc__ = LogisticRegression_original.predict_proba.__doc__
@@ -0,0 +1,17 @@
1
+ # ==============================================================================
2
+ # Copyright 2014 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
+ from ._ridge import *