scikit-learn-intelex 2025.0.0__py312-none-manylinux_2_28_x86_64.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 (278) hide show
  1. daal4py/__init__.py +73 -0
  2. daal4py/__main__.py +58 -0
  3. daal4py/_daal4py.cpython-312-x86_64-linux-gnu.so +0 -0
  4. daal4py/doc/third-party-programs.txt +424 -0
  5. daal4py/mb/__init__.py +19 -0
  6. daal4py/mb/model_builders.py +377 -0
  7. daal4py/mpi_transceiver.cpython-312-x86_64-linux-gnu.so +0 -0
  8. daal4py/sklearn/__init__.py +40 -0
  9. daal4py/sklearn/_n_jobs_support.py +242 -0
  10. daal4py/sklearn/_utils.py +241 -0
  11. daal4py/sklearn/cluster/__init__.py +20 -0
  12. daal4py/sklearn/cluster/dbscan.py +165 -0
  13. daal4py/sklearn/cluster/k_means.py +597 -0
  14. daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. daal4py/sklearn/decomposition/__init__.py +19 -0
  16. daal4py/sklearn/decomposition/_pca.py +524 -0
  17. daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  18. daal4py/sklearn/ensemble/GBTDAAL.py +318 -0
  19. daal4py/sklearn/ensemble/__init__.py +27 -0
  20. daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. daal4py/sklearn/linear_model/__init__.py +29 -0
  23. daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. daal4py/sklearn/linear_model/_linear.py +272 -0
  25. daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  27. daal4py/sklearn/linear_model/linear.py +17 -0
  28. daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. daal4py/sklearn/linear_model/ridge.py +17 -0
  31. daal4py/sklearn/linear_model/tests/test_linear.py +196 -0
  32. daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. daal4py/sklearn/manifold/__init__.py +19 -0
  34. daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. daal4py/sklearn/metrics/__init__.py +20 -0
  36. daal4py/sklearn/metrics/_pairwise.py +155 -0
  37. daal4py/sklearn/metrics/_ranking.py +210 -0
  38. daal4py/sklearn/model_selection/__init__.py +19 -0
  39. daal4py/sklearn/model_selection/_split.py +309 -0
  40. daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. daal4py/sklearn/monkeypatch/tests/_models_info.py +161 -0
  44. daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. daal4py/sklearn/monkeypatch/tests/test_patching.py +87 -0
  46. daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +118 -0
  47. daal4py/sklearn/neighbors/__init__.py +21 -0
  48. daal4py/sklearn/neighbors/_base.py +503 -0
  49. daal4py/sklearn/neighbors/_classification.py +139 -0
  50. daal4py/sklearn/neighbors/_regression.py +74 -0
  51. daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. daal4py/sklearn/svm/__init__.py +19 -0
  54. daal4py/sklearn/svm/svm.py +734 -0
  55. daal4py/sklearn/utils/__init__.py +21 -0
  56. daal4py/sklearn/utils/base.py +75 -0
  57. daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. daal4py/sklearn/utils/validation.py +693 -0
  59. onedal/__init__.py +83 -0
  60. onedal/_config.py +53 -0
  61. onedal/_device_offload.py +229 -0
  62. onedal/_onedal_py_dpc.cpython-312-x86_64-linux-gnu.so +0 -0
  63. onedal/_onedal_py_host.cpython-312-x86_64-linux-gnu.so +0 -0
  64. onedal/_onedal_py_spmd_dpc.cpython-312-x86_64-linux-gnu.so +0 -0
  65. onedal/basic_statistics/__init__.py +20 -0
  66. onedal/basic_statistics/basic_statistics.py +107 -0
  67. onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  68. onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  69. onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  70. onedal/cluster/__init__.py +27 -0
  71. onedal/cluster/dbscan.py +110 -0
  72. onedal/cluster/kmeans.py +560 -0
  73. onedal/cluster/kmeans_init.py +115 -0
  74. onedal/cluster/tests/test_dbscan.py +125 -0
  75. onedal/cluster/tests/test_kmeans.py +88 -0
  76. onedal/cluster/tests/test_kmeans_init.py +93 -0
  77. onedal/common/_base.py +38 -0
  78. onedal/common/_estimator_checks.py +47 -0
  79. onedal/common/_mixin.py +62 -0
  80. onedal/common/_policy.py +59 -0
  81. onedal/common/_spmd_policy.py +30 -0
  82. onedal/common/hyperparameters.py +116 -0
  83. onedal/common/tests/test_policy.py +75 -0
  84. onedal/covariance/__init__.py +20 -0
  85. onedal/covariance/covariance.py +125 -0
  86. onedal/covariance/incremental_covariance.py +146 -0
  87. onedal/covariance/tests/test_covariance.py +50 -0
  88. onedal/covariance/tests/test_incremental_covariance.py +122 -0
  89. onedal/datatypes/__init__.py +19 -0
  90. onedal/datatypes/_data_conversion.py +95 -0
  91. onedal/datatypes/tests/test_data.py +235 -0
  92. onedal/decomposition/__init__.py +20 -0
  93. onedal/decomposition/incremental_pca.py +204 -0
  94. onedal/decomposition/pca.py +186 -0
  95. onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. onedal/ensemble/__init__.py +29 -0
  97. onedal/ensemble/forest.py +720 -0
  98. onedal/ensemble/tests/test_random_forest.py +97 -0
  99. onedal/linear_model/__init__.py +27 -0
  100. onedal/linear_model/incremental_linear_model.py +258 -0
  101. onedal/linear_model/linear_model.py +329 -0
  102. onedal/linear_model/logistic_regression.py +249 -0
  103. onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. onedal/linear_model/tests/test_linear_regression.py +149 -0
  106. onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. onedal/linear_model/tests/test_ridge.py +95 -0
  108. onedal/neighbors/__init__.py +19 -0
  109. onedal/neighbors/neighbors.py +778 -0
  110. onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. onedal/primitives/__init__.py +27 -0
  112. onedal/primitives/get_tree.py +25 -0
  113. onedal/primitives/kernel_functions.py +153 -0
  114. onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. onedal/spmd/__init__.py +25 -0
  116. onedal/spmd/_base.py +30 -0
  117. onedal/spmd/basic_statistics/__init__.py +20 -0
  118. onedal/spmd/basic_statistics/basic_statistics.py +30 -0
  119. onedal/spmd/basic_statistics/incremental_basic_statistics.py +69 -0
  120. onedal/spmd/cluster/__init__.py +28 -0
  121. onedal/spmd/cluster/dbscan.py +23 -0
  122. onedal/spmd/cluster/kmeans.py +56 -0
  123. onedal/spmd/covariance/__init__.py +20 -0
  124. onedal/spmd/covariance/covariance.py +26 -0
  125. onedal/spmd/covariance/incremental_covariance.py +82 -0
  126. onedal/spmd/decomposition/__init__.py +20 -0
  127. onedal/spmd/decomposition/incremental_pca.py +117 -0
  128. onedal/spmd/decomposition/pca.py +26 -0
  129. onedal/spmd/ensemble/__init__.py +19 -0
  130. onedal/spmd/ensemble/forest.py +28 -0
  131. onedal/spmd/linear_model/__init__.py +21 -0
  132. onedal/spmd/linear_model/incremental_linear_model.py +97 -0
  133. onedal/spmd/linear_model/linear_model.py +30 -0
  134. onedal/spmd/linear_model/logistic_regression.py +38 -0
  135. onedal/spmd/neighbors/__init__.py +19 -0
  136. onedal/spmd/neighbors/neighbors.py +75 -0
  137. onedal/svm/__init__.py +19 -0
  138. onedal/svm/svm.py +556 -0
  139. onedal/svm/tests/test_csr_svm.py +351 -0
  140. onedal/svm/tests/test_nusvc.py +204 -0
  141. onedal/svm/tests/test_nusvr.py +210 -0
  142. onedal/svm/tests/test_svc.py +168 -0
  143. onedal/svm/tests/test_svr.py +243 -0
  144. onedal/tests/test_common.py +41 -0
  145. onedal/tests/utils/_dataframes_support.py +168 -0
  146. onedal/tests/utils/_device_selection.py +107 -0
  147. onedal/utils/__init__.py +49 -0
  148. onedal/utils/_array_api.py +91 -0
  149. onedal/utils/validation.py +432 -0
  150. scikit_learn_intelex-2025.0.0.dist-info/LICENSE.txt +202 -0
  151. scikit_learn_intelex-2025.0.0.dist-info/METADATA +231 -0
  152. scikit_learn_intelex-2025.0.0.dist-info/RECORD +278 -0
  153. scikit_learn_intelex-2025.0.0.dist-info/WHEEL +5 -0
  154. scikit_learn_intelex-2025.0.0.dist-info/top_level.txt +3 -0
  155. sklearnex/__init__.py +65 -0
  156. sklearnex/__main__.py +58 -0
  157. sklearnex/_config.py +98 -0
  158. sklearnex/_device_offload.py +121 -0
  159. sklearnex/_utils.py +109 -0
  160. sklearnex/basic_statistics/__init__.py +20 -0
  161. sklearnex/basic_statistics/basic_statistics.py +140 -0
  162. sklearnex/basic_statistics/incremental_basic_statistics.py +288 -0
  163. sklearnex/basic_statistics/tests/test_basic_statistics.py +251 -0
  164. sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +384 -0
  165. sklearnex/cluster/__init__.py +20 -0
  166. sklearnex/cluster/dbscan.py +192 -0
  167. sklearnex/cluster/k_means.py +383 -0
  168. sklearnex/cluster/tests/test_dbscan.py +38 -0
  169. sklearnex/cluster/tests/test_kmeans.py +153 -0
  170. sklearnex/conftest.py +73 -0
  171. sklearnex/covariance/__init__.py +19 -0
  172. sklearnex/covariance/incremental_covariance.py +368 -0
  173. sklearnex/covariance/tests/test_incremental_covariance.py +226 -0
  174. sklearnex/decomposition/__init__.py +19 -0
  175. sklearnex/decomposition/pca.py +414 -0
  176. sklearnex/decomposition/tests/test_pca.py +58 -0
  177. sklearnex/dispatcher.py +543 -0
  178. sklearnex/doc/third-party-programs.txt +424 -0
  179. sklearnex/ensemble/__init__.py +29 -0
  180. sklearnex/ensemble/_forest.py +2016 -0
  181. sklearnex/ensemble/tests/test_forest.py +120 -0
  182. sklearnex/glob/__main__.py +72 -0
  183. sklearnex/glob/dispatcher.py +101 -0
  184. sklearnex/linear_model/__init__.py +32 -0
  185. sklearnex/linear_model/coordinate_descent.py +30 -0
  186. sklearnex/linear_model/incremental_linear.py +463 -0
  187. sklearnex/linear_model/incremental_ridge.py +418 -0
  188. sklearnex/linear_model/linear.py +302 -0
  189. sklearnex/linear_model/logistic_path.py +17 -0
  190. sklearnex/linear_model/logistic_regression.py +403 -0
  191. sklearnex/linear_model/ridge.py +24 -0
  192. sklearnex/linear_model/tests/test_incremental_linear.py +203 -0
  193. sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  194. sklearnex/linear_model/tests/test_linear.py +142 -0
  195. sklearnex/linear_model/tests/test_logreg.py +134 -0
  196. sklearnex/manifold/__init__.py +19 -0
  197. sklearnex/manifold/t_sne.py +21 -0
  198. sklearnex/manifold/tests/test_tsne.py +26 -0
  199. sklearnex/metrics/__init__.py +23 -0
  200. sklearnex/metrics/pairwise.py +22 -0
  201. sklearnex/metrics/ranking.py +20 -0
  202. sklearnex/metrics/tests/test_metrics.py +39 -0
  203. sklearnex/model_selection/__init__.py +21 -0
  204. sklearnex/model_selection/split.py +22 -0
  205. sklearnex/model_selection/tests/test_model_selection.py +34 -0
  206. sklearnex/neighbors/__init__.py +27 -0
  207. sklearnex/neighbors/_lof.py +231 -0
  208. sklearnex/neighbors/common.py +310 -0
  209. sklearnex/neighbors/knn_classification.py +226 -0
  210. sklearnex/neighbors/knn_regression.py +203 -0
  211. sklearnex/neighbors/knn_unsupervised.py +170 -0
  212. sklearnex/neighbors/tests/test_neighbors.py +80 -0
  213. sklearnex/preview/__init__.py +17 -0
  214. sklearnex/preview/covariance/__init__.py +19 -0
  215. sklearnex/preview/covariance/covariance.py +133 -0
  216. sklearnex/preview/covariance/tests/test_covariance.py +66 -0
  217. sklearnex/preview/decomposition/__init__.py +19 -0
  218. sklearnex/preview/decomposition/incremental_pca.py +228 -0
  219. sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  220. sklearnex/preview/linear_model/__init__.py +19 -0
  221. sklearnex/preview/linear_model/ridge.py +419 -0
  222. sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  223. sklearnex/spmd/__init__.py +25 -0
  224. sklearnex/spmd/basic_statistics/__init__.py +20 -0
  225. sklearnex/spmd/basic_statistics/basic_statistics.py +21 -0
  226. sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  227. sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  228. sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  229. sklearnex/spmd/cluster/__init__.py +30 -0
  230. sklearnex/spmd/cluster/dbscan.py +50 -0
  231. sklearnex/spmd/cluster/kmeans.py +21 -0
  232. sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  233. sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  234. sklearnex/spmd/covariance/__init__.py +20 -0
  235. sklearnex/spmd/covariance/covariance.py +21 -0
  236. sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  237. sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  238. sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  239. sklearnex/spmd/decomposition/__init__.py +20 -0
  240. sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  241. sklearnex/spmd/decomposition/pca.py +21 -0
  242. sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  243. sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  244. sklearnex/spmd/ensemble/__init__.py +19 -0
  245. sklearnex/spmd/ensemble/forest.py +71 -0
  246. sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  247. sklearnex/spmd/linear_model/__init__.py +21 -0
  248. sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
  249. sklearnex/spmd/linear_model/linear_model.py +21 -0
  250. sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  251. sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  252. sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  253. sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +166 -0
  254. sklearnex/spmd/neighbors/__init__.py +19 -0
  255. sklearnex/spmd/neighbors/neighbors.py +25 -0
  256. sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  257. sklearnex/svm/__init__.py +29 -0
  258. sklearnex/svm/_common.py +328 -0
  259. sklearnex/svm/nusvc.py +332 -0
  260. sklearnex/svm/nusvr.py +148 -0
  261. sklearnex/svm/svc.py +360 -0
  262. sklearnex/svm/svr.py +149 -0
  263. sklearnex/svm/tests/test_svm.py +93 -0
  264. sklearnex/tests/_utils.py +328 -0
  265. sklearnex/tests/_utils_spmd.py +198 -0
  266. sklearnex/tests/test_common.py +54 -0
  267. sklearnex/tests/test_config.py +43 -0
  268. sklearnex/tests/test_memory_usage.py +291 -0
  269. sklearnex/tests/test_monkeypatch.py +276 -0
  270. sklearnex/tests/test_n_jobs_support.py +103 -0
  271. sklearnex/tests/test_parallel.py +48 -0
  272. sklearnex/tests/test_patching.py +385 -0
  273. sklearnex/tests/test_run_to_run_stability.py +296 -0
  274. sklearnex/utils/__init__.py +19 -0
  275. sklearnex/utils/_array_api.py +82 -0
  276. sklearnex/utils/parallel.py +59 -0
  277. sklearnex/utils/tests/test_finite.py +89 -0
  278. sklearnex/utils/validation.py +17 -0
@@ -0,0 +1,226 @@
1
+ # ===============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ from sklearn.metrics import accuracy_score
18
+ from sklearn.neighbors._classification import (
19
+ KNeighborsClassifier as sklearn_KNeighborsClassifier,
20
+ )
21
+ from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
22
+ from sklearn.utils.validation import _deprecate_positional_args, 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 onedal.neighbors import KNeighborsClassifier as onedal_KNeighborsClassifier
27
+
28
+ from .._device_offload import dispatch, wrap_output_data
29
+ from .common import KNeighborsDispatchingBase
30
+
31
+
32
+ @control_n_jobs(
33
+ decorated_methods=["fit", "predict", "predict_proba", "kneighbors", "score"]
34
+ )
35
+ class KNeighborsClassifier(KNeighborsDispatchingBase, sklearn_KNeighborsClassifier):
36
+ __doc__ = sklearn_KNeighborsClassifier.__doc__
37
+ if sklearn_check_version("1.2"):
38
+ _parameter_constraints: dict = {
39
+ **sklearn_KNeighborsClassifier._parameter_constraints
40
+ }
41
+
42
+ if sklearn_check_version("1.0"):
43
+
44
+ def __init__(
45
+ self,
46
+ n_neighbors=5,
47
+ *,
48
+ weights="uniform",
49
+ algorithm="auto",
50
+ leaf_size=30,
51
+ p=2,
52
+ metric="minkowski",
53
+ metric_params=None,
54
+ n_jobs=None,
55
+ ):
56
+ super().__init__(
57
+ n_neighbors=n_neighbors,
58
+ weights=weights,
59
+ algorithm=algorithm,
60
+ leaf_size=leaf_size,
61
+ metric=metric,
62
+ p=p,
63
+ metric_params=metric_params,
64
+ n_jobs=n_jobs,
65
+ )
66
+
67
+ else:
68
+
69
+ @_deprecate_positional_args
70
+ def __init__(
71
+ self,
72
+ n_neighbors=5,
73
+ *,
74
+ weights="uniform",
75
+ algorithm="auto",
76
+ leaf_size=30,
77
+ p=2,
78
+ metric="minkowski",
79
+ metric_params=None,
80
+ n_jobs=None,
81
+ **kwargs,
82
+ ):
83
+ super().__init__(
84
+ n_neighbors=n_neighbors,
85
+ weights=weights,
86
+ algorithm=algorithm,
87
+ leaf_size=leaf_size,
88
+ metric=metric,
89
+ p=p,
90
+ metric_params=metric_params,
91
+ n_jobs=n_jobs,
92
+ **kwargs,
93
+ )
94
+
95
+ def fit(self, X, y):
96
+ dispatch(
97
+ self,
98
+ "fit",
99
+ {
100
+ "onedal": self.__class__._onedal_fit,
101
+ "sklearn": sklearn_KNeighborsClassifier.fit,
102
+ },
103
+ X,
104
+ y,
105
+ )
106
+ return self
107
+
108
+ @wrap_output_data
109
+ def predict(self, X):
110
+ check_is_fitted(self)
111
+ if sklearn_check_version("1.0"):
112
+ self._check_feature_names(X, reset=False)
113
+ return dispatch(
114
+ self,
115
+ "predict",
116
+ {
117
+ "onedal": self.__class__._onedal_predict,
118
+ "sklearn": sklearn_KNeighborsClassifier.predict,
119
+ },
120
+ X,
121
+ )
122
+
123
+ @wrap_output_data
124
+ def predict_proba(self, X):
125
+ check_is_fitted(self)
126
+ if sklearn_check_version("1.0"):
127
+ self._check_feature_names(X, reset=False)
128
+ return dispatch(
129
+ self,
130
+ "predict_proba",
131
+ {
132
+ "onedal": self.__class__._onedal_predict_proba,
133
+ "sklearn": sklearn_KNeighborsClassifier.predict_proba,
134
+ },
135
+ X,
136
+ )
137
+
138
+ @wrap_output_data
139
+ def score(self, X, y, sample_weight=None):
140
+ check_is_fitted(self)
141
+ if sklearn_check_version("1.0"):
142
+ self._check_feature_names(X, reset=False)
143
+ return dispatch(
144
+ self,
145
+ "score",
146
+ {
147
+ "onedal": self.__class__._onedal_score,
148
+ "sklearn": sklearn_KNeighborsClassifier.score,
149
+ },
150
+ X,
151
+ y,
152
+ sample_weight=sample_weight,
153
+ )
154
+
155
+ @wrap_output_data
156
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
157
+ check_is_fitted(self)
158
+ if sklearn_check_version("1.0") and X is not None:
159
+ self._check_feature_names(X, reset=False)
160
+ return dispatch(
161
+ self,
162
+ "kneighbors",
163
+ {
164
+ "onedal": self.__class__._onedal_kneighbors,
165
+ "sklearn": sklearn_KNeighborsClassifier.kneighbors,
166
+ },
167
+ X,
168
+ n_neighbors=n_neighbors,
169
+ return_distance=return_distance,
170
+ )
171
+
172
+ def _onedal_fit(self, X, y, queue=None):
173
+ onedal_params = {
174
+ "n_neighbors": self.n_neighbors,
175
+ "weights": self.weights,
176
+ "algorithm": self.algorithm,
177
+ "metric": self.effective_metric_,
178
+ "p": self.effective_metric_params_["p"],
179
+ }
180
+
181
+ try:
182
+ requires_y = self._get_tags()["requires_y"]
183
+ except KeyError:
184
+ requires_y = False
185
+
186
+ self._onedal_estimator = onedal_KNeighborsClassifier(**onedal_params)
187
+ self._onedal_estimator.requires_y = requires_y
188
+ self._onedal_estimator.effective_metric_ = self.effective_metric_
189
+ self._onedal_estimator.effective_metric_params_ = self.effective_metric_params_
190
+ self._onedal_estimator.fit(X, y, queue=queue)
191
+
192
+ self._save_attributes()
193
+
194
+ def _onedal_predict(self, X, queue=None):
195
+ return self._onedal_estimator.predict(X, queue=queue)
196
+
197
+ def _onedal_predict_proba(self, X, queue=None):
198
+ return self._onedal_estimator.predict_proba(X, queue=queue)
199
+
200
+ def _onedal_kneighbors(
201
+ self, X=None, n_neighbors=None, return_distance=True, queue=None
202
+ ):
203
+ return self._onedal_estimator.kneighbors(
204
+ X, n_neighbors, return_distance, queue=queue
205
+ )
206
+
207
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
208
+ return accuracy_score(
209
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
210
+ )
211
+
212
+ def _save_attributes(self):
213
+ self.classes_ = self._onedal_estimator.classes_
214
+ self.n_features_in_ = self._onedal_estimator.n_features_in_
215
+ self.n_samples_fit_ = self._onedal_estimator.n_samples_fit_
216
+ self._fit_X = self._onedal_estimator._fit_X
217
+ self._y = self._onedal_estimator._y
218
+ self._fit_method = self._onedal_estimator._fit_method
219
+ self.outputs_2d_ = self._onedal_estimator.outputs_2d_
220
+ self._tree = self._onedal_estimator._tree
221
+
222
+ fit.__doc__ = sklearn_KNeighborsClassifier.fit.__doc__
223
+ predict.__doc__ = sklearn_KNeighborsClassifier.predict.__doc__
224
+ predict_proba.__doc__ = sklearn_KNeighborsClassifier.predict_proba.__doc__
225
+ score.__doc__ = sklearn_KNeighborsClassifier.score.__doc__
226
+ kneighbors.__doc__ = sklearn_KNeighborsClassifier.kneighbors.__doc__
@@ -0,0 +1,203 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ from sklearn.metrics import r2_score
18
+ from sklearn.neighbors._regression import (
19
+ KNeighborsRegressor as sklearn_KNeighborsRegressor,
20
+ )
21
+ from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
22
+ from sklearn.utils.validation import _deprecate_positional_args, 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 onedal.neighbors import KNeighborsRegressor as onedal_KNeighborsRegressor
27
+
28
+ from .._device_offload import dispatch, wrap_output_data
29
+ from .common import KNeighborsDispatchingBase
30
+
31
+
32
+ @control_n_jobs(decorated_methods=["fit", "predict", "kneighbors"])
33
+ class KNeighborsRegressor(KNeighborsDispatchingBase, sklearn_KNeighborsRegressor):
34
+ __doc__ = sklearn_KNeighborsRegressor.__doc__
35
+ if sklearn_check_version("1.2"):
36
+ _parameter_constraints: dict = {
37
+ **sklearn_KNeighborsRegressor._parameter_constraints
38
+ }
39
+
40
+ if sklearn_check_version("1.0"):
41
+
42
+ def __init__(
43
+ self,
44
+ n_neighbors=5,
45
+ *,
46
+ weights="uniform",
47
+ algorithm="auto",
48
+ leaf_size=30,
49
+ p=2,
50
+ metric="minkowski",
51
+ metric_params=None,
52
+ n_jobs=None,
53
+ ):
54
+ super().__init__(
55
+ n_neighbors=n_neighbors,
56
+ weights=weights,
57
+ algorithm=algorithm,
58
+ leaf_size=leaf_size,
59
+ metric=metric,
60
+ p=p,
61
+ metric_params=metric_params,
62
+ n_jobs=n_jobs,
63
+ )
64
+
65
+ else:
66
+
67
+ @_deprecate_positional_args
68
+ def __init__(
69
+ self,
70
+ n_neighbors=5,
71
+ *,
72
+ weights="uniform",
73
+ algorithm="auto",
74
+ leaf_size=30,
75
+ p=2,
76
+ metric="minkowski",
77
+ metric_params=None,
78
+ n_jobs=None,
79
+ **kwargs,
80
+ ):
81
+ super().__init__(
82
+ n_neighbors=n_neighbors,
83
+ weights=weights,
84
+ algorithm=algorithm,
85
+ leaf_size=leaf_size,
86
+ metric=metric,
87
+ p=p,
88
+ metric_params=metric_params,
89
+ n_jobs=n_jobs,
90
+ **kwargs,
91
+ )
92
+
93
+ def fit(self, X, y):
94
+ dispatch(
95
+ self,
96
+ "fit",
97
+ {
98
+ "onedal": self.__class__._onedal_fit,
99
+ "sklearn": sklearn_KNeighborsRegressor.fit,
100
+ },
101
+ X,
102
+ y,
103
+ )
104
+ return self
105
+
106
+ @wrap_output_data
107
+ def predict(self, X):
108
+ check_is_fitted(self)
109
+ if sklearn_check_version("1.0"):
110
+ self._check_feature_names(X, reset=False)
111
+ return dispatch(
112
+ self,
113
+ "predict",
114
+ {
115
+ "onedal": self.__class__._onedal_predict,
116
+ "sklearn": sklearn_KNeighborsRegressor.predict,
117
+ },
118
+ X,
119
+ )
120
+
121
+ @wrap_output_data
122
+ def score(self, X, y, sample_weight=None):
123
+ check_is_fitted(self)
124
+ if sklearn_check_version("1.0"):
125
+ self._check_feature_names(X, reset=False)
126
+ return dispatch(
127
+ self,
128
+ "score",
129
+ {
130
+ "onedal": self.__class__._onedal_score,
131
+ "sklearn": sklearn_KNeighborsRegressor.score,
132
+ },
133
+ X,
134
+ y,
135
+ sample_weight=sample_weight,
136
+ )
137
+
138
+ @wrap_output_data
139
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
140
+ check_is_fitted(self)
141
+ if sklearn_check_version("1.0") and X is not None:
142
+ self._check_feature_names(X, reset=False)
143
+ return dispatch(
144
+ self,
145
+ "kneighbors",
146
+ {
147
+ "onedal": self.__class__._onedal_kneighbors,
148
+ "sklearn": sklearn_KNeighborsRegressor.kneighbors,
149
+ },
150
+ X,
151
+ n_neighbors=n_neighbors,
152
+ return_distance=return_distance,
153
+ )
154
+
155
+ def _onedal_fit(self, X, y, queue=None):
156
+ onedal_params = {
157
+ "n_neighbors": self.n_neighbors,
158
+ "weights": self.weights,
159
+ "algorithm": self.algorithm,
160
+ "metric": self.effective_metric_,
161
+ "p": self.effective_metric_params_["p"],
162
+ }
163
+
164
+ try:
165
+ requires_y = self._get_tags()["requires_y"]
166
+ except KeyError:
167
+ requires_y = False
168
+
169
+ self._onedal_estimator = onedal_KNeighborsRegressor(**onedal_params)
170
+ self._onedal_estimator.requires_y = requires_y
171
+ self._onedal_estimator.effective_metric_ = self.effective_metric_
172
+ self._onedal_estimator.effective_metric_params_ = self.effective_metric_params_
173
+ self._onedal_estimator.fit(X, y, queue=queue)
174
+
175
+ self._save_attributes()
176
+
177
+ def _onedal_predict(self, X, queue=None):
178
+ return self._onedal_estimator.predict(X, queue=queue)
179
+
180
+ def _onedal_kneighbors(
181
+ self, X=None, n_neighbors=None, return_distance=True, queue=None
182
+ ):
183
+ return self._onedal_estimator.kneighbors(
184
+ X, n_neighbors, return_distance, queue=queue
185
+ )
186
+
187
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
188
+ return r2_score(
189
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
190
+ )
191
+
192
+ def _save_attributes(self):
193
+ self.n_features_in_ = self._onedal_estimator.n_features_in_
194
+ self.n_samples_fit_ = self._onedal_estimator.n_samples_fit_
195
+ self._fit_X = self._onedal_estimator._fit_X
196
+ self._y = self._onedal_estimator._y
197
+ self._fit_method = self._onedal_estimator._fit_method
198
+ self._tree = self._onedal_estimator._tree
199
+
200
+ fit.__doc__ = sklearn_KNeighborsRegressor.__doc__
201
+ predict.__doc__ = sklearn_KNeighborsRegressor.predict.__doc__
202
+ kneighbors.__doc__ = sklearn_KNeighborsRegressor.kneighbors.__doc__
203
+ score.__doc__ = sklearn_KNeighborsRegressor.score.__doc__
@@ -0,0 +1,170 @@
1
+ # ===============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ===============================================================================
16
+
17
+ from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
18
+ from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
19
+
20
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
21
+ from daal4py.sklearn._utils import sklearn_check_version
22
+ from onedal.neighbors import NearestNeighbors as onedal_NearestNeighbors
23
+
24
+ from .._device_offload import dispatch, wrap_output_data
25
+ from .common import KNeighborsDispatchingBase
26
+
27
+
28
+ @control_n_jobs(decorated_methods=["fit", "kneighbors"])
29
+ class NearestNeighbors(KNeighborsDispatchingBase, sklearn_NearestNeighbors):
30
+ __doc__ = sklearn_NearestNeighbors.__doc__
31
+ if sklearn_check_version("1.2"):
32
+ _parameter_constraints: dict = {**sklearn_NearestNeighbors._parameter_constraints}
33
+
34
+ @_deprecate_positional_args
35
+ def __init__(
36
+ self,
37
+ n_neighbors=5,
38
+ radius=1.0,
39
+ algorithm="auto",
40
+ leaf_size=30,
41
+ metric="minkowski",
42
+ p=2,
43
+ metric_params=None,
44
+ n_jobs=None,
45
+ ):
46
+ super().__init__(
47
+ n_neighbors=n_neighbors,
48
+ radius=radius,
49
+ algorithm=algorithm,
50
+ leaf_size=leaf_size,
51
+ metric=metric,
52
+ p=p,
53
+ metric_params=metric_params,
54
+ n_jobs=n_jobs,
55
+ )
56
+
57
+ def fit(self, X, y=None):
58
+ dispatch(
59
+ self,
60
+ "fit",
61
+ {
62
+ "onedal": self.__class__._onedal_fit,
63
+ "sklearn": sklearn_NearestNeighbors.fit,
64
+ },
65
+ X,
66
+ None,
67
+ )
68
+ return self
69
+
70
+ @wrap_output_data
71
+ def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
72
+ check_is_fitted(self)
73
+ if sklearn_check_version("1.0") and X is not None:
74
+ self._check_feature_names(X, reset=False)
75
+ return dispatch(
76
+ self,
77
+ "kneighbors",
78
+ {
79
+ "onedal": self.__class__._onedal_kneighbors,
80
+ "sklearn": sklearn_NearestNeighbors.kneighbors,
81
+ },
82
+ X,
83
+ n_neighbors=n_neighbors,
84
+ return_distance=return_distance,
85
+ )
86
+
87
+ @wrap_output_data
88
+ def radius_neighbors(
89
+ self, X=None, radius=None, return_distance=True, sort_results=False
90
+ ):
91
+ if (
92
+ hasattr(self, "_onedal_estimator")
93
+ or getattr(self, "_tree", 0) is None
94
+ and self._fit_method == "kd_tree"
95
+ ):
96
+ sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
97
+ return dispatch(
98
+ self,
99
+ "radius_neighbors",
100
+ {
101
+ "onedal": None,
102
+ "sklearn": sklearn_NearestNeighbors.radius_neighbors,
103
+ },
104
+ X,
105
+ radius=radius,
106
+ return_distance=return_distance,
107
+ sort_results=sort_results,
108
+ )
109
+
110
+ def radius_neighbors_graph(
111
+ self, X=None, radius=None, mode="connectivity", sort_results=False
112
+ ):
113
+ return dispatch(
114
+ self,
115
+ "radius_neighbors_graph",
116
+ {
117
+ "onedal": None,
118
+ "sklearn": sklearn_NearestNeighbors.radius_neighbors_graph,
119
+ },
120
+ X,
121
+ radius=radius,
122
+ mode=mode,
123
+ sort_results=sort_results,
124
+ )
125
+
126
+ def _onedal_fit(self, X, y=None, queue=None):
127
+ onedal_params = {
128
+ "n_neighbors": self.n_neighbors,
129
+ "algorithm": self.algorithm,
130
+ "metric": self.effective_metric_,
131
+ "p": self.effective_metric_params_["p"],
132
+ }
133
+
134
+ try:
135
+ requires_y = self._get_tags()["requires_y"]
136
+ except KeyError:
137
+ requires_y = False
138
+
139
+ self._onedal_estimator = onedal_NearestNeighbors(**onedal_params)
140
+ self._onedal_estimator.requires_y = requires_y
141
+ self._onedal_estimator.effective_metric_ = self.effective_metric_
142
+ self._onedal_estimator.effective_metric_params_ = self.effective_metric_params_
143
+ self._onedal_estimator.fit(X, y, queue=queue)
144
+
145
+ self._save_attributes()
146
+
147
+ def _onedal_predict(self, X, queue=None):
148
+ return self._onedal_estimator.predict(X, queue=queue)
149
+
150
+ def _onedal_kneighbors(
151
+ self, X=None, n_neighbors=None, return_distance=True, queue=None
152
+ ):
153
+ return self._onedal_estimator.kneighbors(
154
+ X, n_neighbors, return_distance, queue=queue
155
+ )
156
+
157
+ def _save_attributes(self):
158
+ self.classes_ = self._onedal_estimator.classes_
159
+ self.n_features_in_ = self._onedal_estimator.n_features_in_
160
+ self.n_samples_fit_ = self._onedal_estimator.n_samples_fit_
161
+ self._fit_X = self._onedal_estimator._fit_X
162
+ self._fit_method = self._onedal_estimator._fit_method
163
+ self._tree = self._onedal_estimator._tree
164
+
165
+ fit.__doc__ = sklearn_NearestNeighbors.__doc__
166
+ kneighbors.__doc__ = sklearn_NearestNeighbors.kneighbors.__doc__
167
+ radius_neighbors.__doc__ = sklearn_NearestNeighbors.radius_neighbors.__doc__
168
+ radius_neighbors_graph.__doc__ = (
169
+ sklearn_NearestNeighbors.radius_neighbors_graph.__doc__
170
+ )
@@ -0,0 +1,80 @@
1
+ # ===============================================================================
2
+ # Copyright 2021 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 pytest
18
+ from numpy.testing import assert_allclose
19
+
20
+ from onedal.tests.utils._dataframes_support import (
21
+ _as_numpy,
22
+ _convert_to_dataframe,
23
+ get_dataframes_and_queues,
24
+ )
25
+ from sklearnex.neighbors import (
26
+ KNeighborsClassifier,
27
+ KNeighborsRegressor,
28
+ LocalOutlierFactor,
29
+ NearestNeighbors,
30
+ )
31
+
32
+
33
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
34
+ def test_sklearnex_import_knn_classifier(dataframe, queue):
35
+ X = _convert_to_dataframe([[0], [1], [2], [3]], sycl_queue=queue, target_df=dataframe)
36
+ y = _convert_to_dataframe([0, 0, 1, 1], sycl_queue=queue, target_df=dataframe)
37
+ neigh = KNeighborsClassifier(n_neighbors=3).fit(X, y)
38
+ y_test = _convert_to_dataframe([[1.1]], sycl_queue=queue, target_df=dataframe)
39
+ pred = _as_numpy(neigh.predict(y_test))
40
+ assert "sklearnex" in neigh.__module__
41
+ assert_allclose(pred, [0])
42
+
43
+
44
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
45
+ def test_sklearnex_import_knn_regression(dataframe, queue):
46
+ X = _convert_to_dataframe([[0], [1], [2], [3]], sycl_queue=queue, target_df=dataframe)
47
+ y = _convert_to_dataframe([0, 0, 1, 1], sycl_queue=queue, target_df=dataframe)
48
+ neigh = KNeighborsRegressor(n_neighbors=2).fit(X, y)
49
+ y_test = _convert_to_dataframe([[1.5]], sycl_queue=queue, target_df=dataframe)
50
+ pred = _as_numpy(neigh.predict(y_test)).squeeze()
51
+ assert "sklearnex" in neigh.__module__
52
+ assert_allclose(pred, 0.5)
53
+
54
+
55
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
56
+ @pytest.mark.parametrize(
57
+ "estimator",
58
+ [LocalOutlierFactor, NearestNeighbors],
59
+ )
60
+ def test_sklearnex_kneighbors(estimator, dataframe, queue):
61
+ X = [[0, 0, 2], [1, 0, 0], [0, 0, 1]]
62
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
63
+ test = _convert_to_dataframe([[0, 0, 1.3]], sycl_queue=queue, target_df=dataframe)
64
+ neigh = estimator(n_neighbors=2).fit(X)
65
+ result = neigh.kneighbors(test, 2, return_distance=False)
66
+ result = _as_numpy(result)
67
+ assert "sklearnex" in neigh.__module__
68
+ assert_allclose(result, [[2, 0]])
69
+
70
+
71
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
72
+ def test_sklearnex_import_lof(dataframe, queue):
73
+ X = [[7, 7, 7], [1, 0, 0], [0, 0, 1], [0, 0, 1]]
74
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
75
+ lof = LocalOutlierFactor(n_neighbors=2)
76
+ result = lof.fit_predict(X)
77
+ result = _as_numpy(result)
78
+ assert hasattr(lof, "_onedal_estimator")
79
+ assert "sklearnex" in lof.__module__
80
+ assert_allclose(result, [-1, 1, 1, 1])
@@ -0,0 +1,17 @@
1
+ # ==============================================================================
2
+ # Copyright 2023 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ __all__ = ["covariance", "decomposition", "linear_model"]