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,543 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ # Copyright 2024 Fujitsu Limited
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ # ==============================================================================
17
+
18
+ import os
19
+ import sys
20
+ from functools import lru_cache
21
+
22
+ from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
23
+
24
+
25
+ def _is_new_patching_available():
26
+ return os.environ.get("OFF_ONEDAL_IFACE", "0") == "0" and daal_check_version(
27
+ (2021, "P", 300)
28
+ )
29
+
30
+
31
+ def _is_preview_enabled():
32
+ return os.environ.get("SKLEARNEX_PREVIEW") is not None
33
+
34
+
35
+ @lru_cache(maxsize=None)
36
+ def get_patch_map_core(preview=False):
37
+ if preview:
38
+ # use recursion to guarantee that state of preview
39
+ # and non-preview maps are done at the same time.
40
+ # The two lru_cache dicts are actually one underneath.
41
+ # Preview is always secondary. Both sklearnex patch
42
+ # maps are referring to the daal4py dict unless the
43
+ # key has been replaced. Use with caution.
44
+ mapping = get_patch_map_core().copy()
45
+
46
+ if _is_new_patching_available():
47
+ import sklearn.covariance as covariance_module
48
+ import sklearn.decomposition as decomposition_module
49
+
50
+ # Preview classes for patching
51
+ from .preview.covariance import (
52
+ EmpiricalCovariance as EmpiricalCovariance_sklearnex,
53
+ )
54
+ from .preview.decomposition import IncrementalPCA as IncrementalPCA_sklearnex
55
+ from .preview.linear_model import Ridge as Ridge_sklearnex
56
+
57
+ # Since the state of the lru_cache without preview cannot be
58
+ # guaranteed to not have already enabled sklearnex algorithms
59
+ # when preview is used, setting the mapping element[1] to None
60
+ # should NOT be done. This may lose track of the unpatched
61
+ # sklearn estimator or function.
62
+ # Covariance
63
+ mapping["empiricalcovariance"] = [
64
+ [
65
+ (
66
+ covariance_module,
67
+ "EmpiricalCovariance",
68
+ EmpiricalCovariance_sklearnex,
69
+ ),
70
+ None,
71
+ ]
72
+ ]
73
+
74
+ # IncrementalPCA
75
+ mapping["incrementalpca"] = [
76
+ [
77
+ (
78
+ decomposition_module,
79
+ "IncrementalPCA",
80
+ IncrementalPCA_sklearnex,
81
+ ),
82
+ None,
83
+ ]
84
+ ]
85
+
86
+ # Ridge
87
+ linear_model_module, _, _ = mapping["ridge"][0][0]
88
+ sklearn_obj = mapping["ridge"][0][1]
89
+ mapping.pop("ridge")
90
+ mapping["ridge"] = [
91
+ [(linear_model_module, "Ridge", Ridge_sklearnex), sklearn_obj]
92
+ ]
93
+
94
+ return mapping
95
+
96
+ from daal4py.sklearn.monkeypatch.dispatcher import _get_map_of_algorithms
97
+
98
+ # NOTE: this is a shallow copy of a dict, modification is dangerous
99
+ mapping = _get_map_of_algorithms().copy()
100
+
101
+ # NOTE: Use of daal4py _get_map_of_algorithms and
102
+ # get_patch_map/get_patch_map_core should not be used concurrently.
103
+ # The setting of elements to None below may cause loss of state
104
+ # when interacting with sklearn. A dictionary key must not be
105
+ # modified but totally replaced, otherwise it will cause chaos.
106
+ # Hence why pop is being used.
107
+ if _is_new_patching_available():
108
+ # Scikit-learn* modules
109
+ import sklearn as base_module
110
+ import sklearn.cluster as cluster_module
111
+ import sklearn.covariance as covariance_module
112
+ import sklearn.decomposition as decomposition_module
113
+ import sklearn.ensemble as ensemble_module
114
+ import sklearn.linear_model as linear_model_module
115
+ import sklearn.manifold as manifold_module
116
+ import sklearn.metrics as metrics_module
117
+ import sklearn.model_selection as model_selection_module
118
+ import sklearn.neighbors as neighbors_module
119
+ import sklearn.svm as svm_module
120
+
121
+ if sklearn_check_version("1.2.1"):
122
+ import sklearn.utils.parallel as parallel_module
123
+ else:
124
+ import sklearn.utils.fixes as parallel_module
125
+
126
+ # Classes and functions for patching
127
+ from ._config import config_context as config_context_sklearnex
128
+ from ._config import get_config as get_config_sklearnex
129
+ from ._config import set_config as set_config_sklearnex
130
+
131
+ if sklearn_check_version("1.2.1"):
132
+ from .utils.parallel import _FuncWrapper as _FuncWrapper_sklearnex
133
+ else:
134
+ from .utils.parallel import _FuncWrapperOld as _FuncWrapper_sklearnex
135
+
136
+ from .cluster import DBSCAN as DBSCAN_sklearnex
137
+ from .cluster import KMeans as KMeans_sklearnex
138
+ from .covariance import (
139
+ IncrementalEmpiricalCovariance as IncrementalEmpiricalCovariance_sklearnex,
140
+ )
141
+ from .decomposition import PCA as PCA_sklearnex
142
+ from .ensemble import ExtraTreesClassifier as ExtraTreesClassifier_sklearnex
143
+ from .ensemble import ExtraTreesRegressor as ExtraTreesRegressor_sklearnex
144
+ from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
145
+ from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
146
+ from .linear_model import ElasticNet as ElasticNet_sklearnex
147
+ from .linear_model import (
148
+ IncrementalLinearRegression as IncrementalLinearRegression_sklearnex,
149
+ )
150
+ from .linear_model import IncrementalRidge as IncrementalRidge_sklearnex
151
+ from .linear_model import Lasso as Lasso_sklearnex
152
+ from .linear_model import LinearRegression as LinearRegression_sklearnex
153
+ from .linear_model import LogisticRegression as LogisticRegression_sklearnex
154
+ from .linear_model import Ridge as Ridge_sklearnex
155
+ from .manifold import TSNE as TSNE_sklearnex
156
+ from .metrics import pairwise_distances as pairwise_distances_sklearnex
157
+ from .metrics import roc_auc_score as roc_auc_score_sklearnex
158
+ from .model_selection import train_test_split as train_test_split_sklearnex
159
+ from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
160
+ from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
161
+ from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
162
+ from .neighbors import NearestNeighbors as NearestNeighbors_sklearnex
163
+ from .svm import SVC as SVC_sklearnex
164
+ from .svm import SVR as SVR_sklearnex
165
+ from .svm import NuSVC as NuSVC_sklearnex
166
+ from .svm import NuSVR as NuSVR_sklearnex
167
+
168
+ # DBSCAN
169
+ mapping.pop("dbscan")
170
+ mapping["dbscan"] = [[(cluster_module, "DBSCAN", DBSCAN_sklearnex), None]]
171
+
172
+ # KMeans
173
+ mapping.pop("kmeans")
174
+ mapping["kmeans"] = [[(cluster_module, "KMeans", KMeans_sklearnex), None]]
175
+
176
+ # PCA
177
+ mapping.pop("pca")
178
+ mapping["pca"] = [[(decomposition_module, "PCA", PCA_sklearnex), None]]
179
+
180
+ # SVM
181
+ mapping.pop("svm")
182
+ mapping.pop("svc")
183
+ mapping["svr"] = [[(svm_module, "SVR", SVR_sklearnex), None]]
184
+ mapping["svc"] = [[(svm_module, "SVC", SVC_sklearnex), None]]
185
+ mapping["nusvr"] = [[(svm_module, "NuSVR", NuSVR_sklearnex), None]]
186
+ mapping["nusvc"] = [[(svm_module, "NuSVC", NuSVC_sklearnex), None]]
187
+
188
+ # ElasticNet
189
+ mapping.pop("elasticnet")
190
+ mapping["elasticnet"] = [
191
+ [
192
+ (
193
+ linear_model_module,
194
+ "ElasticNet",
195
+ ElasticNet_sklearnex,
196
+ ),
197
+ None,
198
+ ]
199
+ ]
200
+
201
+ # Lasso
202
+ mapping.pop("lasso")
203
+ mapping["lasso"] = [
204
+ [
205
+ (
206
+ linear_model_module,
207
+ "Lasso",
208
+ Lasso_sklearnex,
209
+ ),
210
+ None,
211
+ ]
212
+ ]
213
+
214
+ # Linear Regression
215
+ mapping.pop("linear")
216
+ mapping.pop("linearregression")
217
+ mapping["linear"] = [
218
+ [
219
+ (
220
+ linear_model_module,
221
+ "LinearRegression",
222
+ LinearRegression_sklearnex,
223
+ ),
224
+ None,
225
+ ]
226
+ ]
227
+ mapping["linearregression"] = mapping["linear"]
228
+
229
+ # Logistic Regression
230
+
231
+ mapping.pop("logisticregression")
232
+ mapping.pop("log_reg")
233
+ mapping.pop("logistic")
234
+ mapping.pop("_logistic_regression_path")
235
+ mapping["log_reg"] = [
236
+ [
237
+ (
238
+ linear_model_module,
239
+ "LogisticRegression",
240
+ LogisticRegression_sklearnex,
241
+ ),
242
+ None,
243
+ ]
244
+ ]
245
+ mapping["logisticregression"] = mapping["log_reg"]
246
+
247
+ # Ridge
248
+ mapping.pop("ridge")
249
+ mapping["ridge"] = [
250
+ [
251
+ (
252
+ linear_model_module,
253
+ "Ridge",
254
+ Ridge_sklearnex,
255
+ ),
256
+ None,
257
+ ]
258
+ ]
259
+
260
+ # manifold
261
+ mapping.pop("tsne")
262
+ mapping["tsne"] = [
263
+ [
264
+ (manifold_module, "TSNE", TSNE_sklearnex),
265
+ None,
266
+ ]
267
+ ]
268
+
269
+ # metrics
270
+ mapping.pop("distances")
271
+ mapping.pop("roc_auc_score")
272
+ mapping["distances"] = [
273
+ [
274
+ (metrics_module, "pairwise_distances", pairwise_distances_sklearnex),
275
+ None,
276
+ ]
277
+ ]
278
+ mapping["pairwise_distances"] = mapping["distances"]
279
+ mapping["roc_auc_score"] = [
280
+ [
281
+ (metrics_module, "roc_auc_score", roc_auc_score_sklearnex),
282
+ None,
283
+ ]
284
+ ]
285
+
286
+ # model_selection
287
+ mapping.pop("train_test_split")
288
+ mapping["train_test_split"] = [
289
+ [
290
+ (model_selection_module, "train_test_split", train_test_split_sklearnex),
291
+ None,
292
+ ]
293
+ ]
294
+
295
+ # kNN
296
+ mapping.pop("knn_classifier")
297
+ mapping.pop("kneighborsclassifier")
298
+ mapping.pop("knn_regressor")
299
+ mapping.pop("kneighborsregressor")
300
+ mapping.pop("nearest_neighbors")
301
+ mapping.pop("nearestneighbors")
302
+ mapping["knn_classifier"] = [
303
+ [
304
+ (
305
+ neighbors_module,
306
+ "KNeighborsClassifier",
307
+ KNeighborsClassifier_sklearnex,
308
+ ),
309
+ None,
310
+ ]
311
+ ]
312
+ mapping["knn_regressor"] = [
313
+ [
314
+ (
315
+ neighbors_module,
316
+ "KNeighborsRegressor",
317
+ KNeighborsRegressor_sklearnex,
318
+ ),
319
+ None,
320
+ ]
321
+ ]
322
+ mapping["nearest_neighbors"] = [
323
+ [(neighbors_module, "NearestNeighbors", NearestNeighbors_sklearnex), None]
324
+ ]
325
+ mapping["kneighborsclassifier"] = mapping["knn_classifier"]
326
+ mapping["kneighborsregressor"] = mapping["knn_regressor"]
327
+ mapping["nearestneighbors"] = mapping["nearest_neighbors"]
328
+
329
+ # Ensemble
330
+ mapping["extra_trees_classifier"] = [
331
+ [
332
+ (
333
+ ensemble_module,
334
+ "ExtraTreesClassifier",
335
+ ExtraTreesClassifier_sklearnex,
336
+ ),
337
+ None,
338
+ ]
339
+ ]
340
+ mapping["extra_trees_regressor"] = [
341
+ [
342
+ (
343
+ ensemble_module,
344
+ "ExtraTreesRegressor",
345
+ ExtraTreesRegressor_sklearnex,
346
+ ),
347
+ None,
348
+ ]
349
+ ]
350
+ mapping["extratreesclassifier"] = mapping["extra_trees_classifier"]
351
+ mapping["extratreesregressor"] = mapping["extra_trees_regressor"]
352
+ mapping.pop("random_forest_classifier")
353
+ mapping.pop("random_forest_regressor")
354
+ mapping.pop("randomforestclassifier")
355
+ mapping.pop("randomforestregressor")
356
+ mapping["random_forest_classifier"] = [
357
+ [
358
+ (
359
+ ensemble_module,
360
+ "RandomForestClassifier",
361
+ RandomForestClassifier_sklearnex,
362
+ ),
363
+ None,
364
+ ]
365
+ ]
366
+ mapping["random_forest_regressor"] = [
367
+ [
368
+ (
369
+ ensemble_module,
370
+ "RandomForestRegressor",
371
+ RandomForestRegressor_sklearnex,
372
+ ),
373
+ None,
374
+ ]
375
+ ]
376
+ mapping["randomforestclassifier"] = mapping["random_forest_classifier"]
377
+ mapping["randomforestregressor"] = mapping["random_forest_regressor"]
378
+
379
+ # LocalOutlierFactor
380
+ mapping["lof"] = [
381
+ [
382
+ (neighbors_module, "LocalOutlierFactor", LocalOutlierFactor_sklearnex),
383
+ None,
384
+ ]
385
+ ]
386
+ mapping["localoutlierfactor"] = mapping["lof"]
387
+
388
+ # IncrementalEmpiricalCovariance
389
+ mapping["incrementalempiricalcovariance"] = [
390
+ [
391
+ (
392
+ covariance_module,
393
+ "IncrementalEmpiricalCovariance",
394
+ IncrementalEmpiricalCovariance_sklearnex,
395
+ ),
396
+ None,
397
+ ]
398
+ ]
399
+
400
+ # IncrementalLinearRegression
401
+ mapping["incrementallinearregression"] = [
402
+ [
403
+ (
404
+ linear_model_module,
405
+ "IncrementalLinearRegression",
406
+ IncrementalLinearRegression_sklearnex,
407
+ ),
408
+ None,
409
+ ]
410
+ ]
411
+
412
+ if daal_check_version((2024, "P", 600)):
413
+ # IncrementalRidge
414
+ mapping["incrementalridge"] = [
415
+ [
416
+ (
417
+ linear_model_module,
418
+ "IncrementalRidge",
419
+ IncrementalRidge_sklearnex,
420
+ ),
421
+ None,
422
+ ]
423
+ ]
424
+
425
+ # Configs
426
+ mapping["set_config"] = [
427
+ [(base_module, "set_config", set_config_sklearnex), None]
428
+ ]
429
+ mapping["get_config"] = [
430
+ [(base_module, "get_config", get_config_sklearnex), None]
431
+ ]
432
+ mapping["config_context"] = [
433
+ [(base_module, "config_context", config_context_sklearnex), None]
434
+ ]
435
+
436
+ # Necessary for proper work with multiple threads
437
+ mapping["parallel.get_config"] = [
438
+ [(parallel_module, "get_config", get_config_sklearnex), None]
439
+ ]
440
+ mapping["_funcwrapper"] = [
441
+ [(parallel_module, "_FuncWrapper", _FuncWrapper_sklearnex), None]
442
+ ]
443
+ return mapping
444
+
445
+
446
+ # This is necessary to properly cache the patch_map when
447
+ # using preview.
448
+ def get_patch_map():
449
+ preview = _is_preview_enabled()
450
+ return get_patch_map_core(preview=preview)
451
+
452
+
453
+ get_patch_map.cache_clear = get_patch_map_core.cache_clear
454
+
455
+
456
+ get_patch_map.cache_info = get_patch_map_core.cache_info
457
+
458
+
459
+ def get_patch_names():
460
+ return list(get_patch_map().keys())
461
+
462
+
463
+ def patch_sklearn(name=None, verbose=True, global_patch=False, preview=False):
464
+ if preview:
465
+ os.environ["SKLEARNEX_PREVIEW"] = "enabled_via_patch_sklearn"
466
+ if not sklearn_check_version("0.24"):
467
+ raise NotImplementedError(
468
+ "Intel(R) Extension for Scikit-learn* patches apply "
469
+ "for scikit-learn >= 0.24 only ..."
470
+ )
471
+
472
+ if global_patch:
473
+ from sklearnex.glob.dispatcher import patch_sklearn_global
474
+
475
+ patch_sklearn_global(name, verbose)
476
+
477
+ from daal4py.sklearn import patch_sklearn as patch_sklearn_orig
478
+
479
+ if _is_new_patching_available():
480
+ for config in ["set_config", "get_config", "config_context"]:
481
+ patch_sklearn_orig(
482
+ config, verbose=False, deprecation=False, get_map=get_patch_map
483
+ )
484
+ if isinstance(name, list):
485
+ for algorithm in name:
486
+ patch_sklearn_orig(
487
+ algorithm, verbose=False, deprecation=False, get_map=get_patch_map
488
+ )
489
+ else:
490
+ patch_sklearn_orig(name, verbose=False, deprecation=False, get_map=get_patch_map)
491
+
492
+ if verbose and sys.stderr is not None:
493
+ sys.stderr.write(
494
+ "Intel(R) Extension for Scikit-learn* enabled "
495
+ "(https://github.com/intel/scikit-learn-intelex)\n"
496
+ )
497
+
498
+
499
+ def unpatch_sklearn(name=None, global_unpatch=False):
500
+ if global_unpatch:
501
+ from sklearnex.glob.dispatcher import unpatch_sklearn_global
502
+
503
+ unpatch_sklearn_global()
504
+ from daal4py.sklearn import unpatch_sklearn as unpatch_sklearn_orig
505
+
506
+ if isinstance(name, list):
507
+ for algorithm in name:
508
+ unpatch_sklearn_orig(algorithm, get_map=get_patch_map)
509
+ else:
510
+ if _is_new_patching_available():
511
+ for config in ["set_config", "get_config", "config_context"]:
512
+ unpatch_sklearn_orig(config, get_map=get_patch_map)
513
+ unpatch_sklearn_orig(name, get_map=get_patch_map)
514
+ if os.environ.get("SKLEARNEX_PREVIEW") == "enabled_via_patch_sklearn":
515
+ os.environ.pop("SKLEARNEX_PREVIEW")
516
+
517
+
518
+ def sklearn_is_patched(name=None, return_map=False):
519
+ from daal4py.sklearn import sklearn_is_patched as sklearn_is_patched_orig
520
+
521
+ if isinstance(name, list):
522
+ if return_map:
523
+ result = {}
524
+ for algorithm in name:
525
+ result[algorithm] = sklearn_is_patched_orig(
526
+ algorithm, get_map=get_patch_map
527
+ )
528
+ return result
529
+ else:
530
+ is_patched = True
531
+ for algorithm in name:
532
+ is_patched = is_patched and sklearn_is_patched_orig(
533
+ algorithm, get_map=get_patch_map
534
+ )
535
+ return is_patched
536
+ else:
537
+ return sklearn_is_patched_orig(name, get_map=get_patch_map, return_map=return_map)
538
+
539
+
540
+ def is_patched_instance(instance: object) -> bool:
541
+ """Returns True if the `instance` is patched with scikit-learn-intelex"""
542
+ module = getattr(instance, "__module__", "")
543
+ return ("daal4py" in module) or ("sklearnex" in module)