scikit-learn-intelex 2024.0.1__py310-none-win_amd64.whl → 2025.1.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 (275) hide show
  1. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp310-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/cluster/__init__.py +3 -3
  12. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +4 -2
  16. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
  18. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
  19. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -30
  23. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  27. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +4 -3
  34. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
  37. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -3
  39. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
  44. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -42
  46. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
  47. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/linear_model → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
  56. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
  61. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_device_offload.py +222 -0
  62. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  65. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  66. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  67. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  68. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  69. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  70. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  71. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +564 -0
  72. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  73. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  74. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  75. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  76. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  77. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  78. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  79. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  80. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  81. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
  82. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
  83. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  84. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  85. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  86. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  88. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  89. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +154 -0
  90. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
  91. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +414 -0
  92. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -3
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  97. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
  98. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  99. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  100. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  101. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  102. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  103. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
  106. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  108. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  109. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
  110. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  112. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  113. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  114. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  116. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  117. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  118. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  119. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  120. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  121. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  122. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  123. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  124. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  125. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  126. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  127. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  128. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
  129. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +12 -7
  130. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -1
  131. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
  132. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  133. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +42 -5
  134. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  135. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
  136. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
  137. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
  138. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
  139. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -2
  140. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +18 -8
  141. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
  142. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -7
  143. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
  144. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  145. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  146. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
  147. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
  148. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -1
  149. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
  150. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +26 -6
  151. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +242 -28
  152. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -1
  153. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +262 -180
  154. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -22
  155. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -1
  156. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -3
  157. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  158. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -1
  159. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
  160. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
  161. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
  162. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +413 -0
  163. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +24 -0
  164. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
  165. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  166. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  167. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
  168. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -1
  169. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +21 -0
  170. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -1
  171. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -1
  172. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -1
  173. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -1
  174. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -1
  175. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -1
  176. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -1
  177. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -1
  178. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -2
  179. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
  180. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +54 -8
  181. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +51 -151
  182. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +46 -146
  183. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +53 -95
  184. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +16 -19
  185. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
  186. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance}/__init__.py +19 -20
  187. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +138 -0
  188. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +66 -0
  189. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  190. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
  191. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  192. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +19 -18
  193. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
  194. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  195. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
  196. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  197. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  198. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  199. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  200. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  201. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  202. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  203. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  204. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  205. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  206. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  207. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
  208. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  209. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  210. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  211. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  212. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  213. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
  214. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
  215. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  216. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  217. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  218. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  219. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  220. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -1
  221. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  222. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +172 -73
  223. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +73 -66
  224. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +171 -73
  225. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +65 -62
  226. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -21
  227. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
  228. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  229. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
  230. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
  231. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  232. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  233. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
  234. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
  235. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
  236. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
  237. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  238. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  239. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
  240. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -1
  241. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
  242. scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
  243. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
  244. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
  245. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -18
  246. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -31
  247. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -18
  248. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -28
  249. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -373
  250. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -18
  251. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -77
  252. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -29
  253. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -437
  254. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  255. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -370
  256. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -376
  257. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
  258. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -225
  259. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -210
  260. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  261. scikit_learn_intelex-2024.0.1.dist-info/RECORD +0 -90
  262. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  263. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  264. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  265. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  266. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  267. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  268. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  269. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  270. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  271. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  272. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  273. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  274. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
  275. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ==============================================================================
3
2
  # Copyright 2023 Intel Corporation
4
3
  #
@@ -15,6 +14,7 @@
15
14
  # limitations under the License.
16
15
  # ==============================================================================
17
16
 
18
- from .basic_statistics import BasicStatistics
17
+ from .incremental_pca import IncrementalPCA
18
+ from .pca import PCA
19
19
 
20
- __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
@@ -0,0 +1,198 @@
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 daal4py.sklearn._utils import daal_check_version
22
+ from onedal.decomposition import IncrementalPCA
23
+ from onedal.tests.utils._device_selection import get_queues
24
+
25
+
26
+ @pytest.mark.parametrize("queue", get_queues())
27
+ @pytest.mark.parametrize("is_deterministic", [True, False])
28
+ @pytest.mark.parametrize("whiten", [True, False])
29
+ @pytest.mark.parametrize("num_blocks", [1, 2, 3])
30
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
31
+ def test_on_gold_data(queue, is_deterministic, whiten, num_blocks, dtype):
32
+ X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
33
+ X = X.astype(dtype=dtype)
34
+ X_split = np.array_split(X, num_blocks)
35
+ incpca = IncrementalPCA(is_deterministic=is_deterministic, whiten=whiten)
36
+
37
+ for i in range(num_blocks):
38
+ incpca.partial_fit(X_split[i], queue=queue)
39
+
40
+ result = incpca.finalize_fit()
41
+
42
+ transformed_data = incpca.predict(X, queue=queue)
43
+
44
+ expected_n_components_ = 2
45
+ expected_components_ = np.array([[0.83849224, 0.54491354], [-0.54491354, 0.83849224]])
46
+ expected_singular_values_ = np.array([6.30061232, 0.54980396])
47
+ expected_mean_ = np.array([0, 0])
48
+ expected_var_ = np.array([5.6, 2.4])
49
+ expected_explained_variance_ = np.array([7.93954312, 0.06045688])
50
+ expected_explained_variance_ratio_ = np.array([0.99244289, 0.00755711])
51
+ expected_transformed_data = (
52
+ np.array(
53
+ [
54
+ [-0.49096647, -1.19399271],
55
+ [-0.78854479, 1.02218579],
56
+ [-1.27951125, -0.17180692],
57
+ [0.49096647, 1.19399271],
58
+ [0.78854479, -1.02218579],
59
+ [1.27951125, 0.17180692],
60
+ ]
61
+ )
62
+ if whiten
63
+ else np.array(
64
+ [
65
+ [-1.38340578, -0.2935787],
66
+ [-2.22189802, 0.25133484],
67
+ [-3.6053038, -0.04224385],
68
+ [1.38340578, 0.2935787],
69
+ [2.22189802, -0.25133484],
70
+ [3.6053038, 0.04224385],
71
+ ]
72
+ )
73
+ )
74
+
75
+ tol = 1e-7
76
+ if transformed_data.dtype == np.float32:
77
+ tol = 7e-6 if whiten else 1e-6
78
+
79
+ assert result.n_components_ == expected_n_components_
80
+
81
+ assert_allclose(result.singular_values_, expected_singular_values_, atol=tol)
82
+ assert_allclose(result.mean_, expected_mean_, atol=tol)
83
+ assert_allclose(result.var_, expected_var_, atol=tol)
84
+ assert_allclose(result.explained_variance_, expected_explained_variance_, atol=tol)
85
+ assert_allclose(
86
+ result.explained_variance_ratio_, expected_explained_variance_ratio_, atol=tol
87
+ )
88
+ if is_deterministic and daal_check_version((2024, "P", 500)):
89
+ assert_allclose(result.components_, expected_components_, atol=tol)
90
+ assert_allclose(transformed_data, expected_transformed_data, atol=tol)
91
+ else:
92
+ for i in range(result.n_components_):
93
+ abs_dot_product = np.abs(
94
+ np.dot(result.components_[i], expected_components_[i])
95
+ )
96
+ assert np.abs(abs_dot_product - 1.0) < tol
97
+
98
+ if np.dot(result.components_[i], expected_components_[i]) < 0:
99
+ assert_allclose(
100
+ -transformed_data[i], expected_transformed_data[i], atol=tol
101
+ )
102
+ else:
103
+ assert_allclose(
104
+ transformed_data[i], expected_transformed_data[i], atol=tol
105
+ )
106
+
107
+
108
+ @pytest.mark.parametrize("queue", get_queues())
109
+ @pytest.mark.parametrize("n_components", [None, 1, 5])
110
+ @pytest.mark.parametrize("whiten", [True, False])
111
+ @pytest.mark.parametrize("num_blocks", [1, 10])
112
+ @pytest.mark.parametrize("row_count", [100, 1000])
113
+ @pytest.mark.parametrize("column_count", [10, 100])
114
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
115
+ def test_on_random_data(
116
+ queue, n_components, whiten, num_blocks, row_count, column_count, dtype
117
+ ):
118
+ seed = 78
119
+ gen = np.random.default_rng(seed)
120
+ X = gen.uniform(low=-0.3, high=+0.7, size=(row_count, column_count))
121
+ X = X.astype(dtype=dtype)
122
+ X_split = np.array_split(X, num_blocks)
123
+ incpca = IncrementalPCA(n_components=n_components, whiten=whiten)
124
+
125
+ for i in range(num_blocks):
126
+ incpca.partial_fit(X_split[i], queue=queue)
127
+
128
+ incpca.finalize_fit()
129
+
130
+ transformed_data = incpca.predict(X, queue=queue)
131
+ tol = 3e-3 if transformed_data.dtype == np.float32 else 2e-6
132
+
133
+ n_components = incpca.n_components_
134
+ expected_n_samples_seen = X.shape[0]
135
+ expected_n_features_in = X.shape[1]
136
+ n_samples_seen = incpca.n_samples_seen_
137
+ n_features_in = incpca.n_features_in_
138
+ assert n_samples_seen == expected_n_samples_seen
139
+ assert n_features_in == expected_n_features_in
140
+
141
+ components = incpca.components_
142
+ singular_values = incpca.singular_values_
143
+ centered_data = X - np.mean(X, axis=0)
144
+ cov_eigenvalues, cov_eigenvectors = np.linalg.eig(
145
+ centered_data.T @ centered_data / (n_samples_seen - 1)
146
+ )
147
+ cov_eigenvalues = np.nan_to_num(cov_eigenvalues)
148
+ cov_eigenvalues[cov_eigenvalues < 0] = 0
149
+ eigenvalues_order = np.argsort(cov_eigenvalues)[::-1]
150
+ sorted_eigenvalues = cov_eigenvalues[eigenvalues_order]
151
+ sorted_eigenvectors = cov_eigenvectors[:, eigenvalues_order]
152
+ expected_singular_values = np.sqrt(sorted_eigenvalues * (n_samples_seen - 1))[
153
+ :n_components
154
+ ]
155
+ expected_components = sorted_eigenvectors.T[:n_components]
156
+
157
+ assert_allclose(singular_values, expected_singular_values, atol=tol)
158
+ for i in range(n_components):
159
+ component_length = np.dot(components[i], components[i])
160
+ assert np.abs(component_length - 1.0) < tol
161
+ abs_dot_product = np.abs(np.dot(components[i], expected_components[i]))
162
+ assert np.abs(abs_dot_product - 1.0) < tol
163
+
164
+ expected_mean = np.mean(X, axis=0)
165
+ assert_allclose(incpca.mean_, expected_mean, atol=tol)
166
+
167
+ expected_var_ = np.var(X, ddof=1, axis=0)
168
+ assert_allclose(incpca.var_, expected_var_, atol=tol)
169
+
170
+ expected_explained_variance = sorted_eigenvalues[:n_components]
171
+ assert_allclose(incpca.explained_variance_, expected_explained_variance, atol=tol)
172
+
173
+ expected_explained_variance_ratio = expected_explained_variance / np.sum(
174
+ sorted_eigenvalues
175
+ )
176
+ assert_allclose(
177
+ incpca.explained_variance_ratio_, expected_explained_variance_ratio, atol=tol
178
+ )
179
+
180
+ expected_noise_variance = (
181
+ np.mean(sorted_eigenvalues[n_components:])
182
+ if len(sorted_eigenvalues) > n_components
183
+ else 0.0
184
+ )
185
+ # TODO Fix noise variance computation (It is necessary to update C++ side)
186
+ # assert np.abs(incpca.noise_variance_ - expected_noise_variance) < tol
187
+
188
+ expected_transformed_data = centered_data @ components.T
189
+ if whiten:
190
+ scale = np.sqrt(incpca.explained_variance_)
191
+ min_scale = np.finfo(scale.dtype).eps
192
+ scale[scale < min_scale] = np.inf
193
+ expected_transformed_data /= scale
194
+
195
+ if daal_check_version((2024, "P", 500)) or not (
196
+ whiten and queue is not None and queue.sycl_device.device_type.name == "gpu"
197
+ ):
198
+ assert_allclose(transformed_data, expected_transformed_data, atol=tol)
@@ -0,0 +1,29 @@
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 .forest import (
18
+ ExtraTreesClassifier,
19
+ ExtraTreesRegressor,
20
+ RandomForestClassifier,
21
+ RandomForestRegressor,
22
+ )
23
+
24
+ __all__ = [
25
+ "RandomForestClassifier",
26
+ "RandomForestRegressor",
27
+ "ExtraTreesClassifier",
28
+ "ExtraTreesRegressor",
29
+ ]