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,120 @@
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 import config_context
27
+ from sklearnex.tests.utils.spmd import (
28
+ _generate_statistic_data,
29
+ _get_local_tensor,
30
+ _mpi_libs_and_gpu_available,
31
+ )
32
+
33
+
34
+ @pytest.mark.skipif(
35
+ not _mpi_libs_and_gpu_available,
36
+ reason="GPU device and MPI libs required for test",
37
+ )
38
+ @pytest.mark.parametrize(
39
+ "dataframe,queue",
40
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
41
+ )
42
+ @pytest.mark.mpi
43
+ def test_covariance_spmd_gold(dataframe, queue):
44
+ # Import spmd and batch algo
45
+ from sklearnex.preview.covariance import (
46
+ EmpiricalCovariance as EmpiricalCovariance_Batch,
47
+ )
48
+ from sklearnex.spmd.covariance import EmpiricalCovariance as EmpiricalCovariance_SPMD
49
+
50
+ # Create gold data and convert to dataframe
51
+ data = np.array(
52
+ [
53
+ [0.0, 0.0, 0.0],
54
+ [0.0, 1.0, 2.0],
55
+ [0.0, 2.0, 4.0],
56
+ [0.0, 3.0, 8.0],
57
+ [0.0, 4.0, 16.0],
58
+ [0.0, 5.0, 32.0],
59
+ [0.0, 6.0, 64.0],
60
+ ]
61
+ )
62
+
63
+ local_dpt_data = _convert_to_dataframe(
64
+ _get_local_tensor(data), sycl_queue=queue, target_df=dataframe
65
+ )
66
+
67
+ # Ensure results of batch algo match spmd
68
+ spmd_result = EmpiricalCovariance_SPMD().fit(local_dpt_data)
69
+ batch_result = EmpiricalCovariance_Batch().fit(data)
70
+
71
+ assert_allclose(
72
+ _as_numpy(spmd_result.covariance_), _as_numpy(batch_result.covariance_)
73
+ )
74
+ assert_allclose(_as_numpy(spmd_result.location_), _as_numpy(batch_result.location_))
75
+
76
+
77
+ @pytest.mark.skipif(
78
+ not _mpi_libs_and_gpu_available,
79
+ reason="GPU device and MPI libs required for test",
80
+ )
81
+ @pytest.mark.parametrize("n_samples", [100, 10000])
82
+ @pytest.mark.parametrize("n_features", [10, 100])
83
+ @pytest.mark.parametrize("assume_centered", [True, False])
84
+ @pytest.mark.parametrize(
85
+ "dataframe,queue",
86
+ get_dataframes_and_queues(dataframe_filter_="dpnp", device_filter_="gpu"),
87
+ )
88
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
89
+ @pytest.mark.parametrize("use_raw_input", [True, False])
90
+ @pytest.mark.mpi
91
+ def test_covariance_spmd_synthetic(
92
+ n_samples, n_features, assume_centered, dataframe, queue, dtype, use_raw_input
93
+ ):
94
+ # Import spmd and batch algo
95
+ from sklearnex.preview.covariance import (
96
+ EmpiricalCovariance as EmpiricalCovariance_Batch,
97
+ )
98
+ from sklearnex.spmd.covariance import EmpiricalCovariance as EmpiricalCovariance_SPMD
99
+
100
+ # Generate data and convert to dataframe
101
+ data = _generate_statistic_data(n_samples, n_features, dtype=dtype)
102
+
103
+ local_dpt_data = _convert_to_dataframe(
104
+ _get_local_tensor(data), sycl_queue=queue, target_df=dataframe
105
+ )
106
+
107
+ # Ensure results of batch algo match spmd
108
+ with config_context(use_raw_input=use_raw_input):
109
+ spmd_result = EmpiricalCovariance_SPMD(assume_centered=assume_centered).fit(
110
+ local_dpt_data
111
+ )
112
+ batch_result = EmpiricalCovariance_Batch(assume_centered=assume_centered).fit(data)
113
+
114
+ atol = 1e-5 if dtype == np.float32 else 1e-7
115
+ assert_allclose(
116
+ _as_numpy(spmd_result.covariance_), _as_numpy(batch_result.covariance_), atol=atol
117
+ )
118
+ assert_allclose(
119
+ _as_numpy(spmd_result.location_), _as_numpy(batch_result.location_), atol=atol
120
+ )
@@ -0,0 +1,200 @@
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 import config_context
27
+ from sklearnex.tests.utils.spmd import (
28
+ _generate_statistic_data,
29
+ _get_local_tensor,
30
+ _mpi_libs_and_gpu_available,
31
+ )
32
+
33
+
34
+ @pytest.mark.skipif(
35
+ not _mpi_libs_and_gpu_available,
36
+ reason="GPU device and MPI libs required for test",
37
+ )
38
+ @pytest.mark.parametrize(
39
+ "dataframe,queue",
40
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
41
+ )
42
+ @pytest.mark.parametrize("assume_centered", [True, False])
43
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
44
+ @pytest.mark.mpi
45
+ def test_incremental_covariance_fit_spmd_gold(dataframe, queue, assume_centered, dtype):
46
+ # Import spmd and batch algo
47
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
48
+ from sklearnex.spmd.covariance import (
49
+ IncrementalEmpiricalCovariance as IncrementalEmpiricalCovariance_SPMD,
50
+ )
51
+
52
+ # Create gold data and process into dpt
53
+ data = np.array(
54
+ [
55
+ [0.0, 0.0, 0.0],
56
+ [0.0, 1.0, 2.0],
57
+ [0.0, 2.0, 4.0],
58
+ [0.0, 3.0, 8.0],
59
+ [0.0, 4.0, 16.0],
60
+ [0.0, 5.0, 32.0],
61
+ [0.0, 6.0, 64.0],
62
+ [0.0, 7.0, 128.0],
63
+ ],
64
+ dtype=dtype,
65
+ )
66
+
67
+ dpt_data = _convert_to_dataframe(data, sycl_queue=queue, target_df=dataframe)
68
+
69
+ local_dpt_data = _convert_to_dataframe(
70
+ _get_local_tensor(data), sycl_queue=queue, target_df=dataframe
71
+ )
72
+
73
+ # ensure results of batch algo match spmd
74
+ spmd_result = IncrementalEmpiricalCovariance_SPMD(
75
+ assume_centered=assume_centered
76
+ ).fit(local_dpt_data)
77
+ non_spmd_result = IncrementalEmpiricalCovariance(assume_centered=assume_centered).fit(
78
+ dpt_data
79
+ )
80
+
81
+ assert_allclose(spmd_result.covariance_, non_spmd_result.covariance_)
82
+ assert_allclose(spmd_result.location_, non_spmd_result.location_)
83
+
84
+
85
+ @pytest.mark.skipif(
86
+ not _mpi_libs_and_gpu_available,
87
+ reason="GPU device and MPI libs required for test",
88
+ )
89
+ @pytest.mark.parametrize(
90
+ "dataframe,queue",
91
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
92
+ )
93
+ @pytest.mark.parametrize("num_blocks", [1, 2])
94
+ @pytest.mark.parametrize("assume_centered", [True, False])
95
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
96
+ @pytest.mark.mpi
97
+ def test_incremental_covariance_partial_fit_spmd_gold(
98
+ dataframe, queue, num_blocks, assume_centered, dtype
99
+ ):
100
+ # Import spmd and batch algo
101
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
102
+ from sklearnex.spmd.covariance import (
103
+ IncrementalEmpiricalCovariance as IncrementalEmpiricalCovariance_SPMD,
104
+ )
105
+
106
+ # Create gold data and process into dpt
107
+ data = np.array(
108
+ [
109
+ [0.0, 0.0, 0.0],
110
+ [0.0, 1.0, 2.0],
111
+ [0.0, 2.0, 4.0],
112
+ [0.0, 3.0, 8.0],
113
+ [0.0, 4.0, 16.0],
114
+ [0.0, 5.0, 32.0],
115
+ [0.0, 6.0, 64.0],
116
+ [0.0, 7.0, 128.0],
117
+ ],
118
+ dtype=dtype,
119
+ )
120
+
121
+ dpt_data = _convert_to_dataframe(data, sycl_queue=queue, target_df=dataframe)
122
+
123
+ local_data = _get_local_tensor(data)
124
+ split_local_data = np.array_split(local_data, num_blocks)
125
+
126
+ inccov_spmd = IncrementalEmpiricalCovariance_SPMD(assume_centered=assume_centered)
127
+ inccov = IncrementalEmpiricalCovariance(assume_centered=assume_centered)
128
+
129
+ for i in range(num_blocks):
130
+ local_dpt_data = _convert_to_dataframe(
131
+ split_local_data[i], sycl_queue=queue, target_df=dataframe
132
+ )
133
+ inccov_spmd.partial_fit(local_dpt_data)
134
+
135
+ inccov.fit(dpt_data)
136
+
137
+ assert_allclose(inccov_spmd.covariance_, inccov.covariance_)
138
+ assert_allclose(inccov_spmd.location_, inccov.location_)
139
+
140
+
141
+ @pytest.mark.skipif(
142
+ not _mpi_libs_and_gpu_available,
143
+ reason="GPU device and MPI libs required for test",
144
+ )
145
+ @pytest.mark.parametrize("n_samples", [100, 10000])
146
+ @pytest.mark.parametrize("n_features", [10, 100])
147
+ @pytest.mark.parametrize("num_blocks", [1, 2])
148
+ @pytest.mark.parametrize("assume_centered", [True, False])
149
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
150
+ @pytest.mark.parametrize(
151
+ "dataframe,queue",
152
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
153
+ )
154
+ @pytest.mark.parametrize("use_raw_input", [True, False])
155
+ @pytest.mark.mpi
156
+ def test_incremental_covariance_partial_fit_spmd_synthetic(
157
+ n_samples,
158
+ n_features,
159
+ num_blocks,
160
+ assume_centered,
161
+ dataframe,
162
+ queue,
163
+ dtype,
164
+ use_raw_input,
165
+ ):
166
+ # Import spmd and batch algo
167
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
168
+ from sklearnex.spmd.covariance import (
169
+ IncrementalEmpiricalCovariance as IncrementalEmpiricalCovariance_SPMD,
170
+ )
171
+
172
+ # Generate data and process into dpt
173
+ data = _generate_statistic_data(n_samples, n_features, dtype=dtype)
174
+
175
+ dpt_data = _convert_to_dataframe(data, sycl_queue=queue, target_df=dataframe)
176
+
177
+ local_data = _get_local_tensor(data)
178
+ split_local_data = np.array_split(local_data, num_blocks)
179
+
180
+ inccov_spmd = IncrementalEmpiricalCovariance_SPMD(assume_centered=assume_centered)
181
+ inccov = IncrementalEmpiricalCovariance(assume_centered=assume_centered)
182
+
183
+ for i in range(num_blocks):
184
+ local_dpt_data = _convert_to_dataframe(
185
+ split_local_data[i], sycl_queue=queue, target_df=dataframe
186
+ )
187
+ # Configure raw input status for spmd estimator
188
+ with config_context(use_raw_input=use_raw_input):
189
+ inccov_spmd.partial_fit(local_dpt_data)
190
+
191
+ inccov.fit(dpt_data)
192
+
193
+ tol = 1e-7
194
+
195
+ assert_allclose(
196
+ _as_numpy(inccov_spmd.covariance_), _as_numpy(inccov.covariance_), atol=tol
197
+ )
198
+ assert_allclose(
199
+ _as_numpy(inccov_spmd.location_), _as_numpy(inccov.location_), atol=tol
200
+ )
@@ -0,0 +1,20 @@
1
+ # ==============================================================================
2
+ # Copyright 2023 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 .incremental_pca import IncrementalPCA
18
+ from .pca import PCA
19
+
20
+ __all__ = ["IncrementalPCA", "PCA"]
@@ -0,0 +1,23 @@
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 onedal.spmd.decomposition import IncrementalPCA as onedalSPMD_IncrementalPCA
18
+
19
+ from ...preview.decomposition import IncrementalPCA as base_IncrementalPCA
20
+
21
+
22
+ class IncrementalPCA(base_IncrementalPCA):
23
+ _onedal_incremental_pca = staticmethod(onedalSPMD_IncrementalPCA)
@@ -14,8 +14,10 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
- from onedal.spmd.decomposition import PCA
17
+ from onedal.spmd.decomposition import PCA as onedal_PCA
18
18
 
19
- # TODO:
20
- # Currently it uses `onedal` module interface.
21
- # Add sklearnex dispatching.
19
+ from ...decomposition import PCA as base_PCA
20
+
21
+
22
+ class PCA(base_PCA):
23
+ _onedal_PCA = staticmethod(onedal_PCA)
@@ -0,0 +1,276 @@
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 import config_context
27
+ from sklearnex.tests.utils.spmd import (
28
+ _generate_statistic_data,
29
+ _get_local_tensor,
30
+ _mpi_libs_and_gpu_available,
31
+ )
32
+
33
+ attributes_to_compare = [
34
+ "n_components_",
35
+ "components_",
36
+ "singular_values_",
37
+ "mean_",
38
+ "var_",
39
+ "explained_variance_",
40
+ "explained_variance_ratio_",
41
+ ]
42
+
43
+
44
+ @pytest.mark.skipif(
45
+ not _mpi_libs_and_gpu_available,
46
+ reason="GPU device and MPI libs required for test",
47
+ )
48
+ @pytest.mark.parametrize(
49
+ "dataframe,queue",
50
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
51
+ )
52
+ @pytest.mark.parametrize("whiten", [True, False])
53
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
54
+ @pytest.mark.mpi
55
+ def test_incremental_pca_fit_spmd_gold(dataframe, queue, whiten, dtype):
56
+ # Import spmd and non-SPMD algo
57
+ from sklearnex.preview.decomposition import IncrementalPCA
58
+ from sklearnex.spmd.decomposition import IncrementalPCA as IncrementalPCA_SPMD
59
+
60
+ # Create gold data and process into dpt
61
+ X = np.array(
62
+ [
63
+ [0.0, 0.0],
64
+ [1.0, 2.0],
65
+ [2.0, 4.0],
66
+ [3.0, 8.0],
67
+ [4.0, 16.0],
68
+ [5.0, 32.0],
69
+ [6.0, 64.0],
70
+ [7.0, 128.0],
71
+ ],
72
+ dtype=dtype,
73
+ )
74
+ dpt_X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
75
+ local_X = _get_local_tensor(X)
76
+ local_dpt_X = _convert_to_dataframe(local_X, sycl_queue=queue, target_df=dataframe)
77
+
78
+ incpca_spmd = IncrementalPCA_SPMD(whiten=whiten)
79
+ incpca = IncrementalPCA(whiten=whiten)
80
+
81
+ incpca_spmd.fit(local_dpt_X)
82
+ incpca.fit(dpt_X)
83
+
84
+ for attribute in attributes_to_compare:
85
+ assert_allclose(
86
+ getattr(incpca, attribute),
87
+ getattr(incpca_spmd, attribute),
88
+ err_msg=f"{attribute} is incorrect",
89
+ )
90
+
91
+
92
+ @pytest.mark.skipif(
93
+ not _mpi_libs_and_gpu_available,
94
+ reason="GPU device and MPI libs required for test",
95
+ )
96
+ @pytest.mark.parametrize(
97
+ "dataframe,queue",
98
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
99
+ )
100
+ @pytest.mark.parametrize("whiten", [True, False])
101
+ @pytest.mark.parametrize("num_blocks", [1, 2])
102
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
103
+ @pytest.mark.mpi
104
+ def test_incremental_pca_partial_fit_spmd_gold(
105
+ dataframe, queue, whiten, num_blocks, dtype
106
+ ):
107
+ # Import spmd and non-SPMD algo
108
+ from sklearnex.preview.decomposition import IncrementalPCA
109
+ from sklearnex.spmd.decomposition import IncrementalPCA as IncrementalPCA_SPMD
110
+
111
+ # Create gold data and process into dpt
112
+ X = np.array(
113
+ [
114
+ [0.0, 0.0],
115
+ [1.0, 2.0],
116
+ [2.0, 4.0],
117
+ [3.0, 8.0],
118
+ [4.0, 16.0],
119
+ [5.0, 32.0],
120
+ [6.0, 64.0],
121
+ [7.0, 128.0],
122
+ [8.0, 0.0],
123
+ [9.0, 2.0],
124
+ [10.0, 4.0],
125
+ [11.0, 8.0],
126
+ [12.0, 16.0],
127
+ [13.0, 32.0],
128
+ [14.0, 64.0],
129
+ [15.0, 128.0],
130
+ ],
131
+ dtype=dtype,
132
+ )
133
+ X_split = np.array_split(X, num_blocks)
134
+ local_X = _get_local_tensor(X)
135
+ split_local_X = np.array_split(local_X, num_blocks)
136
+
137
+ incpca_spmd = IncrementalPCA_SPMD(whiten=whiten)
138
+ incpca = IncrementalPCA(whiten=whiten)
139
+
140
+ for i in range(num_blocks):
141
+ local_dpt_X = _convert_to_dataframe(
142
+ split_local_X[i], sycl_queue=queue, target_df=dataframe
143
+ )
144
+ dpt_X = _convert_to_dataframe(X_split[i], sycl_queue=queue, target_df=dataframe)
145
+ incpca.partial_fit(dpt_X)
146
+ incpca_spmd.partial_fit(local_dpt_X)
147
+
148
+ for attribute in attributes_to_compare:
149
+ assert_allclose(
150
+ getattr(incpca, attribute),
151
+ getattr(incpca_spmd, attribute),
152
+ err_msg=f"{attribute} is incorrect",
153
+ )
154
+
155
+
156
+ @pytest.mark.skipif(
157
+ not _mpi_libs_and_gpu_available,
158
+ reason="GPU device and MPI libs required for test",
159
+ )
160
+ @pytest.mark.parametrize(
161
+ "dataframe,queue",
162
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
163
+ )
164
+ @pytest.mark.parametrize("whiten", [True, False])
165
+ @pytest.mark.parametrize("n_components", [None, 2, 5])
166
+ @pytest.mark.parametrize("num_samples", [100, 200])
167
+ @pytest.mark.parametrize("num_features", [10, 20])
168
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
169
+ @pytest.mark.mpi
170
+ def test_incremental_pca_fit_spmd_random(
171
+ dataframe, queue, whiten, n_components, num_samples, num_features, dtype
172
+ ):
173
+ # Import spmd and non-SPMD algo
174
+ from sklearnex.preview.decomposition import IncrementalPCA
175
+ from sklearnex.spmd.decomposition import IncrementalPCA as IncrementalPCA_SPMD
176
+
177
+ # Increased test dataset size requires a higher tol setting in comparison to other tests
178
+ tol = 7e-5 if dtype == np.float32 else 1e-7
179
+
180
+ # Create data and process into dpt
181
+ X = _generate_statistic_data(num_samples, num_features, dtype)
182
+ dpt_X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
183
+ X_test = _generate_statistic_data(num_samples // 5, num_features, dtype)
184
+ dpt_X_test = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
185
+ local_X = _get_local_tensor(X)
186
+ local_dpt_X = _convert_to_dataframe(local_X, sycl_queue=queue, target_df=dataframe)
187
+
188
+ incpca_spmd = IncrementalPCA_SPMD(n_components=n_components, whiten=whiten)
189
+ incpca = IncrementalPCA(n_components=n_components, whiten=whiten)
190
+
191
+ incpca_spmd.fit(local_dpt_X)
192
+ incpca.fit(dpt_X)
193
+
194
+ for attribute in attributes_to_compare:
195
+ assert_allclose(
196
+ getattr(incpca, attribute),
197
+ getattr(incpca_spmd, attribute),
198
+ atol=tol,
199
+ err_msg=f"{attribute} is incorrect",
200
+ )
201
+
202
+ y_trans_spmd = incpca_spmd.transform(dpt_X_test)
203
+ y_trans = incpca.transform(dpt_X_test)
204
+
205
+ assert_allclose(_as_numpy(y_trans_spmd), _as_numpy(y_trans), atol=tol)
206
+
207
+
208
+ @pytest.mark.skipif(
209
+ not _mpi_libs_and_gpu_available,
210
+ reason="GPU device and MPI libs required for test",
211
+ )
212
+ @pytest.mark.parametrize(
213
+ "dataframe,queue",
214
+ get_dataframes_and_queues(dataframe_filter_="dpnp,dpctl", device_filter_="gpu"),
215
+ )
216
+ @pytest.mark.parametrize("whiten", [True, False])
217
+ @pytest.mark.parametrize("n_components", [None, 2, 5])
218
+ @pytest.mark.parametrize("num_blocks", [1, 2])
219
+ @pytest.mark.parametrize("num_samples", [200, 400])
220
+ @pytest.mark.parametrize("num_features", [10, 20])
221
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
222
+ @pytest.mark.parametrize("use_raw_input", [True, False])
223
+ @pytest.mark.mpi
224
+ def test_incremental_pca_partial_fit_spmd_random(
225
+ dataframe,
226
+ queue,
227
+ whiten,
228
+ n_components,
229
+ num_blocks,
230
+ num_samples,
231
+ num_features,
232
+ dtype,
233
+ use_raw_input,
234
+ ):
235
+ # Import spmd and non-SPMD algo
236
+ from sklearnex.preview.decomposition import IncrementalPCA
237
+ from sklearnex.spmd.decomposition import IncrementalPCA as IncrementalPCA_SPMD
238
+
239
+ tol = 3e-4 if dtype == np.float32 else 1e-7
240
+
241
+ # Create data and process into dpt
242
+ X = _generate_statistic_data(num_samples, num_features, dtype)
243
+ dpt_X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
244
+ X_test = _generate_statistic_data(num_samples // 5, num_features, dtype)
245
+ dpt_X_test = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
246
+ local_X = _get_local_tensor(X)
247
+ X_split = np.array_split(X, num_blocks)
248
+ split_local_X = np.array_split(local_X, num_blocks)
249
+
250
+ incpca_spmd = IncrementalPCA_SPMD(n_components=n_components, whiten=whiten)
251
+ incpca = IncrementalPCA(n_components=n_components, whiten=whiten)
252
+
253
+ for i in range(num_blocks):
254
+ local_dpt_X = _convert_to_dataframe(
255
+ split_local_X[i], sycl_queue=queue, target_df=dataframe
256
+ )
257
+ dpt_X = _convert_to_dataframe(X_split[i], sycl_queue=queue, target_df=dataframe)
258
+ # Configure raw input status for spmd estimator
259
+ with config_context(use_raw_input=use_raw_input):
260
+ incpca_spmd.partial_fit(local_dpt_X)
261
+ incpca.partial_fit(dpt_X)
262
+
263
+ for attribute in attributes_to_compare:
264
+ assert_allclose(
265
+ _as_numpy(getattr(incpca, attribute)),
266
+ _as_numpy(getattr(incpca_spmd, attribute)),
267
+ atol=tol,
268
+ err_msg=f"{attribute} is incorrect",
269
+ )
270
+
271
+ # Configure raw input status for spmd estimator
272
+ with config_context(use_raw_input=use_raw_input):
273
+ y_trans_spmd = incpca_spmd.transform(dpt_X_test)
274
+ y_trans = incpca.transform(dpt_X_test)
275
+
276
+ assert_allclose(_as_numpy(y_trans_spmd), _as_numpy(y_trans), atol=tol)