scikit-learn-intelex 2024.1.0__py39-none-win_amd64.whl → 2025.1.0__py39-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of scikit-learn-intelex might be problematic. Click here for more details.

Files changed (277) hide show
  1. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp39-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition}/__init__.py +3 -3
  16. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
  18. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
  19. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -29
  23. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
  27. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +4 -2
  34. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
  37. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  39. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
  44. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -42
  46. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
  47. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  56. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
  59. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
  61. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_device_offload.py +222 -0
  62. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  65. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  66. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  67. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  68. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  69. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  70. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
  71. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +564 -0
  72. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
  73. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  74. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  75. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  76. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  77. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  78. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  79. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
  80. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  81. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
  82. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
  83. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance}/__init__.py +3 -2
  84. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
  85. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
  86. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  87. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
  88. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  89. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +154 -0
  90. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
  91. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +414 -0
  92. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  97. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
  98. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  99. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  100. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
  101. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
  102. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
  103. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
  106. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  108. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  109. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
  110. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  112. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  113. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
  114. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  116. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  117. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  118. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  119. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  120. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  121. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  122. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  123. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  124. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  125. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  126. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  127. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  128. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
  129. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +10 -7
  130. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
  131. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  132. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +27 -4
  133. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  134. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
  135. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
  136. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
  137. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
  138. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
  139. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +19 -10
  140. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
  141. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
  142. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
  143. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  144. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  145. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
  146. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
  147. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
  148. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +25 -9
  149. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +241 -60
  150. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +250 -188
  151. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -21
  152. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -2
  153. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  154. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
  155. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
  156. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
  157. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
  158. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex}/linear_model/logistic_regression.py +194 -133
  159. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
  160. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
  161. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  162. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  163. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
  164. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +4 -0
  165. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
  166. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  167. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -0
  168. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -1
  169. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
  170. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +53 -6
  171. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +51 -155
  172. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +46 -149
  173. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +55 -100
  174. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +16 -18
  175. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
  176. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +138 -0
  177. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  178. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  179. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
  180. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  181. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model}/__init__.py +19 -19
  182. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
  183. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  184. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
  185. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  186. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  187. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  188. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  189. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  190. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  191. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  192. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  193. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  194. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  195. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  196. {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
  197. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +11 -12
  198. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  199. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  200. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  201. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  202. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +3 -1
  203. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
  204. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  205. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  206. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  207. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  208. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  209. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  210. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +172 -78
  211. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +74 -70
  212. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +170 -77
  213. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +66 -66
  214. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
  215. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
  216. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  217. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
  218. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
  219. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  220. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  221. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
  222. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
  223. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
  224. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
  225. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  226. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  227. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
  228. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
  229. scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
  230. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
  231. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
  232. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
  233. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
  234. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
  235. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
  236. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -388
  237. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
  238. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -82
  239. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -28
  240. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -436
  241. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
  242. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -376
  243. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -98
  244. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -376
  245. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_preview_logistic_regression.py +0 -59
  246. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
  247. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -225
  248. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -227
  249. scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
  250. scikit_learn_intelex-2024.1.0.dist-info/RECORD +0 -97
  251. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  252. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  253. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  254. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  255. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  256. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  257. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  258. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  259. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  260. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  261. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  262. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  263. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  264. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  265. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  266. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  267. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  268. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  269. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  270. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  271. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  272. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  273. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  274. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  275. {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  276. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
  277. {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
@@ -15,3 +15,8 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.model_selection import train_test_split
18
+ from onedal._device_offload import support_input_format
19
+
20
+ train_test_split = support_input_format(freefunc=True, queue_param=False)(
21
+ train_test_split
22
+ )
@@ -14,10 +14,10 @@
14
14
  # limitations under the License.
15
15
  # ===============================================================================
16
16
 
17
+ from ._lof import LocalOutlierFactor
17
18
  from .knn_classification import KNeighborsClassifier
18
19
  from .knn_regression import KNeighborsRegressor
19
20
  from .knn_unsupervised import NearestNeighbors
20
- from .lof import LocalOutlierFactor
21
21
 
22
22
  __all__ = [
23
23
  "KNeighborsClassifier",
@@ -0,0 +1,236 @@
1
+ # ===============================================================================
2
+ # Copyright 2024 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ import warnings
18
+
19
+ import numpy as np
20
+ from sklearn.neighbors import LocalOutlierFactor as _sklearn_LocalOutlierFactor
21
+ from sklearn.utils.metaestimators import available_if
22
+ from sklearn.utils.validation import check_is_fitted
23
+
24
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
25
+ from daal4py.sklearn._utils import sklearn_check_version
26
+ from sklearnex._device_offload import dispatch, wrap_output_data
27
+ from sklearnex.neighbors.common import KNeighborsDispatchingBase
28
+ from sklearnex.neighbors.knn_unsupervised import NearestNeighbors
29
+
30
+ from ..utils._array_api import get_namespace
31
+
32
+ if sklearn_check_version("1.6"):
33
+ from sklearn.utils.validation import validate_data
34
+ else:
35
+ validate_data = _sklearn_LocalOutlierFactor._validate_data
36
+
37
+
38
+ @control_n_jobs(decorated_methods=["fit", "kneighbors", "_kneighbors"])
39
+ class LocalOutlierFactor(KNeighborsDispatchingBase, _sklearn_LocalOutlierFactor):
40
+ __doc__ = (
41
+ _sklearn_LocalOutlierFactor.__doc__
42
+ + "\n NOTE: When X=None, methods kneighbors, kneighbors_graph, and predict will"
43
+ + "\n only output numpy arrays. In that case, the only way to offload to gpu"
44
+ + "\n is to use a global queue (e.g. using config_context)"
45
+ )
46
+ if sklearn_check_version("1.2"):
47
+ _parameter_constraints: dict = {
48
+ **_sklearn_LocalOutlierFactor._parameter_constraints
49
+ }
50
+
51
+ # Only certain methods should be taken from knn to prevent code
52
+ # duplication. Inheriting would yield a complicated inheritance
53
+ # structure and violate the sklearn inheritance path.
54
+ _save_attributes = NearestNeighbors._save_attributes
55
+ _onedal_knn_fit = NearestNeighbors._onedal_fit
56
+ _onedal_kneighbors = NearestNeighbors._onedal_kneighbors
57
+
58
+ def _onedal_fit(self, X, y, queue=None):
59
+ if sklearn_check_version("1.2"):
60
+ self._validate_params()
61
+
62
+ self._onedal_knn_fit(X, y, queue)
63
+
64
+ if self.contamination != "auto":
65
+ if not (0.0 < self.contamination <= 0.5):
66
+ raise ValueError(
67
+ "contamination must be in (0, 0.5], " "got: %f" % self.contamination
68
+ )
69
+
70
+ n_samples = self.n_samples_fit_
71
+
72
+ if self.n_neighbors > n_samples:
73
+ warnings.warn(
74
+ "n_neighbors (%s) is greater than the "
75
+ "total number of samples (%s). n_neighbors "
76
+ "will be set to (n_samples - 1) for estimation."
77
+ % (self.n_neighbors, n_samples)
78
+ )
79
+ self.n_neighbors_ = max(1, min(self.n_neighbors, n_samples - 1))
80
+
81
+ (
82
+ self._distances_fit_X_,
83
+ _neighbors_indices_fit_X_,
84
+ ) = self._onedal_kneighbors(n_neighbors=self.n_neighbors_, queue=queue)
85
+
86
+ # Sklearn includes a check for float32 at this point which may not be
87
+ # necessary for onedal
88
+
89
+ self._lrd = self._local_reachability_density(
90
+ self._distances_fit_X_, _neighbors_indices_fit_X_
91
+ )
92
+
93
+ # Compute lof score over training samples to define offset_:
94
+ lrd_ratios_array = self._lrd[_neighbors_indices_fit_X_] / self._lrd[:, np.newaxis]
95
+
96
+ self.negative_outlier_factor_ = -np.mean(lrd_ratios_array, axis=1)
97
+
98
+ if self.contamination == "auto":
99
+ # inliers score around -1 (the higher, the less abnormal).
100
+ self.offset_ = -1.5
101
+ else:
102
+ self.offset_ = np.percentile(
103
+ self.negative_outlier_factor_, 100.0 * self.contamination
104
+ )
105
+
106
+ # adoption of warning for data with duplicated samples from
107
+ # https://github.com/scikit-learn/scikit-learn/pull/28773
108
+ if sklearn_check_version("1.6"):
109
+ if np.min(self.negative_outlier_factor_) < -1e7 and not self.novelty:
110
+ warnings.warn(
111
+ "Duplicate values are leading to incorrect results. "
112
+ "Increase the number of neighbors for more accurate results."
113
+ )
114
+
115
+ return self
116
+
117
+ def fit(self, X, y=None):
118
+ result = dispatch(
119
+ self,
120
+ "fit",
121
+ {
122
+ "onedal": self.__class__._onedal_fit,
123
+ "sklearn": _sklearn_LocalOutlierFactor.fit,
124
+ },
125
+ X,
126
+ None,
127
+ )
128
+ return result
129
+
130
+ def _predict(self, X=None):
131
+ check_is_fitted(self)
132
+
133
+ if X is not None:
134
+ xp, _ = get_namespace(X)
135
+ output = self.decision_function(X) < 0
136
+ is_inlier = xp.ones_like(output, dtype=int)
137
+ is_inlier[output] = -1
138
+ else:
139
+ is_inlier = np.ones(self.n_samples_fit_, dtype=int)
140
+ is_inlier[self.negative_outlier_factor_ < self.offset_] = -1
141
+
142
+ return is_inlier
143
+
144
+ # This had to be done because predict loses the queue when no
145
+ # argument is given and it is a dpctl tensor or dpnp array.
146
+ # This would cause issues in fit_predict. Also, available_if
147
+ # is hard to unwrap, and this is the most straighforward way.
148
+ @available_if(_sklearn_LocalOutlierFactor._check_novelty_fit_predict)
149
+ @wrap_output_data
150
+ def fit_predict(self, X, y=None):
151
+ """Fit the model to the training set X and return the labels.
152
+
153
+ **Not available for novelty detection (when novelty is set to True).**
154
+ Label is 1 for an inlier and -1 for an outlier according to the LOF
155
+ score and the contamination parameter.
156
+
157
+ Parameters
158
+ ----------
159
+ X : {array-like, sparse matrix} of shape (n_samples, n_features), default=None
160
+ The query sample or samples to compute the Local Outlier Factor
161
+ w.r.t. the training samples.
162
+
163
+ y : Ignored
164
+ Not used, present for API consistency by convention.
165
+
166
+ Returns
167
+ -------
168
+ is_inlier : ndarray of shape (n_samples,)
169
+ Returns -1 for anomalies/outliers and 1 for inliers.
170
+ """
171
+ return self.fit(X)._predict()
172
+
173
+ def _kneighbors(self, X=None, n_neighbors=None, return_distance=True):
174
+ check_is_fitted(self)
175
+ if sklearn_check_version("1.0") and X is not None:
176
+ self._check_feature_names(X, reset=False)
177
+ return dispatch(
178
+ self,
179
+ "kneighbors",
180
+ {
181
+ "onedal": self.__class__._onedal_kneighbors,
182
+ "sklearn": _sklearn_LocalOutlierFactor.kneighbors,
183
+ },
184
+ X,
185
+ n_neighbors=n_neighbors,
186
+ return_distance=return_distance,
187
+ )
188
+
189
+ kneighbors = wrap_output_data(_kneighbors)
190
+
191
+ @available_if(_sklearn_LocalOutlierFactor._check_novelty_score_samples)
192
+ @wrap_output_data
193
+ def score_samples(self, X):
194
+ """Opposite of the Local Outlier Factor of X.
195
+
196
+ It is the opposite as bigger is better, i.e. large values correspond
197
+ to inliers.
198
+
199
+ **Only available for novelty detection (when novelty is set to True).**
200
+ The argument X is supposed to contain *new data*: if X contains a
201
+ point from training, it considers the later in its own neighborhood.
202
+ Also, the samples in X are not considered in the neighborhood of any
203
+ point. Because of this, the scores obtained via ``score_samples`` may
204
+ differ from the standard LOF scores.
205
+ The standard LOF scores for the training data is available via the
206
+ ``negative_outlier_factor_`` attribute.
207
+
208
+ Parameters
209
+ ----------
210
+ X : {array-like, sparse matrix} of shape (n_samples, n_features)
211
+ The query sample or samples to compute the Local Outlier Factor
212
+ w.r.t. the training samples.
213
+
214
+ Returns
215
+ -------
216
+ opposite_lof_scores : ndarray of shape (n_samples,)
217
+ The opposite of the Local Outlier Factor of each input samples.
218
+ The lower, the more abnormal.
219
+ """
220
+ check_is_fitted(self)
221
+
222
+ distances_X, neighbors_indices_X = self._kneighbors(
223
+ X, n_neighbors=self.n_neighbors_
224
+ )
225
+
226
+ X_lrd = self._local_reachability_density(
227
+ distances_X,
228
+ neighbors_indices_X,
229
+ )
230
+
231
+ lrd_ratios_array = self._lrd[neighbors_indices_X] / X_lrd[:, np.newaxis]
232
+
233
+ return -np.mean(lrd_ratios_array, axis=1)
234
+
235
+ fit.__doc__ = _sklearn_LocalOutlierFactor.fit.__doc__
236
+ kneighbors.__doc__ = _sklearn_LocalOutlierFactor.kneighbors.__doc__
@@ -19,14 +19,16 @@ import warnings
19
19
  import numpy as np
20
20
  from scipy import sparse as sp
21
21
  from sklearn.neighbors._ball_tree import BallTree
22
- from sklearn.neighbors._base import VALID_METRICS
23
- from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
22
+ from sklearn.neighbors._base import VALID_METRICS, KNeighborsMixin
23
+ from sklearn.neighbors._base import NeighborsBase as _sklearn_NeighborsBase
24
24
  from sklearn.neighbors._kd_tree import KDTree
25
+ from sklearn.utils.validation import check_is_fitted
25
26
 
26
27
  from daal4py.sklearn._utils import sklearn_check_version
27
28
  from onedal.utils import _check_array, _num_features, _num_samples
28
29
 
29
30
  from .._utils import PatchingConditionsChain
31
+ from ..utils._array_api import get_namespace
30
32
 
31
33
 
32
34
  class KNeighborsDispatchingBase:
@@ -62,7 +64,7 @@ class KNeighborsDispatchingBase:
62
64
  elif p == np.inf:
63
65
  self.effective_metric_ = "chebyshev"
64
66
 
65
- if not isinstance(X, (KDTree, BallTree, sklearn_NeighborsBase)):
67
+ if not isinstance(X, (KDTree, BallTree, _sklearn_NeighborsBase)):
66
68
  self._fit_X = _check_array(
67
69
  X, dtype=[np.float64, np.float32], accept_sparse=True
68
70
  )
@@ -95,7 +97,7 @@ class KNeighborsDispatchingBase:
95
97
  delattr(self, "_onedal_estimator")
96
98
  # To cover test case when we pass patched
97
99
  # estimator as an input for other estimator
98
- if isinstance(X, sklearn_NeighborsBase):
100
+ if isinstance(X, _sklearn_NeighborsBase):
99
101
  self._fit_X = X._fit_X
100
102
  self._tree = X._tree
101
103
  self._fit_method = X._fit_method
@@ -137,6 +139,9 @@ class KNeighborsDispatchingBase:
137
139
  self.n_features_in_ = X.data.shape[1]
138
140
 
139
141
  def _onedal_supported(self, device, method_name, *data):
142
+ if method_name == "fit":
143
+ self._fit_validation(data[0], data[1])
144
+
140
145
  class_name = self.__class__.__name__
141
146
  is_classifier = "Classifier" in class_name
142
147
  is_regressor = "Regressor" in class_name
@@ -144,9 +149,13 @@ class KNeighborsDispatchingBase:
144
149
  patching_status = PatchingConditionsChain(
145
150
  f"sklearn.neighbors.{class_name}.{method_name}"
146
151
  )
152
+ if not patching_status.and_condition(
153
+ "radius" not in method_name, "RadiusNeighbors not implemented in sklearnex"
154
+ ):
155
+ return patching_status
147
156
 
148
157
  if not patching_status.and_condition(
149
- not isinstance(data[0], (KDTree, BallTree, sklearn_NeighborsBase)),
158
+ not isinstance(data[0], (KDTree, BallTree, _sklearn_NeighborsBase)),
150
159
  f"Input type {type(data[0])} is not supported.",
151
160
  ):
152
161
  return patching_status
@@ -249,7 +258,7 @@ class KNeighborsDispatchingBase:
249
258
  class_count >= 2, "One-class case is not supported."
250
259
  )
251
260
  return patching_status
252
- if method_name in ["predict", "predict_proba", "kneighbors"]:
261
+ if method_name in ["predict", "predict_proba", "kneighbors", "score"]:
253
262
  patching_status.and_condition(
254
263
  hasattr(self, "_onedal_estimator"), "oneDAL model was not trained."
255
264
  )
@@ -261,3 +270,41 @@ class KNeighborsDispatchingBase:
261
270
 
262
271
  def _onedal_cpu_supported(self, method_name, *data):
263
272
  return self._onedal_supported("cpu", method_name, *data)
273
+
274
+ def kneighbors_graph(self, X=None, n_neighbors=None, mode="connectivity"):
275
+ check_is_fitted(self)
276
+ if n_neighbors is None:
277
+ n_neighbors = self.n_neighbors
278
+
279
+ # check the input only in self.kneighbors
280
+
281
+ # construct CSR matrix representation of the k-NN graph
282
+ if mode == "connectivity":
283
+ A_ind = self.kneighbors(X, n_neighbors, return_distance=False)
284
+ xp, _ = get_namespace(A_ind)
285
+ n_queries = A_ind.shape[0]
286
+ A_data = xp.ones(n_queries * n_neighbors)
287
+
288
+ elif mode == "distance":
289
+ A_data, A_ind = self.kneighbors(X, n_neighbors, return_distance=True)
290
+ xp, _ = get_namespace(A_ind)
291
+ A_data = xp.reshape(A_data, (-1,))
292
+
293
+ else:
294
+ raise ValueError(
295
+ 'Unsupported mode, must be one of "connectivity", '
296
+ f'or "distance" but got "{mode}" instead'
297
+ )
298
+
299
+ n_queries = A_ind.shape[0]
300
+ n_samples_fit = self.n_samples_fit_
301
+ n_nonzero = n_queries * n_neighbors
302
+ A_indptr = xp.arange(0, n_nonzero + 1, n_neighbors)
303
+
304
+ kneighbors_graph = sp.csr_matrix(
305
+ (A_data, xp.reshape(A_ind, (-1,)), A_indptr), shape=(n_queries, n_samples_fit)
306
+ )
307
+
308
+ return kneighbors_graph
309
+
310
+ kneighbors_graph.__doc__ = KNeighborsMixin.kneighbors_graph.__doc__
@@ -14,136 +14,35 @@
14
14
  # limitations under the License.
15
15
  # ===============================================================================
16
16
 
17
- import warnings
18
-
19
- from sklearn.neighbors._ball_tree import BallTree
20
- from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
21
- from sklearn.neighbors._kd_tree import KDTree
22
-
23
- from daal4py.sklearn._utils import control_n_jobs, run_with_n_jobs, sklearn_check_version
24
-
25
- if not sklearn_check_version("1.2"):
26
- from sklearn.neighbors._base import _check_weights
27
-
28
- import numpy as np
29
- from sklearn.neighbors._base import VALID_METRICS
17
+ from sklearn.metrics import accuracy_score
30
18
  from sklearn.neighbors._classification import (
31
- KNeighborsClassifier as sklearn_KNeighborsClassifier,
19
+ KNeighborsClassifier as _sklearn_KNeighborsClassifier,
32
20
  )
33
- from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
21
+ from sklearn.neighbors._unsupervised import NearestNeighbors as _sklearn_NearestNeighbors
34
22
  from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
35
23
 
24
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
25
+ from daal4py.sklearn._utils import sklearn_check_version
36
26
  from onedal.neighbors import KNeighborsClassifier as onedal_KNeighborsClassifier
37
- from onedal.utils import _check_array, _num_features, _num_samples
38
27
 
39
28
  from .._device_offload import dispatch, wrap_output_data
40
29
  from .common import KNeighborsDispatchingBase
41
30
 
42
- if sklearn_check_version("0.24"):
43
-
44
- class KNeighborsClassifier_(sklearn_KNeighborsClassifier):
45
- if sklearn_check_version("1.2"):
46
- _parameter_constraints: dict = {
47
- **sklearn_KNeighborsClassifier._parameter_constraints
48
- }
49
-
50
- @_deprecate_positional_args
51
- def __init__(
52
- self,
53
- n_neighbors=5,
54
- *,
55
- weights="uniform",
56
- algorithm="auto",
57
- leaf_size=30,
58
- p=2,
59
- metric="minkowski",
60
- metric_params=None,
61
- n_jobs=None,
62
- **kwargs,
63
- ):
64
- super().__init__(
65
- n_neighbors=n_neighbors,
66
- algorithm=algorithm,
67
- leaf_size=leaf_size,
68
- metric=metric,
69
- p=p,
70
- metric_params=metric_params,
71
- n_jobs=n_jobs,
72
- **kwargs,
73
- )
74
- self.weights = (
75
- weights if sklearn_check_version("1.0") else _check_weights(weights)
76
- )
77
-
78
- elif sklearn_check_version("0.22"):
79
- from sklearn.neighbors._base import (
80
- SupervisedIntegerMixin as BaseSupervisedIntegerMixin,
81
- )
82
-
83
- class KNeighborsClassifier_(sklearn_KNeighborsClassifier, BaseSupervisedIntegerMixin):
84
- @_deprecate_positional_args
85
- def __init__(
86
- self,
87
- n_neighbors=5,
88
- *,
89
- weights="uniform",
90
- algorithm="auto",
91
- leaf_size=30,
92
- p=2,
93
- metric="minkowski",
94
- metric_params=None,
95
- n_jobs=None,
96
- **kwargs,
97
- ):
98
- super().__init__(
99
- n_neighbors=n_neighbors,
100
- algorithm=algorithm,
101
- leaf_size=leaf_size,
102
- metric=metric,
103
- p=p,
104
- metric_params=metric_params,
105
- n_jobs=n_jobs,
106
- **kwargs,
107
- )
108
- self.weights = _check_weights(weights)
109
-
31
+ if sklearn_check_version("1.6"):
32
+ from sklearn.utils.validation import validate_data
110
33
  else:
111
- from sklearn.neighbors.base import (
112
- SupervisedIntegerMixin as BaseSupervisedIntegerMixin,
113
- )
114
-
115
- class KNeighborsClassifier_(sklearn_KNeighborsClassifier, BaseSupervisedIntegerMixin):
116
- @_deprecate_positional_args
117
- def __init__(
118
- self,
119
- n_neighbors=5,
120
- *,
121
- weights="uniform",
122
- algorithm="auto",
123
- leaf_size=30,
124
- p=2,
125
- metric="minkowski",
126
- metric_params=None,
127
- n_jobs=None,
128
- **kwargs,
129
- ):
130
- super().__init__(
131
- n_neighbors=n_neighbors,
132
- algorithm=algorithm,
133
- leaf_size=leaf_size,
134
- metric=metric,
135
- p=p,
136
- metric_params=metric_params,
137
- n_jobs=n_jobs,
138
- **kwargs,
139
- )
140
- self.weights = _check_weights(weights)
34
+ validate_data = _sklearn_KNeighborsClassifier._validate_data
141
35
 
142
36
 
143
- @control_n_jobs
144
- class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
37
+ @control_n_jobs(
38
+ decorated_methods=["fit", "predict", "predict_proba", "kneighbors", "score"]
39
+ )
40
+ class KNeighborsClassifier(KNeighborsDispatchingBase, _sklearn_KNeighborsClassifier):
41
+ __doc__ = _sklearn_KNeighborsClassifier.__doc__
145
42
  if sklearn_check_version("1.2"):
146
- _parameter_constraints: dict = {**KNeighborsClassifier_._parameter_constraints}
43
+ _parameter_constraints: dict = {
44
+ **_sklearn_KNeighborsClassifier._parameter_constraints
45
+ }
147
46
 
148
47
  if sklearn_check_version("1.0"):
149
48
 
@@ -199,13 +98,12 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
199
98
  )
200
99
 
201
100
  def fit(self, X, y):
202
- self._fit_validation(X, y)
203
101
  dispatch(
204
102
  self,
205
103
  "fit",
206
104
  {
207
105
  "onedal": self.__class__._onedal_fit,
208
- "sklearn": sklearn_KNeighborsClassifier.fit,
106
+ "sklearn": _sklearn_KNeighborsClassifier.fit,
209
107
  },
210
108
  X,
211
109
  y,
@@ -222,7 +120,7 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
222
120
  "predict",
223
121
  {
224
122
  "onedal": self.__class__._onedal_predict,
225
- "sklearn": sklearn_KNeighborsClassifier.predict,
123
+ "sklearn": _sklearn_KNeighborsClassifier.predict,
226
124
  },
227
125
  X,
228
126
  )
@@ -237,55 +135,45 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
237
135
  "predict_proba",
238
136
  {
239
137
  "onedal": self.__class__._onedal_predict_proba,
240
- "sklearn": sklearn_KNeighborsClassifier.predict_proba,
138
+ "sklearn": _sklearn_KNeighborsClassifier.predict_proba,
241
139
  },
242
140
  X,
243
141
  )
244
142
 
245
143
  @wrap_output_data
246
- def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
144
+ def score(self, X, y, sample_weight=None):
247
145
  check_is_fitted(self)
248
146
  if sklearn_check_version("1.0"):
249
147
  self._check_feature_names(X, reset=False)
250
148
  return dispatch(
251
149
  self,
252
- "kneighbors",
150
+ "score",
253
151
  {
254
- "onedal": self.__class__._onedal_kneighbors,
255
- "sklearn": sklearn_KNeighborsClassifier.kneighbors,
152
+ "onedal": self.__class__._onedal_score,
153
+ "sklearn": _sklearn_KNeighborsClassifier.score,
256
154
  },
257
155
  X,
258
- n_neighbors,
259
- return_distance,
156
+ y,
157
+ sample_weight=sample_weight,
260
158
  )
261
159
 
262
160
  @wrap_output_data
263
- def radius_neighbors(
264
- self, X=None, radius=None, return_distance=True, sort_results=False
265
- ):
266
- _onedal_estimator = getattr(self, "_onedal_estimator", None)
267
-
268
- if (
269
- _onedal_estimator is not None
270
- or getattr(self, "_tree", 0) is None
271
- and self._fit_method == "kd_tree"
272
- ):
273
- if sklearn_check_version("0.24"):
274
- sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
275
- else:
276
- sklearn_NearestNeighbors.fit(self, self._fit_X)
277
- if sklearn_check_version("0.22"):
278
- result = sklearn_NearestNeighbors.radius_neighbors(
279
- self, X, radius, return_distance, sort_results
280
- )
281
- else:
282
- result = sklearn_NearestNeighbors.radius_neighbors(
283
- self, X, radius, return_distance
284
- )
285
-
286
- return result
161
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
162
+ check_is_fitted(self)
163
+ if sklearn_check_version("1.0") and X is not None:
164
+ self._check_feature_names(X, reset=False)
165
+ return dispatch(
166
+ self,
167
+ "kneighbors",
168
+ {
169
+ "onedal": self.__class__._onedal_kneighbors,
170
+ "sklearn": _sklearn_KNeighborsClassifier.kneighbors,
171
+ },
172
+ X,
173
+ n_neighbors=n_neighbors,
174
+ return_distance=return_distance,
175
+ )
287
176
 
288
- @run_with_n_jobs
289
177
  def _onedal_fit(self, X, y, queue=None):
290
178
  onedal_params = {
291
179
  "n_neighbors": self.n_neighbors,
@@ -308,15 +196,12 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
308
196
 
309
197
  self._save_attributes()
310
198
 
311
- @run_with_n_jobs
312
199
  def _onedal_predict(self, X, queue=None):
313
200
  return self._onedal_estimator.predict(X, queue=queue)
314
201
 
315
- @run_with_n_jobs
316
202
  def _onedal_predict_proba(self, X, queue=None):
317
203
  return self._onedal_estimator.predict_proba(X, queue=queue)
318
204
 
319
- @run_with_n_jobs
320
205
  def _onedal_kneighbors(
321
206
  self, X=None, n_neighbors=None, return_distance=True, queue=None
322
207
  ):
@@ -324,6 +209,11 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
324
209
  X, n_neighbors, return_distance, queue=queue
325
210
  )
326
211
 
212
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
213
+ return accuracy_score(
214
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
215
+ )
216
+
327
217
  def _save_attributes(self):
328
218
  self.classes_ = self._onedal_estimator.classes_
329
219
  self.n_features_in_ = self._onedal_estimator.n_features_in_
@@ -333,3 +223,9 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
333
223
  self._fit_method = self._onedal_estimator._fit_method
334
224
  self.outputs_2d_ = self._onedal_estimator.outputs_2d_
335
225
  self._tree = self._onedal_estimator._tree
226
+
227
+ fit.__doc__ = _sklearn_KNeighborsClassifier.fit.__doc__
228
+ predict.__doc__ = _sklearn_KNeighborsClassifier.predict.__doc__
229
+ predict_proba.__doc__ = _sklearn_KNeighborsClassifier.predict_proba.__doc__
230
+ score.__doc__ = _sklearn_KNeighborsClassifier.score.__doc__
231
+ kneighbors.__doc__ = _sklearn_KNeighborsClassifier.kneighbors.__doc__