scikit-learn-intelex 2024.0.1__py39-none-win_amd64.whl → 2024.2.0__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-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/__init__.py +3 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/_utils.py +15 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +2 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -1
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +130 -0
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +143 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +35 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +17 -2
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +1 -3
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +9 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -1
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +333 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +8 -3
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +93 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -2
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +167 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +1 -2
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +5 -4
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +5 -4
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +4 -3
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +12 -12
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -2
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +2 -1
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +132 -0
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +53 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +43 -45
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py +7 -3
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
- {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd}/basic_statistics/__init__.py +0 -1
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +19 -0
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +4 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +2 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +5 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +2 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -1
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +1 -4
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +46 -16
- scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +93 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +19 -5
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -1
- {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/METADATA +2 -2
- scikit_learn_intelex-2024.2.0.dist-info/RECORD +101 -0
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -29
- scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -437
- scikit_learn_intelex-2024.0.1.dist-info/RECORD +0 -90
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +0 -0
- {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex}/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/_models_info.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/utils/_launch_algorithms.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
1
|
# ==============================================================================
|
|
3
2
|
# Copyright 2021 Intel Corporation
|
|
4
3
|
#
|
|
@@ -15,6 +14,8 @@
|
|
|
15
14
|
# limitations under the License.
|
|
16
15
|
# ==============================================================================
|
|
17
16
|
|
|
17
|
+
from onedal.common.hyperparameters import get_hyperparameters
|
|
18
|
+
|
|
18
19
|
from . import utils
|
|
19
20
|
from ._config import config_context, get_config, set_config
|
|
20
21
|
from .dispatcher import (
|
|
@@ -33,6 +34,7 @@ __all__ = [
|
|
|
33
34
|
"decomposition",
|
|
34
35
|
"ensemble",
|
|
35
36
|
"get_config",
|
|
37
|
+
"get_hyperparameters",
|
|
36
38
|
"get_patch_map",
|
|
37
39
|
"get_patch_names",
|
|
38
40
|
"is_patched_instance",
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
1
|
# ===============================================================================
|
|
3
2
|
# Copyright 2021 Intel Corporation
|
|
4
3
|
#
|
|
@@ -93,3 +92,18 @@ def get_patch_message(s, queue=None):
|
|
|
93
92
|
|
|
94
93
|
def get_sklearnex_version(rule):
|
|
95
94
|
return daal_check_version(rule)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def register_hyperparameters(hyperparameters_map):
|
|
98
|
+
"""Decorator for hyperparameters support in estimator class.
|
|
99
|
+
Adds `get_hyperparameters` method to class.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
def wrap_class(estimator_class):
|
|
103
|
+
def get_hyperparameters(self, op):
|
|
104
|
+
return hyperparameters_map[op]
|
|
105
|
+
|
|
106
|
+
estimator_class.get_hyperparameters = get_hyperparameters
|
|
107
|
+
return estimator_class
|
|
108
|
+
|
|
109
|
+
return wrap_class
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
1
|
# ===============================================================================
|
|
3
2
|
# Copyright 2021 Intel Corporation
|
|
4
3
|
#
|
|
@@ -23,6 +22,7 @@ from scipy import sparse as sp
|
|
|
23
22
|
from sklearn.cluster import DBSCAN as sklearn_DBSCAN
|
|
24
23
|
from sklearn.utils.validation import _check_sample_weight
|
|
25
24
|
|
|
25
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
26
26
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
27
27
|
from onedal.cluster import DBSCAN as onedal_DBSCAN
|
|
28
28
|
|
|
@@ -46,6 +46,7 @@ class BaseDBSCAN(ABC):
|
|
|
46
46
|
self.n_features_in_ = self._onedal_estimator.n_features_in_
|
|
47
47
|
|
|
48
48
|
|
|
49
|
+
@control_n_jobs(decorated_methods=["fit"])
|
|
49
50
|
class DBSCAN(sklearn_DBSCAN, BaseDBSCAN):
|
|
50
51
|
__doc__ = sklearn_DBSCAN.__doc__
|
|
51
52
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
from .incremental_covariance import IncrementalEmpiricalCovariance
|
|
18
|
+
|
|
19
|
+
__all__ = ["IncrementalEmpiricalCovariance"]
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
from sklearn.utils import check_array, gen_batches
|
|
19
|
+
|
|
20
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
21
|
+
from onedal._device_offload import support_usm_ndarray
|
|
22
|
+
from onedal.covariance import (
|
|
23
|
+
IncrementalEmpiricalCovariance as onedal_IncrementalEmpiricalCovariance,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@control_n_jobs(decorated_methods=["partial_fit"])
|
|
28
|
+
class IncrementalEmpiricalCovariance:
|
|
29
|
+
"""
|
|
30
|
+
Incremental estimator for covariance.
|
|
31
|
+
Allows to compute empirical covariance estimated by maximum
|
|
32
|
+
likelihood method if data are splitted into batches.
|
|
33
|
+
|
|
34
|
+
Parameters
|
|
35
|
+
----------
|
|
36
|
+
batch_size : int, default=None
|
|
37
|
+
The number of samples to use for each batch. Only used when calling
|
|
38
|
+
``fit``. If ``batch_size`` is ``None``, then ``batch_size``
|
|
39
|
+
is inferred from the data and set to ``5 * n_features``, to provide a
|
|
40
|
+
balance between approximation accuracy and memory consumption.
|
|
41
|
+
|
|
42
|
+
Attributes
|
|
43
|
+
----------
|
|
44
|
+
location_ : ndarray of shape (n_features,)
|
|
45
|
+
Estimated location, i.e. the estimated mean.
|
|
46
|
+
|
|
47
|
+
covariance_ : ndarray of shape (n_features, n_features)
|
|
48
|
+
Estimated covariance matrix
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
_onedal_incremental_covariance = staticmethod(onedal_IncrementalEmpiricalCovariance)
|
|
52
|
+
|
|
53
|
+
def __init__(self, batch_size=None):
|
|
54
|
+
self._need_to_finalize = False # If True then finalize compute should
|
|
55
|
+
# be called to obtain covariance_ or location_ from partial compute data
|
|
56
|
+
self.batch_size = batch_size
|
|
57
|
+
|
|
58
|
+
def _onedal_finalize_fit(self):
|
|
59
|
+
assert hasattr(self, "_onedal_estimator")
|
|
60
|
+
self._onedal_estimator.finalize_fit()
|
|
61
|
+
self._need_to_finalize = False
|
|
62
|
+
|
|
63
|
+
def _onedal_partial_fit(self, X, queue):
|
|
64
|
+
onedal_params = {
|
|
65
|
+
"method": "dense",
|
|
66
|
+
"bias": True,
|
|
67
|
+
}
|
|
68
|
+
if not hasattr(self, "_onedal_estimator"):
|
|
69
|
+
self._onedal_estimator = self._onedal_incremental_covariance(**onedal_params)
|
|
70
|
+
self._onedal_estimator.partial_fit(X, queue)
|
|
71
|
+
self._need_to_finalize = True
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def covariance_(self):
|
|
75
|
+
if self._need_to_finalize:
|
|
76
|
+
self._onedal_finalize_fit()
|
|
77
|
+
return self._onedal_estimator.covariance_
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def location_(self):
|
|
81
|
+
if self._need_to_finalize:
|
|
82
|
+
self._onedal_finalize_fit()
|
|
83
|
+
return self._onedal_estimator.location_
|
|
84
|
+
|
|
85
|
+
@support_usm_ndarray()
|
|
86
|
+
def partial_fit(self, X, queue=None):
|
|
87
|
+
"""
|
|
88
|
+
Incremental fit with X. All of X is processed as a single batch.
|
|
89
|
+
|
|
90
|
+
Parameters
|
|
91
|
+
----------
|
|
92
|
+
X : array-like of shape (n_samples, n_features)
|
|
93
|
+
Training data, where `n_samples` is the number of samples and
|
|
94
|
+
`n_features` is the number of features.
|
|
95
|
+
|
|
96
|
+
Returns
|
|
97
|
+
-------
|
|
98
|
+
self : object
|
|
99
|
+
Returns the instance itself.
|
|
100
|
+
"""
|
|
101
|
+
X = check_array(X, dtype=[np.float64, np.float32])
|
|
102
|
+
self._onedal_partial_fit(X, queue)
|
|
103
|
+
return self
|
|
104
|
+
|
|
105
|
+
def fit(self, X, queue=None):
|
|
106
|
+
"""
|
|
107
|
+
Fit the model with X, using minibatches of size batch_size.
|
|
108
|
+
|
|
109
|
+
Parameters
|
|
110
|
+
----------
|
|
111
|
+
X : array-like of shape (n_samples, n_features)
|
|
112
|
+
Training data, where `n_samples` is the number of samples and
|
|
113
|
+
`n_features` is the number of features.
|
|
114
|
+
|
|
115
|
+
Returns
|
|
116
|
+
-------
|
|
117
|
+
self : object
|
|
118
|
+
Returns the instance itself.
|
|
119
|
+
"""
|
|
120
|
+
n_samples, n_features = X.shape
|
|
121
|
+
if self.batch_size is None:
|
|
122
|
+
batch_size_ = 5 * n_features
|
|
123
|
+
else:
|
|
124
|
+
batch_size_ = self.batch_size
|
|
125
|
+
for batch in gen_batches(n_samples, batch_size_):
|
|
126
|
+
X_batch = X[batch]
|
|
127
|
+
self.partial_fit(X_batch, queue=queue)
|
|
128
|
+
|
|
129
|
+
self._onedal_finalize_fit()
|
|
130
|
+
return self
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
import pytest
|
|
19
|
+
from numpy.testing import assert_allclose
|
|
20
|
+
|
|
21
|
+
from onedal.tests.utils._dataframes_support import (
|
|
22
|
+
_convert_to_dataframe,
|
|
23
|
+
get_dataframes_and_queues,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
28
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
29
|
+
def test_sklearnex_partial_fit_on_gold_data(dataframe, queue, dtype):
|
|
30
|
+
from sklearnex.covariance import IncrementalEmpiricalCovariance
|
|
31
|
+
|
|
32
|
+
X = np.array([[0, 1], [0, 1]])
|
|
33
|
+
X = X.astype(dtype)
|
|
34
|
+
X_split = np.array_split(X, 2)
|
|
35
|
+
inccov = IncrementalEmpiricalCovariance()
|
|
36
|
+
|
|
37
|
+
for i in range(2):
|
|
38
|
+
X_split_df = _convert_to_dataframe(
|
|
39
|
+
X_split[i], sycl_queue=queue, target_df=dataframe
|
|
40
|
+
)
|
|
41
|
+
result = inccov.partial_fit(X_split_df)
|
|
42
|
+
|
|
43
|
+
expected_covariance = np.array([[0, 0], [0, 0]])
|
|
44
|
+
expected_means = np.array([0, 1])
|
|
45
|
+
|
|
46
|
+
assert_allclose(expected_covariance, result.covariance_)
|
|
47
|
+
assert_allclose(expected_means, result.location_)
|
|
48
|
+
|
|
49
|
+
X = np.array([[1, 2], [3, 6]])
|
|
50
|
+
X = X.astype(dtype)
|
|
51
|
+
X_split = np.array_split(X, 2)
|
|
52
|
+
inccov = IncrementalEmpiricalCovariance()
|
|
53
|
+
|
|
54
|
+
for i in range(2):
|
|
55
|
+
X_split_df = _convert_to_dataframe(
|
|
56
|
+
X_split[i], sycl_queue=queue, target_df=dataframe
|
|
57
|
+
)
|
|
58
|
+
result = inccov.partial_fit(X_split_df)
|
|
59
|
+
|
|
60
|
+
expected_covariance = np.array([[1, 2], [2, 4]])
|
|
61
|
+
expected_means = np.array([2, 4])
|
|
62
|
+
|
|
63
|
+
assert_allclose(expected_covariance, result.covariance_)
|
|
64
|
+
assert_allclose(expected_means, result.location_)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
68
|
+
@pytest.mark.parametrize("batch_size", [2, 4])
|
|
69
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
70
|
+
def test_sklearnex_fit_on_gold_data(dataframe, queue, batch_size, dtype):
|
|
71
|
+
from sklearnex.covariance import IncrementalEmpiricalCovariance
|
|
72
|
+
|
|
73
|
+
X = np.array([[0, 1, 2, 3], [0, -1, -2, -3], [0, 1, 2, 3], [0, 1, 2, 3]])
|
|
74
|
+
X = X.astype(dtype)
|
|
75
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
76
|
+
inccov = IncrementalEmpiricalCovariance(batch_size=batch_size)
|
|
77
|
+
|
|
78
|
+
result = inccov.fit(X_df)
|
|
79
|
+
|
|
80
|
+
expected_covariance = np.array(
|
|
81
|
+
[[0, 0, 0, 0], [0, 0.75, 1.5, 2.25], [0, 1.5, 3, 4.5], [0, 2.25, 4.5, 6.75]]
|
|
82
|
+
)
|
|
83
|
+
expected_means = np.array([0, 0.5, 1, 1.5])
|
|
84
|
+
|
|
85
|
+
assert_allclose(expected_covariance, result.covariance_)
|
|
86
|
+
assert_allclose(expected_means, result.location_)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
90
|
+
@pytest.mark.parametrize("num_batches", [2, 4, 6, 8, 10])
|
|
91
|
+
@pytest.mark.parametrize("row_count", [100, 1000, 2000])
|
|
92
|
+
@pytest.mark.parametrize("column_count", [10, 100, 200])
|
|
93
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
94
|
+
def test_sklearnex_partial_fit_on_random_data(
|
|
95
|
+
dataframe, queue, num_batches, row_count, column_count, dtype
|
|
96
|
+
):
|
|
97
|
+
from sklearnex.covariance import IncrementalEmpiricalCovariance
|
|
98
|
+
|
|
99
|
+
seed = 77
|
|
100
|
+
gen = np.random.default_rng(seed)
|
|
101
|
+
X = gen.uniform(low=-0.3, high=+0.7, size=(row_count, column_count))
|
|
102
|
+
X = X.astype(dtype)
|
|
103
|
+
X_split = np.array_split(X, num_batches)
|
|
104
|
+
inccov = IncrementalEmpiricalCovariance()
|
|
105
|
+
|
|
106
|
+
for i in range(num_batches):
|
|
107
|
+
X_split_df = _convert_to_dataframe(
|
|
108
|
+
X_split[i], sycl_queue=queue, target_df=dataframe
|
|
109
|
+
)
|
|
110
|
+
result = inccov.partial_fit(X_split_df)
|
|
111
|
+
|
|
112
|
+
expected_covariance = np.cov(X.T, bias=1)
|
|
113
|
+
expected_means = np.mean(X, axis=0)
|
|
114
|
+
|
|
115
|
+
assert_allclose(expected_covariance, result.covariance_, atol=1e-6)
|
|
116
|
+
assert_allclose(expected_means, result.location_, atol=1e-6)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
120
|
+
@pytest.mark.parametrize("num_batches", [2, 4, 6, 8, 10])
|
|
121
|
+
@pytest.mark.parametrize("row_count", [100, 1000, 2000])
|
|
122
|
+
@pytest.mark.parametrize("column_count", [10, 100, 200])
|
|
123
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
124
|
+
def test_sklearnex_fit_on_random_data(
|
|
125
|
+
dataframe, queue, num_batches, row_count, column_count, dtype
|
|
126
|
+
):
|
|
127
|
+
from sklearnex.covariance import IncrementalEmpiricalCovariance
|
|
128
|
+
|
|
129
|
+
seed = 77
|
|
130
|
+
gen = np.random.default_rng(seed)
|
|
131
|
+
X = gen.uniform(low=-0.3, high=+0.7, size=(row_count, column_count))
|
|
132
|
+
X = X.astype(dtype)
|
|
133
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
134
|
+
batch_size = row_count // num_batches
|
|
135
|
+
inccov = IncrementalEmpiricalCovariance(batch_size=batch_size)
|
|
136
|
+
|
|
137
|
+
result = inccov.fit(X_df)
|
|
138
|
+
|
|
139
|
+
expected_covariance = np.cov(X.T, bias=1)
|
|
140
|
+
expected_means = np.mean(X, axis=0)
|
|
141
|
+
|
|
142
|
+
assert_allclose(expected_covariance, result.covariance_, atol=1e-6)
|
|
143
|
+
assert_allclose(expected_means, result.location_, atol=1e-6)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
1
|
# ==============================================================================
|
|
3
2
|
# Copyright 2021 Intel Corporation
|
|
4
3
|
#
|
|
@@ -42,6 +41,7 @@ def get_patch_map():
|
|
|
42
41
|
# Scikit-learn* modules
|
|
43
42
|
import sklearn as base_module
|
|
44
43
|
import sklearn.cluster as cluster_module
|
|
44
|
+
import sklearn.covariance as covariance_module
|
|
45
45
|
import sklearn.decomposition as decomposition_module
|
|
46
46
|
import sklearn.ensemble as ensemble_module
|
|
47
47
|
import sklearn.linear_model as linear_model_module
|
|
@@ -69,6 +69,7 @@ def get_patch_map():
|
|
|
69
69
|
from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
|
|
70
70
|
from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
|
|
71
71
|
from .linear_model import LinearRegression as LinearRegression_sklearnex
|
|
72
|
+
from .linear_model import LogisticRegression as LogisticRegression_sklearnex
|
|
72
73
|
from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
|
|
73
74
|
from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
|
|
74
75
|
from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
|
|
@@ -76,6 +77,9 @@ def get_patch_map():
|
|
|
76
77
|
|
|
77
78
|
# Preview classes for patching
|
|
78
79
|
from .preview.cluster import KMeans as KMeans_sklearnex
|
|
80
|
+
from .preview.covariance import (
|
|
81
|
+
EmpiricalCovariance as EmpiricalCovariance_sklearnex,
|
|
82
|
+
)
|
|
79
83
|
from .preview.decomposition import PCA as PCA_sklearnex
|
|
80
84
|
from .svm import SVC as SVC_sklearnex
|
|
81
85
|
from .svm import SVR as SVR_sklearnex
|
|
@@ -101,6 +105,18 @@ def get_patch_map():
|
|
|
101
105
|
]
|
|
102
106
|
]
|
|
103
107
|
|
|
108
|
+
# Covariance
|
|
109
|
+
mapping["empiricalcovariance"] = [
|
|
110
|
+
[
|
|
111
|
+
(
|
|
112
|
+
covariance_module,
|
|
113
|
+
"EmpiricalCovariance",
|
|
114
|
+
EmpiricalCovariance_sklearnex,
|
|
115
|
+
),
|
|
116
|
+
None,
|
|
117
|
+
]
|
|
118
|
+
]
|
|
119
|
+
|
|
104
120
|
# DBSCAN
|
|
105
121
|
mapping.pop("dbscan")
|
|
106
122
|
mapping["dbscan"] = [[(cluster_module, "DBSCAN", DBSCAN_sklearnex), None]]
|
|
@@ -128,6 +144,24 @@ def get_patch_map():
|
|
|
128
144
|
]
|
|
129
145
|
mapping["linearregression"] = mapping["linear"]
|
|
130
146
|
|
|
147
|
+
# Logistic Regression
|
|
148
|
+
|
|
149
|
+
mapping.pop("logisticregression")
|
|
150
|
+
mapping.pop("log_reg")
|
|
151
|
+
mapping.pop("logistic")
|
|
152
|
+
mapping.pop("_logistic_regression_path")
|
|
153
|
+
mapping["log_reg"] = [
|
|
154
|
+
[
|
|
155
|
+
(
|
|
156
|
+
linear_model_module,
|
|
157
|
+
"LogisticRegression",
|
|
158
|
+
LogisticRegression_sklearnex,
|
|
159
|
+
),
|
|
160
|
+
None,
|
|
161
|
+
]
|
|
162
|
+
]
|
|
163
|
+
mapping["logisticregression"] = mapping["log_reg"]
|
|
164
|
+
|
|
131
165
|
# kNN
|
|
132
166
|
mapping.pop("knn_classifier")
|
|
133
167
|
mapping.pop("kneighborsclassifier")
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
1
|
# ==============================================================================
|
|
3
2
|
# Copyright 2021 Intel Corporation
|
|
4
3
|
#
|
|
@@ -43,6 +42,7 @@ from sklearn.utils.validation import (
|
|
|
43
42
|
check_X_y,
|
|
44
43
|
)
|
|
45
44
|
|
|
45
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
46
46
|
from daal4py.sklearn._utils import (
|
|
47
47
|
check_tree_nodes,
|
|
48
48
|
daal_check_version,
|
|
@@ -114,6 +114,8 @@ class BaseForest(ABC):
|
|
|
114
114
|
# [:, np.newaxis] that does not.
|
|
115
115
|
y = np.reshape(y, (-1, 1))
|
|
116
116
|
|
|
117
|
+
self._n_samples, self.n_outputs_ = y.shape
|
|
118
|
+
|
|
117
119
|
y, expanded_class_weight = self._validate_y_class_weight(y)
|
|
118
120
|
|
|
119
121
|
self.n_features_in_ = X.shape[1]
|
|
@@ -189,7 +191,16 @@ class BaseForest(ABC):
|
|
|
189
191
|
self.oob_decision_function_ = (
|
|
190
192
|
self._onedal_estimator.oob_decision_function_
|
|
191
193
|
)
|
|
192
|
-
|
|
194
|
+
if self.bootstrap:
|
|
195
|
+
self._n_samples_bootstrap = max(
|
|
196
|
+
round(
|
|
197
|
+
self._onedal_estimator.observations_per_tree_fraction
|
|
198
|
+
* self._n_samples
|
|
199
|
+
),
|
|
200
|
+
1,
|
|
201
|
+
)
|
|
202
|
+
else:
|
|
203
|
+
self._n_samples_bootstrap = None
|
|
193
204
|
self._validate_estimator()
|
|
194
205
|
return self
|
|
195
206
|
|
|
@@ -1122,6 +1133,7 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
|
|
|
1122
1133
|
predict.__doc__ = sklearn_ForestRegressor.predict.__doc__
|
|
1123
1134
|
|
|
1124
1135
|
|
|
1136
|
+
@control_n_jobs(decorated_methods=["fit", "predict", "predict_proba"])
|
|
1125
1137
|
class RandomForestClassifier(ForestClassifier):
|
|
1126
1138
|
__doc__ = sklearn_RandomForestClassifier.__doc__
|
|
1127
1139
|
_onedal_factory = onedal_RandomForestClassifier
|
|
@@ -1331,6 +1343,7 @@ class RandomForestClassifier(ForestClassifier):
|
|
|
1331
1343
|
self.min_bin_size = min_bin_size
|
|
1332
1344
|
|
|
1333
1345
|
|
|
1346
|
+
@control_n_jobs(decorated_methods=["fit", "predict"])
|
|
1334
1347
|
class RandomForestRegressor(ForestRegressor):
|
|
1335
1348
|
__doc__ = sklearn_RandomForestRegressor.__doc__
|
|
1336
1349
|
_onedal_factory = onedal_RandomForestRegressor
|
|
@@ -1531,6 +1544,7 @@ class RandomForestRegressor(ForestRegressor):
|
|
|
1531
1544
|
self.min_bin_size = min_bin_size
|
|
1532
1545
|
|
|
1533
1546
|
|
|
1547
|
+
@control_n_jobs(decorated_methods=["fit", "predict", "predict_proba"])
|
|
1534
1548
|
class ExtraTreesClassifier(ForestClassifier):
|
|
1535
1549
|
__doc__ = sklearn_ExtraTreesClassifier.__doc__
|
|
1536
1550
|
_onedal_factory = onedal_ExtraTreesClassifier
|
|
@@ -1740,6 +1754,7 @@ class ExtraTreesClassifier(ForestClassifier):
|
|
|
1740
1754
|
self.min_bin_size = min_bin_size
|
|
1741
1755
|
|
|
1742
1756
|
|
|
1757
|
+
@control_n_jobs(decorated_methods=["fit", "predict"])
|
|
1743
1758
|
class ExtraTreesRegressor(ForestRegressor):
|
|
1744
1759
|
__doc__ = sklearn_ExtraTreesRegressor.__doc__
|
|
1745
1760
|
_onedal_factory = onedal_ExtraTreesRegressor
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
1
|
# ===============================================================================
|
|
3
2
|
# Copyright 2021 Intel Corporation
|
|
4
3
|
#
|
|
@@ -17,14 +16,13 @@
|
|
|
17
16
|
|
|
18
17
|
from .coordinate_descent import ElasticNet, Lasso
|
|
19
18
|
from .linear import LinearRegression
|
|
20
|
-
from .
|
|
19
|
+
from .logistic_regression import LogisticRegression
|
|
21
20
|
from .ridge import Ridge
|
|
22
21
|
|
|
23
22
|
__all__ = [
|
|
24
23
|
"Ridge",
|
|
25
24
|
"LinearRegression",
|
|
26
25
|
"LogisticRegression",
|
|
27
|
-
"logistic_regression_path",
|
|
28
26
|
"ElasticNet",
|
|
29
27
|
"Lasso",
|
|
30
28
|
]
|
|
@@ -65,10 +65,15 @@ if daal_check_version((2023, "P", 100)):
|
|
|
65
65
|
import numpy as np
|
|
66
66
|
from sklearn.linear_model import LinearRegression as sklearn_LinearRegression
|
|
67
67
|
|
|
68
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
68
69
|
from daal4py.sklearn._utils import get_dtype, make2d, sklearn_check_version
|
|
69
70
|
|
|
70
71
|
from .._device_offload import dispatch, wrap_output_data
|
|
71
|
-
from .._utils import
|
|
72
|
+
from .._utils import (
|
|
73
|
+
PatchingConditionsChain,
|
|
74
|
+
get_patch_message,
|
|
75
|
+
register_hyperparameters,
|
|
76
|
+
)
|
|
72
77
|
from ..utils.validation import _assert_all_finite
|
|
73
78
|
|
|
74
79
|
if sklearn_check_version("1.0") and not sklearn_check_version("1.2"):
|
|
@@ -78,9 +83,12 @@ if daal_check_version((2023, "P", 100)):
|
|
|
78
83
|
from sklearn.exceptions import NotFittedError
|
|
79
84
|
from sklearn.utils.validation import _deprecate_positional_args, check_X_y
|
|
80
85
|
|
|
86
|
+
from onedal.common.hyperparameters import get_hyperparameters
|
|
81
87
|
from onedal.linear_model import LinearRegression as onedal_LinearRegression
|
|
82
88
|
from onedal.utils import _num_features, _num_samples
|
|
83
89
|
|
|
90
|
+
@register_hyperparameters({"fit": get_hyperparameters("linear_regression", "train")})
|
|
91
|
+
@control_n_jobs(decorated_methods=["fit", "predict"])
|
|
84
92
|
class LinearRegression(sklearn_LinearRegression, BaseLinearRegression):
|
|
85
93
|
__doc__ = sklearn_LinearRegression.__doc__
|
|
86
94
|
intercept_, coef_ = None, None
|