scikit-learn-intelex 2024.4.0__py312-none-win_amd64.whl → 2025.10.0__py312-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) 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.cp312-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.cp312-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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -2
  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-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -28
  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-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  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-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +3 -3
  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-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -2
  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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
  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.cp312-win_amd64.pyd +0 -0
  65. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  66. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
  67. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
  68. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
  69. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  70. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  71. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  72. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
  73. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
  74. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
  75. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  76. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  77. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  78. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
  79. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  80. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  81. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
  82. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
  83. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  84. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
  85. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
  86. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
  88. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
  89. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
  90. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
  91. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
  92. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
  93. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
  94. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  95. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
  96. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
  97. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
  98. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
  99. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
  100. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  101. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
  102. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  103. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  104. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
  105. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
  106. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
  107. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  108. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  109. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
  110. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  111. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  112. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/neighbors/__init__.py +19 -19
  113. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
  114. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  115. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  116. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
  117. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
  118. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  119. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  120. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
  121. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
  122. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  123. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  124. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  125. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  126. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
  127. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
  128. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
  129. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
  130. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
  131. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
  132. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  133. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
  134. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__init__.py +7 -3
  135. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
  136. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
  137. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
  138. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
  139. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
  140. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  141. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
  142. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +128 -78
  143. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  144. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +101 -32
  145. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  146. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +38 -29
  147. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
  148. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
  149. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
  150. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/conftest.py +20 -1
  151. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
  152. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
  153. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
  154. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
  155. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +199 -21
  156. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
  157. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -17
  158. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
  159. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
  160. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +288 -440
  161. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
  162. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
  163. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +17 -3
  164. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  165. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
  166. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
  167. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
  168. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
  169. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
  170. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
  171. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  172. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  173. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  174. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
  175. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  176. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +11 -0
  177. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
  178. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +3 -0
  179. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  180. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
  181. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +30 -62
  182. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +56 -9
  183. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +45 -101
  184. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +63 -94
  185. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +49 -25
  186. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +6 -4
  187. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  188. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
  189. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +54 -8
  190. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  191. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
  192. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
  193. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  194. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
  195. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  196. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
  197. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
  198. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +9 -4
  199. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
  200. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
  201. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +3 -4
  202. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
  203. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
  204. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
  205. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
  206. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  207. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
  208. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +6 -4
  209. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
  210. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
  211. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  212. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
  213. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
  214. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
  215. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
  216. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
  217. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
  218. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
  219. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +1 -3
  220. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
  221. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
  222. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +99 -117
  223. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +55 -16
  224. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +95 -113
  225. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +51 -16
  226. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +43 -20
  227. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
  228. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
  229. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  230. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
  231. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +5 -4
  232. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
  233. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +122 -75
  234. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
  235. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
  236. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
  237. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  238. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/validation.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -1
  239. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
  240. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
  241. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  242. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
  243. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  244. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
  245. scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
  246. scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
  247. {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/WHEEL +1 -1
  248. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_config.py +0 -110
  249. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -250
  250. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_utils.py +0 -109
  251. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  252. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  253. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -130
  254. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -143
  255. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -335
  256. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -56
  257. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -113
  258. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -316
  259. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
  260. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +0 -385
  261. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -117
  262. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -91
  263. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -26
  264. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  265. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -303
  266. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -133
  267. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
  268. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
  269. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -185
  270. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +0 -164
  271. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -39
  272. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -227
  273. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -99
  274. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  275. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -20
  276. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py +0 -97
  277. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
  278. scikit_learn_intelex-2024.4.0.dist-info/METADATA +0 -230
  279. scikit_learn_intelex-2024.4.0.dist-info/RECORD +0 -101
  280. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/basic_statistics/__init__.py +0 -0
  281. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  282. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  283. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  284. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  285. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  286. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  287. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  288. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  289. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  290. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  291. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  292. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  293. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  294. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  295. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  296. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  297. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  298. {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/LICENSE.txt +0 -0
  299. {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,826 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 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
+ from scipy import sparse as sp
21
+ from sklearn.linear_model._coordinate_descent import ElasticNet as ElasticNet_original
22
+ from sklearn.linear_model._coordinate_descent import Lasso as Lasso_original
23
+ from sklearn.utils import check_array, check_X_y
24
+
25
+ import daal4py
26
+ from daal4py.sklearn._utils import (
27
+ PatchingConditionsChain,
28
+ get_patch_message,
29
+ getFPType,
30
+ make2d,
31
+ sklearn_check_version,
32
+ )
33
+
34
+ from .._n_jobs_support import control_n_jobs
35
+ from ..utils.validation import check_feature_names
36
+
37
+ if not sklearn_check_version("1.2"):
38
+ from sklearn.linear_model._base import _deprecate_normalize
39
+ if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
40
+ from sklearn.utils import check_scalar
41
+
42
+ import logging
43
+
44
+ # only for compliance with Sklearn
45
+ import warnings
46
+
47
+ from sklearn.exceptions import ConvergenceWarning
48
+ from sklearn.preprocessing import normalize
49
+
50
+
51
+ def _daal4py_check(self, X, y, check_input):
52
+ _fptype = getFPType(X)
53
+
54
+ # check alpha
55
+ if self.alpha == 0:
56
+ warnings.warn(
57
+ "With alpha=0, this algorithm does not converge "
58
+ "well. You are advised to use the LinearRegression "
59
+ "estimator",
60
+ stacklevel=2,
61
+ )
62
+
63
+ # check l1_ratio
64
+ if (
65
+ not isinstance(self.l1_ratio, numbers.Number)
66
+ or self.l1_ratio < 0
67
+ or self.l1_ratio > 1
68
+ ):
69
+ raise ValueError(
70
+ "l1_ratio must be between 0 and 1; " f"got l1_ratio={self.l1_ratio}"
71
+ )
72
+
73
+ # check precompute
74
+ if isinstance(self.precompute, np.ndarray):
75
+ if check_input:
76
+ check_array(self.precompute, dtype=_fptype)
77
+ self.precompute = make2d(self.precompute)
78
+ else:
79
+ if self.precompute not in [False, True, "auto"]:
80
+ raise ValueError(
81
+ "precompute should be one of True, False, "
82
+ "'auto' or array-like. Got %r" % self.precompute
83
+ )
84
+
85
+ # check selection
86
+ if self.selection not in ["random", "cyclic"]:
87
+ raise ValueError("selection should be either random or cyclic.")
88
+
89
+
90
+ def _daal4py_fit_enet(self, X, y_, check_input):
91
+ # appropriate checks
92
+ _daal4py_check(self, X, y_, check_input)
93
+ X = make2d(X)
94
+ y = make2d(y_)
95
+ _fptype = getFPType(X)
96
+
97
+ # only for dual_gap computation, it is not required for oneAPI
98
+ # Data Analytics Library
99
+ self._X = X
100
+ self.n_features_in_ = X.shape[1]
101
+ self._y = y
102
+
103
+ penalty_L1 = np.asarray(self.alpha * self.l1_ratio, dtype=X.dtype)
104
+ penalty_L2 = np.asarray(self.alpha * (1.0 - self.l1_ratio), dtype=X.dtype)
105
+ if penalty_L1.size != 1 or penalty_L2.size != 1:
106
+ raise ValueError("alpha or l1_ratio length is wrong")
107
+ penalty_L1 = penalty_L1.reshape((1, -1))
108
+ penalty_L2 = penalty_L2.reshape((1, -1))
109
+
110
+ # normalizing and centering
111
+ X_offset = np.zeros(X.shape[1], dtype=X.dtype)
112
+ X_scale = np.ones(X.shape[1], dtype=X.dtype)
113
+ if y.ndim == 1:
114
+ y_offset = X.dtype.type(0)
115
+ else:
116
+ y_offset = np.zeros(y.shape[1], dtype=X.dtype)
117
+
118
+ if sklearn_check_version("1.2"):
119
+ _normalize = False
120
+ else:
121
+ _normalize = self._normalize
122
+ if self.fit_intercept:
123
+ X_offset = np.average(X, axis=0)
124
+ if _normalize:
125
+ if self.copy_X:
126
+ X = np.copy(X) - X_offset
127
+ else:
128
+ X -= X_offset
129
+ X, X_scale = normalize(X, axis=0, copy=False, return_norm=True)
130
+ y_offset = np.average(y, axis=0)
131
+ y = y - y_offset
132
+
133
+ # only for compliance with Sklearn
134
+ if (
135
+ isinstance(self.precompute, np.ndarray)
136
+ and self.fit_intercept
137
+ and (
138
+ not np.allclose(X_offset, np.zeros(X.shape[1]))
139
+ or _normalize
140
+ and not np.allclose(X_scale, np.ones(X.shape[1]))
141
+ )
142
+ ):
143
+ if sklearn_check_version("1.4"):
144
+ warnings.warn(
145
+ "Gram matrix was provided but X was centered"
146
+ " to fit intercept: recomputing Gram matrix.",
147
+ UserWarning,
148
+ )
149
+ else:
150
+ warnings.warn(
151
+ "Gram matrix was provided but X was centered"
152
+ " to fit intercept, "
153
+ "or X was normalized : recomputing Gram matrix.",
154
+ UserWarning,
155
+ )
156
+
157
+ mse_alg = daal4py.optimization_solver_mse(
158
+ numberOfTerms=X.shape[0], fptype=_fptype, method="defaultDense"
159
+ )
160
+ mse_alg.setup(X, y, None)
161
+
162
+ cd_solver = daal4py.optimization_solver_coordinate_descent(
163
+ function=mse_alg,
164
+ fptype=_fptype,
165
+ method="defaultDense",
166
+ selection=self.selection,
167
+ seed=0 if self.random_state is None else self.random_state,
168
+ nIterations=self.max_iter,
169
+ positive=self.positive,
170
+ accuracyThreshold=self.tol,
171
+ )
172
+
173
+ # set warm_start
174
+ if self.warm_start and hasattr(self, "coef_") and isinstance(self.coef_, np.ndarray):
175
+ n_rows = y.shape[1]
176
+ n_cols = X.shape[1] + 1
177
+ inputArgument = np.zeros((n_rows, n_cols), dtype=_fptype)
178
+ for i in range(n_rows):
179
+ inputArgument[i][0] = self.intercept_ if (n_rows == 1) else self.intercept_[i]
180
+ inputArgument[i][1:] = self.coef_[:] if (n_rows == 1) else self.coef_[i, :]
181
+ cd_solver.setup(inputArgument)
182
+ doUse_condition = self.copy_X is False or (
183
+ self.fit_intercept and _normalize and self.copy_X
184
+ )
185
+ elastic_net_alg = daal4py.elastic_net_training(
186
+ fptype=_fptype,
187
+ method="defaultDense",
188
+ interceptFlag=(self.fit_intercept is True),
189
+ dataUseInComputation="doUse" if doUse_condition else "doNotUse",
190
+ penaltyL1=penalty_L1,
191
+ penaltyL2=penalty_L2,
192
+ optimizationSolver=cd_solver,
193
+ )
194
+ try:
195
+ if isinstance(self.precompute, np.ndarray):
196
+ elastic_net_res = elastic_net_alg.compute(
197
+ data=X, dependentVariables=y, gramMatrix=self.precompute
198
+ )
199
+ else:
200
+ elastic_net_res = elastic_net_alg.compute(data=X, dependentVariables=y)
201
+ except RuntimeError:
202
+ return None
203
+
204
+ # set coef_ and intersept_ results
205
+ elastic_net_model = elastic_net_res.model
206
+ self.daal_model_ = elastic_net_model
207
+
208
+ # update coefficients if normalizing and centering
209
+ if self.fit_intercept and _normalize:
210
+ elastic_net_model.Beta[:, 1:] = elastic_net_model.Beta[:, 1:] / X_scale
211
+ elastic_net_model.Beta[:, 0] = (
212
+ y_offset - np.dot(X_offset, elastic_net_model.Beta[:, 1:].T)
213
+ ).T
214
+
215
+ coefs = elastic_net_model.Beta
216
+
217
+ self.intercept_ = coefs[:, 0].copy(order="C")
218
+ self.coef_ = coefs[:, 1:].copy(order="C")
219
+
220
+ # only for compliance with Sklearn
221
+ if y.shape[1] == 1:
222
+ self.coef_ = np.ravel(self.coef_)
223
+ self.intercept_ = np.ravel(self.intercept_)
224
+ if self.intercept_.shape[0] == 1:
225
+ self.intercept_ = self.intercept_[0]
226
+
227
+ # set n_iter_
228
+ n_iter = cd_solver.__get_result__().nIterations[0][0]
229
+ if y.shape[1] == 1:
230
+ self.n_iter_ = n_iter
231
+ else:
232
+ self.n_iter_ = np.full(y.shape[1], n_iter)
233
+
234
+ # only for compliance with Sklearn
235
+ if self.max_iter == n_iter + 1:
236
+ warnings.warn(
237
+ "Objective did not converge. You might want to "
238
+ "increase the number of iterations.",
239
+ ConvergenceWarning,
240
+ )
241
+
242
+ return self
243
+
244
+
245
+ def _daal4py_predict_enet(self, X):
246
+ X = make2d(X)
247
+ _fptype = getFPType(self.coef_)
248
+
249
+ elastic_net_palg = daal4py.elastic_net_prediction(
250
+ fptype=_fptype, method="defaultDense"
251
+ )
252
+ if self.n_features_in_ != X.shape[1]:
253
+ raise ValueError(
254
+ f"X has {X.shape[1]} features, "
255
+ f"but ElasticNet is expecting "
256
+ f"{self.n_features_in_} features as input"
257
+ )
258
+ elastic_net_res = elastic_net_palg.compute(X, self.daal_model_)
259
+
260
+ res = elastic_net_res.prediction
261
+
262
+ if res.shape[1] == 1 and self.coef_.ndim == 1:
263
+ res = np.ravel(res)
264
+ return res
265
+
266
+
267
+ def _daal4py_fit_lasso(self, X, y_, check_input):
268
+ # appropriate checks
269
+ _daal4py_check(self, X, y_, check_input)
270
+ X = make2d(X)
271
+ y = make2d(y_)
272
+ _fptype = getFPType(X)
273
+
274
+ # only for dual_gap computation, it is not required for oneAPI
275
+ # Data Analytics Library
276
+ self._X = X
277
+ self.n_features_in_ = X.shape[1]
278
+ self._y = y
279
+
280
+ # normalizing and centering
281
+ X_offset = np.zeros(X.shape[1], dtype=X.dtype)
282
+ X_scale = np.ones(X.shape[1], dtype=X.dtype)
283
+ if y.ndim == 1:
284
+ y_offset = X.dtype.type(0)
285
+ else:
286
+ y_offset = np.zeros(y.shape[1], dtype=X.dtype)
287
+
288
+ if sklearn_check_version("1.2"):
289
+ _normalize = False
290
+ else:
291
+ _normalize = self._normalize
292
+ if self.fit_intercept:
293
+ X_offset = np.average(X, axis=0)
294
+ if _normalize:
295
+ if self.copy_X:
296
+ X = np.copy(X) - X_offset
297
+ else:
298
+ X -= X_offset
299
+ X, X_scale = normalize(X, axis=0, copy=False, return_norm=True)
300
+ y_offset = np.average(y, axis=0)
301
+ y = y - y_offset
302
+
303
+ # only for compliance with Sklearn
304
+ if (
305
+ isinstance(self.precompute, np.ndarray)
306
+ and self.fit_intercept
307
+ and (
308
+ not np.allclose(X_offset, np.zeros(X.shape[1]))
309
+ or _normalize
310
+ and not np.allclose(X_scale, np.ones(X.shape[1]))
311
+ )
312
+ ):
313
+ warnings.warn(
314
+ "Gram matrix was provided but X was centered"
315
+ " to fit intercept, "
316
+ "or X was normalized : recomputing Gram matrix.",
317
+ UserWarning,
318
+ )
319
+
320
+ mse_alg = daal4py.optimization_solver_mse(
321
+ numberOfTerms=X.shape[0], fptype=_fptype, method="defaultDense"
322
+ )
323
+ mse_alg.setup(X, y, None)
324
+
325
+ cd_solver = daal4py.optimization_solver_coordinate_descent(
326
+ function=mse_alg,
327
+ fptype=_fptype,
328
+ method="defaultDense",
329
+ selection=self.selection,
330
+ seed=0 if self.random_state is None else self.random_state,
331
+ nIterations=self.max_iter,
332
+ positive=self.positive,
333
+ accuracyThreshold=self.tol,
334
+ )
335
+
336
+ # set warm_start
337
+ if self.warm_start and hasattr(self, "coef_") and isinstance(self.coef_, np.ndarray):
338
+ n_rows = y.shape[1]
339
+ n_cols = X.shape[1] + 1
340
+ inputArgument = np.zeros((n_rows, n_cols), dtype=_fptype)
341
+ for i in range(n_rows):
342
+ inputArgument[i][0] = self.intercept_ if (n_rows == 1) else self.intercept_[i]
343
+ inputArgument[i][1:] = (
344
+ self.coef_[:].copy(order="C")
345
+ if (n_rows == 1)
346
+ else self.coef_[i, :].copy(order="C")
347
+ )
348
+ cd_solver.setup(inputArgument)
349
+ doUse_condition = self.copy_X is False or (
350
+ self.fit_intercept and _normalize and self.copy_X
351
+ )
352
+ lasso_alg = daal4py.lasso_regression_training(
353
+ fptype=_fptype,
354
+ method="defaultDense",
355
+ interceptFlag=(self.fit_intercept is True),
356
+ dataUseInComputation="doUse" if doUse_condition else "doNotUse",
357
+ lassoParameters=np.asarray(self.alpha, dtype=X.dtype).reshape((1, -1)),
358
+ optimizationSolver=cd_solver,
359
+ )
360
+ try:
361
+ if isinstance(self.precompute, np.ndarray):
362
+ lasso_res = lasso_alg.compute(
363
+ data=X, dependentVariables=y, gramMatrix=self.precompute
364
+ )
365
+ else:
366
+ lasso_res = lasso_alg.compute(data=X, dependentVariables=y)
367
+ except RuntimeError:
368
+ return None
369
+
370
+ # set coef_ and intersept_ results
371
+ lasso_model = lasso_res.model
372
+ self.daal_model_ = lasso_model
373
+
374
+ # update coefficients if normalizing and centering
375
+ if self.fit_intercept and _normalize:
376
+ lasso_model.Beta[:, 1:] = lasso_model.Beta[:, 1:] / X_scale
377
+ lasso_model.Beta[:, 0] = (
378
+ y_offset - np.dot(X_offset, lasso_model.Beta[:, 1:].T)
379
+ ).T
380
+
381
+ coefs = lasso_model.Beta
382
+
383
+ self.intercept_ = coefs[:, 0].copy(order="C")
384
+ self.coef_ = coefs[:, 1:].copy(order="C")
385
+
386
+ # only for compliance with Sklearn
387
+ if y.shape[1] == 1:
388
+ self.coef_ = np.ravel(self.coef_)
389
+ self.intercept_ = np.ravel(self.intercept_)
390
+ if self.intercept_.shape[0] == 1:
391
+ self.intercept_ = self.intercept_[0]
392
+
393
+ # set n_iter_
394
+ n_iter = cd_solver.__get_result__().nIterations[0][0]
395
+ if y.shape[1] == 1:
396
+ self.n_iter_ = n_iter
397
+ else:
398
+ self.n_iter_ = np.full(y.shape[1], n_iter)
399
+
400
+ # only for compliance with Sklearn
401
+ if self.max_iter == n_iter + 1:
402
+ warnings.warn(
403
+ "Objective did not converge. You might want to "
404
+ "increase the number of iterations.",
405
+ ConvergenceWarning,
406
+ )
407
+
408
+ return self
409
+
410
+
411
+ def _daal4py_predict_lasso(self, X):
412
+ X = make2d(X)
413
+ _fptype = getFPType(self.coef_)
414
+
415
+ lasso_palg = daal4py.lasso_regression_prediction(
416
+ fptype=_fptype, method="defaultDense"
417
+ )
418
+ if self.n_features_in_ != X.shape[1]:
419
+ raise ValueError(
420
+ f"X has {X.shape[1]} features, "
421
+ f"but Lasso is expecting "
422
+ f"{self.n_features_in_} features as input"
423
+ )
424
+ lasso_res = lasso_palg.compute(X, self.daal_model_)
425
+
426
+ res = lasso_res.prediction
427
+
428
+ if res.shape[1] == 1 and self.coef_.ndim == 1:
429
+ res = np.ravel(res)
430
+ return res
431
+
432
+
433
+ def _fit(self, _X, _y, sample_weight=None, check_input=True):
434
+ check_feature_names(self, _X, reset=True)
435
+ if sklearn_check_version("1.2"):
436
+ self._validate_params()
437
+ elif sklearn_check_version("1.1"):
438
+ check_scalar(
439
+ self.alpha,
440
+ "alpha",
441
+ target_type=numbers.Real,
442
+ min_val=0.0,
443
+ )
444
+ if self.alpha == 0:
445
+ warnings.warn(
446
+ "With alpha=0, this algorithm does not converge "
447
+ "well. You are advised to use the LinearRegression "
448
+ "estimator",
449
+ stacklevel=2,
450
+ )
451
+ if isinstance(self.precompute, str):
452
+ raise ValueError(
453
+ "precompute should be one of True, False or array-like. Got %r"
454
+ % self.precompute
455
+ )
456
+ check_scalar(
457
+ self.l1_ratio,
458
+ "l1_ratio",
459
+ target_type=numbers.Real,
460
+ min_val=0.0,
461
+ max_val=1.0,
462
+ )
463
+ if self.max_iter is not None:
464
+ check_scalar(
465
+ self.max_iter, "max_iter", target_type=numbers.Integral, min_val=1
466
+ )
467
+ check_scalar(self.tol, "tol", target_type=numbers.Real, min_val=0.0)
468
+ # check X and y
469
+ if check_input:
470
+ X, y = check_X_y(
471
+ _X,
472
+ _y,
473
+ copy=False,
474
+ accept_sparse="csc",
475
+ dtype=[np.float64, np.float32],
476
+ multi_output=True,
477
+ y_numeric=True,
478
+ )
479
+ y = check_array(_y, copy=False, dtype=X.dtype.type, ensure_2d=False)
480
+ else:
481
+ X, y = _X, _y
482
+
483
+ if not sp.issparse(X):
484
+ self.fit_shape_good_for_daal_ = (
485
+ True if X.ndim <= 1 else True if X.shape[0] >= X.shape[1] else False
486
+ )
487
+ else:
488
+ self.fit_shape_good_for_daal_ = False
489
+
490
+ class_name = self.__class__.__name__
491
+ class_inst = ElasticNet if class_name == "ElasticNet" else Lasso
492
+
493
+ _function_name = f"sklearn.linear_model.{class_name}.fit"
494
+ _patching_status = PatchingConditionsChain(_function_name)
495
+ _dal_ready = _patching_status.and_conditions(
496
+ [
497
+ (not sp.issparse(X), "X is sparse. Sparse input is not supported."),
498
+ (
499
+ self.fit_shape_good_for_daal_,
500
+ "The shape of X does not satisfy oneDAL requirements: "
501
+ "number of features > number of samples.",
502
+ ),
503
+ (
504
+ X.dtype == np.float64 or X.dtype == np.float32,
505
+ f"'{X.dtype}' X data type is not supported. "
506
+ "Only np.float32 and np.float64 are supported.",
507
+ ),
508
+ (sample_weight is None, "Sample weights are not supported."),
509
+ ]
510
+ )
511
+ _patching_status.write_log()
512
+
513
+ if not _dal_ready:
514
+ if hasattr(self, "daal_model_"):
515
+ del self.daal_model_
516
+ res_new = super(class_inst, self).fit(
517
+ X, y, sample_weight=sample_weight, check_input=check_input
518
+ )
519
+ self._gap = res_new.dual_gap_
520
+ return res_new
521
+ self.n_iter_ = None
522
+ self._gap = None
523
+
524
+ if not check_input:
525
+ # only for compliance with Sklearn,
526
+ # this assert is not required for oneAPI Data
527
+ # Analytics Library
528
+ print(type(X), X.flags["F_CONTIGUOUS"])
529
+ if isinstance(X, np.ndarray) and X.flags["F_CONTIGUOUS"] is False:
530
+ # print(X.flags)
531
+ raise ValueError("ndarray is not Fortran contiguous")
532
+
533
+ if not sklearn_check_version("1.2"):
534
+ self._normalize = _deprecate_normalize(
535
+ self.normalize, default=False, estimator_name=class_name
536
+ )
537
+
538
+ # only for pass tests
539
+ # "check_estimators_fit_returns_self(readonly_memmap=True) and
540
+ # check_regressors_train(readonly_memmap=True)
541
+ if not X.flags.writeable:
542
+ X = np.copy(X)
543
+ if not y.flags.writeable:
544
+ y = np.copy(y)
545
+
546
+ if class_name == "ElasticNet":
547
+ res = _daal4py_fit_enet(self, X, y, check_input=check_input)
548
+ else:
549
+ res = _daal4py_fit_lasso(self, X, y, check_input=check_input)
550
+ if res is None:
551
+ if hasattr(self, "daal_model_"):
552
+ del self.daal_model_
553
+ logging.info(_function_name + ": " + get_patch_message("sklearn_after_daal"))
554
+ res_new = super(class_inst, self).fit(
555
+ _X, _y, sample_weight=sample_weight, check_input=check_input
556
+ )
557
+ self._gap = res_new.dual_gap_
558
+ return res_new
559
+ return res
560
+
561
+
562
+ def _dual_gap(self):
563
+ if self._gap is None:
564
+ l1_reg = self.alpha * self.l1_ratio * self._X.shape[0]
565
+ l2_reg = self.alpha * (1.0 - self.l1_ratio) * self._X.shape[0]
566
+ n_targets = self._y.shape[1]
567
+
568
+ if n_targets == 1:
569
+ self._gap = self.tol + 1.0
570
+ X_offset = np.average(self._X, axis=0)
571
+ y_offset = np.average(self._y, axis=0)
572
+ coef = np.reshape(self.coef_, (self.coef_.shape[0], 1))
573
+ R = (self._y - y_offset) - np.dot((self._X - X_offset), coef)
574
+ XtA = np.dot((self._X - X_offset).T, R) - l2_reg * coef
575
+ R_norm2 = np.dot(R.T, R)
576
+ coef_norm2 = np.dot(self.coef_, self.coef_)
577
+ dual_norm_XtA = np.max(XtA) if self.positive else np.max(np.abs(XtA))
578
+ if dual_norm_XtA > l1_reg:
579
+ const = l1_reg / dual_norm_XtA
580
+ A_norm2 = R_norm2 * (const**2)
581
+ self._gap = 0.5 * (R_norm2 + A_norm2)
582
+ else:
583
+ const = 1.0
584
+ self._gap = R_norm2
585
+ l1_norm = np.sum(np.abs(self.coef_))
586
+ tmp = l1_reg * l1_norm
587
+ tmp -= const * np.dot(R.T, (self._y - y_offset))
588
+ tmp += 0.5 * l2_reg * (1 + const**2) * coef_norm2
589
+ self._gap += tmp
590
+ self._gap = self._gap[0][0]
591
+ else:
592
+ self._gap = np.full(n_targets, self.tol + 1.0)
593
+ X_offset = np.average(self._X, axis=0)
594
+ y_offset = np.average(self._y, axis=0)
595
+ for k in range(n_targets):
596
+ R = (self._y[:, k] - y_offset[k]) - np.dot(
597
+ (self._X - X_offset), self.coef_[k, :].T
598
+ )
599
+ XtA = np.dot((self._X - X_offset).T, R) - l2_reg * self.coef_[k, :].T
600
+ R_norm2 = np.dot(R.T, R)
601
+ coef_norm2 = np.dot(self.coef_[k, :], self.coef_[k, :].T)
602
+ dual_norm_XtA = np.max(XtA) if self.positive else np.max(np.abs(XtA))
603
+ if dual_norm_XtA > l1_reg:
604
+ const = l1_reg / dual_norm_XtA
605
+ A_norm2 = R_norm2 * (const**2)
606
+ self._gap[k] = 0.5 * (R_norm2 + A_norm2)
607
+ else:
608
+ const = 1.0
609
+ self._gap[k] = R_norm2
610
+ l1_norm = np.sum(np.abs(self.coef_[k, :]))
611
+ tmp = l1_reg * l1_norm
612
+ tmp -= const * np.dot(R.T, (self._y[:, k] - y_offset[k]))
613
+ tmp += 0.5 * l2_reg * (1 + const**2) * coef_norm2
614
+ self._gap[k] += tmp
615
+ return self._gap
616
+
617
+
618
+ @control_n_jobs(decorated_methods=["fit", "predict"])
619
+ class ElasticNet(ElasticNet_original):
620
+ __doc__ = ElasticNet_original.__doc__
621
+
622
+ if sklearn_check_version("1.2"):
623
+ _parameter_constraints: dict = {**ElasticNet_original._parameter_constraints}
624
+
625
+ def __init__(
626
+ self,
627
+ alpha=1.0,
628
+ l1_ratio=0.5,
629
+ fit_intercept=True,
630
+ precompute=False,
631
+ max_iter=1000,
632
+ copy_X=True,
633
+ tol=1e-4,
634
+ warm_start=False,
635
+ positive=False,
636
+ random_state=None,
637
+ selection="cyclic",
638
+ ):
639
+ super(ElasticNet, self).__init__(
640
+ alpha=alpha,
641
+ l1_ratio=l1_ratio,
642
+ fit_intercept=fit_intercept,
643
+ precompute=precompute,
644
+ max_iter=max_iter,
645
+ copy_X=copy_X,
646
+ tol=tol,
647
+ warm_start=warm_start,
648
+ positive=positive,
649
+ random_state=random_state,
650
+ selection=selection,
651
+ )
652
+
653
+ else:
654
+
655
+ def __init__(
656
+ self,
657
+ alpha=1.0,
658
+ l1_ratio=0.5,
659
+ fit_intercept=True,
660
+ normalize="deprecated",
661
+ precompute=False,
662
+ max_iter=1000,
663
+ copy_X=True,
664
+ tol=1e-4,
665
+ warm_start=False,
666
+ positive=False,
667
+ random_state=None,
668
+ selection="cyclic",
669
+ ):
670
+ super(ElasticNet, self).__init__(
671
+ alpha=alpha,
672
+ l1_ratio=l1_ratio,
673
+ fit_intercept=fit_intercept,
674
+ normalize=normalize,
675
+ precompute=precompute,
676
+ max_iter=max_iter,
677
+ copy_X=copy_X,
678
+ tol=tol,
679
+ warm_start=warm_start,
680
+ positive=positive,
681
+ random_state=random_state,
682
+ selection=selection,
683
+ )
684
+
685
+ def fit(self, X, y, sample_weight=None, check_input=True):
686
+ return _fit(self, X, y, sample_weight=sample_weight, check_input=check_input)
687
+
688
+ def predict(self, X):
689
+ check_feature_names(self, X, reset=False)
690
+
691
+ _X = check_array(
692
+ X, accept_sparse=["csr", "csc", "coo"], dtype=[np.float64, np.float32]
693
+ )
694
+
695
+ _patching_status = PatchingConditionsChain(
696
+ "sklearn.linear_model.ElasticNet.predict"
697
+ )
698
+ _dal_ready = _patching_status.and_conditions(
699
+ [
700
+ (hasattr(self, "daal_model_"), "oneDAL model was not trained."),
701
+ (not sp.issparse(_X), "X is sparse. Sparse input is not supported."),
702
+ ]
703
+ )
704
+ _patching_status.write_log()
705
+
706
+ if not _dal_ready:
707
+ return self._decision_function(X)
708
+ return _daal4py_predict_enet(self, _X)
709
+
710
+ @property
711
+ def dual_gap_(self):
712
+ return _dual_gap(self)
713
+
714
+ @dual_gap_.setter
715
+ def dual_gap_(self, value):
716
+ self._gap = value
717
+
718
+ @dual_gap_.deleter
719
+ def dual_gap_(self):
720
+ self._gap = None
721
+
722
+ fit.__doc__ = ElasticNet_original.fit.__doc__
723
+ predict.__doc__ = ElasticNet_original.predict.__doc__
724
+
725
+
726
+ @control_n_jobs(decorated_methods=["fit", "predict"])
727
+ class Lasso(Lasso_original):
728
+ __doc__ = Lasso_original.__doc__
729
+
730
+ if sklearn_check_version("1.2"):
731
+ _parameter_constraints: dict = {**Lasso_original._parameter_constraints}
732
+
733
+ def __init__(
734
+ self,
735
+ alpha=1.0,
736
+ fit_intercept=True,
737
+ precompute=False,
738
+ copy_X=True,
739
+ max_iter=1000,
740
+ tol=1e-4,
741
+ warm_start=False,
742
+ positive=False,
743
+ random_state=None,
744
+ selection="cyclic",
745
+ ):
746
+ self.l1_ratio = 1.0
747
+ super().__init__(
748
+ alpha=alpha,
749
+ fit_intercept=fit_intercept,
750
+ precompute=precompute,
751
+ copy_X=copy_X,
752
+ max_iter=max_iter,
753
+ tol=tol,
754
+ warm_start=warm_start,
755
+ positive=positive,
756
+ random_state=random_state,
757
+ selection=selection,
758
+ )
759
+
760
+ else:
761
+
762
+ def __init__(
763
+ self,
764
+ alpha=1.0,
765
+ fit_intercept=True,
766
+ normalize="deprecated",
767
+ precompute=False,
768
+ copy_X=True,
769
+ max_iter=1000,
770
+ tol=1e-4,
771
+ warm_start=False,
772
+ positive=False,
773
+ random_state=None,
774
+ selection="cyclic",
775
+ ):
776
+ self.l1_ratio = 1.0
777
+ super().__init__(
778
+ alpha=alpha,
779
+ fit_intercept=fit_intercept,
780
+ normalize=normalize,
781
+ precompute=precompute,
782
+ copy_X=copy_X,
783
+ max_iter=max_iter,
784
+ tol=tol,
785
+ warm_start=warm_start,
786
+ positive=positive,
787
+ random_state=random_state,
788
+ selection=selection,
789
+ )
790
+
791
+ def fit(self, X, y, sample_weight=None, check_input=True):
792
+ return _fit(self, X, y, sample_weight, check_input)
793
+
794
+ def predict(self, X):
795
+ check_feature_names(self, X, reset=False)
796
+ _X = check_array(
797
+ X, accept_sparse=["csr", "csc", "coo"], dtype=[np.float64, np.float32]
798
+ )
799
+
800
+ _patching_status = PatchingConditionsChain("sklearn.linear_model.Lasso.predict")
801
+ _dal_ready = _patching_status.and_conditions(
802
+ [
803
+ (hasattr(self, "daal_model_"), "oneDAL model was not trained."),
804
+ (not sp.issparse(_X), "X is sparse. Sparse input is not supported."),
805
+ ]
806
+ )
807
+ _patching_status.write_log()
808
+
809
+ if not _dal_ready:
810
+ return self._decision_function(X)
811
+ return _daal4py_predict_lasso(self, _X)
812
+
813
+ @property
814
+ def dual_gap_(self):
815
+ return _dual_gap(self)
816
+
817
+ @dual_gap_.setter
818
+ def dual_gap_(self, value):
819
+ self._gap = value
820
+
821
+ @dual_gap_.deleter
822
+ def dual_gap_(self):
823
+ self._gap = None
824
+
825
+ fit.__doc__ = Lasso_original.fit.__doc__
826
+ predict.__doc__ = Lasso_original.predict.__doc__