scikit-learn-intelex 2024.7.0__py310-none-win_amd64.whl → 2025.0.0__py310-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 (260) hide show
  1. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp310-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +242 -0
  10. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +241 -0
  11. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. {scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -2
  16. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  18. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +318 -0
  19. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
  23. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  27. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +196 -0
  32. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
  34. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +155 -0
  37. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  39. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +161 -0
  44. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +87 -0
  46. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +118 -0
  47. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. {scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
  56. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_config.py +53 -0
  61. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_device_offload.py +229 -0
  62. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  65. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  66. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  67. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  68. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  69. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  70. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +560 -0
  71. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  72. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  73. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  74. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  75. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  76. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  77. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  78. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  79. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  80. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +116 -0
  81. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +75 -0
  82. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  83. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  84. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  85. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  86. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  87. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  88. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +95 -0
  89. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +235 -0
  90. {scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  91. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  92. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  93. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  94. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  95. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +720 -0
  96. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  97. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  98. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  99. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  100. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  101. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  102. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  103. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +149 -0
  104. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  105. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  106. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  107. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +778 -0
  108. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  109. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  110. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  111. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  112. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  113. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  114. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  115. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  116. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  117. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  118. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  119. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  120. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/tests/test_common.py +41 -0
  121. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +168 -0
  122. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +107 -0
  123. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  124. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +91 -0
  125. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal/utils/validation.py +432 -0
  126. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +36 -13
  127. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  128. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -3
  129. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +5 -5
  130. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  131. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +383 -0
  132. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +153 -0
  133. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +5 -5
  134. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +11 -0
  135. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +1 -1
  136. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +19 -9
  137. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1 -1
  138. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +2 -0
  139. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +7 -7
  140. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +5 -6
  141. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +418 -0
  142. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +4 -4
  143. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +13 -10
  144. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  145. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +5 -4
  146. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +3 -3
  147. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +2 -2
  148. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +2 -2
  149. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +4 -2
  150. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +2 -1
  151. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +1 -1
  152. {scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
  153. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +8 -8
  154. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +2 -2
  155. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +4 -4
  156. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  157. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  158. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  159. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  160. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  161. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  162. {scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +4 -1
  163. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  164. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  165. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
  166. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
  167. scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  168. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +4 -1
  169. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +1 -1
  170. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +1 -1
  171. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/_utils_spmd.py +18 -5
  172. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +2 -1
  173. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +0 -1
  174. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +12 -11
  175. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +1 -2
  176. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +5 -20
  177. {scikit_learn_intelex-2024.7.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/METADATA +3 -2
  178. scikit_learn_intelex-2025.0.0.dist-info/RECORD +255 -0
  179. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -25
  180. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -42
  181. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  182. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -303
  183. scikit_learn_intelex-2024.7.0.dist-info/RECORD +0 -122
  184. {scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.0.0.data/data/Lib/site-packages/onedal}/basic_statistics/__init__.py +0 -0
  185. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
  186. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  187. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
  188. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
  189. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
  190. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
  191. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -0
  192. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  193. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  194. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  195. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  196. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
  197. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  198. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  199. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -0
  200. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  201. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  202. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -0
  203. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -0
  204. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +0 -0
  205. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -0
  206. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  207. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  208. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  209. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  210. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  211. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  212. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  213. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
  214. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
  215. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
  216. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  217. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  218. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -0
  219. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
  220. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  221. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +0 -0
  222. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +0 -0
  223. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  224. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  225. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +0 -0
  226. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  227. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  228. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  229. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
  230. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +0 -0
  231. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  232. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +0 -0
  233. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  234. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +0 -0
  235. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  236. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
  237. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +0 -0
  238. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  239. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  240. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +0 -0
  241. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  242. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  243. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +0 -0
  244. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  245. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +0 -0
  246. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
  247. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
  248. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
  249. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/_utils.py +0 -0
  250. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -0
  251. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
  252. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -0
  253. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
  254. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  255. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  256. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +0 -0
  257. {scikit_learn_intelex-2024.7.0.data → scikit_learn_intelex-2025.0.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  258. {scikit_learn_intelex-2024.7.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/LICENSE.txt +0 -0
  259. {scikit_learn_intelex-2024.7.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/WHEEL +0 -0
  260. {scikit_learn_intelex-2024.7.0.dist-info → scikit_learn_intelex-2025.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,235 @@
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
+
21
+ from onedal import _backend
22
+ from onedal.datatypes import from_table, to_table
23
+ from onedal.primitives import linear_kernel
24
+ from onedal.tests.utils._device_selection import get_queues
25
+
26
+ try:
27
+ import dpctl
28
+ import dpctl.tensor as dpt
29
+
30
+ dpctl_available = dpctl.__version__ >= "0.14"
31
+ except ImportError:
32
+ dpctl_available = False
33
+
34
+
35
+ def _test_input_format_c_contiguous_numpy(queue, dtype):
36
+ rng = np.random.RandomState(0)
37
+ x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
38
+
39
+ x_numpy = np.asanyarray(x_default, dtype=dtype, order="C")
40
+ assert x_numpy.flags.c_contiguous
41
+ assert not x_numpy.flags.f_contiguous
42
+ assert not x_numpy.flags.fnc
43
+
44
+ expected = linear_kernel(x_default, queue=queue)
45
+ result = linear_kernel(x_numpy, queue=queue)
46
+ assert_allclose(expected, result)
47
+
48
+
49
+ @pytest.mark.parametrize("queue", get_queues())
50
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
51
+ def test_input_format_c_contiguous_numpy(queue, dtype):
52
+ if queue and queue.sycl_device.is_gpu:
53
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
54
+ _test_input_format_c_contiguous_numpy(queue, dtype)
55
+
56
+
57
+ def _test_input_format_f_contiguous_numpy(queue, dtype):
58
+ rng = np.random.RandomState(0)
59
+ x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
60
+
61
+ x_numpy = np.asanyarray(x_default, dtype=dtype, order="F")
62
+ assert not x_numpy.flags.c_contiguous
63
+ assert x_numpy.flags.f_contiguous
64
+ assert x_numpy.flags.fnc
65
+
66
+ expected = linear_kernel(x_default, queue=queue)
67
+ result = linear_kernel(x_numpy, queue=queue)
68
+ assert_allclose(expected, result)
69
+
70
+
71
+ @pytest.mark.parametrize("queue", get_queues())
72
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
73
+ def test_input_format_f_contiguous_numpy(queue, dtype):
74
+ if queue and queue.sycl_device.is_gpu:
75
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
76
+ _test_input_format_f_contiguous_numpy(queue, dtype)
77
+
78
+
79
+ def _test_input_format_c_not_contiguous_numpy(queue, dtype):
80
+ rng = np.random.RandomState(0)
81
+ x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
82
+
83
+ dummy_data = np.insert(x_default, range(1, x_default.shape[1]), 8, axis=1)
84
+ x_numpy = dummy_data[:, ::2]
85
+
86
+ assert_allclose(x_numpy, x_default)
87
+
88
+ assert not x_numpy.flags.c_contiguous
89
+ assert not x_numpy.flags.f_contiguous
90
+ assert not x_numpy.flags.fnc
91
+
92
+ expected = linear_kernel(x_default, queue=queue)
93
+ result = linear_kernel(x_numpy, queue=queue)
94
+ assert_allclose(expected, result)
95
+
96
+
97
+ @pytest.mark.parametrize("queue", get_queues())
98
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
99
+ def test_input_format_c_not_contiguous_numpy(queue, dtype):
100
+ if queue and queue.sycl_device.is_gpu:
101
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
102
+ _test_input_format_c_not_contiguous_numpy(queue, dtype)
103
+
104
+
105
+ def _test_input_format_c_contiguous_pandas(queue, dtype):
106
+ pd = pytest.importorskip("pandas")
107
+ rng = np.random.RandomState(0)
108
+ x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
109
+
110
+ x_numpy = np.asanyarray(x_default, dtype=dtype, order="C")
111
+ assert x_numpy.flags.c_contiguous
112
+ assert not x_numpy.flags.f_contiguous
113
+ assert not x_numpy.flags.fnc
114
+ x_df = pd.DataFrame(x_numpy)
115
+
116
+ expected = linear_kernel(x_df, queue=queue)
117
+ result = linear_kernel(x_numpy, queue=queue)
118
+ assert_allclose(expected, result)
119
+
120
+
121
+ @pytest.mark.parametrize("queue", get_queues())
122
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
123
+ def test_input_format_c_contiguous_pandas(queue, dtype):
124
+ if queue and queue.sycl_device.is_gpu:
125
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
126
+ _test_input_format_c_contiguous_pandas(queue, dtype)
127
+
128
+
129
+ def _test_input_format_f_contiguous_pandas(queue, dtype):
130
+ pd = pytest.importorskip("pandas")
131
+ rng = np.random.RandomState(0)
132
+ x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
133
+
134
+ x_numpy = np.asanyarray(x_default, dtype=dtype, order="F")
135
+ assert not x_numpy.flags.c_contiguous
136
+ assert x_numpy.flags.f_contiguous
137
+ assert x_numpy.flags.fnc
138
+ x_df = pd.DataFrame(x_numpy)
139
+
140
+ expected = linear_kernel(x_df, queue=queue)
141
+ result = linear_kernel(x_numpy, queue=queue)
142
+ assert_allclose(expected, result)
143
+
144
+
145
+ @pytest.mark.parametrize("queue", get_queues())
146
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
147
+ def test_input_format_f_contiguous_pandas(queue, dtype):
148
+ if queue and queue.sycl_device.is_gpu:
149
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
150
+ _test_input_format_f_contiguous_pandas(queue, dtype)
151
+
152
+
153
+ def _test_conversion_to_table(dtype):
154
+ np.random.seed()
155
+ if dtype in [np.int32, np.int64]:
156
+ x = np.random.randint(0, 10, (15, 3), dtype=dtype)
157
+ else:
158
+ x = np.random.uniform(-2, 2, (18, 6)).astype(dtype)
159
+ x_table = to_table(x)
160
+ x2 = from_table(x_table)
161
+ assert x.dtype == x2.dtype
162
+ assert np.array_equal(x, x2)
163
+
164
+
165
+ @pytest.mark.parametrize("dtype", [np.int32, np.int64, np.float32, np.float64])
166
+ def test_conversion_to_table(dtype):
167
+ _test_conversion_to_table(dtype)
168
+
169
+
170
+ # TODO:
171
+ # Currently `dpctl_to_table` is not used in onedal estimators.
172
+ # The test will be enabled after future data management update, that brings
173
+ # re-impl of conversions between onedal tables and usm ndarrays.
174
+ @pytest.mark.skip(
175
+ reason="Currently removed. Will be enabled after data management update"
176
+ )
177
+ @pytest.mark.skipif(not dpctl_available, reason="requires dpctl>=0.14")
178
+ @pytest.mark.parametrize("queue", get_queues("cpu,gpu"))
179
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64])
180
+ def test_input_format_c_contiguous_dpctl(queue, dtype):
181
+ rng = np.random.RandomState(0)
182
+ x_default = np.array(5 * rng.random_sample((10, 59)), dtype=dtype)
183
+
184
+ x_numpy = np.asanyarray(x_default, dtype=dtype, order="C")
185
+ x_dpt = dpt.asarray(x_numpy, usm_type="device", sycl_queue=queue)
186
+ # assert not x_dpt.flags.fnc
187
+ assert isinstance(x_dpt, dpt.usm_ndarray)
188
+
189
+ x_table = _backend.dpctl_to_table(x_dpt)
190
+ assert hasattr(x_table, "__sycl_usm_array_interface__")
191
+ x_dpt_from_table = dpt.asarray(x_table)
192
+
193
+ assert (
194
+ x_dpt.__sycl_usm_array_interface__["data"][0]
195
+ == x_dpt_from_table.__sycl_usm_array_interface__["data"][0]
196
+ )
197
+ assert x_dpt.shape == x_dpt_from_table.shape
198
+ assert x_dpt.strides == x_dpt_from_table.strides
199
+ assert x_dpt.dtype == x_dpt_from_table.dtype
200
+ assert x_dpt.flags.c_contiguous
201
+ assert x_dpt_from_table.flags.c_contiguous
202
+
203
+
204
+ # TODO:
205
+ # Currently `dpctl_to_table` is not used in onedal estimators.
206
+ # The test will be enabled after future data management update, that brings
207
+ # re-impl of conversions between onedal tables and usm ndarrays.
208
+ @pytest.mark.skip(
209
+ reason="Currently removed. Will be enabled after data management update"
210
+ )
211
+ @pytest.mark.skipif(not dpctl_available, reason="requires dpctl>=0.14")
212
+ @pytest.mark.parametrize("queue", get_queues("cpu,gpu"))
213
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64])
214
+ def test_input_format_f_contiguous_dpctl(queue, dtype):
215
+ rng = np.random.RandomState(0)
216
+ x_default = np.array(5 * rng.random_sample((10, 59)), dtype=dtype)
217
+
218
+ x_numpy = np.asanyarray(x_default, dtype=dtype, order="F")
219
+ x_dpt = dpt.asarray(x_numpy, usm_type="device", sycl_queue=queue)
220
+ # assert not x_dpt.flags.fnc
221
+ assert isinstance(x_dpt, dpt.usm_ndarray)
222
+
223
+ x_table = _backend.dpctl_to_table(x_dpt)
224
+ assert hasattr(x_table, "__sycl_usm_array_interface__")
225
+ x_dpt_from_table = dpt.asarray(x_table)
226
+
227
+ assert (
228
+ x_dpt.__sycl_usm_array_interface__["data"][0]
229
+ == x_dpt_from_table.__sycl_usm_array_interface__["data"][0]
230
+ )
231
+ assert x_dpt.shape == x_dpt_from_table.shape
232
+ assert x_dpt.strides == x_dpt_from_table.strides
233
+ assert x_dpt.dtype == x_dpt_from_table.dtype
234
+ assert x_dpt.flags.f_contiguous
235
+ assert x_dpt_from_table.flags.f_contiguous
@@ -14,6 +14,7 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
- from .basic_statistics import BasicStatistics
17
+ from .incremental_pca import IncrementalPCA
18
+ from .pca import PCA
18
19
 
19
- __all__ = ["BasicStatistics"]
20
+ __all__ = ["IncrementalPCA", "PCA"]
@@ -0,0 +1,204 @@
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
+
19
+ from daal4py.sklearn._utils import get_dtype
20
+
21
+ from ..datatypes import _convert_to_supported, from_table, to_table
22
+ from ..utils import _check_array
23
+ from .pca import BasePCA
24
+
25
+
26
+ class IncrementalPCA(BasePCA):
27
+ """
28
+ Incremental estimator for PCA based on oneDAL implementation.
29
+ Allows to compute PCA if data are splitted into batches.
30
+
31
+ Parameters
32
+ ----------
33
+ n_components : int, default=None
34
+ Number of components to keep. If ``n_components`` is ``None``,
35
+ then ``n_components`` is set to ``min(n_samples, n_features)``.
36
+
37
+ is_deterministic : bool, default=True
38
+ When True the ``components_`` vectors are chosen in deterministic
39
+ way, otherwise some of them can be oppositely directed.
40
+
41
+ method : string, default='cov'
42
+ Method used on oneDAL side to compute result.
43
+
44
+ whiten : bool, default=False
45
+ When True the ``components_`` vectors are divided
46
+ by ``n_samples`` times ``components_`` to ensure uncorrelated outputs
47
+ with unit component-wise variances.
48
+
49
+ Whitening will remove some information from the transformed signal
50
+ (the relative variance scales of the components) but can sometimes
51
+ improve the predictive accuracy of the downstream estimators by
52
+ making data respect some hard-wired assumptions.
53
+
54
+ Attributes
55
+ ----------
56
+ components_ : ndarray of shape (n_components, n_features)
57
+ Principal axes in feature space, representing the directions of
58
+ maximum variance in the data. Equivalently, the right singular
59
+ vectors of the centered input data, parallel to its eigenvectors.
60
+ The components are sorted by decreasing ``explained_variance_``.
61
+
62
+ explained_variance_ : ndarray of shape (n_components,)
63
+ Variance explained by each of the selected components.
64
+
65
+ explained_variance_ratio_ : ndarray of shape (n_components,)
66
+ Percentage of variance explained by each of the selected components.
67
+ If all components are stored, the sum of explained variances is equal
68
+ to 1.0.
69
+
70
+ singular_values_ : ndarray of shape (n_components,)
71
+ The singular values corresponding to each of the selected components.
72
+ The singular values are equal to the 2-norms of the ``n_components``
73
+ variables in the lower-dimensional space.
74
+
75
+ mean_ : ndarray of shape (n_features,)
76
+ Per-feature empirical mean, aggregate over calls to ``partial_fit``.
77
+
78
+ var_ : ndarray of shape (n_features,)
79
+ Per-feature empirical variance, aggregate over calls to
80
+ ``partial_fit``.
81
+
82
+ noise_variance_ : float
83
+ Equal to the average of (min(n_features, n_samples) - n_components)
84
+ smallest eigenvalues of the covariance matrix of X.
85
+
86
+ """
87
+
88
+ def __init__(
89
+ self,
90
+ n_components=None,
91
+ is_deterministic=True,
92
+ method="cov",
93
+ whiten=False,
94
+ ):
95
+ self.n_components = n_components
96
+ self.method = method
97
+ self.is_deterministic = is_deterministic
98
+ self.whiten = whiten
99
+ self._reset()
100
+
101
+ def _reset(self):
102
+ self._partial_result = self._get_backend(
103
+ "decomposition", "dim_reduction", "partial_train_result"
104
+ )
105
+ if hasattr(self, "components_"):
106
+ del self.components_
107
+
108
+ def partial_fit(self, X, queue):
109
+ """Incremental fit with X. All of X is processed as a single batch.
110
+
111
+ Parameters
112
+ ----------
113
+ X : array-like of shape (n_samples, n_features)
114
+ Training data, where `n_samples` is the number of samples and
115
+ `n_features` is the number of features.
116
+
117
+ y : Ignored
118
+ Not used, present for API consistency by convention.
119
+
120
+ Returns
121
+ -------
122
+ self : object
123
+ Returns the instance itself.
124
+ """
125
+ X = _check_array(X)
126
+ n_samples, n_features = X.shape
127
+
128
+ first_pass = not hasattr(self, "components_")
129
+ if first_pass:
130
+ self.components_ = None
131
+ self.n_samples_seen_ = n_samples
132
+ self.n_features_in_ = n_features
133
+ else:
134
+ self.n_samples_seen_ += n_samples
135
+
136
+ if self.n_components is None:
137
+ if self.components_ is None:
138
+ self.n_components_ = min(n_samples, n_features)
139
+ else:
140
+ self.n_components_ = self.components_.shape[0]
141
+ else:
142
+ self.n_components_ = self.n_components
143
+
144
+ self._queue = queue
145
+
146
+ policy = self._get_policy(queue, X)
147
+ X = _convert_to_supported(policy, X)
148
+
149
+ if not hasattr(self, "_dtype"):
150
+ self._dtype = get_dtype(X)
151
+ self._params = self._get_onedal_params(X)
152
+
153
+ X_table = to_table(X)
154
+ self._partial_result = self._get_backend(
155
+ "decomposition",
156
+ "dim_reduction",
157
+ "partial_train",
158
+ policy,
159
+ self._params,
160
+ self._partial_result,
161
+ X_table,
162
+ )
163
+ return self
164
+
165
+ def finalize_fit(self, queue=None):
166
+ """
167
+ Finalizes principal components computation and obtains resulting
168
+ attributes from the current `_partial_result`.
169
+
170
+ Parameters
171
+ ----------
172
+ queue : dpctl.SyclQueue
173
+ Not used here, added for API conformance
174
+
175
+ Returns
176
+ -------
177
+ self : object
178
+ Returns the instance itself.
179
+ """
180
+ if queue is not None:
181
+ policy = self._get_policy(queue)
182
+ else:
183
+ policy = self._get_policy(self._queue)
184
+ result = self._get_backend(
185
+ "decomposition",
186
+ "dim_reduction",
187
+ "finalize_train",
188
+ policy,
189
+ self._params,
190
+ self._partial_result,
191
+ )
192
+ self.mean_ = from_table(result.means).ravel()
193
+ self.var_ = from_table(result.variances).ravel()
194
+ self.components_ = from_table(result.eigenvectors)
195
+ self.singular_values_ = np.nan_to_num(from_table(result.singular_values).ravel())
196
+ self.explained_variance_ = np.maximum(from_table(result.eigenvalues).ravel(), 0)
197
+ self.explained_variance_ratio_ = from_table(
198
+ result.explained_variances_ratio
199
+ ).ravel()
200
+ self.noise_variance_ = self._compute_noise_variance(
201
+ self.n_components_, min(self.n_samples_seen_, self.n_features_in_)
202
+ )
203
+
204
+ return self
@@ -0,0 +1,186 @@
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
+ import numbers
18
+ from abc import ABCMeta
19
+
20
+ import numpy as np
21
+ from sklearn.decomposition._pca import _infer_dimension
22
+ from sklearn.utils.extmath import stable_cumsum
23
+
24
+ from ..common._base import BaseEstimator
25
+ from ..datatypes import _convert_to_supported, from_table, to_table
26
+
27
+
28
+ class BasePCA(BaseEstimator, metaclass=ABCMeta):
29
+ """
30
+ Base class for PCA oneDAL implementation.
31
+ """
32
+
33
+ def __init__(
34
+ self,
35
+ n_components=None,
36
+ is_deterministic=True,
37
+ method="cov",
38
+ whiten=False,
39
+ ):
40
+ self.n_components = n_components
41
+ self.method = method
42
+ self.is_deterministic = is_deterministic
43
+ self.whiten = whiten
44
+
45
+ def _get_onedal_params(self, data, stage=None):
46
+ if stage is None:
47
+ n_components = self._resolve_n_components_for_training(data.shape)
48
+ elif stage == "predict":
49
+ n_components = self.n_components_
50
+ return {
51
+ "fptype": "float" if data.dtype == np.float32 else "double",
52
+ "method": self.method,
53
+ "n_components": n_components,
54
+ "is_deterministic": self.is_deterministic,
55
+ "whiten": self.whiten,
56
+ }
57
+
58
+ def _validate_n_components(self, n_components, n_samples, n_features):
59
+ if n_components is None:
60
+ n_components = min(n_samples, n_features)
61
+ if n_components == "mle":
62
+ if n_samples < n_features:
63
+ raise ValueError(
64
+ "n_components='mle' is only supported if n_samples >= n_features"
65
+ )
66
+ elif not 0 <= n_components <= min(n_samples, n_features):
67
+ raise ValueError(
68
+ "n_components=%r must be between 0 and "
69
+ "min(n_samples, n_features)=%r with "
70
+ "svd_solver='full'" % (n_components, min(n_samples, n_features))
71
+ )
72
+ elif n_components >= 1:
73
+ if not isinstance(n_components, numbers.Integral):
74
+ raise ValueError(
75
+ "n_components=%r must be of type int "
76
+ "when greater than or equal to 1, "
77
+ "was of type=%r" % (n_components, type(n_components))
78
+ )
79
+
80
+ def _resolve_n_components_for_training(self, shape_tuple):
81
+ if self.n_components is None or self.n_components == "mle":
82
+ return min(shape_tuple)
83
+ elif (
84
+ isinstance(self.n_components, float)
85
+ and self.n_components > 0.0
86
+ and self.n_components <= 1.0
87
+ ):
88
+ return min(shape_tuple)
89
+ else:
90
+ return self.n_components
91
+
92
+ def _resolve_n_components_for_result(self, shape_tuple):
93
+ if self.n_components is None:
94
+ return min(shape_tuple)
95
+ elif self.n_components == "mle":
96
+ return _infer_dimension(self.explained_variance_, shape_tuple[0])
97
+ elif 0.0 < self.n_components < 1.0:
98
+ ratio_cumsum = stable_cumsum(self.explained_variance_ratio_)
99
+ return np.searchsorted(ratio_cumsum, self.n_components, side="right") + 1
100
+ elif isinstance(self.n_components, float) and self.n_components == 1.0:
101
+ return min(shape_tuple)
102
+ else:
103
+ return self.n_components
104
+
105
+ def _compute_noise_variance(self, n_components, n_sf_min):
106
+ if n_components < n_sf_min:
107
+ if len(self.explained_variance_) == n_sf_min:
108
+ return self.explained_variance_[n_components:].mean()
109
+ elif len(self.explained_variance_) < n_sf_min:
110
+ # TODO Rename variances_ to var_ to align with sklearn/sklearnex IncrementalPCA
111
+ if hasattr(self, "variances_"):
112
+ resid_var = self.variances_.sum()
113
+ elif hasattr(self, "var_"):
114
+ resid_var = self.var_.sum()
115
+
116
+ resid_var -= self.explained_variance_.sum()
117
+ return resid_var / (n_sf_min - n_components)
118
+ else:
119
+ return 0.0
120
+
121
+ def _create_model(self):
122
+ m = self._get_backend("decomposition", "dim_reduction", "model")
123
+ m.eigenvectors = to_table(self.components_)
124
+ m.means = to_table(self.mean_)
125
+ if self.whiten:
126
+ m.eigenvalues = to_table(self.explained_variance_)
127
+ self._onedal_model = m
128
+ return m
129
+
130
+ def predict(self, X, queue=None):
131
+ policy = self._get_policy(queue, X)
132
+ model = self._create_model()
133
+ X = _convert_to_supported(policy, X)
134
+ params = self._get_onedal_params(X, stage="predict")
135
+
136
+ result = self._get_backend(
137
+ "decomposition", "dim_reduction", "infer", policy, params, model, to_table(X)
138
+ )
139
+ return from_table(result.transformed_data)
140
+
141
+
142
+ class PCA(BasePCA):
143
+
144
+ def fit(self, X, y=None, queue=None):
145
+ n_samples, n_features = X.shape
146
+ n_sf_min = min(n_samples, n_features)
147
+ self._validate_n_components(self.n_components, n_samples, n_features)
148
+
149
+ policy = self._get_policy(queue, X)
150
+ # TODO: investigate why np.ndarray with OWNDATA=FALSE flag
151
+ # fails to be converted to oneDAL table
152
+ if isinstance(X, np.ndarray) and not X.flags["OWNDATA"]:
153
+ X = X.copy()
154
+ X = _convert_to_supported(policy, X)
155
+
156
+ params = self._get_onedal_params(X)
157
+ result = self._get_backend(
158
+ "decomposition", "dim_reduction", "train", policy, params, to_table(X)
159
+ )
160
+
161
+ self.mean_ = from_table(result.means).ravel()
162
+ self.variances_ = from_table(result.variances)
163
+ self.components_ = from_table(result.eigenvectors)
164
+ self.singular_values_ = from_table(result.singular_values).ravel()
165
+ self.explained_variance_ = np.maximum(from_table(result.eigenvalues).ravel(), 0)
166
+ self.explained_variance_ratio_ = from_table(
167
+ result.explained_variances_ratio
168
+ ).ravel()
169
+ self.n_samples_ = n_samples
170
+ self.n_features_ = n_features
171
+
172
+ U = None
173
+ S = self.singular_values_
174
+ Vt = self.components_
175
+
176
+ n_components = self._resolve_n_components_for_result(X.shape)
177
+ self.n_components_ = n_components
178
+ self.noise_variance_ = self._compute_noise_variance(n_components, n_sf_min)
179
+
180
+ if n_components < params["n_components"]:
181
+ self.explained_variance_ = self.explained_variance_[:n_components]
182
+ self.components_ = self.components_[:n_components]
183
+ self.singular_values_ = self.singular_values_[:n_components]
184
+ self.explained_variance_ratio_ = self.explained_variance_ratio_[:n_components]
185
+
186
+ return self