scikit-learn-intelex 2023.2.1__py39-none-win_amd64.whl → 2024.0.1__py39-none-win_amd64.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.
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/__init__.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/__main__.py +16 -12
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/_config.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/_device_offload.py +90 -56
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/_utils.py +95 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +4 -4
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +187 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +12 -6
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +5 -5
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +5 -4
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/dispatcher.py +102 -72
- {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex}/ensemble/__init__.py +12 -4
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1947 -0
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +118 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +31 -16
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +21 -14
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +10 -10
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +2 -2
- {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex}/linear_model/linear.py +173 -83
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +23 -7
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +4 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +4 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +5 -5
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +8 -6
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +6 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +9 -5
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +100 -77
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +331 -0
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +307 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +116 -58
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/lof.py +118 -56
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +85 -0
- {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +18 -20
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +7 -7
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +104 -73
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/linear_model/linear.py → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +4 -1
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +128 -100
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_preview_linear.py → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py +18 -16
- {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/linear_model → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd}/__init__.py +24 -22
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +11 -5
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +50 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +16 -14
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +2 -2
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +3 -3
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +11 -8
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/_common.py +56 -56
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +110 -55
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +65 -31
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/svc.py +136 -78
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/svr.py +65 -31
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +102 -0
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/_models_info.py +170 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +9 -8
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +63 -69
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +55 -53
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +50 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +8 -7
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +428 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/utils/_launch_algorithms.py +39 -39
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -3
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/utils/parallel.py +59 -0
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/utils/validation.py +2 -2
- {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/METADATA +34 -35
- scikit_learn_intelex-2024.0.1.dist-info/RECORD +90 -0
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/_utils.py +0 -82
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -18
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -20
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/ensemble/forest.py +0 -18
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -46
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -228
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -213
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -57
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -18
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py +0 -28
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/ensemble/extra_trees.py +0 -1261
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/ensemble/forest.py +0 -1155
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/ensemble/tests/test_preview_ensemble.py +0 -67
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/linear_model/_common.py +0 -66
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -23
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -63
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/tests/_models_info.py +0 -159
- scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -383
- scikit_learn_intelex-2023.2.1.dist-info/RECORD +0 -95
- {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# ==============================================================================
|
|
2
2
|
# Copyright 2021 Intel Corporation
|
|
3
3
|
#
|
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12,31 +12,53 @@
|
|
|
12
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
from daal4py.sklearn._utils import sklearn_check_version
|
|
18
|
-
from ._common import BaseSVR
|
|
19
|
-
from .._device_offload import dispatch, wrap_output_data
|
|
15
|
+
# ==============================================================================
|
|
20
16
|
|
|
21
17
|
from sklearn.svm import NuSVR as sklearn_NuSVR
|
|
22
18
|
from sklearn.utils.validation import _deprecate_positional_args
|
|
19
|
+
|
|
20
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
23
21
|
from onedal.svm import NuSVR as onedal_NuSVR
|
|
24
22
|
|
|
23
|
+
from .._device_offload import dispatch, wrap_output_data
|
|
24
|
+
from ._common import BaseSVR
|
|
25
|
+
|
|
25
26
|
|
|
26
27
|
class NuSVR(sklearn_NuSVR, BaseSVR):
|
|
27
28
|
__doc__ = sklearn_NuSVR.__doc__
|
|
28
29
|
|
|
29
|
-
if sklearn_check_version(
|
|
30
|
+
if sklearn_check_version("1.2"):
|
|
30
31
|
_parameter_constraints: dict = {**sklearn_NuSVR._parameter_constraints}
|
|
31
32
|
|
|
32
33
|
@_deprecate_positional_args
|
|
33
|
-
def __init__(
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
def __init__(
|
|
35
|
+
self,
|
|
36
|
+
*,
|
|
37
|
+
kernel="rbf",
|
|
38
|
+
degree=3,
|
|
39
|
+
gamma="scale",
|
|
40
|
+
coef0=0.0,
|
|
41
|
+
tol=1e-3,
|
|
42
|
+
C=1.0,
|
|
43
|
+
nu=0.5,
|
|
44
|
+
shrinking=True,
|
|
45
|
+
cache_size=200,
|
|
46
|
+
verbose=False,
|
|
47
|
+
max_iter=-1,
|
|
48
|
+
):
|
|
36
49
|
super().__init__(
|
|
37
|
-
kernel=kernel,
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
kernel=kernel,
|
|
51
|
+
degree=degree,
|
|
52
|
+
gamma=gamma,
|
|
53
|
+
coef0=coef0,
|
|
54
|
+
tol=tol,
|
|
55
|
+
C=C,
|
|
56
|
+
nu=nu,
|
|
57
|
+
shrinking=shrinking,
|
|
58
|
+
cache_size=cache_size,
|
|
59
|
+
verbose=verbose,
|
|
60
|
+
max_iter=max_iter,
|
|
61
|
+
)
|
|
40
62
|
|
|
41
63
|
def fit(self, X, y, sample_weight=None):
|
|
42
64
|
"""
|
|
@@ -76,10 +98,17 @@ class NuSVR(sklearn_NuSVR, BaseSVR):
|
|
|
76
98
|
self._validate_params()
|
|
77
99
|
if sklearn_check_version("1.0"):
|
|
78
100
|
self._check_feature_names(X, reset=True)
|
|
79
|
-
dispatch(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
101
|
+
dispatch(
|
|
102
|
+
self,
|
|
103
|
+
"fit",
|
|
104
|
+
{
|
|
105
|
+
"onedal": self.__class__._onedal_fit,
|
|
106
|
+
"sklearn": sklearn_NuSVR.fit,
|
|
107
|
+
},
|
|
108
|
+
X,
|
|
109
|
+
y,
|
|
110
|
+
sample_weight,
|
|
111
|
+
)
|
|
83
112
|
return self
|
|
84
113
|
|
|
85
114
|
@wrap_output_data
|
|
@@ -102,23 +131,28 @@ class NuSVR(sklearn_NuSVR, BaseSVR):
|
|
|
102
131
|
"""
|
|
103
132
|
if sklearn_check_version("1.0"):
|
|
104
133
|
self._check_feature_names(X, reset=False)
|
|
105
|
-
return dispatch(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
134
|
+
return dispatch(
|
|
135
|
+
self,
|
|
136
|
+
"predict",
|
|
137
|
+
{
|
|
138
|
+
"onedal": self.__class__._onedal_predict,
|
|
139
|
+
"sklearn": sklearn_NuSVR.predict,
|
|
140
|
+
},
|
|
141
|
+
X,
|
|
142
|
+
)
|
|
109
143
|
|
|
110
144
|
def _onedal_fit(self, X, y, sample_weight=None, queue=None):
|
|
111
145
|
onedal_params = {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
146
|
+
"C": self.C,
|
|
147
|
+
"nu": self.nu,
|
|
148
|
+
"kernel": self.kernel,
|
|
149
|
+
"degree": self.degree,
|
|
150
|
+
"gamma": self.gamma,
|
|
151
|
+
"coef0": self.coef0,
|
|
152
|
+
"tol": self.tol,
|
|
153
|
+
"shrinking": self.shrinking,
|
|
154
|
+
"cache_size": self.cache_size,
|
|
155
|
+
"max_iter": self.max_iter,
|
|
122
156
|
}
|
|
123
157
|
|
|
124
158
|
self._onedal_estimator = onedal_NuSVR(**onedal_params)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# ==============================================================================
|
|
2
2
|
# Copyright 2021 Intel Corporation
|
|
3
3
|
#
|
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12,19 +12,21 @@
|
|
|
12
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
|
-
|
|
15
|
+
# ==============================================================================
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
from scipy import sparse as sp
|
|
19
|
+
from sklearn.exceptions import NotFittedError
|
|
20
|
+
from sklearn.svm import SVC as sklearn_SVC
|
|
21
|
+
from sklearn.utils.validation import _deprecate_positional_args
|
|
22
|
+
|
|
23
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
19
24
|
|
|
20
|
-
from daal4py.sklearn._utils import sklearn_check_version, PatchingConditionsChain
|
|
21
|
-
from ._common import BaseSVC
|
|
22
25
|
from .._device_offload import dispatch, wrap_output_data
|
|
26
|
+
from .._utils import PatchingConditionsChain
|
|
27
|
+
from ._common import BaseSVC
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
from sklearn.utils.validation import _deprecate_positional_args
|
|
26
|
-
from sklearn.exceptions import NotFittedError
|
|
27
|
-
if sklearn_check_version('1.0'):
|
|
29
|
+
if sklearn_check_version("1.0"):
|
|
28
30
|
from sklearn.utils.metaestimators import available_if
|
|
29
31
|
|
|
30
32
|
from onedal.svm import SVC as onedal_SVC
|
|
@@ -33,21 +35,46 @@ from onedal.svm import SVC as onedal_SVC
|
|
|
33
35
|
class SVC(sklearn_SVC, BaseSVC):
|
|
34
36
|
__doc__ = sklearn_SVC.__doc__
|
|
35
37
|
|
|
36
|
-
if sklearn_check_version(
|
|
38
|
+
if sklearn_check_version("1.2"):
|
|
37
39
|
_parameter_constraints: dict = {**sklearn_SVC._parameter_constraints}
|
|
38
40
|
|
|
39
41
|
@_deprecate_positional_args
|
|
40
|
-
def __init__(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
def __init__(
|
|
43
|
+
self,
|
|
44
|
+
*,
|
|
45
|
+
C=1.0,
|
|
46
|
+
kernel="rbf",
|
|
47
|
+
degree=3,
|
|
48
|
+
gamma="scale",
|
|
49
|
+
coef0=0.0,
|
|
50
|
+
shrinking=True,
|
|
51
|
+
probability=False,
|
|
52
|
+
tol=1e-3,
|
|
53
|
+
cache_size=200,
|
|
54
|
+
class_weight=None,
|
|
55
|
+
verbose=False,
|
|
56
|
+
max_iter=-1,
|
|
57
|
+
decision_function_shape="ovr",
|
|
58
|
+
break_ties=False,
|
|
59
|
+
random_state=None,
|
|
60
|
+
):
|
|
45
61
|
super().__init__(
|
|
46
|
-
C=C,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
C=C,
|
|
63
|
+
kernel=kernel,
|
|
64
|
+
degree=degree,
|
|
65
|
+
gamma=gamma,
|
|
66
|
+
coef0=coef0,
|
|
67
|
+
shrinking=shrinking,
|
|
68
|
+
probability=probability,
|
|
69
|
+
tol=tol,
|
|
70
|
+
cache_size=cache_size,
|
|
71
|
+
class_weight=class_weight,
|
|
72
|
+
verbose=verbose,
|
|
73
|
+
max_iter=max_iter,
|
|
74
|
+
decision_function_shape=decision_function_shape,
|
|
75
|
+
break_ties=break_ties,
|
|
76
|
+
random_state=random_state,
|
|
77
|
+
)
|
|
51
78
|
|
|
52
79
|
def fit(self, X, y, sample_weight=None):
|
|
53
80
|
"""
|
|
@@ -87,10 +114,17 @@ class SVC(sklearn_SVC, BaseSVC):
|
|
|
87
114
|
self._validate_params()
|
|
88
115
|
if sklearn_check_version("1.0"):
|
|
89
116
|
self._check_feature_names(X, reset=True)
|
|
90
|
-
dispatch(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
117
|
+
dispatch(
|
|
118
|
+
self,
|
|
119
|
+
"fit",
|
|
120
|
+
{
|
|
121
|
+
"onedal": self.__class__._onedal_fit,
|
|
122
|
+
"sklearn": sklearn_SVC.fit,
|
|
123
|
+
},
|
|
124
|
+
X,
|
|
125
|
+
y,
|
|
126
|
+
sample_weight,
|
|
127
|
+
)
|
|
94
128
|
return self
|
|
95
129
|
|
|
96
130
|
@wrap_output_data
|
|
@@ -113,12 +147,18 @@ class SVC(sklearn_SVC, BaseSVC):
|
|
|
113
147
|
"""
|
|
114
148
|
if sklearn_check_version("1.0"):
|
|
115
149
|
self._check_feature_names(X, reset=False)
|
|
116
|
-
return dispatch(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
150
|
+
return dispatch(
|
|
151
|
+
self,
|
|
152
|
+
"predict",
|
|
153
|
+
{
|
|
154
|
+
"onedal": self.__class__._onedal_predict,
|
|
155
|
+
"sklearn": sklearn_SVC.predict,
|
|
156
|
+
},
|
|
157
|
+
X,
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
if sklearn_check_version("1.0"):
|
|
120
161
|
|
|
121
|
-
if sklearn_check_version('1.0'):
|
|
122
162
|
@available_if(sklearn_SVC._check_proba)
|
|
123
163
|
def predict_proba(self, X):
|
|
124
164
|
"""
|
|
@@ -148,7 +188,9 @@ class SVC(sklearn_SVC, BaseSVC):
|
|
|
148
188
|
datasets.
|
|
149
189
|
"""
|
|
150
190
|
return self._predict_proba(X)
|
|
191
|
+
|
|
151
192
|
else:
|
|
193
|
+
|
|
152
194
|
@property
|
|
153
195
|
def predict_proba(self):
|
|
154
196
|
self._check_proba()
|
|
@@ -156,64 +198,79 @@ class SVC(sklearn_SVC, BaseSVC):
|
|
|
156
198
|
|
|
157
199
|
@wrap_output_data
|
|
158
200
|
def _predict_proba(self, X):
|
|
159
|
-
sklearn_pred_proba = (
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
201
|
+
sklearn_pred_proba = (
|
|
202
|
+
sklearn_SVC.predict_proba
|
|
203
|
+
if sklearn_check_version("1.0")
|
|
204
|
+
else sklearn_SVC._predict_proba
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
return dispatch(
|
|
208
|
+
self,
|
|
209
|
+
"predict_proba",
|
|
210
|
+
{
|
|
211
|
+
"onedal": self.__class__._onedal_predict_proba,
|
|
212
|
+
"sklearn": sklearn_pred_proba,
|
|
213
|
+
},
|
|
214
|
+
X,
|
|
215
|
+
)
|
|
167
216
|
|
|
168
217
|
@wrap_output_data
|
|
169
218
|
def decision_function(self, X):
|
|
170
219
|
if sklearn_check_version("1.0"):
|
|
171
220
|
self._check_feature_names(X, reset=False)
|
|
172
|
-
return dispatch(
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
221
|
+
return dispatch(
|
|
222
|
+
self,
|
|
223
|
+
"decision_function",
|
|
224
|
+
{
|
|
225
|
+
"onedal": self.__class__._onedal_decision_function,
|
|
226
|
+
"sklearn": sklearn_SVC.decision_function,
|
|
227
|
+
},
|
|
228
|
+
X,
|
|
229
|
+
)
|
|
176
230
|
|
|
177
231
|
def _onedal_gpu_supported(self, method_name, *data):
|
|
178
232
|
class_name = self.__class__.__name__
|
|
179
233
|
patching_status = PatchingConditionsChain(
|
|
180
|
-
f
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
234
|
+
f"sklearn.svm.{class_name}.{method_name}"
|
|
235
|
+
)
|
|
236
|
+
if len(data) > 1:
|
|
237
|
+
self._class_count = len(np.unique(data[1]))
|
|
238
|
+
self._is_sparse = sp.isspmatrix(data[0])
|
|
239
|
+
conditions = [
|
|
240
|
+
(
|
|
241
|
+
self.kernel in ["linear", "rbf"],
|
|
242
|
+
f'Kernel is "{self.kernel}" while '
|
|
243
|
+
'"linear" and "rbf" are only supported on GPU.',
|
|
244
|
+
),
|
|
245
|
+
(self.class_weight is None, "Class weight is not supported on GPU."),
|
|
246
|
+
(not self._is_sparse, "Sparse input is not supported on GPU."),
|
|
247
|
+
(self._class_count == 2, "Multiclassification is not supported on GPU."),
|
|
248
|
+
]
|
|
249
|
+
if method_name == "fit":
|
|
250
|
+
patching_status.and_conditions(conditions)
|
|
251
|
+
return patching_status
|
|
252
|
+
if method_name in ["predict", "predict_proba", "decision_function"]:
|
|
253
|
+
conditions.append(
|
|
254
|
+
(hasattr(self, "_onedal_estimator"), "oneDAL model was not trained")
|
|
255
|
+
)
|
|
256
|
+
patching_status.and_conditions(conditions)
|
|
257
|
+
return patching_status
|
|
258
|
+
raise RuntimeError(f"Unknown method {method_name} in {class_name}")
|
|
202
259
|
|
|
203
260
|
def _onedal_fit(self, X, y, sample_weight=None, queue=None):
|
|
204
261
|
onedal_params = {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
262
|
+
"C": self.C,
|
|
263
|
+
"kernel": self.kernel,
|
|
264
|
+
"degree": self.degree,
|
|
265
|
+
"gamma": self.gamma,
|
|
266
|
+
"coef0": self.coef0,
|
|
267
|
+
"tol": self.tol,
|
|
268
|
+
"shrinking": self.shrinking,
|
|
269
|
+
"cache_size": self.cache_size,
|
|
270
|
+
"max_iter": self.max_iter,
|
|
271
|
+
"class_weight": self.class_weight,
|
|
272
|
+
"break_ties": self.break_ties,
|
|
273
|
+
"decision_function_shape": self.decision_function_shape,
|
|
217
274
|
}
|
|
218
275
|
|
|
219
276
|
self._onedal_estimator = onedal_SVC(**onedal_params)
|
|
@@ -227,15 +284,16 @@ class SVC(sklearn_SVC, BaseSVC):
|
|
|
227
284
|
return self._onedal_estimator.predict(X, queue=queue)
|
|
228
285
|
|
|
229
286
|
def _onedal_predict_proba(self, X, queue=None):
|
|
230
|
-
if getattr(self,
|
|
287
|
+
if getattr(self, "clf_prob", None) is None:
|
|
231
288
|
raise NotFittedError(
|
|
232
|
-
"predict_proba is not available when fitted with probability=False"
|
|
233
|
-
|
|
289
|
+
"predict_proba is not available when fitted with probability=False"
|
|
290
|
+
)
|
|
291
|
+
from .._config import config_context, get_config
|
|
234
292
|
|
|
235
293
|
# We use stock metaestimators below, so the only way
|
|
236
294
|
# to pass a queue is using config_context.
|
|
237
295
|
cfg = get_config()
|
|
238
|
-
cfg[
|
|
296
|
+
cfg["target_offload"] = queue
|
|
239
297
|
with config_context(**cfg):
|
|
240
298
|
return self.clf_prob.predict_proba(X)
|
|
241
299
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# ==============================================================================
|
|
2
2
|
# Copyright 2021 Intel Corporation
|
|
3
3
|
#
|
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12,31 +12,53 @@
|
|
|
12
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
from daal4py.sklearn._utils import sklearn_check_version
|
|
18
|
-
from ._common import BaseSVR
|
|
19
|
-
from .._device_offload import dispatch, wrap_output_data
|
|
15
|
+
# ==============================================================================
|
|
20
16
|
|
|
21
17
|
from sklearn.svm import SVR as sklearn_SVR
|
|
22
18
|
from sklearn.utils.validation import _deprecate_positional_args
|
|
19
|
+
|
|
20
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
23
21
|
from onedal.svm import SVR as onedal_SVR
|
|
24
22
|
|
|
23
|
+
from .._device_offload import dispatch, wrap_output_data
|
|
24
|
+
from ._common import BaseSVR
|
|
25
|
+
|
|
25
26
|
|
|
26
27
|
class SVR(sklearn_SVR, BaseSVR):
|
|
27
28
|
__doc__ = sklearn_SVR.__doc__
|
|
28
29
|
|
|
29
|
-
if sklearn_check_version(
|
|
30
|
+
if sklearn_check_version("1.2"):
|
|
30
31
|
_parameter_constraints: dict = {**sklearn_SVR._parameter_constraints}
|
|
31
32
|
|
|
32
33
|
@_deprecate_positional_args
|
|
33
|
-
def __init__(
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
def __init__(
|
|
35
|
+
self,
|
|
36
|
+
*,
|
|
37
|
+
kernel="rbf",
|
|
38
|
+
degree=3,
|
|
39
|
+
gamma="scale",
|
|
40
|
+
coef0=0.0,
|
|
41
|
+
tol=1e-3,
|
|
42
|
+
C=1.0,
|
|
43
|
+
epsilon=0.1,
|
|
44
|
+
shrinking=True,
|
|
45
|
+
cache_size=200,
|
|
46
|
+
verbose=False,
|
|
47
|
+
max_iter=-1,
|
|
48
|
+
):
|
|
36
49
|
super().__init__(
|
|
37
|
-
kernel=kernel,
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
kernel=kernel,
|
|
51
|
+
degree=degree,
|
|
52
|
+
gamma=gamma,
|
|
53
|
+
coef0=coef0,
|
|
54
|
+
tol=tol,
|
|
55
|
+
C=C,
|
|
56
|
+
epsilon=epsilon,
|
|
57
|
+
shrinking=shrinking,
|
|
58
|
+
cache_size=cache_size,
|
|
59
|
+
verbose=verbose,
|
|
60
|
+
max_iter=max_iter,
|
|
61
|
+
)
|
|
40
62
|
|
|
41
63
|
def fit(self, X, y, sample_weight=None):
|
|
42
64
|
"""
|
|
@@ -76,10 +98,17 @@ class SVR(sklearn_SVR, BaseSVR):
|
|
|
76
98
|
self._validate_params()
|
|
77
99
|
if sklearn_check_version("1.0"):
|
|
78
100
|
self._check_feature_names(X, reset=True)
|
|
79
|
-
dispatch(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
101
|
+
dispatch(
|
|
102
|
+
self,
|
|
103
|
+
"fit",
|
|
104
|
+
{
|
|
105
|
+
"onedal": self.__class__._onedal_fit,
|
|
106
|
+
"sklearn": sklearn_SVR.fit,
|
|
107
|
+
},
|
|
108
|
+
X,
|
|
109
|
+
y,
|
|
110
|
+
sample_weight,
|
|
111
|
+
)
|
|
83
112
|
|
|
84
113
|
return self
|
|
85
114
|
|
|
@@ -103,23 +132,28 @@ class SVR(sklearn_SVR, BaseSVR):
|
|
|
103
132
|
"""
|
|
104
133
|
if sklearn_check_version("1.0"):
|
|
105
134
|
self._check_feature_names(X, reset=False)
|
|
106
|
-
return dispatch(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
135
|
+
return dispatch(
|
|
136
|
+
self,
|
|
137
|
+
"predict",
|
|
138
|
+
{
|
|
139
|
+
"onedal": self.__class__._onedal_predict,
|
|
140
|
+
"sklearn": sklearn_SVR.predict,
|
|
141
|
+
},
|
|
142
|
+
X,
|
|
143
|
+
)
|
|
110
144
|
|
|
111
145
|
def _onedal_fit(self, X, y, sample_weight=None, queue=None):
|
|
112
146
|
onedal_params = {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
147
|
+
"C": self.C,
|
|
148
|
+
"epsilon": self.epsilon,
|
|
149
|
+
"kernel": self.kernel,
|
|
150
|
+
"degree": self.degree,
|
|
151
|
+
"gamma": self.gamma,
|
|
152
|
+
"coef0": self.coef0,
|
|
153
|
+
"tol": self.tol,
|
|
154
|
+
"shrinking": self.shrinking,
|
|
155
|
+
"cache_size": self.cache_size,
|
|
156
|
+
"max_iter": self.max_iter,
|
|
123
157
|
}
|
|
124
158
|
|
|
125
159
|
self._onedal_estimator = onedal_SVR(**onedal_params)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# ===============================================================================
|
|
3
|
+
# Copyright 2021 Intel Corporation
|
|
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 numpy as np
|
|
19
|
+
import pytest
|
|
20
|
+
from numpy.testing import assert_allclose
|
|
21
|
+
|
|
22
|
+
from onedal.tests.utils._dataframes_support import (
|
|
23
|
+
_as_numpy,
|
|
24
|
+
_convert_to_dataframe,
|
|
25
|
+
get_dataframes_and_queues,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# TODO:
|
|
30
|
+
# investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
|
|
31
|
+
@pytest.mark.parametrize(
|
|
32
|
+
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
33
|
+
)
|
|
34
|
+
def test_sklearnex_import_svc(dataframe, queue):
|
|
35
|
+
from sklearnex.svm import SVC
|
|
36
|
+
|
|
37
|
+
X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
|
|
38
|
+
y = np.array([1, 1, 1, 2, 2, 2])
|
|
39
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
40
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
41
|
+
svc = SVC(kernel="linear").fit(X, y)
|
|
42
|
+
assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
|
|
43
|
+
assert_allclose(_as_numpy(svc.dual_coef_), [[-0.25, 0.25]])
|
|
44
|
+
assert_allclose(_as_numpy(svc.support_), [1, 3])
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# TODO:
|
|
48
|
+
# investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
|
|
49
|
+
@pytest.mark.parametrize(
|
|
50
|
+
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
51
|
+
)
|
|
52
|
+
def test_sklearnex_import_nusvc(dataframe, queue):
|
|
53
|
+
from sklearnex.svm import NuSVC
|
|
54
|
+
|
|
55
|
+
X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
|
|
56
|
+
y = np.array([1, 1, 1, 2, 2, 2])
|
|
57
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
58
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
59
|
+
svc = NuSVC(kernel="linear").fit(X, y)
|
|
60
|
+
assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
|
|
61
|
+
assert_allclose(
|
|
62
|
+
_as_numpy(svc.dual_coef_), [[-0.04761905, -0.0952381, 0.0952381, 0.04761905]]
|
|
63
|
+
)
|
|
64
|
+
assert_allclose(_as_numpy(svc.support_), [0, 1, 3, 4])
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# TODO:
|
|
68
|
+
# investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
|
|
69
|
+
@pytest.mark.parametrize(
|
|
70
|
+
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
71
|
+
)
|
|
72
|
+
def test_sklearnex_import_svr(dataframe, queue):
|
|
73
|
+
from sklearnex.svm import SVR
|
|
74
|
+
|
|
75
|
+
X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
|
|
76
|
+
y = np.array([1, 1, 1, 2, 2, 2])
|
|
77
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
78
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
79
|
+
svc = SVR(kernel="linear").fit(X, y)
|
|
80
|
+
assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
|
|
81
|
+
assert_allclose(_as_numpy(svc.dual_coef_), [[-0.1, 0.1]])
|
|
82
|
+
assert_allclose(_as_numpy(svc.support_), [1, 3])
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# TODO:
|
|
86
|
+
# investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
|
|
87
|
+
@pytest.mark.parametrize(
|
|
88
|
+
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
89
|
+
)
|
|
90
|
+
def test_sklearnex_import_nusvr(dataframe, queue):
|
|
91
|
+
from sklearnex.svm import NuSVR
|
|
92
|
+
|
|
93
|
+
X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
|
|
94
|
+
y = np.array([1, 1, 1, 2, 2, 2])
|
|
95
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
96
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
97
|
+
svc = NuSVR(kernel="linear", nu=0.9).fit(X, y)
|
|
98
|
+
assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
|
|
99
|
+
assert_allclose(
|
|
100
|
+
_as_numpy(svc.dual_coef_), [[-1.0, 0.611111, 1.0, -0.611111]], rtol=1e-3
|
|
101
|
+
)
|
|
102
|
+
assert_allclose(_as_numpy(svc.support_), [1, 2, 3, 5])
|