scikit-learn-intelex 2025.0.0__py39-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-39-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-39-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-39-x86_64-linux-gnu.so +0 -0
  63. onedal/_onedal_py_host.cpython-39-x86_64-linux-gnu.so +0 -0
  64. onedal/_onedal_py_spmd_dpc.cpython-39-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,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,82 @@
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 _convert_to_supported, 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._partial_result = super(
34
+ base_IncrementalEmpiricalCovariance, self
35
+ )._get_backend("covariance", None, "partial_compute_result")
36
+
37
+ def partial_fit(self, X, y=None, queue=None):
38
+ """
39
+ Computes partial data for the covariance matrix
40
+ from data batch X and saves it to `_partial_result`.
41
+
42
+ Parameters
43
+ ----------
44
+ X : array-like of shape (n_samples, n_features)
45
+ Training data batch, where `n_samples` is the number of samples
46
+ in the batch, and `n_features` is the number of features.
47
+
48
+ y : Ignored
49
+ Not used, present for API consistency by convention.
50
+
51
+ queue : dpctl.SyclQueue
52
+ If not None, use this queue for computations.
53
+
54
+ Returns
55
+ -------
56
+ self : object
57
+ Returns the instance itself.
58
+ """
59
+ X = _check_array(X, dtype=[np.float64, np.float32], ensure_2d=True)
60
+
61
+ self._queue = queue
62
+
63
+ policy = super(base_IncrementalEmpiricalCovariance, self)._get_policy(queue, X)
64
+
65
+ X = _convert_to_supported(policy, X)
66
+
67
+ if not hasattr(self, "_dtype"):
68
+ self._dtype = get_dtype(X)
69
+
70
+ params = self._get_onedal_params(self._dtype)
71
+ table_X = to_table(X)
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
+ table_X,
82
+ )
@@ -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,117 @@
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 _convert_to_supported, 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._partial_result = super(base_IncrementalPCA, self)._get_backend(
35
+ "decomposition", "dim_reduction", "partial_train_result"
36
+ )
37
+ if hasattr(self, "components_"):
38
+ del self.components_
39
+
40
+ def partial_fit(self, X, y=None, queue=None):
41
+ """Incremental fit with X. All of X is processed as a single batch.
42
+
43
+ Parameters
44
+ ----------
45
+ X : array-like of shape (n_samples, n_features)
46
+ Training data, where `n_samples` is the number of samples and
47
+ `n_features` is the number of features.
48
+
49
+ y : Ignored
50
+ Not used, present for API consistency by convention.
51
+
52
+ Returns
53
+ -------
54
+ self : object
55
+ Returns the instance itself.
56
+ """
57
+ X = _check_array(X)
58
+ n_samples, n_features = X.shape
59
+
60
+ first_pass = not hasattr(self, "components_")
61
+ if first_pass:
62
+ self.components_ = None
63
+ self.n_samples_seen_ = n_samples
64
+ self.n_features_in_ = n_features
65
+ else:
66
+ self.n_samples_seen_ += n_samples
67
+
68
+ if self.n_components is None:
69
+ if self.components_ is None:
70
+ self.n_components_ = min(n_samples, n_features)
71
+ else:
72
+ self.n_components_ = self.components_.shape[0]
73
+ else:
74
+ self.n_components_ = self.n_components
75
+
76
+ self._queue = queue
77
+
78
+ policy = super(base_IncrementalPCA, self)._get_policy(queue, X)
79
+ X = _convert_to_supported(policy, X)
80
+
81
+ if not hasattr(self, "_dtype"):
82
+ self._dtype = get_dtype(X)
83
+ self._params = self._get_onedal_params(X)
84
+
85
+ X_table = to_table(X)
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
+ return self
96
+
97
+ def _create_model(self):
98
+ m = super(base_IncrementalPCA, self)._get_backend(
99
+ "decomposition", "dim_reduction", "model"
100
+ )
101
+ m.eigenvectors = to_table(self.components_)
102
+ m.means = to_table(self.mean_)
103
+ if self.whiten:
104
+ m.eigenvalues = to_table(self.explained_variance_)
105
+ self._onedal_model = m
106
+ return m
107
+
108
+ def predict(self, X, queue=None):
109
+ policy = super(base_IncrementalPCA, self)._get_policy(queue, X)
110
+ model = self._create_model()
111
+ X = _convert_to_supported(policy, X)
112
+ params = self._get_onedal_params(X, stage="predict")
113
+
114
+ result = super(base_IncrementalPCA, self)._get_backend(
115
+ "decomposition", "dim_reduction", "infer", policy, params, model, to_table(X)
116
+ )
117
+ 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,97 @@
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 _convert_to_supported, 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._partial_result = super(base_IncrementalLinearRegression, self)._get_backend(
39
+ "linear_model", "regression", "partial_train_result"
40
+ )
41
+
42
+ def partial_fit(self, X, y, queue=None):
43
+ """
44
+ Computes partial data for linear regression
45
+ from data batch X and saves it to `_partial_result`.
46
+ Parameters
47
+ ----------
48
+ X : array-like of shape (n_samples, n_features)
49
+ Training data batch, where `n_samples` is the number of samples
50
+ in the batch, and `n_features` is the number of features.
51
+
52
+ y: array-like of shape (n_samples,) or (n_samples, n_targets) in
53
+ case of multiple targets
54
+ Responses for training data.
55
+
56
+ queue : dpctl.SyclQueue
57
+ If not None, use this queue for computations.
58
+ Returns
59
+ -------
60
+ self : object
61
+ Returns the instance itself.
62
+ """
63
+ module = super(base_IncrementalLinearRegression, self)._get_backend(
64
+ "linear_model", "regression"
65
+ )
66
+
67
+ self._queue = queue
68
+ policy = super(base_IncrementalLinearRegression, self)._get_policy(queue, X)
69
+
70
+ X, y = _convert_to_supported(policy, X, y)
71
+
72
+ if not hasattr(self, "_dtype"):
73
+ self._dtype = get_dtype(X)
74
+ self._params = self._get_onedal_params(self._dtype)
75
+
76
+ y = np.asarray(y, dtype=self._dtype)
77
+
78
+ X, y = _check_X_y(
79
+ X, y, dtype=[np.float64, np.float32], accept_2d_y=True, force_all_finite=False
80
+ )
81
+
82
+ self.n_features_in_ = _num_features(X, fallback_1d=True)
83
+ X_table, y_table = to_table(X, y)
84
+ hparams = get_hyperparameters("linear_regression", "train")
85
+ if hparams is not None and not hparams.is_default:
86
+ self._partial_result = module.partial_train(
87
+ policy,
88
+ self._params,
89
+ hparams.backend,
90
+ self._partial_result,
91
+ X_table,
92
+ y_table,
93
+ )
94
+ else:
95
+ self._partial_result = module.partial_train(
96
+ policy, self._params, self._partial_result, X_table, y_table
97
+ )
@@ -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"]