scikit-learn-intelex 2025.0.0__py312-none-manylinux_2_28_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of scikit-learn-intelex might be problematic. Click here for more details.

Files changed (278) hide show
  1. daal4py/__init__.py +73 -0
  2. daal4py/__main__.py +58 -0
  3. daal4py/_daal4py.cpython-312-x86_64-linux-gnu.so +0 -0
  4. daal4py/doc/third-party-programs.txt +424 -0
  5. daal4py/mb/__init__.py +19 -0
  6. daal4py/mb/model_builders.py +377 -0
  7. daal4py/mpi_transceiver.cpython-312-x86_64-linux-gnu.so +0 -0
  8. daal4py/sklearn/__init__.py +40 -0
  9. daal4py/sklearn/_n_jobs_support.py +242 -0
  10. daal4py/sklearn/_utils.py +241 -0
  11. daal4py/sklearn/cluster/__init__.py +20 -0
  12. daal4py/sklearn/cluster/dbscan.py +165 -0
  13. daal4py/sklearn/cluster/k_means.py +597 -0
  14. daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. daal4py/sklearn/decomposition/__init__.py +19 -0
  16. daal4py/sklearn/decomposition/_pca.py +524 -0
  17. daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
  18. daal4py/sklearn/ensemble/GBTDAAL.py +318 -0
  19. daal4py/sklearn/ensemble/__init__.py +27 -0
  20. daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. daal4py/sklearn/linear_model/__init__.py +29 -0
  23. daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. daal4py/sklearn/linear_model/_linear.py +272 -0
  25. daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  27. daal4py/sklearn/linear_model/linear.py +17 -0
  28. daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. daal4py/sklearn/linear_model/ridge.py +17 -0
  31. daal4py/sklearn/linear_model/tests/test_linear.py +196 -0
  32. daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. daal4py/sklearn/manifold/__init__.py +19 -0
  34. daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. daal4py/sklearn/metrics/__init__.py +20 -0
  36. daal4py/sklearn/metrics/_pairwise.py +155 -0
  37. daal4py/sklearn/metrics/_ranking.py +210 -0
  38. daal4py/sklearn/model_selection/__init__.py +19 -0
  39. daal4py/sklearn/model_selection/_split.py +309 -0
  40. daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. daal4py/sklearn/monkeypatch/tests/_models_info.py +161 -0
  44. daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. daal4py/sklearn/monkeypatch/tests/test_patching.py +87 -0
  46. daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +118 -0
  47. daal4py/sklearn/neighbors/__init__.py +21 -0
  48. daal4py/sklearn/neighbors/_base.py +503 -0
  49. daal4py/sklearn/neighbors/_classification.py +139 -0
  50. daal4py/sklearn/neighbors/_regression.py +74 -0
  51. daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. daal4py/sklearn/svm/__init__.py +19 -0
  54. daal4py/sklearn/svm/svm.py +734 -0
  55. daal4py/sklearn/utils/__init__.py +21 -0
  56. daal4py/sklearn/utils/base.py +75 -0
  57. daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. daal4py/sklearn/utils/validation.py +693 -0
  59. onedal/__init__.py +83 -0
  60. onedal/_config.py +53 -0
  61. onedal/_device_offload.py +229 -0
  62. onedal/_onedal_py_dpc.cpython-312-x86_64-linux-gnu.so +0 -0
  63. onedal/_onedal_py_host.cpython-312-x86_64-linux-gnu.so +0 -0
  64. onedal/_onedal_py_spmd_dpc.cpython-312-x86_64-linux-gnu.so +0 -0
  65. onedal/basic_statistics/__init__.py +20 -0
  66. onedal/basic_statistics/basic_statistics.py +107 -0
  67. onedal/basic_statistics/incremental_basic_statistics.py +160 -0
  68. onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
  69. onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
  70. onedal/cluster/__init__.py +27 -0
  71. onedal/cluster/dbscan.py +110 -0
  72. onedal/cluster/kmeans.py +560 -0
  73. onedal/cluster/kmeans_init.py +115 -0
  74. onedal/cluster/tests/test_dbscan.py +125 -0
  75. onedal/cluster/tests/test_kmeans.py +88 -0
  76. onedal/cluster/tests/test_kmeans_init.py +93 -0
  77. onedal/common/_base.py +38 -0
  78. onedal/common/_estimator_checks.py +47 -0
  79. onedal/common/_mixin.py +62 -0
  80. onedal/common/_policy.py +59 -0
  81. onedal/common/_spmd_policy.py +30 -0
  82. onedal/common/hyperparameters.py +116 -0
  83. onedal/common/tests/test_policy.py +75 -0
  84. onedal/covariance/__init__.py +20 -0
  85. onedal/covariance/covariance.py +125 -0
  86. onedal/covariance/incremental_covariance.py +146 -0
  87. onedal/covariance/tests/test_covariance.py +50 -0
  88. onedal/covariance/tests/test_incremental_covariance.py +122 -0
  89. onedal/datatypes/__init__.py +19 -0
  90. onedal/datatypes/_data_conversion.py +95 -0
  91. onedal/datatypes/tests/test_data.py +235 -0
  92. onedal/decomposition/__init__.py +20 -0
  93. onedal/decomposition/incremental_pca.py +204 -0
  94. onedal/decomposition/pca.py +186 -0
  95. onedal/decomposition/tests/test_incremental_pca.py +198 -0
  96. onedal/ensemble/__init__.py +29 -0
  97. onedal/ensemble/forest.py +720 -0
  98. onedal/ensemble/tests/test_random_forest.py +97 -0
  99. onedal/linear_model/__init__.py +27 -0
  100. onedal/linear_model/incremental_linear_model.py +258 -0
  101. onedal/linear_model/linear_model.py +329 -0
  102. onedal/linear_model/logistic_regression.py +249 -0
  103. onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
  104. onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
  105. onedal/linear_model/tests/test_linear_regression.py +149 -0
  106. onedal/linear_model/tests/test_logistic_regression.py +95 -0
  107. onedal/linear_model/tests/test_ridge.py +95 -0
  108. onedal/neighbors/__init__.py +19 -0
  109. onedal/neighbors/neighbors.py +778 -0
  110. onedal/neighbors/tests/test_knn_classification.py +49 -0
  111. onedal/primitives/__init__.py +27 -0
  112. onedal/primitives/get_tree.py +25 -0
  113. onedal/primitives/kernel_functions.py +153 -0
  114. onedal/primitives/tests/test_kernel_functions.py +159 -0
  115. onedal/spmd/__init__.py +25 -0
  116. onedal/spmd/_base.py +30 -0
  117. onedal/spmd/basic_statistics/__init__.py +20 -0
  118. onedal/spmd/basic_statistics/basic_statistics.py +30 -0
  119. onedal/spmd/basic_statistics/incremental_basic_statistics.py +69 -0
  120. onedal/spmd/cluster/__init__.py +28 -0
  121. onedal/spmd/cluster/dbscan.py +23 -0
  122. onedal/spmd/cluster/kmeans.py +56 -0
  123. onedal/spmd/covariance/__init__.py +20 -0
  124. onedal/spmd/covariance/covariance.py +26 -0
  125. onedal/spmd/covariance/incremental_covariance.py +82 -0
  126. onedal/spmd/decomposition/__init__.py +20 -0
  127. onedal/spmd/decomposition/incremental_pca.py +117 -0
  128. onedal/spmd/decomposition/pca.py +26 -0
  129. onedal/spmd/ensemble/__init__.py +19 -0
  130. onedal/spmd/ensemble/forest.py +28 -0
  131. onedal/spmd/linear_model/__init__.py +21 -0
  132. onedal/spmd/linear_model/incremental_linear_model.py +97 -0
  133. onedal/spmd/linear_model/linear_model.py +30 -0
  134. onedal/spmd/linear_model/logistic_regression.py +38 -0
  135. onedal/spmd/neighbors/__init__.py +19 -0
  136. onedal/spmd/neighbors/neighbors.py +75 -0
  137. onedal/svm/__init__.py +19 -0
  138. onedal/svm/svm.py +556 -0
  139. onedal/svm/tests/test_csr_svm.py +351 -0
  140. onedal/svm/tests/test_nusvc.py +204 -0
  141. onedal/svm/tests/test_nusvr.py +210 -0
  142. onedal/svm/tests/test_svc.py +168 -0
  143. onedal/svm/tests/test_svr.py +243 -0
  144. onedal/tests/test_common.py +41 -0
  145. onedal/tests/utils/_dataframes_support.py +168 -0
  146. onedal/tests/utils/_device_selection.py +107 -0
  147. onedal/utils/__init__.py +49 -0
  148. onedal/utils/_array_api.py +91 -0
  149. onedal/utils/validation.py +432 -0
  150. scikit_learn_intelex-2025.0.0.dist-info/LICENSE.txt +202 -0
  151. scikit_learn_intelex-2025.0.0.dist-info/METADATA +231 -0
  152. scikit_learn_intelex-2025.0.0.dist-info/RECORD +278 -0
  153. scikit_learn_intelex-2025.0.0.dist-info/WHEEL +5 -0
  154. scikit_learn_intelex-2025.0.0.dist-info/top_level.txt +3 -0
  155. sklearnex/__init__.py +65 -0
  156. sklearnex/__main__.py +58 -0
  157. sklearnex/_config.py +98 -0
  158. sklearnex/_device_offload.py +121 -0
  159. sklearnex/_utils.py +109 -0
  160. sklearnex/basic_statistics/__init__.py +20 -0
  161. sklearnex/basic_statistics/basic_statistics.py +140 -0
  162. sklearnex/basic_statistics/incremental_basic_statistics.py +288 -0
  163. sklearnex/basic_statistics/tests/test_basic_statistics.py +251 -0
  164. sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +384 -0
  165. sklearnex/cluster/__init__.py +20 -0
  166. sklearnex/cluster/dbscan.py +192 -0
  167. sklearnex/cluster/k_means.py +383 -0
  168. sklearnex/cluster/tests/test_dbscan.py +38 -0
  169. sklearnex/cluster/tests/test_kmeans.py +153 -0
  170. sklearnex/conftest.py +73 -0
  171. sklearnex/covariance/__init__.py +19 -0
  172. sklearnex/covariance/incremental_covariance.py +368 -0
  173. sklearnex/covariance/tests/test_incremental_covariance.py +226 -0
  174. sklearnex/decomposition/__init__.py +19 -0
  175. sklearnex/decomposition/pca.py +414 -0
  176. sklearnex/decomposition/tests/test_pca.py +58 -0
  177. sklearnex/dispatcher.py +543 -0
  178. sklearnex/doc/third-party-programs.txt +424 -0
  179. sklearnex/ensemble/__init__.py +29 -0
  180. sklearnex/ensemble/_forest.py +2016 -0
  181. sklearnex/ensemble/tests/test_forest.py +120 -0
  182. sklearnex/glob/__main__.py +72 -0
  183. sklearnex/glob/dispatcher.py +101 -0
  184. sklearnex/linear_model/__init__.py +32 -0
  185. sklearnex/linear_model/coordinate_descent.py +30 -0
  186. sklearnex/linear_model/incremental_linear.py +463 -0
  187. sklearnex/linear_model/incremental_ridge.py +418 -0
  188. sklearnex/linear_model/linear.py +302 -0
  189. sklearnex/linear_model/logistic_path.py +17 -0
  190. sklearnex/linear_model/logistic_regression.py +403 -0
  191. sklearnex/linear_model/ridge.py +24 -0
  192. sklearnex/linear_model/tests/test_incremental_linear.py +203 -0
  193. sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
  194. sklearnex/linear_model/tests/test_linear.py +142 -0
  195. sklearnex/linear_model/tests/test_logreg.py +134 -0
  196. sklearnex/manifold/__init__.py +19 -0
  197. sklearnex/manifold/t_sne.py +21 -0
  198. sklearnex/manifold/tests/test_tsne.py +26 -0
  199. sklearnex/metrics/__init__.py +23 -0
  200. sklearnex/metrics/pairwise.py +22 -0
  201. sklearnex/metrics/ranking.py +20 -0
  202. sklearnex/metrics/tests/test_metrics.py +39 -0
  203. sklearnex/model_selection/__init__.py +21 -0
  204. sklearnex/model_selection/split.py +22 -0
  205. sklearnex/model_selection/tests/test_model_selection.py +34 -0
  206. sklearnex/neighbors/__init__.py +27 -0
  207. sklearnex/neighbors/_lof.py +231 -0
  208. sklearnex/neighbors/common.py +310 -0
  209. sklearnex/neighbors/knn_classification.py +226 -0
  210. sklearnex/neighbors/knn_regression.py +203 -0
  211. sklearnex/neighbors/knn_unsupervised.py +170 -0
  212. sklearnex/neighbors/tests/test_neighbors.py +80 -0
  213. sklearnex/preview/__init__.py +17 -0
  214. sklearnex/preview/covariance/__init__.py +19 -0
  215. sklearnex/preview/covariance/covariance.py +133 -0
  216. sklearnex/preview/covariance/tests/test_covariance.py +66 -0
  217. sklearnex/preview/decomposition/__init__.py +19 -0
  218. sklearnex/preview/decomposition/incremental_pca.py +228 -0
  219. sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
  220. sklearnex/preview/linear_model/__init__.py +19 -0
  221. sklearnex/preview/linear_model/ridge.py +419 -0
  222. sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  223. sklearnex/spmd/__init__.py +25 -0
  224. sklearnex/spmd/basic_statistics/__init__.py +20 -0
  225. sklearnex/spmd/basic_statistics/basic_statistics.py +21 -0
  226. sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  227. sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  228. sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
  229. sklearnex/spmd/cluster/__init__.py +30 -0
  230. sklearnex/spmd/cluster/dbscan.py +50 -0
  231. sklearnex/spmd/cluster/kmeans.py +21 -0
  232. sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  233. sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  234. sklearnex/spmd/covariance/__init__.py +20 -0
  235. sklearnex/spmd/covariance/covariance.py +21 -0
  236. sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  237. sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  238. sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  239. sklearnex/spmd/decomposition/__init__.py +20 -0
  240. sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  241. sklearnex/spmd/decomposition/pca.py +21 -0
  242. sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  243. sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  244. sklearnex/spmd/ensemble/__init__.py +19 -0
  245. sklearnex/spmd/ensemble/forest.py +71 -0
  246. sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  247. sklearnex/spmd/linear_model/__init__.py +21 -0
  248. sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
  249. sklearnex/spmd/linear_model/linear_model.py +21 -0
  250. sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  251. sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
  252. sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  253. sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +166 -0
  254. sklearnex/spmd/neighbors/__init__.py +19 -0
  255. sklearnex/spmd/neighbors/neighbors.py +25 -0
  256. sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  257. sklearnex/svm/__init__.py +29 -0
  258. sklearnex/svm/_common.py +328 -0
  259. sklearnex/svm/nusvc.py +332 -0
  260. sklearnex/svm/nusvr.py +148 -0
  261. sklearnex/svm/svc.py +360 -0
  262. sklearnex/svm/svr.py +149 -0
  263. sklearnex/svm/tests/test_svm.py +93 -0
  264. sklearnex/tests/_utils.py +328 -0
  265. sklearnex/tests/_utils_spmd.py +198 -0
  266. sklearnex/tests/test_common.py +54 -0
  267. sklearnex/tests/test_config.py +43 -0
  268. sklearnex/tests/test_memory_usage.py +291 -0
  269. sklearnex/tests/test_monkeypatch.py +276 -0
  270. sklearnex/tests/test_n_jobs_support.py +103 -0
  271. sklearnex/tests/test_parallel.py +48 -0
  272. sklearnex/tests/test_patching.py +385 -0
  273. sklearnex/tests/test_run_to_run_stability.py +296 -0
  274. sklearnex/utils/__init__.py +19 -0
  275. sklearnex/utils/_array_api.py +82 -0
  276. sklearnex/utils/parallel.py +59 -0
  277. sklearnex/utils/tests/test_finite.py +89 -0
  278. sklearnex/utils/validation.py +17 -0
@@ -0,0 +1,210 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal
20
+ from sklearn import datasets
21
+ from sklearn.metrics.pairwise import rbf_kernel
22
+ from sklearn.svm import NuSVR as SklearnNuSVR
23
+
24
+ from onedal.svm import NuSVR
25
+ from onedal.tests.utils._device_selection import (
26
+ get_queues,
27
+ pass_if_not_implemented_for_gpu,
28
+ )
29
+
30
+ synth_params = {"n_samples": 500, "n_features": 100, "random_state": 42}
31
+
32
+
33
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
34
+ @pytest.mark.parametrize("queue", get_queues())
35
+ def test_diabetes_simple(queue):
36
+ diabetes = datasets.load_diabetes()
37
+ clf = NuSVR(kernel="linear", C=10.0)
38
+ clf.fit(diabetes.data, diabetes.target, queue=queue)
39
+ assert clf.score(diabetes.data, diabetes.target, queue=queue) > 0.02
40
+
41
+
42
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
43
+ @pytest.mark.parametrize("queue", get_queues())
44
+ def test_input_format_for_diabetes(queue):
45
+ diabetes = datasets.load_diabetes()
46
+
47
+ c_contiguous_numpy = np.asanyarray(diabetes.data, dtype="float", order="C")
48
+ assert c_contiguous_numpy.flags.c_contiguous
49
+ assert not c_contiguous_numpy.flags.f_contiguous
50
+ assert not c_contiguous_numpy.flags.fnc
51
+
52
+ clf = NuSVR(kernel="linear", C=10.0)
53
+ clf.fit(c_contiguous_numpy, diabetes.target, queue=queue)
54
+ dual_c_contiguous_numpy = clf.dual_coef_
55
+ res_c_contiguous_numpy = clf.predict(c_contiguous_numpy, queue=queue)
56
+
57
+ f_contiguous_numpy = np.asanyarray(diabetes.data, dtype="float", order="F")
58
+ assert not f_contiguous_numpy.flags.c_contiguous
59
+ assert f_contiguous_numpy.flags.f_contiguous
60
+ assert f_contiguous_numpy.flags.fnc
61
+
62
+ clf = NuSVR(kernel="linear", C=10.0)
63
+ clf.fit(f_contiguous_numpy, diabetes.target, queue=queue)
64
+ dual_f_contiguous_numpy = clf.dual_coef_
65
+ res_f_contiguous_numpy = clf.predict(f_contiguous_numpy, queue=queue)
66
+ assert_allclose(dual_c_contiguous_numpy, dual_f_contiguous_numpy)
67
+ assert_allclose(res_c_contiguous_numpy, res_f_contiguous_numpy)
68
+
69
+
70
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
71
+ @pytest.mark.parametrize("queue", get_queues())
72
+ def test_predict(queue):
73
+ iris = datasets.load_iris()
74
+ X = iris.data
75
+ y = iris.target
76
+
77
+ reg = NuSVR(kernel="linear", C=0.1).fit(X, y, queue=queue)
78
+
79
+ linear = np.dot(X, reg.support_vectors_.T)
80
+ dec = np.dot(linear, reg.dual_coef_.T) + reg.intercept_
81
+ assert_array_almost_equal(dec.ravel(), reg.predict(X, queue=queue).ravel())
82
+
83
+ reg = NuSVR(kernel="rbf", gamma=1).fit(X, y, queue=queue)
84
+
85
+ rbfs = rbf_kernel(X, reg.support_vectors_, gamma=reg.gamma)
86
+ dec = np.dot(rbfs, reg.dual_coef_.T) + reg.intercept_
87
+ assert_array_almost_equal(dec.ravel(), reg.predict(X, queue=queue).ravel())
88
+
89
+
90
+ def _test_diabetes_compare_with_sklearn(queue, kernel):
91
+ diabetes = datasets.load_diabetes()
92
+ clf_onedal = NuSVR(kernel=kernel, nu=0.25, C=10.0)
93
+ clf_onedal.fit(diabetes.data, diabetes.target, queue=queue)
94
+ result = clf_onedal.score(diabetes.data, diabetes.target, queue=queue)
95
+
96
+ clf_sklearn = SklearnNuSVR(kernel=kernel, nu=0.25, C=10.0)
97
+ clf_sklearn.fit(diabetes.data, diabetes.target)
98
+ expected = clf_sklearn.score(diabetes.data, diabetes.target)
99
+
100
+ assert result > expected - 1e-5
101
+ assert_allclose(clf_sklearn.intercept_, clf_onedal.intercept_, atol=1e-3)
102
+ assert_allclose(
103
+ clf_sklearn.support_vectors_.shape, clf_sklearn.support_vectors_.shape
104
+ )
105
+ assert_allclose(clf_sklearn.dual_coef_, clf_onedal.dual_coef_, atol=1e-2)
106
+
107
+
108
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
109
+ @pytest.mark.parametrize("queue", get_queues())
110
+ @pytest.mark.parametrize("kernel", ["linear", "rbf", "poly", "sigmoid"])
111
+ def test_diabetes_compare_with_sklearn(queue, kernel):
112
+ if kernel == "sigmoid":
113
+ pytest.skip("Sparse sigmoid kernel function is buggy.")
114
+ _test_diabetes_compare_with_sklearn(queue, kernel)
115
+
116
+
117
+ def _test_synth_rbf_compare_with_sklearn(queue, C, nu, gamma):
118
+ x, y = datasets.make_regression(**synth_params)
119
+
120
+ clf = NuSVR(kernel="rbf", gamma=gamma, C=C, nu=nu)
121
+ clf.fit(x, y, queue=queue)
122
+ result = clf.score(x, y, queue=queue)
123
+
124
+ clf = SklearnNuSVR(kernel="rbf", gamma=gamma, C=C, nu=nu)
125
+ clf.fit(x, y)
126
+ expected = clf.score(x, y)
127
+
128
+ assert result > 0.4
129
+ assert abs(result - expected) < 1e-3
130
+
131
+
132
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
133
+ @pytest.mark.parametrize("queue", get_queues())
134
+ @pytest.mark.parametrize("gamma", ["scale", "auto"])
135
+ @pytest.mark.parametrize("C", [100.0, 1000.0])
136
+ @pytest.mark.parametrize("nu", [0.25, 0.75])
137
+ def test_synth_rbf_compare_with_sklearn(queue, C, nu, gamma):
138
+ _test_synth_rbf_compare_with_sklearn(queue, C, nu, gamma)
139
+
140
+
141
+ def _test_synth_linear_compare_with_sklearn(queue, C, nu):
142
+ x, y = datasets.make_regression(**synth_params)
143
+
144
+ clf = NuSVR(kernel="linear", C=C, nu=nu)
145
+ clf.fit(x, y, queue=queue)
146
+ result = clf.score(x, y, queue=queue)
147
+
148
+ clf = SklearnNuSVR(kernel="linear", C=C, nu=nu)
149
+ clf.fit(x, y)
150
+ expected = clf.score(x, y)
151
+
152
+ # Linear kernel doesn't work well for synthetic regression
153
+ # resulting in low R2 score
154
+ # assert result > 0.5
155
+ assert abs(result - expected) < 1e-3
156
+
157
+
158
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
159
+ @pytest.mark.parametrize("queue", get_queues())
160
+ @pytest.mark.parametrize("C", [0.001, 0.1])
161
+ @pytest.mark.parametrize("nu", [0.25, 0.75])
162
+ def test_synth_linear_compare_with_sklearn(queue, C, nu):
163
+ _test_synth_linear_compare_with_sklearn(queue, C, nu)
164
+
165
+
166
+ def _test_synth_poly_compare_with_sklearn(queue, params):
167
+ x, y = datasets.make_regression(**synth_params)
168
+
169
+ clf = NuSVR(kernel="poly", **params)
170
+ clf.fit(x, y, queue=queue)
171
+ result = clf.score(x, y, queue=queue)
172
+
173
+ clf = SklearnNuSVR(kernel="poly", **params)
174
+ clf.fit(x, y)
175
+ expected = clf.score(x, y)
176
+
177
+ assert result > 0.5
178
+ assert abs(result - expected) < 1e-3
179
+
180
+
181
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
182
+ @pytest.mark.parametrize("queue", get_queues())
183
+ @pytest.mark.parametrize(
184
+ "params",
185
+ [
186
+ {"degree": 2, "coef0": 0.1, "gamma": "scale", "C": 100, "nu": 0.25},
187
+ {"degree": 3, "coef0": 0.0, "gamma": "scale", "C": 1000, "nu": 0.75},
188
+ ],
189
+ )
190
+ def test_synth_poly_compare_with_sklearn(queue, params):
191
+ _test_synth_poly_compare_with_sklearn(queue, params)
192
+
193
+
194
+ @pass_if_not_implemented_for_gpu(reason="nusvr is not implemented")
195
+ @pytest.mark.parametrize("queue", get_queues())
196
+ def test_pickle(queue):
197
+ diabetes = datasets.load_diabetes()
198
+
199
+ clf = NuSVR(kernel="rbf", C=10.0)
200
+ clf.fit(diabetes.data, diabetes.target, queue=queue)
201
+ expected = clf.predict(diabetes.data, queue=queue)
202
+
203
+ import pickle
204
+
205
+ dump = pickle.dumps(clf)
206
+ clf2 = pickle.loads(dump)
207
+
208
+ assert type(clf2) == clf.__class__
209
+ result = clf2.predict(diabetes.data, queue=queue)
210
+ assert_array_equal(expected, result)
@@ -0,0 +1,168 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ import sklearn.utils.estimator_checks
20
+ from numpy.testing import assert_array_almost_equal, assert_array_equal
21
+ from sklearn import datasets
22
+ from sklearn.datasets import make_blobs
23
+ from sklearn.metrics.pairwise import rbf_kernel
24
+ from sklearn.model_selection import train_test_split
25
+
26
+ from onedal.svm import SVC
27
+ from onedal.tests.utils._device_selection import (
28
+ get_queues,
29
+ pass_if_not_implemented_for_gpu,
30
+ )
31
+
32
+
33
+ def _test_libsvm_parameters(queue, array_constr, dtype):
34
+ X = array_constr([[-2, -1], [-1, -1], [-1, -2], [1, 1], [1, 2], [2, 1]], dtype=dtype)
35
+ y = array_constr([1, 1, 1, 2, 2, 2], dtype=dtype)
36
+
37
+ clf = SVC(kernel="linear").fit(X, y, queue=queue)
38
+ assert_array_equal(clf.dual_coef_, [[-0.25, 0.25]])
39
+ assert_array_equal(clf.support_, [1, 3])
40
+ assert_array_equal(clf.support_vectors_, (X[1], X[3]))
41
+ assert_array_equal(clf.intercept_, [0.0])
42
+ assert_array_equal(clf.predict(X), y)
43
+
44
+
45
+ @pytest.mark.parametrize("queue", get_queues())
46
+ @pytest.mark.parametrize("array_constr", [np.array])
47
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
48
+ def test_libsvm_parameters(queue, array_constr, dtype):
49
+ if queue and queue.sycl_device.is_gpu:
50
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
51
+ _test_libsvm_parameters(queue, array_constr, dtype)
52
+
53
+
54
+ @pass_if_not_implemented_for_gpu(reason="class weights are not implemented")
55
+ @pytest.mark.parametrize(
56
+ "queue",
57
+ get_queues("cpu")
58
+ + [
59
+ pytest.param(
60
+ get_queues("gpu"),
61
+ marks=pytest.mark.xfail(
62
+ reason="class weights are not implemented " "but the error is not raised"
63
+ ),
64
+ )
65
+ ],
66
+ )
67
+ def test_class_weight(queue):
68
+ X = np.array([[-2, -1], [-1, -1], [-1, -2], [1, 1], [1, 2], [2, 1]])
69
+ y = np.array([1, 1, 1, 2, 2, 2])
70
+
71
+ clf = SVC(class_weight={1: 0.1})
72
+ clf.fit(X, y, queue=queue)
73
+ assert_array_almost_equal(clf.predict(X, queue=queue), [2] * 6)
74
+
75
+
76
+ @pytest.mark.parametrize("queue", get_queues())
77
+ def test_sample_weight(queue):
78
+ if queue and queue.sycl_device.is_gpu:
79
+ pytest.skip("Sporadic failures on GPU sycl_queue.")
80
+ X = np.array([[-2, 0], [-1, -1], [0, -2], [0, 2], [1, 1], [2, 2]])
81
+ y = np.array([1, 1, 1, 2, 2, 2])
82
+
83
+ clf = SVC(kernel="linear")
84
+ clf.fit(X, y, sample_weight=[1] * 6, queue=queue)
85
+ assert_array_almost_equal(clf.intercept_, [0.0])
86
+
87
+
88
+ @pytest.mark.parametrize("queue", get_queues())
89
+ def test_decision_function(queue):
90
+ X = np.array([[-2, -1], [-1, -1], [-1, -2], [1, 1], [1, 2], [2, 1]], dtype=np.float32)
91
+ Y = np.array([1, 1, 1, 2, 2, 2], dtype=np.float32)
92
+
93
+ clf = SVC(kernel="rbf", gamma=1, decision_function_shape="ovo")
94
+ clf.fit(X, Y, queue=queue)
95
+
96
+ rbfs = rbf_kernel(X, clf.support_vectors_, gamma=clf.gamma)
97
+ dec = np.dot(rbfs, clf.dual_coef_.T) + clf.intercept_
98
+ assert_array_almost_equal(dec.ravel(), clf.decision_function(X, queue=queue))
99
+
100
+
101
+ @pass_if_not_implemented_for_gpu(reason="multiclass svm is not implemented")
102
+ @pytest.mark.parametrize("queue", get_queues())
103
+ def test_iris(queue):
104
+ iris = datasets.load_iris()
105
+ clf = SVC(kernel="linear").fit(iris.data, iris.target, queue=queue)
106
+ assert clf.score(iris.data, iris.target, queue=queue) > 0.9
107
+ assert_array_equal(clf.classes_, np.sort(clf.classes_))
108
+
109
+
110
+ @pass_if_not_implemented_for_gpu(reason="multiclass svm is not implemented")
111
+ @pytest.mark.parametrize("queue", get_queues())
112
+ def test_decision_function_shape(queue):
113
+ X, y = make_blobs(n_samples=80, centers=5, random_state=0)
114
+ X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
115
+
116
+ # check shape of ovo_decition_function=True
117
+ clf = SVC(kernel="linear", decision_function_shape="ovo").fit(
118
+ X_train, y_train, queue=queue
119
+ )
120
+ dec = clf.decision_function(X_train, queue=queue)
121
+ assert dec.shape == (len(X_train), 10)
122
+
123
+ with pytest.raises(ValueError, match="must be either 'ovr' or 'ovo'"):
124
+ SVC(decision_function_shape="bad").fit(X_train, y_train, queue=queue)
125
+
126
+
127
+ @pass_if_not_implemented_for_gpu(reason="multiclass svm is not implemented")
128
+ @pytest.mark.parametrize("queue", get_queues())
129
+ def test_pickle(queue):
130
+ iris = datasets.load_iris()
131
+ clf = SVC(kernel="linear").fit(iris.data, iris.target, queue=queue)
132
+ expected = clf.decision_function(iris.data, queue=queue)
133
+
134
+ import pickle
135
+
136
+ dump = pickle.dumps(clf)
137
+ clf2 = pickle.loads(dump)
138
+
139
+ assert type(clf2) == clf.__class__
140
+ result = clf2.decision_function(iris.data, queue=queue)
141
+ assert_array_equal(expected, result)
142
+
143
+
144
+ @pass_if_not_implemented_for_gpu(reason="sigmoid kernel is not implemented")
145
+ @pytest.mark.parametrize(
146
+ "queue",
147
+ get_queues("cpu")
148
+ + [
149
+ pytest.param(
150
+ get_queues("gpu"),
151
+ marks=pytest.mark.xfail(
152
+ reason="raises Unimplemented error " "with inconsistent error message"
153
+ ),
154
+ )
155
+ ],
156
+ )
157
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
158
+ def test_svc_sigmoid(queue, dtype):
159
+ X_train = np.array(
160
+ [[-1, 2], [0, 0], [2, -1], [+1, +1], [+1, +2], [+2, +1]], dtype=dtype
161
+ )
162
+ X_test = np.array([[0, 2], [0.5, 0.5], [0.3, 0.1], [2, 0], [-1, -1]], dtype=dtype)
163
+ y_train = np.array([1, 1, 1, 2, 2, 2], dtype=dtype)
164
+ svc = SVC(kernel="sigmoid").fit(X_train, y_train, queue=queue)
165
+
166
+ assert_array_equal(svc.dual_coef_, [[-1, -1, -1, 1, 1, 1]])
167
+ assert_array_equal(svc.support_, [0, 1, 2, 3, 4, 5])
168
+ assert_array_equal(svc.predict(X_test, queue=queue), [2, 2, 1, 2, 1])
@@ -0,0 +1,243 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal
20
+ from sklearn import datasets
21
+ from sklearn.metrics.pairwise import rbf_kernel
22
+ from sklearn.svm import SVR as SklearnSVR
23
+
24
+ from onedal.svm import SVR
25
+ from onedal.tests.utils._device_selection import (
26
+ get_queues,
27
+ pass_if_not_implemented_for_gpu,
28
+ )
29
+
30
+ synth_params = {"n_samples": 500, "n_features": 100, "random_state": 42}
31
+
32
+
33
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
34
+ @pytest.mark.parametrize("queue", get_queues())
35
+ def test_run_to_run_fit(queue):
36
+ diabetes = datasets.load_diabetes()
37
+ clf_first = SVR(kernel="linear", C=10.0)
38
+ clf_first.fit(diabetes.data, diabetes.target, queue=queue)
39
+
40
+ for _ in range(10):
41
+ clf = SVR(kernel="linear", C=10.0)
42
+ clf.fit(diabetes.data, diabetes.target, queue=queue)
43
+ assert_allclose(clf_first.intercept_, clf.intercept_)
44
+ assert_allclose(clf_first.support_vectors_, clf.support_vectors_)
45
+ assert_allclose(clf_first.dual_coef_, clf.dual_coef_)
46
+
47
+
48
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
49
+ @pytest.mark.parametrize("queue", get_queues())
50
+ def test_diabetes_simple(queue):
51
+ diabetes = datasets.load_diabetes()
52
+ clf = SVR(kernel="linear", C=10.0)
53
+ clf.fit(diabetes.data, diabetes.target, queue=queue)
54
+ assert clf.score(diabetes.data, diabetes.target, queue=queue) > 0.02
55
+
56
+
57
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
58
+ @pytest.mark.parametrize("queue", get_queues())
59
+ def test_input_format_for_diabetes(queue):
60
+ diabetes = datasets.load_diabetes()
61
+
62
+ c_contiguous_numpy = np.asanyarray(diabetes.data, dtype="float", order="C")
63
+ assert c_contiguous_numpy.flags.c_contiguous
64
+ assert not c_contiguous_numpy.flags.f_contiguous
65
+ assert not c_contiguous_numpy.flags.fnc
66
+
67
+ clf = SVR(kernel="linear", C=10.0)
68
+ clf.fit(c_contiguous_numpy, diabetes.target, queue=queue)
69
+ dual_c_contiguous_numpy = clf.dual_coef_
70
+ res_c_contiguous_numpy = clf.predict(c_contiguous_numpy, queue=queue)
71
+
72
+ f_contiguous_numpy = np.asanyarray(diabetes.data, dtype="float", order="F")
73
+ assert not f_contiguous_numpy.flags.c_contiguous
74
+ assert f_contiguous_numpy.flags.f_contiguous
75
+ assert f_contiguous_numpy.flags.fnc
76
+
77
+ clf = SVR(kernel="linear", C=10.0)
78
+ clf.fit(f_contiguous_numpy, diabetes.target, queue=queue)
79
+ dual_f_contiguous_numpy = clf.dual_coef_
80
+ res_f_contiguous_numpy = clf.predict(f_contiguous_numpy, queue=queue)
81
+ assert_allclose(dual_c_contiguous_numpy, dual_f_contiguous_numpy)
82
+ assert_allclose(res_c_contiguous_numpy, res_f_contiguous_numpy)
83
+
84
+
85
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
86
+ @pytest.mark.parametrize("queue", get_queues())
87
+ def test_predict(queue):
88
+ iris = datasets.load_iris()
89
+ X = iris.data
90
+ y = iris.target
91
+
92
+ reg = SVR(kernel="linear", C=0.1).fit(X, y, queue=queue)
93
+
94
+ linear = np.dot(X, reg.support_vectors_.T)
95
+ dec = np.dot(linear, reg.dual_coef_.T) + reg.intercept_
96
+ assert_array_almost_equal(dec.ravel(), reg.predict(X, queue=queue).ravel())
97
+
98
+ reg = SVR(kernel="rbf", gamma=1).fit(X, y, queue=queue)
99
+
100
+ rbfs = rbf_kernel(X, reg.support_vectors_, gamma=reg.gamma)
101
+ dec = np.dot(rbfs, reg.dual_coef_.T) + reg.intercept_
102
+ assert_array_almost_equal(dec.ravel(), reg.predict(X, queue=queue).ravel())
103
+
104
+
105
+ def _test_diabetes_compare_with_sklearn(queue, kernel):
106
+ diabetes = datasets.load_diabetes()
107
+ clf_onedal = SVR(kernel=kernel, C=10.0, gamma=2)
108
+ clf_onedal.fit(diabetes.data, diabetes.target, queue=queue)
109
+ result = clf_onedal.score(diabetes.data, diabetes.target, queue=queue)
110
+
111
+ clf_sklearn = SklearnSVR(kernel=kernel, C=10.0, gamma=2)
112
+ clf_sklearn.fit(diabetes.data, diabetes.target)
113
+ expected = clf_sklearn.score(diabetes.data, diabetes.target)
114
+
115
+ assert result > expected - 1e-5
116
+ assert_allclose(clf_sklearn.intercept_, clf_onedal.intercept_, atol=1e-3)
117
+ assert_allclose(
118
+ clf_sklearn.support_vectors_.shape, clf_sklearn.support_vectors_.shape
119
+ )
120
+ assert_allclose(clf_sklearn.dual_coef_, clf_onedal.dual_coef_, atol=1e-1)
121
+
122
+
123
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
124
+ @pytest.mark.parametrize("queue", get_queues())
125
+ @pytest.mark.parametrize("kernel", ["linear", "rbf", "poly", "sigmoid"])
126
+ def test_diabetes_compare_with_sklearn(queue, kernel):
127
+ if kernel == "sigmoid":
128
+ pytest.skip("Sparse sigmoid kernel function is buggy.")
129
+ _test_diabetes_compare_with_sklearn(queue, kernel)
130
+
131
+
132
+ def _test_synth_rbf_compare_with_sklearn(queue, C, gamma):
133
+ x, y = datasets.make_regression(**synth_params)
134
+ clf = SVR(kernel="rbf", gamma=gamma, C=C)
135
+ clf.fit(x, y, queue=queue)
136
+ result = clf.score(x, y, queue=queue)
137
+
138
+ clf = SklearnSVR(kernel="rbf", gamma=gamma, C=C)
139
+ clf.fit(x, y)
140
+ expected = clf.score(x, y)
141
+
142
+ assert result > 0.4
143
+ assert result > expected - 1e-5
144
+
145
+
146
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
147
+ @pytest.mark.parametrize("queue", get_queues())
148
+ @pytest.mark.parametrize("gamma", ["scale", "auto"])
149
+ @pytest.mark.parametrize("C", [100.0, 1000.0])
150
+ def test_synth_rbf_compare_with_sklearn(queue, C, gamma):
151
+ _test_synth_rbf_compare_with_sklearn(queue, C, gamma)
152
+
153
+
154
+ def _test_synth_linear_compare_with_sklearn(queue, C):
155
+ x, y = datasets.make_regression(**synth_params)
156
+ clf = SVR(kernel="linear", C=C)
157
+ clf.fit(x, y, queue=queue)
158
+ result = clf.score(x, y, queue=queue)
159
+
160
+ clf = SklearnSVR(kernel="linear", C=C)
161
+ clf.fit(x, y)
162
+ expected = clf.score(x, y)
163
+
164
+ # Linear kernel doesn't work well for synthetic regression
165
+ # resulting in low R2 score
166
+ # assert result > 0.5
167
+ assert result > expected - 1e-3
168
+
169
+
170
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
171
+ @pytest.mark.parametrize("queue", get_queues())
172
+ @pytest.mark.parametrize("C", [0.001, 0.1])
173
+ def test_synth_linear_compare_with_sklearn(queue, C):
174
+ _test_synth_linear_compare_with_sklearn(queue, C)
175
+
176
+
177
+ def _test_synth_poly_compare_with_sklearn(queue, params):
178
+ x, y = datasets.make_regression(**synth_params)
179
+ clf = SVR(kernel="poly", **params)
180
+ clf.fit(x, y, queue=queue)
181
+ result = clf.score(x, y, queue=queue)
182
+
183
+ clf = SklearnSVR(kernel="poly", **params)
184
+ clf.fit(x, y)
185
+ expected = clf.score(x, y)
186
+
187
+ assert result > 0.5
188
+ assert result > expected - 1e-5
189
+
190
+
191
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
192
+ @pytest.mark.parametrize("queue", get_queues())
193
+ @pytest.mark.parametrize(
194
+ "params",
195
+ [
196
+ {"degree": 2, "coef0": 0.1, "gamma": "scale", "C": 100},
197
+ {"degree": 3, "coef0": 0.0, "gamma": "scale", "C": 1000},
198
+ ],
199
+ )
200
+ def test_synth_poly_compare_with_sklearn(queue, params):
201
+ _test_synth_poly_compare_with_sklearn(queue, params)
202
+
203
+
204
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
205
+ @pytest.mark.parametrize("queue", get_queues())
206
+ def test_sided_sample_weight(queue):
207
+ clf = SVR(C=1e-2, kernel="linear")
208
+
209
+ X = [[-2, 0], [-1, -1], [0, -2], [0, 2], [1, 1], [2, 0]]
210
+ Y = [1, 1, 1, 2, 2, 2]
211
+
212
+ sample_weight = [10.0, 0.1, 0.1, 0.1, 0.1, 10]
213
+ clf.fit(X, Y, sample_weight=sample_weight, queue=queue)
214
+ y_pred = clf.predict([[-1.0, 1.0]], queue=queue)
215
+ assert y_pred < 1.5
216
+
217
+ sample_weight = [1.0, 0.1, 10.0, 10.0, 0.1, 0.1]
218
+ clf.fit(X, Y, sample_weight=sample_weight, queue=queue)
219
+ y_pred = clf.predict([[-1.0, 1.0]], queue=queue)
220
+ assert y_pred > 1.5
221
+
222
+ sample_weight = [1] * 6
223
+ clf.fit(X, Y, sample_weight=sample_weight, queue=queue)
224
+ y_pred = clf.predict([[-1.0, 1.0]], queue=queue)
225
+ assert y_pred == pytest.approx(1.5)
226
+
227
+
228
+ @pass_if_not_implemented_for_gpu(reason="svr is not implemented")
229
+ @pytest.mark.parametrize("queue", get_queues())
230
+ def test_pickle(queue):
231
+ diabetes = datasets.load_diabetes()
232
+ clf = SVR(kernel="rbf", C=10.0)
233
+ clf.fit(diabetes.data, diabetes.target, queue=queue)
234
+ expected = clf.predict(diabetes.data, queue=queue)
235
+
236
+ import pickle
237
+
238
+ dump = pickle.dumps(clf)
239
+ clf2 = pickle.loads(dump)
240
+
241
+ assert type(clf2) == clf.__class__
242
+ result = clf2.predict(diabetes.data, queue=queue)
243
+ assert_array_equal(expected, result)
@@ -0,0 +1,41 @@
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 os
18
+ from glob import glob
19
+
20
+ import pytest
21
+
22
+
23
+ def test_sklearn_check_version_ban():
24
+ """This test blocks the use of sklearn_check_version
25
+ in onedal files. The versioning should occur in the
26
+ sklearnex package for clarity and maintainability.
27
+ """
28
+ from onedal import __file__ as loc
29
+
30
+ path = loc.replace("__init__.py", "")
31
+ files = [y for x in os.walk(path) for y in glob(os.path.join(x[0], "*.py"))]
32
+
33
+ output = []
34
+
35
+ for f in files:
36
+ if open(f, "r").read().find("sklearn_check_version") != -1:
37
+ output += [f.replace(path, "onedal" + os.sep)]
38
+
39
+ # remove this file from the list
40
+ output = "\n".join([i for i in output if "test_common.py" not in i])
41
+ assert output == "", f"sklearn versioning is occuring in: \n{output}"