scikit-learn-intelex 2024.4.0__py312-none-win_amd64.whl → 2025.10.0__py312-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
  5. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
  6. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
  7. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
  8. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp312-win_amd64.pyd +0 -0
  9. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  10. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
  11. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  12. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  13. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  14. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
  15. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  16. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -2
  17. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
  18. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  19. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
  20. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  21. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
  22. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  23. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -28
  24. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
  25. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
  26. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
  27. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  28. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  29. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  30. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
  31. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  32. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
  33. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
  34. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  35. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +3 -3
  36. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
  37. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  38. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
  39. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  40. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -2
  41. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  42. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  43. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  44. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  45. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
  46. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  47. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
  48. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
  49. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  50. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
  51. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
  52. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
  53. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  54. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  55. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  56. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
  57. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
  58. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
  59. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  60. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
  61. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
  62. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
  63. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
  64. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
  65. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  66. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
  67. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
  68. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
  69. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  70. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  71. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  72. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
  73. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
  74. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
  75. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  76. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  77. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  78. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
  79. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  80. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  81. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
  82. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
  83. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  84. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
  85. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
  86. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
  88. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
  89. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
  90. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
  91. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
  92. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
  93. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
  94. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  95. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
  96. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
  97. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
  98. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
  99. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
  100. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  101. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
  102. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  103. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  104. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
  105. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
  106. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
  107. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  108. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  109. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
  110. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  111. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  112. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/neighbors/__init__.py +19 -19
  113. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
  114. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  115. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  116. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
  117. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
  118. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  119. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  120. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
  121. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
  122. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  123. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  124. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  125. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  126. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
  127. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
  128. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
  129. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
  130. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
  131. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
  132. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  133. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
  134. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__init__.py +7 -3
  135. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
  136. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
  137. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
  138. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
  139. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
  140. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  141. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
  142. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +128 -78
  143. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  144. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +101 -32
  145. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  146. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +38 -29
  147. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
  148. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
  149. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
  150. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/conftest.py +20 -1
  151. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
  152. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
  153. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
  154. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
  155. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +199 -21
  156. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
  157. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -17
  158. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
  159. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
  160. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +288 -440
  161. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
  162. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
  163. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +17 -3
  164. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  165. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
  166. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
  167. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
  168. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
  169. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
  170. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
  171. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  172. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  173. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  174. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
  175. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  176. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +11 -0
  177. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
  178. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +3 -0
  179. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  180. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
  181. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +30 -62
  182. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +56 -9
  183. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +45 -101
  184. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +63 -94
  185. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +49 -25
  186. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +6 -4
  187. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  188. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
  189. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +54 -8
  190. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  191. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
  192. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
  193. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  194. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
  195. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  196. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
  197. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
  198. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +9 -4
  199. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
  200. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
  201. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +3 -4
  202. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
  203. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
  204. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
  205. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
  206. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  207. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
  208. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +6 -4
  209. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
  210. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
  211. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  212. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
  213. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
  214. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
  215. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
  216. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
  217. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
  218. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
  219. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +1 -3
  220. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
  221. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
  222. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +99 -117
  223. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +55 -16
  224. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +95 -113
  225. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +51 -16
  226. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +43 -20
  227. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
  228. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
  229. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  230. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
  231. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +5 -4
  232. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
  233. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +122 -75
  234. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
  235. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
  236. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
  237. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  238. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/validation.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -1
  239. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
  240. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
  241. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  242. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
  243. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  244. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
  245. scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
  246. scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
  247. {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/WHEEL +1 -1
  248. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_config.py +0 -110
  249. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -250
  250. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_utils.py +0 -109
  251. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  252. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  253. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -130
  254. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -143
  255. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -335
  256. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -56
  257. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -113
  258. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -316
  259. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
  260. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +0 -385
  261. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -117
  262. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -91
  263. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -26
  264. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  265. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -303
  266. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -133
  267. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
  268. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
  269. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -185
  270. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +0 -164
  271. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -39
  272. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -227
  273. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -99
  274. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  275. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -20
  276. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py +0 -97
  277. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
  278. scikit_learn_intelex-2024.4.0.dist-info/METADATA +0 -230
  279. scikit_learn_intelex-2024.4.0.dist-info/RECORD +0 -101
  280. {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/basic_statistics/__init__.py +0 -0
  281. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  282. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  283. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  284. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  285. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  286. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  287. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  288. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  289. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  290. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  291. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  292. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  293. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  294. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  295. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  296. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  297. {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  298. {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/LICENSE.txt +0 -0
  299. {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,565 @@
1
+ # ==============================================================================
2
+ # Copyright 2014 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
+ import warnings
19
+
20
+ import numpy as np
21
+ from scipy import sparse as sp
22
+ from sklearn.cluster import KMeans as KMeans_original
23
+ from sklearn.cluster._kmeans import _labels_inertia
24
+ from sklearn.exceptions import ConvergenceWarning
25
+ from sklearn.utils import check_array, check_random_state
26
+ from sklearn.utils._openmp_helpers import _openmp_effective_n_threads
27
+ from sklearn.utils.extmath import row_norms
28
+ from sklearn.utils.sparsefuncs import mean_variance_axis
29
+ from sklearn.utils.validation import (
30
+ _deprecate_positional_args,
31
+ _num_samples,
32
+ check_is_fitted,
33
+ )
34
+
35
+ import daal4py
36
+
37
+ from .._n_jobs_support import control_n_jobs
38
+ from .._utils import PatchingConditionsChain, getFPType, sklearn_check_version
39
+ from ..utils.validation import check_feature_names, validate_data
40
+
41
+ if sklearn_check_version("1.1"):
42
+ from sklearn.utils.validation import _check_sample_weight, _is_arraylike_not_scalar
43
+
44
+
45
+ def _validate_center_shape(X, n_centers, centers):
46
+ """Check if centers is compatible with X and n_centers"""
47
+ if centers.shape[0] != n_centers:
48
+ raise ValueError(
49
+ f"The shape of the initial centers {centers.shape} does not "
50
+ f"match the number of clusters {n_centers}."
51
+ )
52
+ if centers.shape[1] != X.shape[1]:
53
+ raise ValueError(
54
+ f"The shape of the initial centers {centers.shape} does not "
55
+ f"match the number of features of the data {X.shape[1]}."
56
+ )
57
+
58
+
59
+ def _tolerance(X, rtol):
60
+ """Compute absolute tolerance from the relative tolerance"""
61
+ if rtol == 0.0:
62
+ return rtol
63
+ if sp.issparse(X):
64
+ variances = mean_variance_axis(X, axis=0)[1]
65
+ mean_var = np.mean(variances)
66
+ else:
67
+ mean_var = np.var(X, axis=0).mean()
68
+ return mean_var * rtol
69
+
70
+
71
+ def _daal4py_compute_starting_centroids(
72
+ X, X_fptype, nClusters, cluster_centers_0, verbose, random_state
73
+ ):
74
+ def is_string(s, target_str):
75
+ return isinstance(s, str) and s == target_str
76
+
77
+ is_sparse = sp.issparse(X)
78
+
79
+ deterministic = False
80
+ if is_string(cluster_centers_0, "k-means++"):
81
+ _seed = random_state.randint(np.iinfo("i").max)
82
+ plus_plus_method = "plusPlusCSR" if is_sparse else "plusPlusDense"
83
+ daal_engine = daal4py.engines_mt19937(
84
+ fptype=X_fptype, method="defaultDense", seed=_seed
85
+ )
86
+ _n_local_trials = 2 + int(np.log(nClusters))
87
+ kmeans_init = daal4py.kmeans_init(
88
+ nClusters,
89
+ fptype=X_fptype,
90
+ nTrials=_n_local_trials,
91
+ method=plus_plus_method,
92
+ engine=daal_engine,
93
+ )
94
+ kmeans_init_res = kmeans_init.compute(X)
95
+ centroids_ = kmeans_init_res.centroids
96
+ elif is_string(cluster_centers_0, "random"):
97
+ _seed = random_state.randint(np.iinfo("i").max)
98
+ random_method = "randomCSR" if is_sparse else "randomDense"
99
+ daal_engine = daal4py.engines_mt19937(
100
+ seed=_seed, fptype=X_fptype, method="defaultDense"
101
+ )
102
+ kmeans_init = daal4py.kmeans_init(
103
+ nClusters,
104
+ fptype=X_fptype,
105
+ method=random_method,
106
+ engine=daal_engine,
107
+ )
108
+ kmeans_init_res = kmeans_init.compute(X)
109
+ centroids_ = kmeans_init_res.centroids
110
+ elif hasattr(cluster_centers_0, "__array__"):
111
+ deterministic = True
112
+ cc_arr = np.ascontiguousarray(cluster_centers_0, dtype=X.dtype)
113
+ _validate_center_shape(X, nClusters, cc_arr)
114
+ centroids_ = cc_arr
115
+ elif callable(cluster_centers_0):
116
+ cc_arr = cluster_centers_0(X, nClusters, random_state)
117
+ cc_arr = np.ascontiguousarray(cc_arr, dtype=X.dtype)
118
+ _validate_center_shape(X, nClusters, cc_arr)
119
+ centroids_ = cc_arr
120
+ elif is_string(cluster_centers_0, "deterministic"):
121
+ deterministic = True
122
+ default_method = "lloydCSR" if is_sparse else "defaultDense"
123
+ kmeans_init = daal4py.kmeans_init(
124
+ nClusters, fptype=X_fptype, method=default_method
125
+ )
126
+ kmeans_init_res = kmeans_init.compute(X)
127
+ centroids_ = kmeans_init_res.centroids
128
+ else:
129
+ raise ValueError(
130
+ f"init should be either 'k-means++', 'random', a ndarray or a "
131
+ f"callable, got '{cluster_centers_0}' instead."
132
+ )
133
+ if verbose:
134
+ print("Initialization complete")
135
+ return deterministic, centroids_
136
+
137
+
138
+ def _daal4py_kmeans_compatibility(
139
+ nClusters,
140
+ maxIterations,
141
+ fptype="double",
142
+ method="lloydDense",
143
+ accuracyThreshold=0.0,
144
+ resultsToEvaluate="computeCentroids",
145
+ gamma=1.0,
146
+ ):
147
+ kmeans_algo = daal4py.kmeans(
148
+ nClusters=nClusters,
149
+ maxIterations=maxIterations,
150
+ fptype=fptype,
151
+ resultsToEvaluate=resultsToEvaluate,
152
+ accuracyThreshold=accuracyThreshold,
153
+ method=method,
154
+ gamma=gamma,
155
+ )
156
+ return kmeans_algo
157
+
158
+
159
+ def _daal4py_k_means_predict(
160
+ X, nClusters, centroids, resultsToEvaluate="computeAssignments"
161
+ ):
162
+ X_fptype = getFPType(X)
163
+ is_sparse = sp.issparse(X)
164
+ method = "lloydCSR" if is_sparse else "defaultDense"
165
+ kmeans_algo = _daal4py_kmeans_compatibility(
166
+ nClusters=nClusters,
167
+ maxIterations=0,
168
+ fptype=X_fptype,
169
+ resultsToEvaluate=resultsToEvaluate,
170
+ method=method,
171
+ )
172
+
173
+ res = kmeans_algo.compute(X, centroids)
174
+
175
+ return res.assignments[:, 0], res.objectiveFunction[0, 0]
176
+
177
+
178
+ def _daal4py_k_means_fit(
179
+ X, nClusters, numIterations, tol, cluster_centers_0, n_init, verbose, random_state
180
+ ):
181
+ if numIterations < 0:
182
+ raise ValueError("Wrong iterations number")
183
+
184
+ def is_string(s, target_str):
185
+ return isinstance(s, str) and s == target_str
186
+
187
+ default_n_init = 10
188
+ if n_init in ["auto", "warn"]:
189
+ if n_init == "warn" and sklearn_check_version("1.2"):
190
+ warnings.warn(
191
+ "The default value of `n_init` will change from "
192
+ f"{default_n_init} to 'auto' in 1.4. Set the value of `n_init`"
193
+ " explicitly to suppress the warning",
194
+ FutureWarning,
195
+ )
196
+ if is_string(cluster_centers_0, "k-means++"):
197
+ n_init = 1
198
+ else:
199
+ n_init = default_n_init
200
+ X_fptype = getFPType(X)
201
+ abs_tol = _tolerance(X, tol) # tol is relative tolerance
202
+ is_sparse = sp.issparse(X)
203
+ method = "lloydCSR" if is_sparse else "defaultDense"
204
+ best_inertia, best_cluster_centers = None, None
205
+ best_n_iter = -1
206
+ kmeans_algo = _daal4py_kmeans_compatibility(
207
+ nClusters=nClusters,
208
+ maxIterations=numIterations,
209
+ accuracyThreshold=abs_tol,
210
+ fptype=X_fptype,
211
+ resultsToEvaluate="computeCentroids",
212
+ method=method,
213
+ )
214
+
215
+ for k in range(n_init):
216
+ deterministic, starting_centroids_ = _daal4py_compute_starting_centroids(
217
+ X, X_fptype, nClusters, cluster_centers_0, verbose, random_state
218
+ )
219
+
220
+ res = kmeans_algo.compute(X, starting_centroids_)
221
+
222
+ inertia = res.objectiveFunction[0, 0]
223
+ if verbose:
224
+ print(f"Iteration {k}, inertia {inertia}.")
225
+
226
+ if best_inertia is None or inertia < best_inertia:
227
+ best_cluster_centers = res.centroids
228
+ if n_init > 1:
229
+ best_cluster_centers = best_cluster_centers.copy()
230
+ best_inertia = inertia
231
+ best_n_iter = int(res.nIterations[0, 0])
232
+ if deterministic and n_init != 1:
233
+ warnings.warn(
234
+ "Explicit initial center position passed: "
235
+ "performing only one init in k-means instead of n_init=%d" % n_init,
236
+ RuntimeWarning,
237
+ stacklevel=2,
238
+ )
239
+ break
240
+
241
+ flag_compute = "computeAssignments|computeExactObjectiveFunction"
242
+ best_labels, best_inertia = _daal4py_k_means_predict(
243
+ X, nClusters, best_cluster_centers, flag_compute
244
+ )
245
+
246
+ distinct_clusters = np.unique(best_labels).size
247
+ if distinct_clusters < nClusters:
248
+ warnings.warn(
249
+ "Number of distinct clusters ({}) found smaller than "
250
+ "n_clusters ({}). Possibly due to duplicate points "
251
+ "in X.".format(distinct_clusters, nClusters),
252
+ ConvergenceWarning,
253
+ stacklevel=2,
254
+ )
255
+ # for passing test case "test_kmeans_warns_less_centers_than_unique_points"
256
+
257
+ return best_cluster_centers, best_labels, best_inertia, best_n_iter
258
+
259
+
260
+ def _fit(self, X, y=None, sample_weight=None):
261
+ init = self.init
262
+ if sklearn_check_version("1.1"):
263
+ if sklearn_check_version("1.2"):
264
+ self._validate_params()
265
+
266
+ X = validate_data(
267
+ self,
268
+ X,
269
+ accept_sparse="csr",
270
+ dtype=[np.float64, np.float32],
271
+ order="C",
272
+ copy=self.copy_x,
273
+ accept_large_sparse=False,
274
+ )
275
+
276
+ if sklearn_check_version("1.2"):
277
+ self._check_params_vs_input(X)
278
+ else:
279
+ self._check_params(X)
280
+
281
+ random_state = check_random_state(self.random_state)
282
+ sample_weight = _check_sample_weight(sample_weight, X, dtype=X.dtype)
283
+ self._n_threads = _openmp_effective_n_threads()
284
+
285
+ # Validate init array
286
+ init_is_array_like = _is_arraylike_not_scalar(init)
287
+ if init_is_array_like:
288
+ init = check_array(init, dtype=X.dtype, copy=True, order="C")
289
+ self._validate_center_shape(X, init)
290
+ else:
291
+ if hasattr(self, "precompute_distances"):
292
+ if self.precompute_distances != "deprecated":
293
+ warnings.warn(
294
+ "'precompute_distances' was deprecated in version "
295
+ "0.23 and will be removed in 1.0 (renaming of 0.25)."
296
+ " It has no effect",
297
+ FutureWarning,
298
+ )
299
+
300
+ self._n_threads = None
301
+ if hasattr(self, "n_jobs"):
302
+ if self.n_jobs != "deprecated":
303
+ warnings.warn(
304
+ "'n_jobs' was deprecated in version 0.23 and will be"
305
+ " removed in 1.0 (renaming of 0.25).",
306
+ FutureWarning,
307
+ )
308
+ self._n_threads = self.n_jobs
309
+ self._n_threads = _openmp_effective_n_threads(self._n_threads)
310
+
311
+ if self.n_init <= 0:
312
+ raise ValueError(f"n_init should be > 0, got {self.n_init} instead.")
313
+
314
+ random_state = check_random_state(self.random_state)
315
+ check_feature_names(self, X, reset=True)
316
+
317
+ if self.max_iter <= 0:
318
+ raise ValueError(f"max_iter should be > 0, got {self.max_iter} instead.")
319
+
320
+ algorithm = self.algorithm
321
+ if sklearn_check_version("1.2"):
322
+ if algorithm == "elkan" and self.n_clusters == 1:
323
+ warnings.warn(
324
+ "algorithm='elkan' doesn't make sense for a single "
325
+ "cluster. Using 'full' instead.",
326
+ RuntimeWarning,
327
+ )
328
+ algorithm = "lloyd"
329
+
330
+ if algorithm == "auto" or algorithm == "full":
331
+ warnings.warn(
332
+ "algorithm= {'auto','full'} is deprecated" "Using 'lloyd' instead.",
333
+ RuntimeWarning,
334
+ )
335
+ algorithm = "lloyd" if self.n_clusters == 1 else "elkan"
336
+
337
+ if algorithm not in ["lloyd", "full", "elkan"]:
338
+ raise ValueError(
339
+ "Algorithm must be 'auto','lloyd', 'full' or 'elkan',"
340
+ "got {}".format(str(algorithm))
341
+ )
342
+ else:
343
+ if algorithm == "elkan" and self.n_clusters == 1:
344
+ warnings.warn(
345
+ "algorithm='elkan' doesn't make sense for a single "
346
+ "cluster. Using 'full' instead.",
347
+ RuntimeWarning,
348
+ )
349
+ algorithm = "full"
350
+
351
+ if algorithm == "auto":
352
+ algorithm = "full" if self.n_clusters == 1 else "elkan"
353
+
354
+ if algorithm not in ["full", "elkan"]:
355
+ raise ValueError(
356
+ "Algorithm must be 'auto', 'full' or 'elkan', got"
357
+ " {}".format(str(algorithm))
358
+ )
359
+
360
+ X_len = _num_samples(X)
361
+
362
+ _patching_status = PatchingConditionsChain("sklearn.cluster.KMeans.fit")
363
+ _dal_ready = _patching_status.and_conditions(
364
+ [
365
+ (
366
+ self.n_clusters <= X_len,
367
+ "The number of clusters is larger than the number of samples in X.",
368
+ )
369
+ ]
370
+ )
371
+
372
+ if _dal_ready and sample_weight is not None:
373
+ if isinstance(sample_weight, numbers.Number):
374
+ sample_weight = np.full(X_len, sample_weight, dtype=np.float64)
375
+ else:
376
+ sample_weight = np.asarray(sample_weight)
377
+ _dal_ready = _patching_status.and_conditions(
378
+ [
379
+ (
380
+ sample_weight.shape == (X_len,),
381
+ "Sample weights do not have the same length as X.",
382
+ ),
383
+ (
384
+ np.allclose(sample_weight, np.ones_like(sample_weight)),
385
+ "Sample weights are not ones.",
386
+ ),
387
+ ]
388
+ )
389
+
390
+ _patching_status.write_log()
391
+ if _dal_ready:
392
+ X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
393
+ self.n_features_in_ = X.shape[1]
394
+ (
395
+ self.cluster_centers_,
396
+ self.labels_,
397
+ self.inertia_,
398
+ self.n_iter_,
399
+ ) = _daal4py_k_means_fit(
400
+ X,
401
+ self.n_clusters,
402
+ self.max_iter,
403
+ self.tol,
404
+ init,
405
+ self.n_init,
406
+ self.verbose,
407
+ random_state,
408
+ )
409
+ if sklearn_check_version("1.1"):
410
+ self._n_features_out = self.cluster_centers_.shape[0]
411
+ else:
412
+ super(KMeans, self).fit(X, y=y, sample_weight=sample_weight)
413
+ return self
414
+
415
+
416
+ def _daal4py_check_test_data(self, X):
417
+ check_feature_names(self, X, reset=False)
418
+ X = check_array(
419
+ X, accept_sparse="csr", dtype=[np.float64, np.float32], accept_large_sparse=False
420
+ )
421
+ if self.n_features_in_ != X.shape[1]:
422
+ raise ValueError(
423
+ (
424
+ f"X has {X.shape[1]} features, "
425
+ f"but Kmeans is expecting {self.n_features_in_} features as input"
426
+ )
427
+ )
428
+ return X
429
+
430
+
431
+ def _predict(self, X, sample_weight=None):
432
+ check_is_fitted(self)
433
+
434
+ X = _daal4py_check_test_data(self, X)
435
+
436
+ if (
437
+ sklearn_check_version("1.3")
438
+ and isinstance(sample_weight, str)
439
+ and sample_weight == "deprecated"
440
+ ):
441
+ sample_weight = None
442
+
443
+ _patching_status = PatchingConditionsChain("sklearn.cluster.KMeans.predict")
444
+ _patching_status.and_conditions(
445
+ [
446
+ (sample_weight is None, "Sample weights are not supported."),
447
+ (hasattr(X, "__array__"), "X does not have '__array__' attribute."),
448
+ ]
449
+ )
450
+
451
+ # CSR array is introduced in scipy 1.11, this requires an initial attribute check
452
+ if hasattr(sp, "csr_array"):
453
+ _dal_ready = _patching_status.or_conditions(
454
+ [
455
+ (
456
+ sp.isspmatrix_csr(X) or isinstance(X, sp.csr_array),
457
+ "X is not csr sparse.",
458
+ )
459
+ ]
460
+ )
461
+ else:
462
+ _dal_ready = _patching_status.or_conditions(
463
+ [(sp.isspmatrix_csr(X), "X is not csr sparse.")]
464
+ )
465
+
466
+ _patching_status.write_log()
467
+ if _dal_ready:
468
+ return _daal4py_k_means_predict(X, self.n_clusters, self.cluster_centers_)[0]
469
+ if sklearn_check_version("1.2"):
470
+ if sklearn_check_version("1.3") and sample_weight is not None:
471
+ warnings.warn(
472
+ "'sample_weight' was deprecated in version 1.3 and "
473
+ "will be removed in 1.5.",
474
+ FutureWarning,
475
+ )
476
+ return _labels_inertia(X, sample_weight, self.cluster_centers_)[0]
477
+ else:
478
+ x_squared_norms = row_norms(X, squared=True)
479
+ return _labels_inertia(X, sample_weight, x_squared_norms, self.cluster_centers_)[
480
+ 0
481
+ ]
482
+
483
+
484
+ @control_n_jobs(decorated_methods=["fit", "predict"])
485
+ class KMeans(KMeans_original):
486
+ __doc__ = KMeans_original.__doc__
487
+
488
+ if sklearn_check_version("1.2"):
489
+ _parameter_constraints: dict = {**KMeans_original._parameter_constraints}
490
+
491
+ @_deprecate_positional_args
492
+ def __init__(
493
+ self,
494
+ n_clusters=8,
495
+ *,
496
+ init="k-means++",
497
+ n_init="auto" if sklearn_check_version("1.4") else "warn",
498
+ max_iter=300,
499
+ tol=1e-4,
500
+ verbose=0,
501
+ random_state=None,
502
+ copy_x=True,
503
+ algorithm="lloyd",
504
+ ):
505
+ super(KMeans, self).__init__(
506
+ n_clusters=n_clusters,
507
+ init=init,
508
+ max_iter=max_iter,
509
+ tol=tol,
510
+ n_init=n_init,
511
+ verbose=verbose,
512
+ random_state=random_state,
513
+ copy_x=copy_x,
514
+ algorithm=algorithm,
515
+ )
516
+
517
+ else:
518
+
519
+ @_deprecate_positional_args
520
+ def __init__(
521
+ self,
522
+ n_clusters=8,
523
+ *,
524
+ init="k-means++",
525
+ n_init=10,
526
+ max_iter=300,
527
+ tol=1e-4,
528
+ verbose=0,
529
+ random_state=None,
530
+ copy_x=True,
531
+ algorithm="lloyd" if sklearn_check_version("1.1") else "auto",
532
+ ):
533
+ super(KMeans, self).__init__(
534
+ n_clusters=n_clusters,
535
+ init=init,
536
+ max_iter=max_iter,
537
+ tol=tol,
538
+ n_init=n_init,
539
+ verbose=verbose,
540
+ random_state=random_state,
541
+ copy_x=copy_x,
542
+ algorithm=algorithm,
543
+ )
544
+
545
+ def fit(self, X, y=None, sample_weight=None):
546
+ return _fit(self, X, y=y, sample_weight=sample_weight)
547
+
548
+ if sklearn_check_version("1.5"):
549
+
550
+ def predict(self, X):
551
+ return _predict(self, X)
552
+
553
+ else:
554
+
555
+ def predict(
556
+ self, X, sample_weight="deprecated" if sklearn_check_version("1.3") else None
557
+ ):
558
+ return _predict(self, X, sample_weight=sample_weight)
559
+
560
+ def fit_predict(self, X, y=None, sample_weight=None):
561
+ return super().fit_predict(X, y, sample_weight)
562
+
563
+ fit.__doc__ = KMeans_original.fit.__doc__
564
+ predict.__doc__ = KMeans_original.predict.__doc__
565
+ fit_predict.__doc__ = KMeans_original.fit_predict.__doc__
@@ -0,0 +1,109 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 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 sklearn.cluster import DBSCAN as DBSCAN_SKLEARN
20
+
21
+ from daal4py.sklearn.cluster import DBSCAN as DBSCAN_DAAL
22
+
23
+ METRIC = ("euclidean",)
24
+ USE_WEIGHTS = (True, False)
25
+
26
+
27
+ def generate_data(
28
+ low: int, high: int, samples_number: int, sample_dimension: tuple
29
+ ) -> tuple:
30
+ generator = np.random.RandomState()
31
+ table_size = (samples_number, sample_dimension)
32
+ return generator.uniform(low=low, high=high, size=table_size), generator.uniform(
33
+ size=samples_number
34
+ )
35
+
36
+
37
+ def check_labels_equals(left_labels: np.ndarray, right_labels: np.ndarray) -> bool:
38
+ if left_labels.shape != right_labels.shape:
39
+ raise Exception("Shapes not equals")
40
+ if len(left_labels.shape) != 1:
41
+ raise Exception("Shapes size not equals 1")
42
+ if len(set(left_labels)) != len(set(right_labels)):
43
+ raise Exception("Clusters count not equals")
44
+ dict_checker = {}
45
+ for index_sample in range(left_labels.shape[0]):
46
+ if left_labels[index_sample] not in dict_checker:
47
+ dict_checker[left_labels[index_sample]] = right_labels[index_sample]
48
+ elif dict_checker[left_labels[index_sample]] != right_labels[index_sample]:
49
+ raise Exception("Wrong clustering")
50
+ return True
51
+
52
+
53
+ def _test_dbscan_big_data_numpy_gen(
54
+ eps: float,
55
+ min_samples: int,
56
+ metric: str,
57
+ use_weights: bool,
58
+ low=-100.0,
59
+ high=100.0,
60
+ samples_number=1000,
61
+ sample_dimension=4,
62
+ ):
63
+ data, weights = generate_data(
64
+ low=low,
65
+ high=high,
66
+ samples_number=samples_number,
67
+ sample_dimension=sample_dimension,
68
+ )
69
+ if use_weights is False:
70
+ weights = None
71
+ initialized_daal_dbscan = DBSCAN_DAAL(
72
+ eps=eps, min_samples=min_samples, metric=metric
73
+ ).fit(X=data, sample_weight=weights)
74
+ initialized_sklearn_dbscan = DBSCAN_SKLEARN(
75
+ metric=metric, eps=eps, min_samples=min_samples
76
+ ).fit(X=data, sample_weight=weights)
77
+ check_labels_equals(
78
+ initialized_daal_dbscan.labels_, initialized_sklearn_dbscan.labels_
79
+ )
80
+
81
+
82
+ @pytest.mark.parametrize("metric", METRIC)
83
+ @pytest.mark.parametrize("use_weights", USE_WEIGHTS)
84
+ def test_dbscan_big_data_numpy_gen(metric, use_weights: bool):
85
+ eps = 35.0
86
+ min_samples = 6
87
+ _test_dbscan_big_data_numpy_gen(
88
+ eps=eps, min_samples=min_samples, metric=metric, use_weights=use_weights
89
+ )
90
+
91
+
92
+ def _test_across_grid_parameter_numpy_gen(metric, use_weights: bool):
93
+ eps_begin = 0.05
94
+ eps_end = 0.5
95
+ eps_step = 0.05
96
+ min_samples_begin = 5
97
+ min_samples_end = 15
98
+ min_samples_step = 1
99
+ for eps in np.arange(eps_begin, eps_end, eps_step):
100
+ for min_samples in range(min_samples_begin, min_samples_end, min_samples_step):
101
+ _test_dbscan_big_data_numpy_gen(
102
+ eps=eps, min_samples=min_samples, metric=metric, use_weights=use_weights
103
+ )
104
+
105
+
106
+ @pytest.mark.parametrize("metric", METRIC)
107
+ @pytest.mark.parametrize("use_weights", USE_WEIGHTS)
108
+ def test_across_grid_parameter_numpy_gen(metric, use_weights: bool):
109
+ _test_across_grid_parameter_numpy_gen(metric=metric, use_weights=use_weights)
@@ -1,5 +1,5 @@
1
1
  # ==============================================================================
2
- # Copyright 2023 Intel Corporation
2
+ # Copyright 2014 Intel Corporation
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
5
5
  # you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
- from .pca import PCA
17
+ from ._pca import PCA
18
18
 
19
19
  __all__ = ["PCA"]