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,690 @@
1
+ # ==============================================================================
2
+ # Copyright 2022 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ from abc import ABCMeta, abstractmethod
18
+ from numbers import Integral
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
+ from onedal.utils import _sycl_queue_manager as QM
25
+
26
+ from .._config import _get_config
27
+ from ..common._estimator_checks import _check_is_fitted, _is_classifier, _is_regressor
28
+ from ..common._mixin import ClassifierMixin, RegressorMixin
29
+ from ..datatypes import from_table, to_table
30
+ from ..utils._array_api import _get_sycl_namespace
31
+ from ..utils.validation import (
32
+ _check_array,
33
+ _check_classification_targets,
34
+ _check_n_features,
35
+ _check_X_y,
36
+ _column_or_1d,
37
+ _num_samples,
38
+ )
39
+
40
+
41
+ class NeighborsCommonBase(metaclass=ABCMeta):
42
+ def __init__(self):
43
+ self.requires_y = False
44
+ self.n_neighbors = None
45
+ self.metric = None
46
+ self.classes_ = None
47
+ self.effective_metric_ = None
48
+ self._fit_method = None
49
+ self.radius = None
50
+ self.effective_metric_params_ = None
51
+ self._onedal_model = None
52
+
53
+ def _parse_auto_method(self, method, n_samples, n_features):
54
+ result_method = method
55
+
56
+ if method in ["auto", "ball_tree"]:
57
+ condition = (
58
+ self.n_neighbors is not None and self.n_neighbors >= n_samples // 2
59
+ )
60
+ if self.metric == "precomputed" or n_features > 15 or condition:
61
+ result_method = "brute"
62
+ else:
63
+ if self.metric == "euclidean":
64
+ result_method = "kd_tree"
65
+ else:
66
+ result_method = "brute"
67
+
68
+ return result_method
69
+
70
+ @abstractmethod
71
+ def train(self, *args, **kwargs): ...
72
+
73
+ @abstractmethod
74
+ def infer(self, *args, **kwargs): ...
75
+
76
+ @abstractmethod
77
+ def _onedal_fit(self, X, y): ...
78
+
79
+ def _validate_data(
80
+ self, X, y=None, reset=True, validate_separately=None, **check_params
81
+ ):
82
+ if y is None:
83
+ if self.requires_y:
84
+ raise ValueError(
85
+ f"This {self.__class__.__name__} estimator "
86
+ f"requires y to be passed, but the target y is None."
87
+ )
88
+ X = _check_array(X, **check_params)
89
+ out = X, y
90
+ else:
91
+ if validate_separately:
92
+ # We need this because some estimators validate X and y
93
+ # separately, and in general, separately calling _check_array()
94
+ # on X and y isn't equivalent to just calling _check_X_y()
95
+ # :(
96
+ check_X_params, check_y_params = validate_separately
97
+ X = _check_array(X, **check_X_params)
98
+ y = _check_array(y, **check_y_params)
99
+ else:
100
+ X, y = _check_X_y(X, y, **check_params)
101
+ out = X, y
102
+
103
+ if check_params.get("ensure_2d", True):
104
+ _check_n_features(self, X, reset=reset)
105
+
106
+ return out
107
+
108
+ def _get_weights(self, dist, weights):
109
+ if weights in (None, "uniform"):
110
+ return None
111
+ if weights == "distance":
112
+ # if user attempts to classify a point that was zero distance from one
113
+ # or more training points, those training points are weighted as 1.0
114
+ # and the other points as 0.0
115
+ if dist.dtype is np.dtype(object):
116
+ for point_dist_i, point_dist in enumerate(dist):
117
+ # check if point_dist is iterable
118
+ # (ex: RadiusNeighborClassifier.predict may set an element of
119
+ # dist to 1e-6 to represent an 'outlier')
120
+ if hasattr(point_dist, "__contains__") and 0.0 in point_dist:
121
+ dist[point_dist_i] = point_dist == 0.0
122
+ else:
123
+ dist[point_dist_i] = 1.0 / point_dist
124
+ else:
125
+ with np.errstate(divide="ignore"):
126
+ dist = 1.0 / dist
127
+ inf_mask = np.isinf(dist)
128
+ inf_row = np.any(inf_mask, axis=1)
129
+ dist[inf_row] = inf_mask[inf_row]
130
+ return dist
131
+ elif callable(weights):
132
+ return weights(dist)
133
+ else:
134
+ raise ValueError(
135
+ "weights not recognized: should be 'uniform', "
136
+ "'distance', or a callable function"
137
+ )
138
+
139
+ def _get_onedal_params(self, X, y=None, n_neighbors=None):
140
+ class_count = 0 if self.classes_ is None else len(self.classes_)
141
+ weights = getattr(self, "weights", "uniform")
142
+ if self.effective_metric_ == "manhattan":
143
+ p = 1.0
144
+ elif self.effective_metric_ == "euclidean":
145
+ p = 2.0
146
+ else:
147
+ p = self.p
148
+ return {
149
+ "fptype": X.dtype,
150
+ "vote_weights": "uniform" if weights == "uniform" else "distance",
151
+ "method": self._fit_method,
152
+ "radius": self.radius,
153
+ "class_count": class_count,
154
+ "neighbor_count": self.n_neighbors if n_neighbors is None else n_neighbors,
155
+ "metric": self.effective_metric_,
156
+ "p": p,
157
+ "metric_params": self.effective_metric_params_,
158
+ "result_option": "indices|distances" if y is None else "responses",
159
+ }
160
+
161
+
162
+ class NeighborsBase(NeighborsCommonBase, metaclass=ABCMeta):
163
+ def __init__(
164
+ self,
165
+ n_neighbors=None,
166
+ radius=None,
167
+ algorithm="auto",
168
+ metric="minkowski",
169
+ p=2,
170
+ metric_params=None,
171
+ ):
172
+ self.n_neighbors = n_neighbors
173
+ self.radius = radius
174
+ self.algorithm = algorithm
175
+ self.metric = metric
176
+ self.p = p
177
+ self.metric_params = metric_params
178
+
179
+ def _validate_targets(self, y, dtype):
180
+ arr = _column_or_1d(y, warn=True)
181
+
182
+ try:
183
+ return arr.astype(dtype, copy=False)
184
+ except ValueError:
185
+ return arr
186
+
187
+ def _validate_n_classes(self):
188
+ length = 0 if self.classes_ is None else len(self.classes_)
189
+ if length < 2:
190
+ raise ValueError(
191
+ f"The number of classes has to be greater than one; got {length}"
192
+ )
193
+
194
+ def _fit(self, X, y):
195
+ self._onedal_model = None
196
+ self._tree = None
197
+ self._shape = None
198
+ self.classes_ = None
199
+ self.effective_metric_ = getattr(self, "effective_metric_", self.metric)
200
+ self.effective_metric_params_ = getattr(
201
+ self, "effective_metric_params_", self.metric_params
202
+ )
203
+
204
+ _, xp, _ = _get_sycl_namespace(X)
205
+ use_raw_input = _get_config().get("use_raw_input", False) is True
206
+ if y is not None or self.requires_y:
207
+ shape = getattr(y, "shape", None)
208
+ if not use_raw_input:
209
+ X, y = super()._validate_data(
210
+ X, y, dtype=[np.float64, np.float32], accept_sparse="csr"
211
+ )
212
+ self._shape = shape if shape is not None else y.shape
213
+
214
+ if _is_classifier(self):
215
+ if y.ndim == 1 or y.ndim == 2 and y.shape[1] == 1:
216
+ self.outputs_2d_ = False
217
+ y = y.reshape((-1, 1))
218
+ else:
219
+ self.outputs_2d_ = True
220
+
221
+ _check_classification_targets(y)
222
+ self.classes_ = []
223
+ self._y = np.empty(y.shape, dtype=int)
224
+ for k in range(self._y.shape[1]):
225
+ classes, self._y[:, k] = np.unique(y[:, k], return_inverse=True)
226
+ self.classes_.append(classes)
227
+
228
+ if not self.outputs_2d_:
229
+ self.classes_ = self.classes_[0]
230
+ self._y = self._y.ravel()
231
+
232
+ self._validate_n_classes()
233
+ else:
234
+ self._y = y
235
+ elif not use_raw_input:
236
+ X, _ = super()._validate_data(X, dtype=[np.float64, np.float32])
237
+
238
+ self.n_samples_fit_ = X.shape[0]
239
+ self.n_features_in_ = X.shape[1]
240
+ self._fit_X = X
241
+
242
+ if self.n_neighbors is not None:
243
+ if self.n_neighbors <= 0:
244
+ raise ValueError("Expected n_neighbors > 0. Got %d" % self.n_neighbors)
245
+ if not isinstance(self.n_neighbors, Integral):
246
+ raise TypeError(
247
+ "n_neighbors does not take %s value, "
248
+ "enter integer value" % type(self.n_neighbors)
249
+ )
250
+
251
+ self._fit_method = super()._parse_auto_method(
252
+ self.algorithm, self.n_samples_fit_, self.n_features_in_
253
+ )
254
+
255
+ _fit_y = None
256
+ queue = QM.get_global_queue()
257
+ gpu_device = queue is not None and queue.sycl_device.is_gpu
258
+
259
+ if _is_classifier(self) or (_is_regressor(self) and gpu_device):
260
+ _fit_y = self._validate_targets(self._y, X.dtype).reshape((-1, 1))
261
+ result = self._onedal_fit(X, _fit_y)
262
+
263
+ if y is not None and _is_regressor(self):
264
+ self._y = y if self._shape is None else xp.reshape(y, self._shape)
265
+
266
+ self._onedal_model = result
267
+ result = self
268
+
269
+ return result
270
+
271
+ def _kneighbors(self, X=None, n_neighbors=None, return_distance=True):
272
+ use_raw_input = _get_config().get("use_raw_input", False) is True
273
+ n_features = getattr(self, "n_features_in_", None)
274
+ shape = getattr(X, "shape", None)
275
+ if n_features and shape and len(shape) > 1 and shape[1] != n_features:
276
+ raise ValueError(
277
+ (
278
+ f"X has {X.shape[1]} features, "
279
+ f"but kneighbors is expecting "
280
+ f"{n_features} features as input"
281
+ )
282
+ )
283
+
284
+ _check_is_fitted(self)
285
+
286
+ if n_neighbors is None:
287
+ n_neighbors = self.n_neighbors
288
+ elif n_neighbors <= 0:
289
+ raise ValueError("Expected n_neighbors > 0. Got %d" % n_neighbors)
290
+ else:
291
+ if not isinstance(n_neighbors, Integral):
292
+ raise TypeError(
293
+ "n_neighbors does not take %s value, "
294
+ "enter integer value" % type(n_neighbors)
295
+ )
296
+
297
+ if X is not None:
298
+ query_is_train = False
299
+ if not use_raw_input:
300
+ X = _check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
301
+ else:
302
+ query_is_train = True
303
+ X = self._fit_X
304
+ # Include an extra neighbor to account for the sample itself being
305
+ # returned, which is removed later
306
+ n_neighbors += 1
307
+
308
+ n_samples_fit = self.n_samples_fit_
309
+ if n_neighbors > n_samples_fit:
310
+ if query_is_train:
311
+ n_neighbors -= 1 # ok to modify inplace because an error is raised
312
+ inequality_str = "n_neighbors < n_samples_fit"
313
+ else:
314
+ inequality_str = "n_neighbors <= n_samples_fit"
315
+ raise ValueError(
316
+ f"Expected {inequality_str}, but "
317
+ f"n_neighbors = {n_neighbors}, n_samples_fit = {n_samples_fit}, "
318
+ f"n_samples = {X.shape[0]}" # include n_samples for common tests
319
+ )
320
+
321
+ chunked_results = None
322
+ method = self._parse_auto_method(
323
+ self._fit_method, self.n_samples_fit_, n_features
324
+ )
325
+
326
+ params = super()._get_onedal_params(X, n_neighbors=n_neighbors)
327
+ prediction_results = self._onedal_predict(self._onedal_model, X, params)
328
+ distances = from_table(prediction_results.distances)
329
+ indices = from_table(prediction_results.indices)
330
+
331
+ if method == "kd_tree":
332
+ for i in range(distances.shape[0]):
333
+ seq = distances[i].argsort()
334
+ indices[i] = indices[i][seq]
335
+ distances[i] = distances[i][seq]
336
+
337
+ if return_distance:
338
+ results = distances, indices
339
+ else:
340
+ results = indices
341
+
342
+ if chunked_results is not None:
343
+ if return_distance:
344
+ neigh_dist, neigh_ind = zip(*chunked_results)
345
+ results = np.vstack(neigh_dist), np.vstack(neigh_ind)
346
+ else:
347
+ results = np.vstack(chunked_results)
348
+
349
+ if not query_is_train:
350
+ return results
351
+
352
+ # If the query data is the same as the indexed data, we would like
353
+ # to ignore the first nearest neighbor of every sample, i.e
354
+ # the sample itself.
355
+ if return_distance:
356
+ neigh_dist, neigh_ind = results
357
+ else:
358
+ neigh_ind = results
359
+
360
+ n_queries, _ = X.shape
361
+ sample_range = np.arange(n_queries)[:, None]
362
+ sample_mask = neigh_ind != sample_range
363
+
364
+ # Corner case: When the number of duplicates are more
365
+ # than the number of neighbors, the first NN will not
366
+ # be the sample, but a duplicate.
367
+ # In that case mask the first duplicate.
368
+ dup_gr_nbrs = np.all(sample_mask, axis=1)
369
+ sample_mask[:, 0][dup_gr_nbrs] = False
370
+
371
+ neigh_ind = np.reshape(neigh_ind[sample_mask], (n_queries, n_neighbors - 1))
372
+
373
+ if return_distance:
374
+ neigh_dist = np.reshape(neigh_dist[sample_mask], (n_queries, n_neighbors - 1))
375
+ return neigh_dist, neigh_ind
376
+ return neigh_ind
377
+
378
+
379
+ class KNeighborsClassifier(NeighborsBase, ClassifierMixin):
380
+ def __init__(
381
+ self,
382
+ n_neighbors=5,
383
+ *,
384
+ weights="uniform",
385
+ algorithm="auto",
386
+ p=2,
387
+ metric="minkowski",
388
+ metric_params=None,
389
+ **kwargs,
390
+ ):
391
+ super().__init__(
392
+ n_neighbors=n_neighbors,
393
+ algorithm=algorithm,
394
+ metric=metric,
395
+ p=p,
396
+ metric_params=metric_params,
397
+ **kwargs,
398
+ )
399
+ self.weights = weights
400
+
401
+ # direct access to the backend model constructor
402
+ @bind_default_backend("neighbors.classification")
403
+ def model(self): ...
404
+
405
+ # direct access to the backend model constructor
406
+ @bind_default_backend("neighbors.classification")
407
+ def train(self, *args, **kwargs): ...
408
+
409
+ @bind_default_backend("neighbors.classification")
410
+ def infer(self, *args, **kwargs): ...
411
+
412
+ def _onedal_fit(self, X, y):
413
+ # global queue is set as per user configuration (`target_offload`) or from data prior to calling this internal function
414
+ queue = QM.get_global_queue()
415
+ params = self._get_onedal_params(X, y)
416
+ X_table, y_table = to_table(X, y, queue=queue)
417
+ return self.train(params, X_table, y_table).model
418
+
419
+ def _onedal_predict(self, model, X, params):
420
+ X = to_table(X, queue=QM.get_global_queue())
421
+ if "responses" not in params["result_option"]:
422
+ params["result_option"] += "|responses"
423
+ params["fptype"] = X.dtype
424
+ result = self.infer(params, model, X)
425
+
426
+ return result
427
+
428
+ @supports_queue
429
+ def fit(self, X, y, queue=None):
430
+ return self._fit(X, y)
431
+
432
+ @supports_queue
433
+ def predict(self, X, queue=None):
434
+ use_raw_input = _get_config().get("use_raw_input", False) is True
435
+ if not use_raw_input:
436
+ X = _check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
437
+ onedal_model = getattr(self, "_onedal_model", None)
438
+ n_features = getattr(self, "n_features_in_", None)
439
+ n_samples_fit_ = getattr(self, "n_samples_fit_", None)
440
+ shape = getattr(X, "shape", None)
441
+ if n_features and shape and len(shape) > 1 and shape[1] != n_features:
442
+ raise ValueError(
443
+ (
444
+ f"X has {X.shape[1]} features, "
445
+ f"but KNNClassifier is expecting "
446
+ f"{n_features} features as input"
447
+ )
448
+ )
449
+
450
+ _check_is_fitted(self)
451
+
452
+ self._fit_method = self._parse_auto_method(
453
+ self.algorithm, n_samples_fit_, n_features
454
+ )
455
+
456
+ self._validate_n_classes()
457
+
458
+ params = self._get_onedal_params(X)
459
+ prediction_result = self._onedal_predict(onedal_model, X, params)
460
+ responses = from_table(prediction_result.responses)
461
+
462
+ result = self.classes_.take(np.asarray(responses.ravel(), dtype=np.intp))
463
+ return result
464
+
465
+ @supports_queue
466
+ def predict_proba(self, X, queue=None):
467
+ neigh_dist, neigh_ind = self.kneighbors(X, queue=queue)
468
+
469
+ classes_ = self.classes_
470
+ _y = self._y
471
+ if not self.outputs_2d_:
472
+ _y = self._y.reshape((-1, 1))
473
+ classes_ = [self.classes_]
474
+
475
+ n_queries = _num_samples(X)
476
+
477
+ weights = self._get_weights(neigh_dist, self.weights)
478
+ if weights is None:
479
+ weights = np.ones_like(neigh_ind)
480
+
481
+ all_rows = np.arange(n_queries)
482
+ probabilities = []
483
+ for k, classes_k in enumerate(classes_):
484
+ pred_labels = _y[:, k][neigh_ind]
485
+ proba_k = np.zeros((n_queries, classes_k.size))
486
+
487
+ # a simple ':' index doesn't work right
488
+ for i, idx in enumerate(pred_labels.T): # loop is O(n_neighbors)
489
+ proba_k[all_rows, idx] += weights[:, i]
490
+
491
+ # normalize 'votes' into real [0,1] probabilities
492
+ normalizer = proba_k.sum(axis=1)[:, np.newaxis]
493
+ normalizer[normalizer == 0.0] = 1.0
494
+ proba_k /= normalizer
495
+
496
+ probabilities.append(proba_k)
497
+
498
+ if not self.outputs_2d_:
499
+ probabilities = probabilities[0]
500
+
501
+ return probabilities
502
+
503
+ @supports_queue
504
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True, queue=None):
505
+ return self._kneighbors(X, n_neighbors, return_distance)
506
+
507
+
508
+ class KNeighborsRegressor(NeighborsBase, RegressorMixin):
509
+ def __init__(
510
+ self,
511
+ n_neighbors=5,
512
+ *,
513
+ weights="uniform",
514
+ algorithm="auto",
515
+ p=2,
516
+ metric="minkowski",
517
+ metric_params=None,
518
+ **kwargs,
519
+ ):
520
+ super().__init__(
521
+ n_neighbors=n_neighbors,
522
+ algorithm=algorithm,
523
+ metric=metric,
524
+ p=p,
525
+ metric_params=metric_params,
526
+ **kwargs,
527
+ )
528
+ self.weights = weights
529
+
530
+ @bind_default_backend("neighbors.search", lookup_name="train")
531
+ def train_search(self, *args, **kwargs): ...
532
+
533
+ @bind_default_backend("neighbors.search", lookup_name="infer")
534
+ def infer_search(self, *args, **kwargs): ...
535
+
536
+ @bind_default_backend("neighbors.regression")
537
+ def train(self, *args, **kwargs): ...
538
+
539
+ @bind_default_backend("neighbors.regression")
540
+ def infer(self, *args, **kwargs): ...
541
+
542
+ def _onedal_fit(self, X, y):
543
+ # global queue is set as per user configuration (`target_offload`) or from data prior to calling this internal function
544
+ queue = QM.get_global_queue()
545
+ gpu_device = queue is not None and getattr(queue.sycl_device, "is_gpu", False)
546
+ X_table, y_table = to_table(X, y, queue=queue)
547
+ params = self._get_onedal_params(X_table, y)
548
+
549
+ if gpu_device:
550
+ return self.train(params, X_table, y_table).model
551
+ else:
552
+ return self.train_search(params, X_table).model
553
+
554
+ def _onedal_predict(self, model, X, params):
555
+ assert self._onedal_model is not None, "Model is not trained"
556
+
557
+ # global queue is set as per user configuration (`target_offload`) or from data prior to calling this internal function
558
+ queue = QM.get_global_queue()
559
+ gpu_device = queue is not None and getattr(queue.sycl_device, "is_gpu", False)
560
+ X = to_table(X, queue=queue)
561
+
562
+ if "responses" not in params["result_option"] and gpu_device:
563
+ params["result_option"] += "|responses"
564
+ params["fptype"] = X.dtype
565
+
566
+ if gpu_device:
567
+ return self.infer(params, self._onedal_model, X)
568
+ else:
569
+ return self.infer_search(params, self._onedal_model, X)
570
+
571
+ @supports_queue
572
+ def fit(self, X, y, queue=None):
573
+ return self._fit(X, y)
574
+
575
+ @supports_queue
576
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True, queue=None):
577
+ return self._kneighbors(X, n_neighbors, return_distance)
578
+
579
+ def _predict_gpu(self, X):
580
+ use_raw_input = _get_config().get("use_raw_input", False) is True
581
+ if not use_raw_input:
582
+ X = _check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
583
+ onedal_model = getattr(self, "_onedal_model", None)
584
+ n_features = getattr(self, "n_features_in_", None)
585
+ n_samples_fit_ = getattr(self, "n_samples_fit_", None)
586
+ shape = getattr(X, "shape", None)
587
+ if n_features and shape and len(shape) > 1 and shape[1] != n_features:
588
+ raise ValueError(
589
+ (
590
+ f"X has {X.shape[1]} features, "
591
+ f"but KNNClassifier is expecting "
592
+ f"{n_features} features as input"
593
+ )
594
+ )
595
+
596
+ _check_is_fitted(self)
597
+
598
+ self._fit_method = self._parse_auto_method(
599
+ self.algorithm, n_samples_fit_, n_features
600
+ )
601
+
602
+ params = self._get_onedal_params(X)
603
+
604
+ prediction_result = self._onedal_predict(onedal_model, X, params)
605
+ responses = from_table(prediction_result.responses)
606
+ result = responses.ravel()
607
+
608
+ return result
609
+
610
+ def _predict_skl(self, X):
611
+ neigh_dist, neigh_ind = self.kneighbors(X)
612
+
613
+ weights = self._get_weights(neigh_dist, self.weights)
614
+
615
+ _y = self._y
616
+ if _y.ndim == 1:
617
+ _y = _y.reshape((-1, 1))
618
+
619
+ if weights is None:
620
+ y_pred = np.mean(_y[neigh_ind], axis=1)
621
+ else:
622
+ y_pred = np.empty((X.shape[0], _y.shape[1]), dtype=np.float64)
623
+ denom = np.sum(weights, axis=1)
624
+
625
+ for j in range(_y.shape[1]):
626
+ num = np.sum(_y[neigh_ind, j] * weights, axis=1)
627
+ y_pred[:, j] = num / denom
628
+
629
+ if self._y.ndim == 1:
630
+ y_pred = y_pred.ravel()
631
+
632
+ return y_pred
633
+
634
+ @supports_queue
635
+ def predict(self, X, queue=None):
636
+ gpu_device = queue is not None and getattr(queue.sycl_device, "is_gpu", False)
637
+ is_uniform_weights = getattr(self, "weights", "uniform") == "uniform"
638
+ if gpu_device and is_uniform_weights:
639
+ return self._predict_gpu(X)
640
+ else:
641
+ return self._predict_skl(X)
642
+
643
+
644
+ class NearestNeighbors(NeighborsBase):
645
+ def __init__(
646
+ self,
647
+ n_neighbors=5,
648
+ *,
649
+ algorithm="auto",
650
+ p=2,
651
+ metric="minkowski",
652
+ metric_params=None,
653
+ **kwargs,
654
+ ):
655
+ super().__init__(
656
+ n_neighbors=n_neighbors,
657
+ algorithm=algorithm,
658
+ metric=metric,
659
+ p=p,
660
+ metric_params=metric_params,
661
+ **kwargs,
662
+ )
663
+ self.requires_y = False
664
+
665
+ @bind_default_backend("neighbors.search")
666
+ def train(self, *args, **kwargs): ...
667
+
668
+ @bind_default_backend("neighbors.search")
669
+ def infer(self, *arg, **kwargs): ...
670
+
671
+ def _onedal_fit(self, X, y):
672
+ # global queue is set as per user configuration (`target_offload`) or from data prior to calling this internal function
673
+ queue = QM.get_global_queue()
674
+ params = self._get_onedal_params(X, y)
675
+ X, y = to_table(X, y, queue=queue)
676
+ return self.train(params, X).model
677
+
678
+ def _onedal_predict(self, model, X, params):
679
+ X = to_table(X, queue=QM.get_global_queue())
680
+
681
+ params["fptype"] = X.dtype
682
+ return self.infer(params, model, X)
683
+
684
+ @supports_queue
685
+ def fit(self, X, y=None, queue=None):
686
+ return self._fit(X, y)
687
+
688
+ @supports_queue
689
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True, queue=None):
690
+ return self._kneighbors(X, n_neighbors, return_distance)