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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
  5. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
  6. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
  7. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
  8. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
  9. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  10. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
  11. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  12. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  13. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  14. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
  15. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  16. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
  17. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
  18. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  19. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
  20. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  21. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
  22. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  23. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
  24. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
  25. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
  26. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
  27. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  28. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  29. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  30. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
  31. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  32. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
  33. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
  34. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  35. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
  36. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
  37. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  38. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
  39. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  40. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  41. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  42. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  43. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  44. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  45. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
  46. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  47. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
  48. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
  49. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  50. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
  51. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
  52. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
  53. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  54. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  55. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  56. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
  57. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  58. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
  59. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  60. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
  61. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
  62. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
  63. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
  64. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
  65. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
  66. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  67. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
  68. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
  69. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
  70. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  71. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  72. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  73. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
  74. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
  75. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
  76. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  77. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  78. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  79. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
  80. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  81. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  82. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
  83. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
  84. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  85. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
  86. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
  87. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  88. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
  89. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
  90. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
  91. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
  92. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
  93. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
  94. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
  95. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
  96. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
  97. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
  98. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
  99. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
  100. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
  101. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  102. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
  103. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  104. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  105. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
  106. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
  107. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
  108. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  109. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  110. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
  111. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  112. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  113. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  114. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
  115. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  116. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  117. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
  118. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
  119. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  120. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  121. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
  122. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
  123. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  124. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  125. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
  126. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  127. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
  128. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
  129. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
  130. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
  131. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
  132. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
  133. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  134. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
  135. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__init__.py +69 -0
  136. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
  137. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
  138. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
  139. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
  140. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
  141. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  142. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
  143. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +338 -0
  144. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  145. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
  146. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
  147. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +199 -0
  148. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
  149. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
  150. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
  151. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  152. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  153. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
  154. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
  155. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/__init__.py +19 -0
  156. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
  157. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
  158. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +572 -0
  159. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +629 -0
  160. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -0
  161. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
  162. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
  163. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
  164. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1799 -0
  165. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
  166. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
  167. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
  168. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  169. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
  170. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
  171. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
  172. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
  173. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
  174. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
  175. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  176. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  177. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
  178. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
  179. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  180. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
  181. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +28 -0
  182. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
  183. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
  184. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +20 -0
  185. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
  186. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
  187. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
  188. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +20 -0
  189. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
  190. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
  191. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +189 -0
  192. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +313 -0
  193. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +189 -0
  194. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +167 -0
  195. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +170 -0
  196. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
  197. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
  198. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
  199. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
  200. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
  201. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  202. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
  203. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
  204. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +25 -0
  205. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  206. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
  207. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  208. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
  209. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
  210. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
  211. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
  212. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
  213. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
  214. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
  215. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  216. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
  217. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
  218. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
  219. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
  220. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  221. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
  222. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +23 -0
  223. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
  224. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
  225. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +19 -0
  226. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  227. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
  228. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
  229. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
  230. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +24 -0
  231. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  232. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
  233. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
  234. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
  235. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
  236. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
  237. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/__init__.py +29 -0
  238. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
  239. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +278 -0
  240. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +158 -0
  241. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +306 -0
  242. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +155 -0
  243. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +124 -0
  244. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
  245. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
  246. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  247. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
  248. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
  249. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
  250. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
  251. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +418 -0
  252. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
  253. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
  254. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
  255. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  256. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
  257. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
  258. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
  259. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  260. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
  261. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  262. scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
  263. scikit_learn_intelex-2025.10.0.dist-info/LICENSE.txt +202 -0
  264. scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
  265. scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
  266. scikit_learn_intelex-2025.10.0.dist-info/WHEEL +5 -0
  267. scikit_learn_intelex-2025.10.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,493 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ # daal4py KNN scikit-learn-compatible base classes
18
+
19
+ import logging
20
+ import numbers
21
+ import warnings
22
+
23
+ import numpy as np
24
+ from scipy import sparse as sp
25
+ from sklearn.base import is_classifier, is_regressor
26
+ from sklearn.neighbors import VALID_METRICS
27
+ from sklearn.neighbors._ball_tree import BallTree
28
+ from sklearn.neighbors._base import KNeighborsMixin as BaseKNeighborsMixin
29
+ from sklearn.neighbors._base import NeighborsBase as BaseNeighborsBase
30
+ from sklearn.neighbors._base import RadiusNeighborsMixin as BaseRadiusNeighborsMixin
31
+ from sklearn.neighbors._kd_tree import KDTree
32
+ from sklearn.utils.multiclass import check_classification_targets
33
+ from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
34
+
35
+ import daal4py as d4p
36
+
37
+ from .._utils import (
38
+ PatchingConditionsChain,
39
+ get_patch_message,
40
+ getFPType,
41
+ sklearn_check_version,
42
+ )
43
+ from ..utils.validation import check_feature_names, check_n_features, get_requires_y_tag
44
+
45
+ if not sklearn_check_version("1.2"):
46
+ from sklearn.neighbors._base import _check_weights
47
+
48
+
49
+ def training_algorithm(method, fptype, params):
50
+ if method == "brute":
51
+ train_alg = d4p.bf_knn_classification_training
52
+
53
+ else:
54
+ train_alg = d4p.kdtree_knn_classification_training
55
+
56
+ params["fptype"] = fptype
57
+ return train_alg(**params)
58
+
59
+
60
+ def prediction_algorithm(method, fptype, params):
61
+ if method == "brute":
62
+ predict_alg = d4p.bf_knn_classification_prediction
63
+ else:
64
+ predict_alg = d4p.kdtree_knn_classification_prediction
65
+
66
+ params["fptype"] = fptype
67
+ return predict_alg(**params)
68
+
69
+
70
+ def parse_auto_method(estimator, method, n_samples, n_features):
71
+ result_method = method
72
+
73
+ if method in ["auto", "ball_tree"]:
74
+ condition = (
75
+ estimator.n_neighbors is not None
76
+ and estimator.n_neighbors >= estimator.n_samples_fit_ // 2
77
+ )
78
+ if estimator.metric == "precomputed" or n_features > 11 or condition:
79
+ result_method = "brute"
80
+ else:
81
+ if estimator.effective_metric_ in VALID_METRICS["kd_tree"]:
82
+ result_method = "kd_tree"
83
+ else:
84
+ result_method = "brute"
85
+
86
+ return result_method
87
+
88
+
89
+ def daal4py_fit(estimator, X, fptype):
90
+ estimator._fit_X = X
91
+ estimator._fit_method = estimator.algorithm
92
+ estimator.effective_metric_ = "euclidean"
93
+ estimator._tree = None
94
+ weights = getattr(estimator, "weights", "uniform")
95
+
96
+ params = {
97
+ "method": "defaultDense",
98
+ "k": estimator.n_neighbors,
99
+ "voteWeights": "voteUniform" if weights == "uniform" else "voteDistance",
100
+ "resultsToCompute": "computeIndicesOfNeighbors|computeDistances",
101
+ "resultsToEvaluate": (
102
+ "none" if getattr(estimator, "_y", None) is None else "computeClassLabels"
103
+ ),
104
+ }
105
+ if hasattr(estimator, "classes_"):
106
+ params["nClasses"] = len(estimator.classes_)
107
+
108
+ if getattr(estimator, "_y", None) is None:
109
+ labels = None
110
+ else:
111
+ labels = estimator._y.reshape(-1, 1)
112
+
113
+ method = parse_auto_method(
114
+ estimator, estimator.algorithm, estimator.n_samples_fit_, estimator.n_features_in_
115
+ )
116
+ estimator._fit_method = method
117
+ train_alg = training_algorithm(method, fptype, params)
118
+ estimator._daal_model = train_alg.compute(X, labels).model
119
+
120
+
121
+ def daal4py_kneighbors(estimator, X=None, n_neighbors=None, return_distance=True):
122
+ n_features = getattr(estimator, "n_features_in_", None)
123
+ shape = getattr(X, "shape", None)
124
+ if n_features and shape and len(shape) > 1 and shape[1] != n_features:
125
+ raise ValueError(
126
+ (
127
+ f"X has {X.shape[1]} features, "
128
+ f"but kneighbors is expecting {n_features} features as input"
129
+ )
130
+ )
131
+
132
+ check_is_fitted(estimator)
133
+
134
+ if n_neighbors is None:
135
+ n_neighbors = estimator.n_neighbors
136
+ elif n_neighbors <= 0:
137
+ raise ValueError("Expected n_neighbors > 0. Got %d" % n_neighbors)
138
+ else:
139
+ if not isinstance(n_neighbors, numbers.Integral):
140
+ raise TypeError(
141
+ "n_neighbors does not take %s value, "
142
+ "enter integer value" % type(n_neighbors)
143
+ )
144
+
145
+ if X is not None:
146
+ query_is_train = False
147
+ X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
148
+ else:
149
+ query_is_train = True
150
+ X = estimator._fit_X
151
+ # Include an extra neighbor to account for the sample itself being
152
+ # returned, which is removed later
153
+ n_neighbors += 1
154
+
155
+ n_samples_fit = estimator.n_samples_fit_
156
+ if n_neighbors > n_samples_fit:
157
+ raise ValueError(
158
+ "Expected n_neighbors <= n_samples, "
159
+ " but n_samples = %d, n_neighbors = %d" % (n_samples_fit, n_neighbors)
160
+ )
161
+
162
+ chunked_results = None
163
+
164
+ try:
165
+ fptype = getFPType(X)
166
+ except ValueError:
167
+ fptype = None
168
+
169
+ weights = getattr(estimator, "weights", "uniform")
170
+
171
+ params = {
172
+ "method": "defaultDense",
173
+ "k": n_neighbors,
174
+ "voteWeights": "voteUniform" if weights == "uniform" else "voteDistance",
175
+ "resultsToCompute": "computeIndicesOfNeighbors|computeDistances",
176
+ "resultsToEvaluate": (
177
+ "none" if getattr(estimator, "_y", None) is None else "computeClassLabels"
178
+ ),
179
+ }
180
+ if hasattr(estimator, "classes_"):
181
+ params["nClasses"] = len(estimator.classes_)
182
+
183
+ method = parse_auto_method(
184
+ estimator, estimator._fit_method, estimator.n_samples_fit_, n_features
185
+ )
186
+
187
+ predict_alg = prediction_algorithm(method, fptype, params)
188
+ prediction_result = predict_alg.compute(X, estimator._daal_model)
189
+
190
+ distances = prediction_result.distances
191
+ indices = prediction_result.indices
192
+
193
+ if method == "kd_tree":
194
+ for i in range(distances.shape[0]):
195
+ seq = distances[i].argsort()
196
+ indices[i] = indices[i][seq]
197
+ distances[i] = distances[i][seq]
198
+
199
+ if return_distance:
200
+ results = distances, indices.astype(int)
201
+ else:
202
+ results = indices.astype(int)
203
+
204
+ if chunked_results is not None:
205
+ if return_distance:
206
+ neigh_dist, neigh_ind = zip(*chunked_results)
207
+ results = np.vstack(neigh_dist), np.vstack(neigh_ind)
208
+ else:
209
+ results = np.vstack(chunked_results)
210
+
211
+ if not query_is_train:
212
+ return results
213
+ # If the query data is the same as the indexed data, we would like
214
+ # to ignore the first nearest neighbor of every sample, i.e
215
+ # the sample itself.
216
+ if return_distance:
217
+ neigh_dist, neigh_ind = results
218
+ else:
219
+ neigh_ind = results
220
+
221
+ n_queries, _ = X.shape
222
+ sample_range = np.arange(n_queries)[:, None]
223
+ sample_mask = neigh_ind != sample_range
224
+
225
+ # Corner case: When the number of duplicates are more
226
+ # than the number of neighbors, the first NN will not
227
+ # be the sample, but a duplicate.
228
+ # In that case mask the first duplicate.
229
+ dup_gr_nbrs = np.all(sample_mask, axis=1)
230
+ sample_mask[:, 0][dup_gr_nbrs] = False
231
+ neigh_ind = np.reshape(neigh_ind[sample_mask], (n_queries, n_neighbors - 1))
232
+
233
+ if return_distance:
234
+ neigh_dist = np.reshape(neigh_dist[sample_mask], (n_queries, n_neighbors - 1))
235
+ return neigh_dist, neigh_ind
236
+ return neigh_ind
237
+
238
+
239
+ def validate_data(
240
+ estimator, X, y=None, reset=True, validate_separately=False, **check_params
241
+ ):
242
+ if y is None:
243
+ requires_y = get_requires_y_tag(estimator)
244
+
245
+ if requires_y:
246
+ raise ValueError(
247
+ f"This {estimator.__class__.__name__} estimator "
248
+ f"requires y to be passed, but the target y is None."
249
+ )
250
+ X = check_array(X, **check_params)
251
+ out = X, y
252
+ else:
253
+ if validate_separately:
254
+ # We need this because some estimators validate X and y
255
+ # separately, and in general, separately calling check_array()
256
+ # on X and y isn't equivalent to just calling check_X_y()
257
+ # :(
258
+ check_X_params, check_y_params = validate_separately
259
+ X = check_array(X, **check_X_params)
260
+ y = check_array(y, **check_y_params)
261
+ else:
262
+ X, y = check_X_y(X, y, **check_params)
263
+ out = X, y
264
+
265
+ if check_params.get("ensure_2d", True):
266
+ check_n_features(estimator, X, reset=reset)
267
+
268
+ return out
269
+
270
+
271
+ class NeighborsBase(BaseNeighborsBase):
272
+ def __init__(
273
+ self,
274
+ n_neighbors=None,
275
+ radius=None,
276
+ algorithm="auto",
277
+ leaf_size=30,
278
+ metric="minkowski",
279
+ p=2,
280
+ metric_params=None,
281
+ n_jobs=None,
282
+ ):
283
+ super().__init__(
284
+ n_neighbors=n_neighbors,
285
+ radius=radius,
286
+ algorithm=algorithm,
287
+ leaf_size=leaf_size,
288
+ metric=metric,
289
+ p=p,
290
+ metric_params=metric_params,
291
+ n_jobs=n_jobs,
292
+ )
293
+
294
+ def _fit(self, X, y=None):
295
+ if self.metric_params is not None and "p" in self.metric_params:
296
+ if self.p is not None:
297
+ warnings.warn(
298
+ "Parameter p is found in metric_params. "
299
+ "The corresponding parameter from __init__ "
300
+ "is ignored.",
301
+ SyntaxWarning,
302
+ stacklevel=2,
303
+ )
304
+
305
+ if hasattr(self, "weights") and not sklearn_check_version("1.2"):
306
+ self.weights = _check_weights(self.weights)
307
+
308
+ check_feature_names(self, X, reset=True)
309
+
310
+ X_incorrect_type = isinstance(
311
+ X, (KDTree, BallTree, NeighborsBase, BaseNeighborsBase)
312
+ )
313
+ single_output = True
314
+ self._daal_model = None
315
+ shape = None
316
+ correct_n_classes = True
317
+
318
+ requires_y = get_requires_y_tag(self)
319
+
320
+ if y is not None or requires_y:
321
+ if not X_incorrect_type or y is None:
322
+ X, y = validate_data(
323
+ self,
324
+ X,
325
+ y,
326
+ accept_sparse="csr",
327
+ multi_output=True,
328
+ dtype=[np.float64, np.float32],
329
+ )
330
+ single_output = False if y.ndim > 1 and y.shape[1] > 1 else True
331
+
332
+ shape = y.shape
333
+
334
+ if is_classifier(self) or is_regressor(self):
335
+ if y.ndim == 1 or y.ndim == 2 and y.shape[1] == 1:
336
+ self.outputs_2d_ = False
337
+ y = y.reshape((-1, 1))
338
+ else:
339
+ self.outputs_2d_ = True
340
+
341
+ if is_classifier(self):
342
+ check_classification_targets(y)
343
+ self.classes_ = []
344
+ self._y = np.empty(y.shape, dtype=int)
345
+ for k in range(self._y.shape[1]):
346
+ classes, self._y[:, k] = np.unique(y[:, k], return_inverse=True)
347
+ self.classes_.append(classes)
348
+
349
+ if not self.outputs_2d_:
350
+ self.classes_ = self.classes_[0]
351
+ self._y = self._y.ravel()
352
+
353
+ n_classes = len(self.classes_)
354
+ if n_classes < 2:
355
+ correct_n_classes = False
356
+ else:
357
+ self._y = y
358
+ else:
359
+ if not X_incorrect_type:
360
+ X, _ = validate_data(
361
+ self, X, accept_sparse="csr", dtype=[np.float64, np.float32]
362
+ )
363
+
364
+ if not X_incorrect_type:
365
+ self.n_samples_fit_ = X.shape[0]
366
+ self.n_features_in_ = X.shape[1]
367
+
368
+ try:
369
+ fptype = getFPType(X)
370
+ except ValueError:
371
+ fptype = None
372
+
373
+ weights = getattr(self, "weights", "uniform")
374
+
375
+ def stock_fit(self, X, y):
376
+ result = super(NeighborsBase, self)._fit(X, y)
377
+ return result
378
+
379
+ if self.n_neighbors is not None:
380
+ if self.n_neighbors <= 0:
381
+ raise ValueError("Expected n_neighbors > 0. Got %d" % self.n_neighbors)
382
+ if not isinstance(self.n_neighbors, numbers.Integral):
383
+ raise TypeError(
384
+ "n_neighbors does not take %s value, "
385
+ "enter integer value" % type(self.n_neighbors)
386
+ )
387
+
388
+ _patching_status = PatchingConditionsChain(
389
+ "sklearn.neighbors.KNeighborsMixin.kneighbors"
390
+ )
391
+ _dal_ready = _patching_status.and_conditions(
392
+ [
393
+ (
394
+ self.metric == "minkowski"
395
+ and self.p == 2
396
+ or self.metric == "euclidean",
397
+ f"'{self.metric}' (p={self.p}) metric is not supported. "
398
+ "Only 'euclidean' or 'minkowski' with p=2 metrics are supported.",
399
+ ),
400
+ (not X_incorrect_type, "X is not Tree or Neighbors instance or array."),
401
+ (
402
+ weights in ["uniform", "distance"],
403
+ f"'{weights}' weights is not supported. "
404
+ "Only 'uniform' and 'distance' weights are supported.",
405
+ ),
406
+ (
407
+ self.algorithm in ["brute", "kd_tree", "auto", "ball_tree"],
408
+ f"'{self.algorithm}' algorithm is not supported. "
409
+ "Only 'brute', 'kd_tree', 'auto' and 'ball_tree' "
410
+ "algorithms are supported.",
411
+ ),
412
+ (single_output, "Multiple outputs are not supported."),
413
+ (fptype is not None, "Unable to get dtype."),
414
+ (not sp.issparse(X), "X is sparse. Sparse input is not supported."),
415
+ (correct_n_classes, "Number of classes < 2."),
416
+ ]
417
+ )
418
+ _patching_status.write_log()
419
+ if _dal_ready:
420
+ try:
421
+ daal4py_fit(self, X, fptype)
422
+ result = self
423
+ except RuntimeError:
424
+ logging.info(
425
+ "sklearn.neighbors.KNeighborsMixin."
426
+ "kneighbors: " + get_patch_message("sklearn_after_daal")
427
+ )
428
+ result = stock_fit(self, X, y)
429
+ else:
430
+ result = stock_fit(self, X, y)
431
+
432
+ if y is not None and is_regressor(self):
433
+ self._y = y if shape is None else y.reshape(shape)
434
+
435
+ return result
436
+
437
+
438
+ class KNeighborsMixin(BaseKNeighborsMixin):
439
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
440
+ daal_model = getattr(self, "_daal_model", None)
441
+ if X is not None and self.metric != "precomputed":
442
+ X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
443
+ x = self._fit_X if X is None else X
444
+ try:
445
+ fptype = getFPType(x)
446
+ except ValueError:
447
+ fptype = None
448
+
449
+ _patching_status = PatchingConditionsChain(
450
+ "sklearn.neighbors.KNeighborsMixin.kneighbors"
451
+ )
452
+ _dal_ready = _patching_status.and_conditions(
453
+ [
454
+ (daal_model is not None, "oneDAL model was not trained."),
455
+ (fptype is not None, "Unable to get dtype."),
456
+ (not sp.issparse(X), "X is sparse. Sparse input is not supported."),
457
+ ]
458
+ )
459
+ _patching_status.write_log()
460
+
461
+ if _dal_ready:
462
+ result = daal4py_kneighbors(self, X, n_neighbors, return_distance)
463
+ else:
464
+ if (
465
+ daal_model is not None
466
+ or getattr(self, "_tree", 0) is None
467
+ and self._fit_method == "kd_tree"
468
+ ):
469
+ BaseNeighborsBase._fit(self, self._fit_X, getattr(self, "_y", None))
470
+ result = super(KNeighborsMixin, self).kneighbors(
471
+ X, n_neighbors, return_distance
472
+ )
473
+
474
+ return result
475
+
476
+
477
+ class RadiusNeighborsMixin(BaseRadiusNeighborsMixin):
478
+ def radius_neighbors(
479
+ self, X=None, radius=None, return_distance=True, sort_results=False
480
+ ):
481
+ daal_model = getattr(self, "_daal_model", None)
482
+
483
+ if (
484
+ daal_model is not None
485
+ or getattr(self, "_tree", 0) is None
486
+ and self._fit_method == "kd_tree"
487
+ ):
488
+ BaseNeighborsBase._fit(self, self._fit_X, getattr(self, "_y", None))
489
+ result = BaseRadiusNeighborsMixin.radius_neighbors(
490
+ self, X, radius, return_distance, sort_results
491
+ )
492
+
493
+ return result
@@ -0,0 +1,136 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ # daal4py KNN classification scikit-learn-compatible classes
18
+
19
+ import numpy as np
20
+ from scipy import sparse as sp
21
+ from sklearn.base import ClassifierMixin as BaseClassifierMixin
22
+ from sklearn.neighbors._classification import (
23
+ KNeighborsClassifier as BaseKNeighborsClassifier,
24
+ )
25
+ from sklearn.utils.validation import check_array
26
+
27
+ from .._utils import PatchingConditionsChain, getFPType, sklearn_check_version
28
+ from ..utils.validation import check_feature_names
29
+ from ._base import KNeighborsMixin, NeighborsBase, parse_auto_method, prediction_algorithm
30
+
31
+ if not sklearn_check_version("1.2"):
32
+ from sklearn.neighbors._base import _check_weights
33
+
34
+ from sklearn.utils.validation import _deprecate_positional_args
35
+
36
+
37
+ def daal4py_classifier_predict(estimator, X, base_predict):
38
+ check_feature_names(estimator, X, reset=False)
39
+ X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
40
+ daal_model = getattr(estimator, "_daal_model", None)
41
+ n_features = getattr(estimator, "n_features_in_", None)
42
+ shape = getattr(X, "shape", None)
43
+ if n_features and shape and len(shape) > 1 and shape[1] != n_features:
44
+ raise ValueError(
45
+ (
46
+ f"X has {X.shape[1]} features, "
47
+ f"but KNNClassifier is expecting "
48
+ f"{n_features} features as input"
49
+ )
50
+ )
51
+
52
+ try:
53
+ fptype = getFPType(X)
54
+ except ValueError:
55
+ fptype = None
56
+
57
+ _patching_status = PatchingConditionsChain(
58
+ "sklearn.neighbors.KNeighborsClassifier.predict"
59
+ )
60
+ _dal_ready = _patching_status.and_conditions(
61
+ [
62
+ (daal_model is not None, "oneDAL model was not trained."),
63
+ (fptype is not None, "Unable to get dtype."),
64
+ (not sp.issparse(X), "X is sparse. Sparse input is not supported."),
65
+ ]
66
+ )
67
+ _patching_status.write_log()
68
+
69
+ if _dal_ready:
70
+ params = {
71
+ "method": "defaultDense",
72
+ "k": estimator.n_neighbors,
73
+ "nClasses": len(estimator.classes_),
74
+ "voteWeights": (
75
+ "voteUniform" if estimator.weights == "uniform" else "voteDistance"
76
+ ),
77
+ "resultsToEvaluate": "computeClassLabels",
78
+ "resultsToCompute": "",
79
+ }
80
+
81
+ method = parse_auto_method(
82
+ estimator, estimator.algorithm, estimator.n_samples_fit_, n_features
83
+ )
84
+ predict_alg = prediction_algorithm(method, fptype, params)
85
+ prediction_result = predict_alg.compute(X, daal_model)
86
+ result = estimator.classes_.take(
87
+ np.asarray(prediction_result.prediction.ravel(), dtype=np.intp)
88
+ )
89
+ else:
90
+ result = base_predict(estimator, X)
91
+
92
+ return result
93
+
94
+
95
+ class KNeighborsClassifier(KNeighborsMixin, BaseClassifierMixin, NeighborsBase):
96
+ __doc__ = BaseKNeighborsClassifier.__doc__
97
+
98
+ @_deprecate_positional_args
99
+ def __init__(
100
+ self,
101
+ n_neighbors=5,
102
+ *,
103
+ weights="uniform",
104
+ algorithm="auto",
105
+ leaf_size=30,
106
+ p=2,
107
+ metric="minkowski",
108
+ metric_params=None,
109
+ n_jobs=None,
110
+ **kwargs,
111
+ ):
112
+ super().__init__(
113
+ n_neighbors=n_neighbors,
114
+ algorithm=algorithm,
115
+ leaf_size=leaf_size,
116
+ metric=metric,
117
+ p=p,
118
+ metric_params=metric_params,
119
+ n_jobs=n_jobs,
120
+ **kwargs,
121
+ )
122
+ self.weights = weights
123
+
124
+ def fit(self, X, y):
125
+ return NeighborsBase._fit(self, X, y)
126
+
127
+ def predict(self, X):
128
+ return daal4py_classifier_predict(self, X, BaseKNeighborsClassifier.predict)
129
+
130
+ def predict_proba(self, X):
131
+ check_feature_names(self, X, reset=False)
132
+ return BaseKNeighborsClassifier.predict_proba(self, X)
133
+
134
+ fit.__doc__ = BaseKNeighborsClassifier.fit.__doc__
135
+ predict.__doc__ = BaseKNeighborsClassifier.predict.__doc__
136
+ predict_proba.__doc__ = BaseKNeighborsClassifier.predict_proba.__doc__
@@ -0,0 +1,72 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ # daal4py KNN regression scikit-learn-compatible classes
18
+
19
+ from sklearn.base import RegressorMixin
20
+ from sklearn.neighbors._regression import KNeighborsRegressor as BaseKNeighborsRegressor
21
+
22
+ from .._utils import sklearn_check_version
23
+ from ..utils.validation import check_feature_names
24
+ from ._base import KNeighborsMixin, NeighborsBase
25
+
26
+ if not sklearn_check_version("1.2"):
27
+ from sklearn.neighbors._base import _check_weights
28
+
29
+ from sklearn.utils.validation import _deprecate_positional_args
30
+
31
+
32
+ class KNeighborsRegressor(KNeighborsMixin, RegressorMixin, NeighborsBase):
33
+ __doc__ = BaseKNeighborsRegressor.__doc__
34
+
35
+ @_deprecate_positional_args
36
+ def __init__(
37
+ self,
38
+ n_neighbors=5,
39
+ *,
40
+ weights="uniform",
41
+ algorithm="auto",
42
+ leaf_size=30,
43
+ p=2,
44
+ metric="minkowski",
45
+ metric_params=None,
46
+ n_jobs=None,
47
+ **kwargs,
48
+ ):
49
+ super().__init__(
50
+ n_neighbors=n_neighbors,
51
+ algorithm=algorithm,
52
+ leaf_size=leaf_size,
53
+ metric=metric,
54
+ p=p,
55
+ metric_params=metric_params,
56
+ n_jobs=n_jobs,
57
+ **kwargs,
58
+ )
59
+ self.weights = weights
60
+
61
+ def _more_tags(self):
62
+ return BaseKNeighborsRegressor._more_tags(self)
63
+
64
+ def fit(self, X, y):
65
+ return NeighborsBase._fit(self, X, y)
66
+
67
+ def predict(self, X):
68
+ check_feature_names(self, X, reset=False)
69
+ return BaseKNeighborsRegressor.predict(self, X)
70
+
71
+ fit.__doc__ = BaseKNeighborsRegressor.fit.__doc__
72
+ predict.__doc__ = BaseKNeighborsRegressor.predict.__doc__