scikit-learn-intelex 2024.1.0__py312-none-win_amd64.whl → 2025.1.0__py312-none-win_amd64.whl

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

Potentially problematic release.


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

Files changed (277) hide show
  1. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp312-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition}/__init__.py +3 -3
  16. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
  18. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
  19. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -29
  23. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  27. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +4 -2
  34. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
  37. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  39. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
  44. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -42
  46. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
  47. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  56. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
  61. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_device_offload.py +222 -0
  62. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  65. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  66. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  67. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  68. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  69. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  70. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  71. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +564 -0
  72. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  73. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  74. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  75. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  76. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  77. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  78. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  79. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  80. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  81. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
  82. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
  83. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance}/__init__.py +3 -2
  84. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  85. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  86. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  88. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  89. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +154 -0
  90. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
  91. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +414 -0
  92. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  97. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
  98. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  99. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  100. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  101. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  102. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  103. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
  106. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  108. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  109. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
  110. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  112. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  113. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  114. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  116. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  117. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  118. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  119. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  120. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  121. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  122. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  123. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  124. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  125. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  126. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  127. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  128. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
  129. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +10 -7
  130. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
  131. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  132. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +27 -4
  133. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  134. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
  135. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
  136. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
  137. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
  138. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  139. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +19 -10
  140. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
  141. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
  142. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
  143. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  144. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  145. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
  146. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
  147. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
  148. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +25 -9
  149. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +241 -60
  150. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +250 -188
  151. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -21
  152. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -2
  153. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  154. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
  155. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
  156. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
  157. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
  158. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex}/linear_model/logistic_regression.py +194 -133
  159. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
  160. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
  161. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  162. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  163. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
  164. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +4 -0
  165. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
  166. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  167. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -0
  168. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -1
  169. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
  170. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +53 -6
  171. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +51 -155
  172. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +46 -149
  173. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +55 -100
  174. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +16 -18
  175. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
  176. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +138 -0
  177. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  178. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  179. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
  180. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  181. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model}/__init__.py +19 -19
  182. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
  183. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  184. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
  185. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  186. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  187. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  188. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  189. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  190. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  191. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  192. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  193. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  194. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  195. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  196. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
  197. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +11 -12
  198. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  199. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  200. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  201. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  202. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +3 -1
  203. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
  204. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  205. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  206. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  207. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  208. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  209. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  210. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +172 -78
  211. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +74 -70
  212. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +170 -77
  213. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +66 -66
  214. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
  215. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
  216. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  217. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
  218. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
  219. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  220. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  221. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
  222. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
  223. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
  224. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
  225. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  226. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  227. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
  228. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
  229. scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
  230. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
  231. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
  232. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  233. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  234. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
  235. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
  236. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -388
  237. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
  238. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -82
  239. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -28
  240. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -436
  241. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  242. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -376
  243. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -98
  244. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -376
  245. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_preview_logistic_regression.py +0 -59
  246. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
  247. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -225
  248. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -227
  249. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  250. scikit_learn_intelex-2024.1.0.dist-info/RECORD +0 -97
  251. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  252. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  253. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  254. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  255. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  256. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  257. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  258. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  259. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  260. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  261. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  262. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  263. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  264. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  265. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  266. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  267. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  268. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  269. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  270. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  271. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  272. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  273. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  274. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  275. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  276. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
  277. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,207 @@
1
+ # ===============================================================================
2
+ # Copyright 2024 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose
20
+
21
+ from onedal.tests.utils._dataframes_support import (
22
+ _as_numpy,
23
+ _convert_to_dataframe,
24
+ get_dataframes_and_queues,
25
+ )
26
+ from sklearnex.linear_model import IncrementalLinearRegression
27
+ from sklearnex.tests.utils import _IS_INTEL
28
+
29
+
30
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
31
+ @pytest.mark.parametrize("fit_intercept", [True, False])
32
+ @pytest.mark.parametrize("macro_block", [None, 1024])
33
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
34
+ def test_sklearnex_fit_on_gold_data(dataframe, queue, fit_intercept, macro_block, dtype):
35
+ X = np.array([[1], [2]])
36
+ X = X.astype(dtype=dtype)
37
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
38
+ y = np.array([[1], [2]])
39
+ y = y.astype(dtype=dtype)
40
+ y_df = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
41
+
42
+ inclin = IncrementalLinearRegression(fit_intercept=fit_intercept)
43
+ if macro_block is not None:
44
+ hparams = inclin.get_hyperparameters("fit")
45
+ hparams.cpu_macro_block = macro_block
46
+ hparams.gpu_macro_block = macro_block
47
+ inclin.fit(X_df, y_df)
48
+
49
+ y_pred = inclin.predict(X_df)
50
+ np_y_pred = _as_numpy(y_pred)
51
+
52
+ tol = 2e-6 if dtype == np.float32 else 1e-7
53
+ assert_allclose(inclin.coef_, [1], atol=tol)
54
+ if fit_intercept:
55
+ assert_allclose(inclin.intercept_, [0], atol=tol)
56
+ assert_allclose(np_y_pred, y, atol=tol)
57
+
58
+
59
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
60
+ @pytest.mark.parametrize("fit_intercept", [True, False])
61
+ @pytest.mark.parametrize("macro_block", [None, 1024])
62
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
63
+ def test_sklearnex_partial_fit_on_gold_data(
64
+ dataframe, queue, fit_intercept, macro_block, dtype
65
+ ):
66
+ X = np.array([[1], [2], [3], [4]])
67
+ X = X.astype(dtype=dtype)
68
+ y = X + 3
69
+ y = y.astype(dtype=dtype)
70
+ X_split = np.array_split(X, 2)
71
+ y_split = np.array_split(y, 2)
72
+
73
+ inclin = IncrementalLinearRegression()
74
+ if macro_block is not None:
75
+ hparams = inclin.get_hyperparameters("fit")
76
+ hparams.cpu_macro_block = macro_block
77
+ hparams.gpu_macro_block = macro_block
78
+ for i in range(2):
79
+ X_split_df = _convert_to_dataframe(
80
+ X_split[i], sycl_queue=queue, target_df=dataframe
81
+ )
82
+ y_split_df = _convert_to_dataframe(
83
+ y_split[i], sycl_queue=queue, target_df=dataframe
84
+ )
85
+ inclin.partial_fit(X_split_df, y_split_df)
86
+
87
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
88
+ y_pred = inclin.predict(X_df)
89
+ np_y_pred = _as_numpy(y_pred)
90
+
91
+ assert inclin.n_features_in_ == 1
92
+ tol = 1e-5 if dtype == np.float32 else 1e-7
93
+ assert_allclose(inclin.coef_, [[1]], atol=tol)
94
+ if fit_intercept:
95
+ assert_allclose(inclin.intercept_, 3, atol=tol)
96
+
97
+ assert_allclose(np_y_pred, y, atol=tol)
98
+
99
+
100
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
101
+ @pytest.mark.parametrize("fit_intercept", [True, False])
102
+ @pytest.mark.parametrize("macro_block", [None, 1024])
103
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
104
+ def test_sklearnex_partial_fit_multitarget_on_gold_data(
105
+ dataframe, queue, fit_intercept, macro_block, dtype
106
+ ):
107
+ X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
108
+ X = X.astype(dtype=dtype)
109
+ y = np.dot(X, [1, 2]) + 3
110
+ y = y.astype(dtype=dtype)
111
+ X_split = np.array_split(X, 2)
112
+ y_split = np.array_split(y, 2)
113
+
114
+ inclin = IncrementalLinearRegression()
115
+ if macro_block is not None:
116
+ hparams = inclin.get_hyperparameters("fit")
117
+ hparams.cpu_macro_block = macro_block
118
+ hparams.gpu_macro_block = macro_block
119
+ for i in range(2):
120
+ X_split_df = _convert_to_dataframe(
121
+ X_split[i], sycl_queue=queue, target_df=dataframe
122
+ )
123
+ y_split_df = _convert_to_dataframe(
124
+ y_split[i], sycl_queue=queue, target_df=dataframe
125
+ )
126
+ inclin.partial_fit(X_split_df, y_split_df)
127
+
128
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
129
+ y_pred = inclin.predict(X_df)
130
+ np_y_pred = _as_numpy(y_pred)
131
+
132
+ assert inclin.n_features_in_ == 2
133
+ tol = 1e-7
134
+ if dtype == np.float32:
135
+ tol = 7e-6 if _IS_INTEL else 2e-5
136
+
137
+ assert_allclose(inclin.coef_, [1.0, 2.0], atol=tol)
138
+ if fit_intercept:
139
+ assert_allclose(inclin.intercept_, 3.0, atol=tol)
140
+
141
+ assert_allclose(np_y_pred, y, atol=tol)
142
+
143
+
144
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
145
+ @pytest.mark.parametrize("fit_intercept", [True, False])
146
+ @pytest.mark.parametrize("num_samples", [100, 1000])
147
+ @pytest.mark.parametrize("num_features", [5, 10])
148
+ @pytest.mark.parametrize("num_targets", [1, 2])
149
+ @pytest.mark.parametrize("num_blocks", [1, 10])
150
+ @pytest.mark.parametrize("macro_block", [None, 1024])
151
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
152
+ def test_sklearnex_partial_fit_on_random_data(
153
+ dataframe,
154
+ queue,
155
+ fit_intercept,
156
+ num_samples,
157
+ num_features,
158
+ num_targets,
159
+ num_blocks,
160
+ macro_block,
161
+ dtype,
162
+ ):
163
+ seed = 42
164
+ gen = np.random.default_rng(seed)
165
+ intercept = gen.random(size=num_targets, dtype=dtype)
166
+ coef = gen.random(size=(num_targets, num_features), dtype=dtype).T
167
+
168
+ X = gen.random(size=(num_samples, num_features), dtype=dtype)
169
+ if fit_intercept:
170
+ y = X @ coef + intercept[np.newaxis, :]
171
+ else:
172
+ y = X @ coef
173
+
174
+ X_split = np.array_split(X, num_blocks)
175
+ y_split = np.array_split(y, num_blocks)
176
+
177
+ inclin = IncrementalLinearRegression(fit_intercept=fit_intercept)
178
+ if macro_block is not None:
179
+ hparams = inclin.get_hyperparameters("fit")
180
+ hparams.cpu_macro_block = macro_block
181
+ hparams.gpu_macro_block = macro_block
182
+ for i in range(num_blocks):
183
+ X_split_df = _convert_to_dataframe(
184
+ X_split[i], sycl_queue=queue, target_df=dataframe
185
+ )
186
+ y_split_df = _convert_to_dataframe(
187
+ y_split[i], sycl_queue=queue, target_df=dataframe
188
+ )
189
+ inclin.partial_fit(X_split_df, y_split_df)
190
+
191
+ tol = 1e-4 if inclin.coef_.dtype == np.float32 else 1e-7
192
+ assert_allclose(coef.T.squeeze(), inclin.coef_, atol=tol)
193
+
194
+ if fit_intercept:
195
+ assert_allclose(intercept, inclin.intercept_, atol=tol)
196
+
197
+ X_test = gen.random(size=(num_samples, num_features), dtype=dtype)
198
+ if fit_intercept:
199
+ expected_y_pred = (X_test @ coef + intercept[np.newaxis, :]).squeeze()
200
+ else:
201
+ expected_y_pred = (X_test @ coef).squeeze()
202
+
203
+ X_test_df = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
204
+
205
+ y_pred = inclin.predict(X_test_df)
206
+
207
+ assert_allclose(expected_y_pred, _as_numpy(y_pred), atol=tol)
@@ -0,0 +1,153 @@
1
+ # ===============================================================================
2
+ # Copyright 2024 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ from daal4py.sklearn._utils import daal_check_version
18
+
19
+ if daal_check_version((2024, "P", 600)):
20
+ import numpy as np
21
+ import pytest
22
+ from numpy.testing import assert_allclose
23
+ from sklearn.exceptions import NotFittedError
24
+
25
+ from onedal.tests.utils._dataframes_support import (
26
+ _as_numpy,
27
+ _convert_to_dataframe,
28
+ get_dataframes_and_queues,
29
+ )
30
+ from sklearnex.linear_model import IncrementalRidge
31
+
32
+ def _compute_ridge_coefficients(X, y, alpha, fit_intercept):
33
+ coefficients_manual, intercept_manual = None, None
34
+ if fit_intercept:
35
+ X_mean = np.mean(X, axis=0)
36
+ y_mean = np.mean(y)
37
+ X_centered = X - X_mean
38
+ y_centered = y - y_mean
39
+
40
+ X_with_intercept = np.hstack([np.ones((X.shape[0], 1)), X_centered])
41
+ lambda_identity = alpha * np.eye(X_with_intercept.shape[1])
42
+ inverse_term = np.linalg.inv(
43
+ np.dot(X_with_intercept.T, X_with_intercept) + lambda_identity
44
+ )
45
+ xt_y = np.dot(X_with_intercept.T, y_centered)
46
+ coefficients_manual = np.dot(inverse_term, xt_y)
47
+
48
+ intercept_manual = y_mean - np.dot(X_mean, coefficients_manual[1:])
49
+ coefficients_manual = coefficients_manual[1:]
50
+ else:
51
+ lambda_identity = alpha * np.eye(X.shape[1])
52
+ inverse_term = np.linalg.inv(np.dot(X.T, X) + lambda_identity)
53
+ xt_y = np.dot(X.T, y)
54
+ coefficients_manual = np.dot(inverse_term, xt_y)
55
+
56
+ return coefficients_manual, intercept_manual
57
+
58
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
59
+ @pytest.mark.parametrize("batch_size", [10, 100, 1000])
60
+ @pytest.mark.parametrize("alpha", [0.1, 0.5, 1.0])
61
+ @pytest.mark.parametrize("fit_intercept", [True, False])
62
+ def test_inc_ridge_fit_coefficients(
63
+ dataframe, queue, alpha, batch_size, fit_intercept
64
+ ):
65
+ sample_size, feature_size = 1000, 50
66
+ X = np.random.rand(sample_size, feature_size)
67
+ y = np.random.rand(sample_size)
68
+ X_c = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
69
+ y_c = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
70
+
71
+ inc_ridge = IncrementalRidge(
72
+ fit_intercept=fit_intercept, alpha=alpha, batch_size=batch_size
73
+ )
74
+ inc_ridge.fit(X_c, y_c)
75
+
76
+ coefficients_manual, intercept_manual = _compute_ridge_coefficients(
77
+ X, y, alpha, fit_intercept
78
+ )
79
+ if fit_intercept:
80
+ assert_allclose(inc_ridge.intercept_, intercept_manual, rtol=1e-6, atol=1e-6)
81
+
82
+ assert_allclose(inc_ridge.coef_, coefficients_manual, rtol=1e-6, atol=1e-6)
83
+
84
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
85
+ @pytest.mark.parametrize("batch_size", [2, 5])
86
+ @pytest.mark.parametrize("alpha", [0.1, 0.5, 1.0])
87
+ def test_inc_ridge_partial_fit_coefficients(dataframe, queue, alpha, batch_size):
88
+ sample_size, feature_size = 1000, 50
89
+ X = np.random.rand(sample_size, feature_size)
90
+ y = np.random.rand(sample_size)
91
+ X_split = np.array_split(X, batch_size)
92
+ y_split = np.array_split(y, batch_size)
93
+
94
+ inc_ridge = IncrementalRidge(fit_intercept=False, alpha=alpha)
95
+
96
+ for batch_index in range(len(X_split)):
97
+ X_c = _convert_to_dataframe(
98
+ X_split[batch_index], sycl_queue=queue, target_df=dataframe
99
+ )
100
+ y_c = _convert_to_dataframe(
101
+ y_split[batch_index], sycl_queue=queue, target_df=dataframe
102
+ )
103
+ inc_ridge.partial_fit(X_c, y_c)
104
+
105
+ lambda_identity = alpha * np.eye(X.shape[1])
106
+ inverse_term = np.linalg.inv(np.dot(X.T, X) + lambda_identity)
107
+ xt_y = np.dot(X.T, y)
108
+ coefficients_manual = np.dot(inverse_term, xt_y)
109
+
110
+ assert_allclose(inc_ridge.coef_, coefficients_manual, rtol=1e-6, atol=1e-6)
111
+
112
+ def test_inc_ridge_score_before_fit():
113
+ X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
114
+ y = np.dot(X, np.array([1, 2])) + 3
115
+ inc_ridge = IncrementalRidge(alpha=0.5)
116
+ with pytest.raises(NotFittedError):
117
+ inc_ridge.score(X, y)
118
+
119
+ def test_inc_ridge_predict_before_fit():
120
+ X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
121
+ inc_ridge = IncrementalRidge(alpha=0.5)
122
+ with pytest.raises(NotFittedError):
123
+ inc_ridge.predict(X)
124
+
125
+ def test_inc_ridge_score_after_fit():
126
+ X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
127
+ y = np.dot(X, np.array([1, 2])) + 3
128
+ inc_ridge = IncrementalRidge(alpha=0.5)
129
+ inc_ridge.fit(X, y)
130
+ assert inc_ridge.score(X, y) >= 0.97
131
+
132
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
133
+ @pytest.mark.parametrize("fit_intercept", [True, False])
134
+ def test_inc_ridge_predict_after_fit(dataframe, queue, fit_intercept):
135
+ sample_size, feature_size = 1000, 50
136
+ X = np.random.rand(sample_size, feature_size)
137
+ y = np.random.rand(sample_size)
138
+ X_c = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
139
+ y_c = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
140
+
141
+ inc_ridge = IncrementalRidge(fit_intercept=fit_intercept, alpha=0.5)
142
+ inc_ridge.fit(X_c, y_c)
143
+
144
+ y_pred = inc_ridge.predict(X_c)
145
+
146
+ coefficients_manual, intercept_manual = _compute_ridge_coefficients(
147
+ X, y, 0.5, fit_intercept
148
+ )
149
+ y_pred_manual = np.dot(X, coefficients_manual)
150
+ if fit_intercept:
151
+ y_pred_manual += intercept_manual
152
+
153
+ assert_allclose(_as_numpy(y_pred), y_pred_manual, rtol=1e-6, atol=1e-6)
@@ -0,0 +1,167 @@
1
+ # ===============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose
20
+ from scipy.linalg import lstsq
21
+ from sklearn.datasets import make_regression
22
+
23
+ from daal4py.sklearn._utils import daal_check_version
24
+ from daal4py.sklearn.linear_model.tests.test_ridge import (
25
+ _test_multivariate_ridge_alpha_shape,
26
+ _test_multivariate_ridge_coefficients,
27
+ )
28
+ from onedal.tests.utils._dataframes_support import (
29
+ _as_numpy,
30
+ _convert_to_dataframe,
31
+ get_dataframes_and_queues,
32
+ )
33
+ from sklearnex.tests.utils import _IS_INTEL
34
+
35
+
36
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
37
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
38
+ @pytest.mark.parametrize("macro_block", [None, 1024])
39
+ @pytest.mark.parametrize("overdetermined", [False, True])
40
+ @pytest.mark.parametrize("multi_output", [False, True])
41
+ def test_sklearnex_import_linear(
42
+ dataframe, queue, dtype, macro_block, overdetermined, multi_output
43
+ ):
44
+ if (overdetermined or multi_output) and not daal_check_version((2025, "P", 1)):
45
+ pytest.skip()
46
+ if overdetermined and queue and queue.sycl_device.is_gpu:
47
+ pytest.skip()
48
+
49
+ from sklearnex.linear_model import LinearRegression
50
+
51
+ rng = np.random.default_rng(seed=123)
52
+ X = rng.standard_normal(size=(10, 20) if overdetermined else (20, 5))
53
+ y = rng.standard_normal(size=(X.shape[0], 3) if multi_output else X.shape[0])
54
+
55
+ Xi = np.c_[X, np.ones((X.shape[0], 1))]
56
+ expected_coefs = lstsq(Xi, y)[0]
57
+ expected_intercept = expected_coefs[-1]
58
+ expected_coefs = expected_coefs[: X.shape[1]]
59
+ if multi_output:
60
+ expected_coefs = expected_coefs.T
61
+
62
+ linreg = LinearRegression()
63
+ if daal_check_version((2024, "P", 0)) and macro_block is not None:
64
+ hparams = linreg.get_hyperparameters("fit")
65
+ hparams.cpu_macro_block = macro_block
66
+ hparams.gpu_macro_block = macro_block
67
+
68
+ X = X.astype(dtype=dtype)
69
+ y = y.astype(dtype=dtype)
70
+ y_list = y.tolist()
71
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
72
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
73
+ linreg.fit(X, y)
74
+
75
+ assert hasattr(linreg, "_onedal_estimator")
76
+ assert "sklearnex" in linreg.__module__
77
+
78
+ rtol = 1e-3 if dtype == np.float32 else 1e-5
79
+ assert_allclose(_as_numpy(linreg.coef_), expected_coefs, rtol=rtol)
80
+ assert_allclose(_as_numpy(linreg.intercept_), expected_intercept, rtol=rtol)
81
+
82
+ # check that it also works with lists
83
+ if isinstance(X, np.ndarray):
84
+ linreg_list = LinearRegression().fit(X, y_list)
85
+ assert_allclose(linreg_list.coef_, linreg.coef_)
86
+ assert_allclose(linreg_list.intercept_, linreg.intercept_)
87
+
88
+
89
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
90
+ def test_sklearnex_import_ridge(dataframe, queue):
91
+ from sklearnex.linear_model import Ridge
92
+
93
+ X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
94
+ y = np.dot(X, np.array([1, 2])) + 3
95
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
96
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
97
+ ridgereg = Ridge().fit(X, y)
98
+ assert "daal4py" in ridgereg.__module__
99
+ assert_allclose(ridgereg.intercept_, 4.5)
100
+ assert_allclose(ridgereg.coef_, [0.8, 1.4])
101
+
102
+
103
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
104
+ def test_sklearnex_import_lasso(dataframe, queue):
105
+ from sklearnex.linear_model import Lasso
106
+
107
+ X = [[0, 0], [1, 1], [2, 2]]
108
+ y = [0, 1, 2]
109
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
110
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
111
+ lasso = Lasso(alpha=0.1).fit(X, y)
112
+ assert "daal4py" in lasso.__module__
113
+ assert_allclose(lasso.intercept_, 0.15)
114
+ assert_allclose(lasso.coef_, [0.85, 0.0])
115
+
116
+
117
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
118
+ def test_sklearnex_import_elastic(dataframe, queue):
119
+ from sklearnex.linear_model import ElasticNet
120
+
121
+ X, y = make_regression(n_features=2, random_state=0)
122
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
123
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
124
+ elasticnet = ElasticNet(random_state=0).fit(X, y)
125
+ assert "daal4py" in elasticnet.__module__
126
+ assert_allclose(elasticnet.intercept_, 1.451, atol=1e-3)
127
+ assert_allclose(elasticnet.coef_, [18.838, 64.559], atol=1e-3)
128
+
129
+
130
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
131
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
132
+ def test_sklearnex_reconstruct_model(dataframe, queue, dtype):
133
+ from sklearnex.linear_model import LinearRegression
134
+
135
+ seed = 42
136
+ num_samples = 3500
137
+ num_features, num_targets = 14, 9
138
+
139
+ gen = np.random.default_rng(seed)
140
+ intercept = gen.random(size=num_targets, dtype=dtype)
141
+ coef = gen.random(size=(num_targets, num_features), dtype=dtype).T
142
+
143
+ X = gen.random(size=(num_samples, num_features), dtype=dtype)
144
+ gtr = X @ coef + intercept[np.newaxis, :]
145
+
146
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
147
+
148
+ linreg = LinearRegression(fit_intercept=True)
149
+ linreg.coef_ = coef.T
150
+ linreg.intercept_ = intercept
151
+
152
+ y_pred = linreg.predict(X)
153
+
154
+ tol = 1e-5 if _as_numpy(y_pred).dtype == np.float32 else 1e-7
155
+ assert_allclose(gtr, _as_numpy(y_pred), rtol=tol)
156
+
157
+
158
+ def test_sklearnex_multivariate_ridge_coefs():
159
+ from sklearnex.linear_model import Ridge
160
+
161
+ _test_multivariate_ridge_coefficients(Ridge, random_state=0)
162
+
163
+
164
+ def test_sklearnex_multivariate_ridge_alpha_shape():
165
+ from sklearnex.linear_model import Ridge
166
+
167
+ _test_multivariate_ridge_alpha_shape(Ridge, random_state=0)
@@ -0,0 +1,134 @@
1
+ # ===============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose, assert_array_equal
20
+ from scipy.sparse import csr_matrix
21
+ from sklearn.datasets import load_breast_cancer, load_iris, make_classification
22
+ from sklearn.metrics import accuracy_score
23
+ from sklearn.model_selection import train_test_split
24
+
25
+ from daal4py.sklearn._utils import daal_check_version
26
+ from onedal.tests.utils._dataframes_support import (
27
+ _as_numpy,
28
+ _convert_to_dataframe,
29
+ get_dataframes_and_queues,
30
+ get_queues,
31
+ )
32
+ from sklearnex import config_context
33
+
34
+
35
+ def prepare_input(X, y, dataframe, queue):
36
+ X_train, X_test, y_train, y_test = train_test_split(
37
+ X, y, train_size=0.8, random_state=42
38
+ )
39
+ X_train = _convert_to_dataframe(X_train, sycl_queue=queue, target_df=dataframe)
40
+ y_train = _convert_to_dataframe(y_train, sycl_queue=queue, target_df=dataframe)
41
+ X_test = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
42
+ return X_train, X_test, y_train, y_test
43
+
44
+
45
+ @pytest.mark.parametrize(
46
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
47
+ )
48
+ def test_sklearnex_multiclass_classification(dataframe, queue):
49
+ from sklearnex.linear_model import LogisticRegression
50
+
51
+ X, y = load_iris(return_X_y=True)
52
+ X_train, X_test, y_train, y_test = prepare_input(X, y, dataframe, queue)
53
+
54
+ logreg = LogisticRegression(fit_intercept=True, solver="lbfgs", max_iter=200).fit(
55
+ X_train, y_train
56
+ )
57
+
58
+ if daal_check_version((2024, "P", 1)):
59
+ assert "sklearnex" in logreg.__module__
60
+ else:
61
+ assert "daal4py" in logreg.__module__
62
+
63
+ y_pred = _as_numpy(logreg.predict(X_test))
64
+ assert accuracy_score(y_test, y_pred) > 0.99
65
+
66
+
67
+ @pytest.mark.parametrize(
68
+ "dataframe,queue",
69
+ get_dataframes_and_queues(),
70
+ )
71
+ def test_sklearnex_binary_classification(dataframe, queue):
72
+ from sklearnex.linear_model import LogisticRegression
73
+
74
+ X, y = load_breast_cancer(return_X_y=True)
75
+ X_train, X_test, y_train, y_test = prepare_input(X, y, dataframe, queue)
76
+
77
+ logreg = LogisticRegression(fit_intercept=True, solver="newton-cg", max_iter=100).fit(
78
+ X_train, y_train
79
+ )
80
+
81
+ if daal_check_version((2024, "P", 1)):
82
+ assert "sklearnex" in logreg.__module__
83
+ else:
84
+ assert "daal4py" in logreg.__module__
85
+ if (
86
+ dataframe != "numpy"
87
+ and queue is not None
88
+ and queue.sycl_device.is_gpu
89
+ and daal_check_version((2024, "P", 1))
90
+ ):
91
+ # fit was done on gpu
92
+ assert hasattr(logreg, "_onedal_estimator")
93
+
94
+ y_pred = _as_numpy(logreg.predict(X_test))
95
+ assert accuracy_score(y_test, y_pred) > 0.95
96
+
97
+
98
+ if daal_check_version((2024, "P", 700)):
99
+
100
+ @pytest.mark.parametrize("queue", get_queues("gpu"))
101
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
102
+ @pytest.mark.parametrize(
103
+ "dims", [(3007, 17, 0.05), (50000, 100, 0.01), (512, 10, 0.5)]
104
+ )
105
+ def test_csr(queue, dtype, dims):
106
+ from sklearnex.linear_model import LogisticRegression
107
+
108
+ n, p, density = dims
109
+
110
+ # Create sparse dataset for classification
111
+ X, y = make_classification(n, p, random_state=42)
112
+ X = X.astype(dtype)
113
+ y = y.astype(dtype)
114
+ np.random.seed(2007 + n + p)
115
+ mask = np.random.binomial(1, density, (n, p))
116
+ X = X * mask
117
+ X_sp = csr_matrix(X)
118
+
119
+ model = LogisticRegression(fit_intercept=True, solver="newton-cg")
120
+ model_sp = LogisticRegression(fit_intercept=True, solver="newton-cg")
121
+
122
+ with config_context(target_offload="gpu:0"):
123
+ model.fit(X, y)
124
+ pred = model.predict(X)
125
+ prob = model.predict_proba(X)
126
+ model_sp.fit(X_sp, y)
127
+ pred_sp = model_sp.predict(X_sp)
128
+ prob_sp = model_sp.predict_proba(X_sp)
129
+
130
+ rtol = 2e-4
131
+ assert_allclose(pred, pred_sp, rtol=rtol)
132
+ assert_allclose(prob, prob_sp, rtol=rtol)
133
+ assert_allclose(model.coef_, model_sp.coef_, rtol=rtol)
134
+ assert_allclose(model.intercept_, model_sp.intercept_, rtol=rtol)
@@ -15,3 +15,7 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.manifold import TSNE
18
+ from onedal._device_offload import support_input_format
19
+
20
+ TSNE.fit = support_input_format(queue_param=False)(TSNE.fit)
21
+ TSNE.fit_transform = support_input_format(queue_param=False)(TSNE.fit_transform)
@@ -15,3 +15,8 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.metrics import pairwise_distances
18
+ from onedal._device_offload import support_input_format
19
+
20
+ pairwise_distances = support_input_format(freefunc=True, queue_param=False)(
21
+ pairwise_distances
22
+ )
@@ -15,3 +15,6 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.metrics import roc_auc_score
18
+ from onedal._device_offload import support_input_format
19
+
20
+ roc_auc_score = support_input_format(freefunc=True, queue_param=False)(roc_auc_score)