scikit-learn-intelex 2025.4.0__py313-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 (282) hide show
  1. daal4py/__init__.py +73 -0
  2. daal4py/__main__.py +58 -0
  3. daal4py/_daal4py.cpython-313-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-313-x86_64-linux-gnu.so +0 -0
  8. daal4py/sklearn/__init__.py +40 -0
  9. daal4py/sklearn/_n_jobs_support.py +248 -0
  10. daal4py/sklearn/_utils.py +245 -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 +196 -0
  18. daal4py/sklearn/ensemble/GBTDAAL.py +337 -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 +208 -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 +236 -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 +90 -0
  46. daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -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 +696 -0
  59. onedal/__init__.py +83 -0
  60. onedal/_config.py +54 -0
  61. onedal/_device_offload.py +204 -0
  62. onedal/_onedal_py_dpc.cpython-313-x86_64-linux-gnu.so +0 -0
  63. onedal/_onedal_py_host.cpython-313-x86_64-linux-gnu.so +0 -0
  64. onedal/_onedal_py_spmd_dpc.cpython-313-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 +175 -0
  68. onedal/basic_statistics/tests/test_basic_statistics.py +242 -0
  69. onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  70. onedal/basic_statistics/tests/utils.py +50 -0
  71. onedal/cluster/__init__.py +27 -0
  72. onedal/cluster/dbscan.py +105 -0
  73. onedal/cluster/kmeans.py +557 -0
  74. onedal/cluster/kmeans_init.py +112 -0
  75. onedal/cluster/tests/test_dbscan.py +125 -0
  76. onedal/cluster/tests/test_kmeans.py +88 -0
  77. onedal/cluster/tests/test_kmeans_init.py +93 -0
  78. onedal/common/_base.py +38 -0
  79. onedal/common/_estimator_checks.py +47 -0
  80. onedal/common/_mixin.py +62 -0
  81. onedal/common/_policy.py +55 -0
  82. onedal/common/_spmd_policy.py +30 -0
  83. onedal/common/hyperparameters.py +125 -0
  84. onedal/common/tests/test_policy.py +76 -0
  85. onedal/common/tests/test_sycl.py +128 -0
  86. onedal/covariance/__init__.py +20 -0
  87. onedal/covariance/covariance.py +122 -0
  88. onedal/covariance/incremental_covariance.py +161 -0
  89. onedal/covariance/tests/test_covariance.py +50 -0
  90. onedal/covariance/tests/test_incremental_covariance.py +190 -0
  91. onedal/datatypes/__init__.py +19 -0
  92. onedal/datatypes/_data_conversion.py +121 -0
  93. onedal/datatypes/tests/common.py +126 -0
  94. onedal/datatypes/tests/test_data.py +475 -0
  95. onedal/decomposition/__init__.py +20 -0
  96. onedal/decomposition/incremental_pca.py +214 -0
  97. onedal/decomposition/pca.py +186 -0
  98. onedal/decomposition/tests/test_incremental_pca.py +285 -0
  99. onedal/ensemble/__init__.py +29 -0
  100. onedal/ensemble/forest.py +736 -0
  101. onedal/ensemble/tests/test_random_forest.py +97 -0
  102. onedal/linear_model/__init__.py +27 -0
  103. onedal/linear_model/incremental_linear_model.py +292 -0
  104. onedal/linear_model/linear_model.py +325 -0
  105. onedal/linear_model/logistic_regression.py +247 -0
  106. onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  107. onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  108. onedal/linear_model/tests/test_linear_regression.py +259 -0
  109. onedal/linear_model/tests/test_logistic_regression.py +95 -0
  110. onedal/linear_model/tests/test_ridge.py +95 -0
  111. onedal/neighbors/__init__.py +19 -0
  112. onedal/neighbors/neighbors.py +763 -0
  113. onedal/neighbors/tests/test_knn_classification.py +49 -0
  114. onedal/primitives/__init__.py +27 -0
  115. onedal/primitives/get_tree.py +25 -0
  116. onedal/primitives/kernel_functions.py +152 -0
  117. onedal/primitives/tests/test_kernel_functions.py +159 -0
  118. onedal/spmd/__init__.py +25 -0
  119. onedal/spmd/_base.py +30 -0
  120. onedal/spmd/basic_statistics/__init__.py +20 -0
  121. onedal/spmd/basic_statistics/basic_statistics.py +30 -0
  122. onedal/spmd/basic_statistics/incremental_basic_statistics.py +71 -0
  123. onedal/spmd/cluster/__init__.py +28 -0
  124. onedal/spmd/cluster/dbscan.py +23 -0
  125. onedal/spmd/cluster/kmeans.py +56 -0
  126. onedal/spmd/covariance/__init__.py +20 -0
  127. onedal/spmd/covariance/covariance.py +26 -0
  128. onedal/spmd/covariance/incremental_covariance.py +83 -0
  129. onedal/spmd/decomposition/__init__.py +20 -0
  130. onedal/spmd/decomposition/incremental_pca.py +124 -0
  131. onedal/spmd/decomposition/pca.py +26 -0
  132. onedal/spmd/ensemble/__init__.py +19 -0
  133. onedal/spmd/ensemble/forest.py +28 -0
  134. onedal/spmd/linear_model/__init__.py +21 -0
  135. onedal/spmd/linear_model/incremental_linear_model.py +101 -0
  136. onedal/spmd/linear_model/linear_model.py +30 -0
  137. onedal/spmd/linear_model/logistic_regression.py +38 -0
  138. onedal/spmd/neighbors/__init__.py +19 -0
  139. onedal/spmd/neighbors/neighbors.py +75 -0
  140. onedal/svm/__init__.py +19 -0
  141. onedal/svm/svm.py +556 -0
  142. onedal/svm/tests/test_csr_svm.py +351 -0
  143. onedal/svm/tests/test_nusvc.py +204 -0
  144. onedal/svm/tests/test_nusvr.py +210 -0
  145. onedal/svm/tests/test_svc.py +176 -0
  146. onedal/svm/tests/test_svr.py +243 -0
  147. onedal/tests/test_common.py +57 -0
  148. onedal/tests/utils/_dataframes_support.py +162 -0
  149. onedal/tests/utils/_device_selection.py +102 -0
  150. onedal/utils/__init__.py +49 -0
  151. onedal/utils/_array_api.py +81 -0
  152. onedal/utils/_dpep_helpers.py +56 -0
  153. onedal/utils/tests/test_validation.py +142 -0
  154. onedal/utils/validation.py +464 -0
  155. scikit_learn_intelex-2025.4.0.dist-info/LICENSE.txt +202 -0
  156. scikit_learn_intelex-2025.4.0.dist-info/METADATA +190 -0
  157. scikit_learn_intelex-2025.4.0.dist-info/RECORD +282 -0
  158. scikit_learn_intelex-2025.4.0.dist-info/WHEEL +5 -0
  159. scikit_learn_intelex-2025.4.0.dist-info/top_level.txt +3 -0
  160. sklearnex/__init__.py +66 -0
  161. sklearnex/__main__.py +58 -0
  162. sklearnex/_config.py +116 -0
  163. sklearnex/_device_offload.py +126 -0
  164. sklearnex/_utils.py +177 -0
  165. sklearnex/basic_statistics/__init__.py +20 -0
  166. sklearnex/basic_statistics/basic_statistics.py +261 -0
  167. sklearnex/basic_statistics/incremental_basic_statistics.py +352 -0
  168. sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  169. sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
  170. sklearnex/cluster/__init__.py +20 -0
  171. sklearnex/cluster/dbscan.py +197 -0
  172. sklearnex/cluster/k_means.py +397 -0
  173. sklearnex/cluster/tests/test_dbscan.py +38 -0
  174. sklearnex/cluster/tests/test_kmeans.py +157 -0
  175. sklearnex/conftest.py +82 -0
  176. sklearnex/covariance/__init__.py +19 -0
  177. sklearnex/covariance/incremental_covariance.py +405 -0
  178. sklearnex/covariance/tests/test_incremental_covariance.py +287 -0
  179. sklearnex/decomposition/__init__.py +19 -0
  180. sklearnex/decomposition/pca.py +427 -0
  181. sklearnex/decomposition/tests/test_pca.py +58 -0
  182. sklearnex/dispatcher.py +534 -0
  183. sklearnex/doc/third-party-programs.txt +424 -0
  184. sklearnex/ensemble/__init__.py +29 -0
  185. sklearnex/ensemble/_forest.py +2029 -0
  186. sklearnex/ensemble/tests/test_forest.py +140 -0
  187. sklearnex/glob/__main__.py +72 -0
  188. sklearnex/glob/dispatcher.py +101 -0
  189. sklearnex/linear_model/__init__.py +32 -0
  190. sklearnex/linear_model/coordinate_descent.py +30 -0
  191. sklearnex/linear_model/incremental_linear.py +495 -0
  192. sklearnex/linear_model/incremental_ridge.py +432 -0
  193. sklearnex/linear_model/linear.py +346 -0
  194. sklearnex/linear_model/logistic_regression.py +415 -0
  195. sklearnex/linear_model/ridge.py +390 -0
  196. sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  197. sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  198. sklearnex/linear_model/tests/test_linear.py +142 -0
  199. sklearnex/linear_model/tests/test_logreg.py +134 -0
  200. sklearnex/linear_model/tests/test_ridge.py +256 -0
  201. sklearnex/manifold/__init__.py +19 -0
  202. sklearnex/manifold/t_sne.py +26 -0
  203. sklearnex/manifold/tests/test_tsne.py +250 -0
  204. sklearnex/metrics/__init__.py +23 -0
  205. sklearnex/metrics/pairwise.py +22 -0
  206. sklearnex/metrics/ranking.py +20 -0
  207. sklearnex/metrics/tests/test_metrics.py +39 -0
  208. sklearnex/model_selection/__init__.py +21 -0
  209. sklearnex/model_selection/split.py +22 -0
  210. sklearnex/model_selection/tests/test_model_selection.py +34 -0
  211. sklearnex/neighbors/__init__.py +27 -0
  212. sklearnex/neighbors/_lof.py +236 -0
  213. sklearnex/neighbors/common.py +310 -0
  214. sklearnex/neighbors/knn_classification.py +231 -0
  215. sklearnex/neighbors/knn_regression.py +207 -0
  216. sklearnex/neighbors/knn_unsupervised.py +178 -0
  217. sklearnex/neighbors/tests/test_neighbors.py +82 -0
  218. sklearnex/preview/__init__.py +17 -0
  219. sklearnex/preview/covariance/__init__.py +19 -0
  220. sklearnex/preview/covariance/covariance.py +142 -0
  221. sklearnex/preview/covariance/tests/test_covariance.py +66 -0
  222. sklearnex/preview/decomposition/__init__.py +19 -0
  223. sklearnex/preview/decomposition/incremental_pca.py +244 -0
  224. sklearnex/preview/decomposition/tests/test_incremental_pca.py +336 -0
  225. sklearnex/spmd/__init__.py +25 -0
  226. sklearnex/spmd/basic_statistics/__init__.py +20 -0
  227. sklearnex/spmd/basic_statistics/basic_statistics.py +21 -0
  228. sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  229. sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  230. sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +306 -0
  231. sklearnex/spmd/cluster/__init__.py +30 -0
  232. sklearnex/spmd/cluster/dbscan.py +50 -0
  233. sklearnex/spmd/cluster/kmeans.py +21 -0
  234. sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  235. sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +173 -0
  236. sklearnex/spmd/covariance/__init__.py +20 -0
  237. sklearnex/spmd/covariance/covariance.py +21 -0
  238. sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  239. sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  240. sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  241. sklearnex/spmd/decomposition/__init__.py +20 -0
  242. sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  243. sklearnex/spmd/decomposition/pca.py +21 -0
  244. sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  245. sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  246. sklearnex/spmd/ensemble/__init__.py +19 -0
  247. sklearnex/spmd/ensemble/forest.py +71 -0
  248. sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  249. sklearnex/spmd/linear_model/__init__.py +21 -0
  250. sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
  251. sklearnex/spmd/linear_model/linear_model.py +21 -0
  252. sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  253. sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +331 -0
  254. sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  255. sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  256. sklearnex/spmd/neighbors/__init__.py +19 -0
  257. sklearnex/spmd/neighbors/neighbors.py +25 -0
  258. sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  259. sklearnex/svm/__init__.py +29 -0
  260. sklearnex/svm/_common.py +339 -0
  261. sklearnex/svm/nusvc.py +371 -0
  262. sklearnex/svm/nusvr.py +170 -0
  263. sklearnex/svm/svc.py +399 -0
  264. sklearnex/svm/svr.py +167 -0
  265. sklearnex/svm/tests/test_svm.py +93 -0
  266. sklearnex/tests/test_common.py +491 -0
  267. sklearnex/tests/test_config.py +123 -0
  268. sklearnex/tests/test_hyperparameters.py +43 -0
  269. sklearnex/tests/test_memory_usage.py +347 -0
  270. sklearnex/tests/test_monkeypatch.py +269 -0
  271. sklearnex/tests/test_n_jobs_support.py +108 -0
  272. sklearnex/tests/test_parallel.py +48 -0
  273. sklearnex/tests/test_patching.py +377 -0
  274. sklearnex/tests/test_run_to_run_stability.py +326 -0
  275. sklearnex/tests/utils/__init__.py +48 -0
  276. sklearnex/tests/utils/base.py +436 -0
  277. sklearnex/tests/utils/spmd.py +198 -0
  278. sklearnex/utils/__init__.py +19 -0
  279. sklearnex/utils/_array_api.py +82 -0
  280. sklearnex/utils/parallel.py +59 -0
  281. sklearnex/utils/tests/test_validation.py +238 -0
  282. sklearnex/utils/validation.py +208 -0
@@ -0,0 +1,56 @@
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
+ from onedal.cluster import KMeans as KMeans_Batch
18
+ from onedal.cluster import KMeansInit as KMeansInit_Batch
19
+ from onedal.spmd.basic_statistics import BasicStatistics
20
+
21
+ from ..._device_offload import support_input_format
22
+ from .._base import BaseEstimatorSPMD
23
+
24
+
25
+ class KMeansInit(BaseEstimatorSPMD, KMeansInit_Batch):
26
+ """
27
+ KMeansInit oneDAL implementation for SPMD iface.
28
+ """
29
+
30
+ pass
31
+
32
+
33
+ class KMeans(BaseEstimatorSPMD, KMeans_Batch):
34
+ def _get_basic_statistics_backend(self, result_options):
35
+ return BasicStatistics(result_options)
36
+
37
+ def _get_kmeans_init(self, cluster_count, seed, algorithm):
38
+ return KMeansInit(cluster_count=cluster_count, seed=seed, algorithm=algorithm)
39
+
40
+ @support_input_format()
41
+ def fit(self, X, y=None, queue=None):
42
+ return super().fit(X, queue=queue)
43
+
44
+ @support_input_format()
45
+ def predict(self, X, queue=None):
46
+ return super().predict(X, queue=queue)
47
+
48
+ @support_input_format()
49
+ def fit_predict(self, X, y=None, queue=None):
50
+ return super().fit_predict(X, queue=queue)
51
+
52
+ def transform(self, X):
53
+ return super().transform(X)
54
+
55
+ def fit_transform(self, X, queue=None):
56
+ return super().fit_transform(X, queue=queue)
@@ -0,0 +1,20 @@
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
+ from .covariance import EmpiricalCovariance
18
+ from .incremental_covariance import IncrementalEmpiricalCovariance
19
+
20
+ __all__ = ["EmpiricalCovariance", "IncrementalEmpiricalCovariance"]
@@ -0,0 +1,26 @@
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
+ from onedal.covariance import EmpiricalCovariance as EmpiricalCovariance_Batch
18
+
19
+ from ..._device_offload import support_input_format
20
+ from .._base import BaseEstimatorSPMD
21
+
22
+
23
+ class EmpiricalCovariance(BaseEstimatorSPMD, EmpiricalCovariance_Batch):
24
+ @support_input_format()
25
+ def fit(self, X, y=None, queue=None):
26
+ return super().fit(X, queue=queue)
@@ -0,0 +1,83 @@
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 numpy as np
18
+
19
+ from daal4py.sklearn._utils import get_dtype
20
+
21
+ from ...covariance import (
22
+ IncrementalEmpiricalCovariance as base_IncrementalEmpiricalCovariance,
23
+ )
24
+ from ...datatypes import to_table
25
+ from ...utils import _check_array
26
+ from .._base import BaseEstimatorSPMD
27
+
28
+
29
+ class IncrementalEmpiricalCovariance(
30
+ BaseEstimatorSPMD, base_IncrementalEmpiricalCovariance
31
+ ):
32
+ def _reset(self):
33
+ self._need_to_finalize = False
34
+ self._partial_result = super(
35
+ base_IncrementalEmpiricalCovariance, self
36
+ )._get_backend("covariance", None, "partial_compute_result")
37
+
38
+ def partial_fit(self, X, y=None, queue=None):
39
+ """
40
+ Computes partial data for the covariance matrix
41
+ from data batch X and saves it to `_partial_result`.
42
+
43
+ Parameters
44
+ ----------
45
+ X : array-like of shape (n_samples, n_features)
46
+ Training data batch, where `n_samples` is the number of samples
47
+ in the batch, and `n_features` is the number of features.
48
+
49
+ y : Ignored
50
+ Not used, present for API consistency by convention.
51
+
52
+ queue : dpctl.SyclQueue
53
+ If not None, use this queue for computations.
54
+
55
+ Returns
56
+ -------
57
+ self : object
58
+ Returns the instance itself.
59
+ """
60
+ X = _check_array(X, dtype=[np.float64, np.float32], ensure_2d=True)
61
+
62
+ self._queue = queue
63
+
64
+ policy = super(base_IncrementalEmpiricalCovariance, self)._get_policy(queue, X)
65
+
66
+ X_table = to_table(X, queue=queue)
67
+
68
+ if not hasattr(self, "_dtype"):
69
+ self._dtype = X_table.dtype
70
+
71
+ params = self._get_onedal_params(self._dtype)
72
+ self._partial_result = super(
73
+ base_IncrementalEmpiricalCovariance, self
74
+ )._get_backend(
75
+ "covariance",
76
+ None,
77
+ "partial_compute",
78
+ policy,
79
+ params,
80
+ self._partial_result,
81
+ X_table,
82
+ )
83
+ self._need_to_finalize = True
@@ -0,0 +1,20 @@
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
+ from .incremental_pca import IncrementalPCA
18
+ from .pca import PCA
19
+
20
+ __all__ = ["IncrementalPCA", "PCA"]
@@ -0,0 +1,124 @@
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
+ from daal4py.sklearn._utils import get_dtype
18
+
19
+ from ...datatypes import from_table, to_table
20
+ from ...decomposition import IncrementalPCA as base_IncrementalPCA
21
+ from ...utils import _check_array
22
+ from .._base import BaseEstimatorSPMD
23
+
24
+
25
+ class IncrementalPCA(BaseEstimatorSPMD, base_IncrementalPCA):
26
+ """
27
+ Distributed incremental estimator for PCA based on oneDAL implementation.
28
+ Allows for distributed PCA computation if data is split into batches.
29
+
30
+ API is the same as for `onedal.decomposition.IncrementalPCA`
31
+ """
32
+
33
+ def _reset(self):
34
+ self._need_to_finalize = False
35
+ self._partial_result = super(base_IncrementalPCA, self)._get_backend(
36
+ "decomposition", "dim_reduction", "partial_train_result"
37
+ )
38
+ if hasattr(self, "components_"):
39
+ del self.components_
40
+
41
+ def partial_fit(self, X, y=None, queue=None):
42
+ """Incremental fit with X. All of X is processed as a single batch.
43
+
44
+ Parameters
45
+ ----------
46
+ X : array-like of shape (n_samples, n_features)
47
+ Training data, where `n_samples` is the number of samples and
48
+ `n_features` is the number of features.
49
+
50
+ y : Ignored
51
+ Not used, present for API consistency by convention.
52
+
53
+ Returns
54
+ -------
55
+ self : object
56
+ Returns the instance itself.
57
+ """
58
+ X = _check_array(X)
59
+ n_samples, n_features = X.shape
60
+
61
+ first_pass = not hasattr(self, "components_")
62
+ if first_pass:
63
+ self.components_ = None
64
+ self.n_samples_seen_ = n_samples
65
+ self.n_features_in_ = n_features
66
+ else:
67
+ self.n_samples_seen_ += n_samples
68
+
69
+ if self.n_components is None:
70
+ if self.components_ is None:
71
+ self.n_components_ = min(n_samples, n_features)
72
+ else:
73
+ self.n_components_ = self.components_.shape[0]
74
+ else:
75
+ self.n_components_ = self.n_components
76
+
77
+ self._queue = queue
78
+
79
+ policy = super(base_IncrementalPCA, self)._get_policy(queue, X)
80
+ X_table = to_table(X, queue=queue)
81
+
82
+ if not hasattr(self, "_dtype"):
83
+ self._dtype = X_table.dtype
84
+ self._params = self._get_onedal_params(X_table)
85
+
86
+ self._partial_result = super(base_IncrementalPCA, self)._get_backend(
87
+ "decomposition",
88
+ "dim_reduction",
89
+ "partial_train",
90
+ policy,
91
+ self._params,
92
+ self._partial_result,
93
+ X_table,
94
+ )
95
+ self._need_to_finalize = True
96
+ return self
97
+
98
+ def _create_model(self):
99
+ m = super(base_IncrementalPCA, self)._get_backend(
100
+ "decomposition", "dim_reduction", "model"
101
+ )
102
+ m.eigenvectors = to_table(self.components_)
103
+ m.means = to_table(self.mean_)
104
+ if self.whiten:
105
+ m.eigenvalues = to_table(self.explained_variance_)
106
+ self._onedal_model = m
107
+ return m
108
+
109
+ def predict(self, X, queue=None):
110
+ policy = super(base_IncrementalPCA, self)._get_policy(queue, X)
111
+ model = self._create_model()
112
+ X = to_table(X, queue=queue)
113
+ params = self._get_onedal_params(X, stage="predict")
114
+
115
+ result = super(base_IncrementalPCA, self)._get_backend(
116
+ "decomposition",
117
+ "dim_reduction",
118
+ "infer",
119
+ policy,
120
+ params,
121
+ model,
122
+ X,
123
+ )
124
+ return from_table(result.transformed_data)
@@ -0,0 +1,26 @@
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
+ from onedal.decomposition.pca import PCA as PCABatch
18
+
19
+ from ..._device_offload import support_input_format
20
+ from .._base import BaseEstimatorSPMD
21
+
22
+
23
+ class PCA(BaseEstimatorSPMD, PCABatch):
24
+ @support_input_format()
25
+ def fit(self, X, y=None, queue=None):
26
+ return super().fit(X, queue=queue)
@@ -0,0 +1,19 @@
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
+ from .forest import RandomForestClassifier, RandomForestRegressor
18
+
19
+ __all__ = ["RandomForestClassifier", "RandomForestRegressor"]
@@ -0,0 +1,28 @@
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
+ from onedal.ensemble import RandomForestClassifier as RandomForestClassifier_Batch
18
+ from onedal.ensemble import RandomForestRegressor as RandomForestRegressor_Batch
19
+
20
+ from .._base import BaseEstimatorSPMD
21
+
22
+
23
+ class RandomForestClassifier(BaseEstimatorSPMD, RandomForestClassifier_Batch):
24
+ pass
25
+
26
+
27
+ class RandomForestRegressor(BaseEstimatorSPMD, RandomForestRegressor_Batch):
28
+ pass
@@ -0,0 +1,21 @@
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
+ from .incremental_linear_model import IncrementalLinearRegression
18
+ from .linear_model import LinearRegression
19
+ from .logistic_regression import LogisticRegression
20
+
21
+ __all__ = ["IncrementalLinearRegression", "LinearRegression", "LogisticRegression"]
@@ -0,0 +1,101 @@
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 numpy as np
18
+
19
+ from daal4py.sklearn._utils import get_dtype
20
+
21
+ from ...common.hyperparameters import get_hyperparameters
22
+ from ...datatypes import to_table
23
+ from ...linear_model import (
24
+ IncrementalLinearRegression as base_IncrementalLinearRegression,
25
+ )
26
+ from ...utils import _check_X_y, _num_features
27
+ from .._base import BaseEstimatorSPMD
28
+
29
+
30
+ class IncrementalLinearRegression(BaseEstimatorSPMD, base_IncrementalLinearRegression):
31
+ """
32
+ Distributed incremental Linear Regression oneDAL implementation.
33
+
34
+ API is the same as for `onedal.linear_model.IncrementalLinearRegression`.
35
+ """
36
+
37
+ def _reset(self):
38
+ self._need_to_finalize = False
39
+ self._partial_result = super(base_IncrementalLinearRegression, self)._get_backend(
40
+ "linear_model", "regression", "partial_train_result"
41
+ )
42
+
43
+ def partial_fit(self, X, y, queue=None):
44
+ """
45
+ Computes partial data for linear regression
46
+ from data batch X and saves it to `_partial_result`.
47
+ Parameters
48
+ ----------
49
+ X : array-like of shape (n_samples, n_features)
50
+ Training data batch, where `n_samples` is the number of samples
51
+ in the batch, and `n_features` is the number of features.
52
+
53
+ y: array-like of shape (n_samples,) or (n_samples, n_targets) in
54
+ case of multiple targets
55
+ Responses for training data.
56
+
57
+ queue : dpctl.SyclQueue
58
+ If not None, use this queue for computations.
59
+ Returns
60
+ -------
61
+ self : object
62
+ Returns the instance itself.
63
+ """
64
+ module = super(base_IncrementalLinearRegression, self)._get_backend(
65
+ "linear_model", "regression"
66
+ )
67
+
68
+ self._queue = queue
69
+ policy = super(base_IncrementalLinearRegression, self)._get_policy(queue, X)
70
+
71
+ X, y = _check_X_y(
72
+ X, y, dtype=[np.float64, np.float32], accept_2d_y=True, force_all_finite=False
73
+ )
74
+
75
+ X_table, y_table = to_table(X, y, queue=queue)
76
+
77
+ if not hasattr(self, "_dtype"):
78
+ self._dtype = X_table.dtype
79
+ self._params = self._get_onedal_params(self._dtype)
80
+
81
+ y = np.asarray(y, dtype=self._dtype)
82
+
83
+ self.n_features_in_ = _num_features(X, fallback_1d=True)
84
+
85
+ hparams = get_hyperparameters("linear_regression", "train")
86
+ if hparams is not None and not hparams.is_default:
87
+ self._partial_result = module.partial_train(
88
+ policy,
89
+ self._params,
90
+ hparams.backend,
91
+ self._partial_result,
92
+ X_table,
93
+ y_table,
94
+ )
95
+ else:
96
+ self._partial_result = module.partial_train(
97
+ policy, self._params, self._partial_result, X_table, y_table
98
+ )
99
+
100
+ self._need_to_finalize = True
101
+ return self
@@ -0,0 +1,30 @@
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
+ from onedal.linear_model import LinearRegression as LinearRegression_Batch
18
+
19
+ from ..._device_offload import support_input_format
20
+ from .._base import BaseEstimatorSPMD
21
+
22
+
23
+ class LinearRegression(BaseEstimatorSPMD, LinearRegression_Batch):
24
+ @support_input_format()
25
+ def fit(self, X, y, queue=None):
26
+ return super().fit(X, y, queue=queue)
27
+
28
+ @support_input_format()
29
+ def predict(self, X, queue=None):
30
+ return super().predict(X, queue=queue)
@@ -0,0 +1,38 @@
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
+ from onedal.linear_model import LogisticRegression as LogisticRegression_Batch
18
+
19
+ from ..._device_offload import support_input_format
20
+ from .._base import BaseEstimatorSPMD
21
+
22
+
23
+ class LogisticRegression(BaseEstimatorSPMD, LogisticRegression_Batch):
24
+ @support_input_format()
25
+ def fit(self, X, y, queue=None):
26
+ return super().fit(X, y, queue=queue)
27
+
28
+ @support_input_format()
29
+ def predict(self, X, queue=None):
30
+ return super().predict(X, queue=queue)
31
+
32
+ @support_input_format()
33
+ def predict_proba(self, X, queue=None):
34
+ return super().predict_proba(X, queue=queue)
35
+
36
+ @support_input_format()
37
+ def predict_log_proba(self, X, queue=None):
38
+ return super().predict_log_proba(X, queue=queue)
@@ -0,0 +1,19 @@
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
+ from .neighbors import KNeighborsClassifier, KNeighborsRegressor, NearestNeighbors
18
+
19
+ __all__ = ["KNeighborsClassifier", "KNeighborsRegressor", "NearestNeighbors"]