scikit-learn-intelex 2025.10.0__py313-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
  5. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
  6. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
  7. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
  8. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
  9. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  10. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
  11. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  12. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  13. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  14. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
  15. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  16. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
  17. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
  18. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  19. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
  20. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  21. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
  22. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  23. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
  24. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
  25. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
  26. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
  27. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  28. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  29. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  30. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
  31. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  32. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
  33. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
  34. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  35. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
  36. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
  37. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  38. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
  39. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  40. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  41. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  42. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  43. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  44. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  45. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
  46. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  47. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
  48. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
  49. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  50. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
  51. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
  52. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
  53. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  54. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  55. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  56. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
  57. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  58. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
  59. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  60. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
  61. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
  62. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
  63. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
  64. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
  65. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
  66. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  67. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
  68. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
  69. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
  70. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  71. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  72. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  73. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
  74. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
  75. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
  76. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  77. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  78. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  79. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
  80. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  81. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  82. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
  83. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
  84. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  85. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
  86. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
  87. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  88. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
  89. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
  90. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
  91. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
  92. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
  93. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
  94. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
  95. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
  96. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
  97. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
  98. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
  99. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
  100. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
  101. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  102. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
  103. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  104. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  105. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
  106. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
  107. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
  108. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  109. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  110. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
  111. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  112. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  113. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  114. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
  115. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  116. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  117. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
  118. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
  119. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  120. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  121. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
  122. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
  123. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  124. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  125. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  126. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  127. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
  128. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
  129. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
  130. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
  131. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
  132. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
  133. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  134. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
  135. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__init__.py +69 -0
  136. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
  137. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
  138. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
  139. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
  140. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
  141. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  142. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
  143. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +338 -0
  144. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  145. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
  146. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
  147. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +199 -0
  148. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
  149. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
  150. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
  151. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  152. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  153. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
  154. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
  155. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/__init__.py +19 -0
  156. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
  157. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
  158. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +572 -0
  159. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +629 -0
  160. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -0
  161. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
  162. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
  163. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
  164. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1799 -0
  165. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
  166. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
  167. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
  168. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  169. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
  170. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
  171. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
  172. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
  173. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
  174. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
  175. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  176. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  177. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  178. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
  179. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  180. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
  181. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +28 -0
  182. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
  183. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
  184. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +20 -0
  185. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
  186. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
  187. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
  188. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +20 -0
  189. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
  190. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
  191. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +189 -0
  192. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +313 -0
  193. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +189 -0
  194. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +167 -0
  195. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +170 -0
  196. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
  197. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
  198. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
  199. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
  200. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
  201. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  202. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
  203. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
  204. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +25 -0
  205. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  206. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
  207. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  208. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
  209. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
  210. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
  211. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
  212. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
  213. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
  214. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
  215. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  216. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
  217. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
  218. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
  219. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
  220. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  221. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
  222. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +23 -0
  223. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
  224. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
  225. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +19 -0
  226. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  227. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
  228. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
  229. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
  230. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +24 -0
  231. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  232. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
  233. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
  234. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
  235. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
  236. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
  237. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/__init__.py +29 -0
  238. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
  239. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +278 -0
  240. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +158 -0
  241. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +306 -0
  242. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +155 -0
  243. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +124 -0
  244. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
  245. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
  246. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  247. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
  248. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
  249. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
  250. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
  251. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +418 -0
  252. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
  253. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
  254. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
  255. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  256. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
  257. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
  258. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
  259. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  260. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
  261. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  262. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
  263. scikit_learn_intelex-2025.10.0.dist-info/LICENSE.txt +202 -0
  264. scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
  265. scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
  266. scikit_learn_intelex-2025.10.0.dist-info/WHEEL +5 -0
  267. scikit_learn_intelex-2025.10.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,218 @@
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 onedal._device_offload import supports_queue
20
+ from onedal.common._backend import bind_default_backend
21
+ from onedal.utils import _sycl_queue_manager as QM
22
+
23
+ from .._config import _get_config
24
+ from ..datatypes import from_table, return_type_constructor, to_table
25
+ from .pca import PCA
26
+
27
+
28
+ class IncrementalPCA(PCA):
29
+ """Incremental oneDAL PCA estimator.
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 : str, default='cov'
42
+ Method used in oneDAL computation.
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
+ def __init__(
88
+ self,
89
+ n_components=None,
90
+ is_deterministic=True,
91
+ method="cov",
92
+ whiten=False,
93
+ ):
94
+ self.n_components = n_components
95
+ self.method = method
96
+ self.is_deterministic = is_deterministic
97
+ self.whiten = whiten
98
+ self._queue = None
99
+ self._reset()
100
+
101
+ @bind_default_backend("decomposition.dim_reduction")
102
+ def finalize_train(self, params, partial_result): ...
103
+
104
+ @bind_default_backend("decomposition.dim_reduction")
105
+ def partial_train(self, params, partial_result, X_table): ...
106
+
107
+ @bind_default_backend("decomposition.dim_reduction")
108
+ def partial_train_result(self): ...
109
+
110
+ def _reset(self):
111
+ self._onedal_model = None
112
+ self._need_to_finalize = False
113
+ self._queue = None
114
+ self._outtype = None
115
+ self._partial_result = self.partial_train_result()
116
+
117
+ def __getstate__(self):
118
+ # Since finalize_fit can't be dispatched without directly provided queue
119
+ # and the dispatching policy can't be serialized, the computation is finalized
120
+ # here and the policy is not saved in serialized data.
121
+
122
+ self.finalize_fit()
123
+ data = self.__dict__.copy()
124
+ data.pop("_queue", None)
125
+ return data
126
+
127
+ @supports_queue
128
+ def partial_fit(self, X, queue=None):
129
+ """Generate partial PCA from batch data in `_partial_result`.
130
+
131
+ Computes partial data for PCA on from data batch X.
132
+
133
+ Parameters
134
+ ----------
135
+ X : array-like of shape (n_samples, n_features)
136
+ Training data, where `n_samples` is the number of samples and
137
+ `n_features` is the number of features.
138
+
139
+ queue : SyclQueue or None, default=None
140
+ SYCL Queue object for device code execution. Default
141
+ value None causes computation on host.
142
+
143
+ Returns
144
+ -------
145
+ self : object
146
+ Returns the instance itself.
147
+ """
148
+
149
+ n_samples, n_features = X.shape
150
+ first_pass = not self._need_to_finalize
151
+ if first_pass:
152
+ self.components_ = None
153
+ self.n_samples_seen_ = n_samples
154
+ self.n_features_in_ = n_features
155
+ self.n_components_ = self.n_components if self.n_components else X.shape[0]
156
+ else:
157
+ self.n_samples_seen_ += n_samples
158
+
159
+ if not self._outtype:
160
+ self._outtype = return_type_constructor(X)
161
+ self._queue = queue
162
+
163
+ X_table = to_table(X, queue=queue)
164
+
165
+ if not hasattr(self, "_dtype"):
166
+ self._dtype = X_table.dtype
167
+ self._params = self._get_onedal_params(X_table)
168
+
169
+ self._partial_result = self.partial_train(
170
+ self._params, self._partial_result, X_table
171
+ )
172
+ if self._onedal_model is not None:
173
+ self._onedal_model = None
174
+ self._need_to_finalize = True
175
+ return self
176
+
177
+ def finalize_fit(self):
178
+ """Finalize statistics from the current `_partial_result`.
179
+
180
+ Returns
181
+ -------
182
+ self : object
183
+ Returns the instance itself.
184
+ """
185
+ if self._need_to_finalize:
186
+ with QM.manage_global_queue(self._queue):
187
+ result = self.finalize_train(self._params, self._partial_result)
188
+
189
+ (
190
+ mean_,
191
+ var_,
192
+ self.components_,
193
+ sing_vals_,
194
+ eigenvalues_,
195
+ var_ratio,
196
+ ) = from_table(
197
+ result.means,
198
+ result.variances,
199
+ result.eigenvectors,
200
+ result.singular_values,
201
+ result.eigenvalues,
202
+ result.explained_variances_ratio,
203
+ like=self._outtype,
204
+ )
205
+
206
+ # tables are 2d, but outputs are inherently 1d, reduce dimensions
207
+ self.mean_ = mean_[0, ...]
208
+ self.var_ = var_[0, ...]
209
+ self.singular_values_ = sing_vals_[0, ...]
210
+ self.explained_variance_ = eigenvalues_[0, ...]
211
+ self.explained_variance_ratio_ = var_ratio[0, ...]
212
+
213
+ # set partial result attributes to defaults
214
+ self._need_to_finalize = False
215
+ self._outtype = None
216
+ self._queue = None
217
+
218
+ return self
@@ -0,0 +1,124 @@
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
+
22
+ from onedal._device_offload import supports_queue
23
+ from onedal.common._backend import bind_default_backend
24
+
25
+ from .._config import _get_config
26
+ from ..common.hyperparameters import get_hyperparameters
27
+ from ..datatypes import from_table, to_table
28
+ from ..utils._array_api import _get_sycl_namespace
29
+
30
+
31
+ class PCA(metaclass=ABCMeta):
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
+ self._onedal_model = None
45
+
46
+ # provides direct access to the backend model constructor
47
+ @bind_default_backend("decomposition.dim_reduction")
48
+ def model(self): ...
49
+
50
+ @bind_default_backend("decomposition.dim_reduction")
51
+ def train(self, params, X): ...
52
+
53
+ @bind_default_backend("decomposition.dim_reduction")
54
+ def infer(self, params, X, model): ...
55
+
56
+ def _get_onedal_params(self, data):
57
+ return {
58
+ "fptype": data.dtype,
59
+ "method": self.method,
60
+ "n_components": self.n_components_,
61
+ "is_deterministic": self.is_deterministic,
62
+ "whiten": self.whiten,
63
+ }
64
+
65
+ def _create_model(self, queue=None):
66
+ m = self.model()
67
+ m.eigenvectors = to_table(self.components_, queue=queue)
68
+ m.means = to_table(self.mean_, queue=queue)
69
+ if self.whiten:
70
+ m.eigenvalues = to_table(self.explained_variance_, queue=queue)
71
+ return m
72
+
73
+ @supports_queue
74
+ def predict(self, X, queue=None):
75
+ X_table = to_table(X, queue=queue)
76
+ params = self._get_onedal_params(X_table)
77
+ if self._onedal_model is None:
78
+ self._onedal_model = self._create_model(queue)
79
+ result = self.infer(params, self._onedal_model, X_table)
80
+ return from_table(result.transformed_data, like=X)
81
+
82
+ @supports_queue
83
+ def fit(self, X, y=None, queue=None):
84
+
85
+ X_table = to_table(X, queue=queue)
86
+ # define n_components_ to allow for external modification of
87
+ # transforms
88
+ self.n_components_ = self.n_components
89
+
90
+ params = self._get_onedal_params(X_table)
91
+ hparams = get_hyperparameters("pca", "train")
92
+ if hparams is not None and not hparams.is_default:
93
+ result = self.train(params, hparams.backend, X_table)
94
+ else:
95
+ result = self.train(params, X_table)
96
+
97
+ (
98
+ mean_,
99
+ var_,
100
+ self.components_,
101
+ sing_vals_,
102
+ eigenvalues_,
103
+ var_ratio,
104
+ ) = from_table(
105
+ result.means,
106
+ result.variances,
107
+ result.eigenvectors,
108
+ result.singular_values,
109
+ result.eigenvalues,
110
+ result.explained_variances_ratio,
111
+ like=X,
112
+ )
113
+
114
+ # tables are 2d, but outputs are inherently 1d, reduce dimensions
115
+ self.mean_ = mean_[0, ...]
116
+ self.var_ = var_[0, ...]
117
+ self.singular_values_ = sing_vals_[0, ...]
118
+ self.explained_variance_ = eigenvalues_[0, ...]
119
+ self.explained_variance_ratio_ = var_ratio[0, ...]
120
+
121
+ if self._onedal_model is not None:
122
+ self._onedal_model = None
123
+
124
+ return self
@@ -0,0 +1,291 @@
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.datatypes import from_table
23
+ from onedal.decomposition import IncrementalPCA
24
+ from onedal.tests.utils._device_selection import get_queues
25
+
26
+
27
+ @pytest.mark.parametrize("queue", get_queues())
28
+ @pytest.mark.parametrize("is_deterministic", [True, False])
29
+ @pytest.mark.parametrize("whiten", [True, False])
30
+ @pytest.mark.parametrize("num_blocks", [1, 2, 3])
31
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
32
+ def test_on_gold_data(queue, is_deterministic, whiten, num_blocks, dtype):
33
+ X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
34
+ X = X.astype(dtype=dtype)
35
+ X_split = np.array_split(X, num_blocks)
36
+ incpca = IncrementalPCA(
37
+ is_deterministic=is_deterministic, whiten=whiten, n_components=2
38
+ )
39
+
40
+ for i in range(num_blocks):
41
+ incpca.partial_fit(X_split[i], queue=queue)
42
+
43
+ result = incpca.finalize_fit()
44
+
45
+ transformed_data = incpca.predict(X, queue=queue)
46
+
47
+ expected_n_components_ = 2
48
+ expected_components_ = np.array([[0.83849224, 0.54491354], [-0.54491354, 0.83849224]])
49
+ expected_singular_values_ = np.array([6.30061232, 0.54980396])
50
+ expected_mean_ = np.array([0, 0])
51
+ expected_var_ = np.array([5.6, 2.4])
52
+ expected_explained_variance_ = np.array([7.93954312, 0.06045688])
53
+ expected_explained_variance_ratio_ = np.array([0.99244289, 0.00755711])
54
+ expected_transformed_data = (
55
+ np.array(
56
+ [
57
+ [-0.49096647, -1.19399271],
58
+ [-0.78854479, 1.02218579],
59
+ [-1.27951125, -0.17180692],
60
+ [0.49096647, 1.19399271],
61
+ [0.78854479, -1.02218579],
62
+ [1.27951125, 0.17180692],
63
+ ]
64
+ )
65
+ if whiten
66
+ else np.array(
67
+ [
68
+ [-1.38340578, -0.2935787],
69
+ [-2.22189802, 0.25133484],
70
+ [-3.6053038, -0.04224385],
71
+ [1.38340578, 0.2935787],
72
+ [2.22189802, -0.25133484],
73
+ [3.6053038, 0.04224385],
74
+ ]
75
+ )
76
+ )
77
+
78
+ tol = 1e-7
79
+ if transformed_data.dtype == np.float32:
80
+ tol = 7e-6 if whiten else 1e-6
81
+
82
+ assert result.n_components_ == expected_n_components_
83
+
84
+ assert_allclose(result.singular_values_, expected_singular_values_, atol=tol)
85
+ assert_allclose(result.mean_, expected_mean_, atol=tol)
86
+ assert_allclose(result.var_, expected_var_, atol=tol)
87
+ assert_allclose(result.explained_variance_, expected_explained_variance_, atol=tol)
88
+ assert_allclose(
89
+ result.explained_variance_ratio_, expected_explained_variance_ratio_, atol=tol
90
+ )
91
+ if is_deterministic and daal_check_version((2024, "P", 500)):
92
+ assert_allclose(result.components_, expected_components_, atol=tol)
93
+ assert_allclose(transformed_data, expected_transformed_data, atol=tol)
94
+ else:
95
+ for i in range(result.n_components_):
96
+ abs_dot_product = np.abs(
97
+ np.dot(result.components_[i], expected_components_[i])
98
+ )
99
+ assert np.abs(abs_dot_product - 1.0) < tol
100
+
101
+ if np.dot(result.components_[i], expected_components_[i]) < 0:
102
+ assert_allclose(
103
+ -transformed_data[i], expected_transformed_data[i], atol=tol
104
+ )
105
+ else:
106
+ assert_allclose(
107
+ transformed_data[i], expected_transformed_data[i], atol=tol
108
+ )
109
+
110
+
111
+ @pytest.mark.parametrize("queue", get_queues())
112
+ @pytest.mark.parametrize("n_components", [None, 1, 5])
113
+ @pytest.mark.parametrize("whiten", [True, False])
114
+ @pytest.mark.parametrize("num_blocks", [1, 10])
115
+ @pytest.mark.parametrize("row_count", [100, 1000])
116
+ @pytest.mark.parametrize("column_count", [10, 100])
117
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
118
+ def test_on_random_data(
119
+ queue, n_components, whiten, num_blocks, row_count, column_count, dtype
120
+ ):
121
+ seed = 78
122
+ gen = np.random.default_rng(seed)
123
+ X = gen.uniform(low=-0.3, high=0.7, size=(row_count, column_count))
124
+ X = X.astype(dtype=dtype)
125
+ X_split = np.array_split(X, num_blocks)
126
+ # it is necessary to limit n_components by the nature of using
127
+ # np.linalg.eig to verify PCA computation
128
+ if n_components is None and X_split[0].shape[0] > column_count:
129
+ n_components = column_count
130
+ incpca = IncrementalPCA(n_components=n_components, whiten=whiten)
131
+
132
+ for i in range(num_blocks):
133
+ incpca.partial_fit(X_split[i], queue=queue)
134
+
135
+ incpca.finalize_fit()
136
+
137
+ transformed_data = incpca.predict(X, queue=queue)
138
+ tol = 3e-3 if transformed_data.dtype == np.float32 else 2e-6
139
+
140
+ n_components = incpca.n_components_
141
+ expected_n_samples_seen = X.shape[0]
142
+ expected_n_features_in = X.shape[1]
143
+ n_samples_seen = incpca.n_samples_seen_
144
+ n_features_in = incpca.n_features_in_
145
+ assert n_samples_seen == expected_n_samples_seen
146
+ assert n_features_in == expected_n_features_in
147
+
148
+ components = incpca.components_
149
+ singular_values = incpca.singular_values_
150
+ centered_data = X - np.mean(X, axis=0)
151
+ cov_eigenvalues, cov_eigenvectors = np.linalg.eig(
152
+ centered_data.T @ centered_data / (n_samples_seen - 1)
153
+ )
154
+ cov_eigenvalues = np.nan_to_num(cov_eigenvalues)
155
+ cov_eigenvalues[cov_eigenvalues < 0] = 0
156
+ eigenvalues_order = np.argsort(cov_eigenvalues)[::-1]
157
+ sorted_eigenvalues = cov_eigenvalues[eigenvalues_order]
158
+ sorted_eigenvectors = cov_eigenvectors[:, eigenvalues_order]
159
+ expected_singular_values = np.sqrt(sorted_eigenvalues * (n_samples_seen - 1))[
160
+ :n_components
161
+ ]
162
+ expected_components = sorted_eigenvectors.T[:n_components]
163
+
164
+ assert_allclose(singular_values, expected_singular_values, atol=tol)
165
+ for i in range(n_components):
166
+ component_length = np.dot(components[i], components[i])
167
+ assert np.abs(component_length - 1.0) < tol
168
+ abs_dot_product = np.abs(np.dot(components[i], expected_components[i]))
169
+ assert np.abs(abs_dot_product - 1.0) < tol
170
+
171
+ expected_mean = np.mean(X, axis=0)
172
+ assert_allclose(incpca.mean_, expected_mean, atol=tol)
173
+
174
+ expected_var_ = np.var(X, ddof=1, axis=0)
175
+ assert_allclose(incpca.var_, expected_var_, atol=tol)
176
+
177
+ expected_explained_variance = sorted_eigenvalues[:n_components]
178
+ assert_allclose(incpca.explained_variance_, expected_explained_variance, atol=tol)
179
+
180
+ expected_explained_variance_ratio = expected_explained_variance / np.sum(
181
+ sorted_eigenvalues
182
+ )
183
+ assert_allclose(
184
+ incpca.explained_variance_ratio_, expected_explained_variance_ratio, atol=tol
185
+ )
186
+
187
+ expected_noise_variance = (
188
+ np.mean(sorted_eigenvalues[n_components:])
189
+ if len(sorted_eigenvalues) > n_components
190
+ else 0.0
191
+ )
192
+ # TODO Fix noise variance computation (It is necessary to update C++ side)
193
+ # assert np.abs(incpca.noise_variance_ - expected_noise_variance) < tol
194
+
195
+ expected_transformed_data = centered_data @ components.T
196
+ if whiten:
197
+ scale = np.sqrt(incpca.explained_variance_)
198
+ min_scale = np.finfo(scale.dtype).eps
199
+ scale[scale < min_scale] = np.inf
200
+ expected_transformed_data /= scale
201
+
202
+ if daal_check_version((2024, "P", 500)) or not (
203
+ whiten and queue is not None and queue.sycl_device.device_type.name == "gpu"
204
+ ):
205
+ assert_allclose(transformed_data, expected_transformed_data, atol=tol)
206
+
207
+
208
+ @pytest.mark.parametrize("queue", get_queues())
209
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
210
+ def test_incremental_estimator_pickle(queue, dtype):
211
+ import pickle
212
+
213
+ from onedal.decomposition import IncrementalPCA
214
+
215
+ incpca = IncrementalPCA()
216
+
217
+ # Check that estimator can be serialized without any data.
218
+ dump = pickle.dumps(incpca)
219
+ incpca_loaded = pickle.loads(dump)
220
+ seed = 77
221
+ gen = np.random.default_rng(seed)
222
+ X = gen.uniform(low=-0.3, high=0.7, size=(10, 10))
223
+ X = X.astype(dtype)
224
+ X_split = np.array_split(X, 2)
225
+ incpca.partial_fit(X_split[0], queue=queue)
226
+ incpca_loaded.partial_fit(X_split[0], queue=queue)
227
+ assert incpca._need_to_finalize == True
228
+ assert incpca_loaded._need_to_finalize == True
229
+
230
+ # Check that estimator can be serialized after partial_fit call.
231
+ dump = pickle.dumps(incpca)
232
+ incpca_loaded = pickle.loads(dump)
233
+ assert incpca._need_to_finalize == False
234
+ # Finalize is called during serialization to make sure partial results are finalized correctly.
235
+ assert incpca_loaded._need_to_finalize == False
236
+
237
+ partial_n_rows = from_table(incpca._partial_result.partial_n_rows)
238
+ partial_n_rows_loaded = from_table(incpca_loaded._partial_result.partial_n_rows)
239
+ assert_allclose(partial_n_rows, partial_n_rows_loaded)
240
+
241
+ partial_crossproduct = from_table(incpca._partial_result.partial_crossproduct)
242
+ partial_crossproduct_loaded = from_table(
243
+ incpca_loaded._partial_result.partial_crossproduct
244
+ )
245
+ assert_allclose(partial_crossproduct, partial_crossproduct_loaded)
246
+
247
+ partial_sum = from_table(incpca._partial_result.partial_sum)
248
+ partial_sum_loaded = from_table(incpca_loaded._partial_result.partial_sum)
249
+ assert_allclose(partial_sum, partial_sum_loaded)
250
+
251
+ auxiliary_table_count = incpca._partial_result.auxiliary_table_count
252
+ auxiliary_table_count_loaded = incpca_loaded._partial_result.auxiliary_table_count
253
+ assert_allclose(auxiliary_table_count, auxiliary_table_count_loaded)
254
+
255
+ for i in range(auxiliary_table_count):
256
+ aux_table = incpca._partial_result.get_auxiliary_table(i)
257
+ aux_table_loaded = incpca_loaded._partial_result.get_auxiliary_table(i)
258
+ assert_allclose(from_table(aux_table), from_table(aux_table_loaded))
259
+
260
+ incpca.partial_fit(X_split[1], queue=queue)
261
+ incpca_loaded.partial_fit(X_split[1], queue=queue)
262
+ assert incpca._need_to_finalize == True
263
+ assert incpca_loaded._need_to_finalize == True
264
+
265
+ dump = pickle.dumps(incpca_loaded)
266
+ incpca_loaded = pickle.loads(dump)
267
+
268
+ assert incpca._need_to_finalize == True
269
+ assert incpca_loaded._need_to_finalize == False
270
+
271
+ incpca.finalize_fit()
272
+ incpca_loaded.finalize_fit()
273
+
274
+ # Check that finalized estimator can be serialized.
275
+ dump = pickle.dumps(incpca_loaded)
276
+ incpca_loaded = pickle.loads(dump)
277
+
278
+ assert_allclose(incpca.singular_values_, incpca_loaded.singular_values_, atol=1e-6)
279
+ assert_allclose(incpca.n_samples_seen_, incpca_loaded.n_samples_seen_, atol=1e-6)
280
+ assert_allclose(incpca.n_features_in_, incpca_loaded.n_features_in_, atol=1e-6)
281
+ assert_allclose(incpca.mean_, incpca_loaded.mean_, atol=1e-6)
282
+ assert_allclose(incpca.var_, incpca_loaded.var_, atol=1e-6)
283
+ assert_allclose(
284
+ incpca.explained_variance_, incpca_loaded.explained_variance_, atol=1e-6
285
+ )
286
+ assert_allclose(incpca.components_, incpca_loaded.components_, atol=1e-6)
287
+ assert_allclose(
288
+ incpca.explained_variance_ratio_,
289
+ incpca_loaded.explained_variance_ratio_,
290
+ atol=1e-6,
291
+ )
@@ -0,0 +1,19 @@
1
+ # ==============================================================================
2
+ # Copyright Contributors to the oneDAL Project
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 .dummy import DummyEstimator
18
+
19
+ __all__ = ["DummyEstimator"]