scikit-learn-intelex 2024.1.0__py311-none-manylinux1_x86_64.whl → 2024.4.0__py311-none-manylinux1_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.
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/METADATA +2 -2
- scikit_learn_intelex-2024.4.0.dist-info/RECORD +101 -0
- sklearnex/__init__.py +9 -7
- sklearnex/_device_offload.py +31 -4
- sklearnex/basic_statistics/__init__.py +2 -1
- sklearnex/basic_statistics/incremental_basic_statistics.py +288 -0
- sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +386 -0
- sklearnex/cluster/dbscan.py +6 -4
- sklearnex/conftest.py +63 -0
- sklearnex/{preview/decomposition → covariance}/__init__.py +19 -19
- sklearnex/covariance/incremental_covariance.py +130 -0
- sklearnex/covariance/tests/test_incremental_covariance.py +143 -0
- sklearnex/decomposition/pca.py +319 -1
- sklearnex/decomposition/tests/test_pca.py +34 -5
- sklearnex/dispatcher.py +93 -61
- sklearnex/ensemble/_forest.py +81 -97
- sklearnex/ensemble/tests/test_forest.py +15 -19
- sklearnex/linear_model/__init__.py +1 -2
- sklearnex/linear_model/linear.py +275 -347
- sklearnex/{preview/linear_model → linear_model}/logistic_regression.py +83 -50
- sklearnex/linear_model/tests/test_linear.py +40 -5
- sklearnex/linear_model/tests/test_logreg.py +70 -7
- sklearnex/neighbors/__init__.py +1 -1
- sklearnex/neighbors/_lof.py +221 -0
- sklearnex/neighbors/common.py +4 -1
- sklearnex/neighbors/knn_classification.py +47 -137
- sklearnex/neighbors/knn_regression.py +20 -132
- sklearnex/neighbors/knn_unsupervised.py +16 -93
- sklearnex/neighbors/tests/test_neighbors.py +12 -16
- sklearnex/preview/__init__.py +1 -1
- sklearnex/preview/cluster/k_means.py +8 -81
- sklearnex/preview/covariance/covariance.py +51 -16
- sklearnex/preview/covariance/tests/test_covariance.py +18 -5
- sklearnex/spmd/__init__.py +1 -0
- sklearnex/{preview/linear_model → spmd/covariance}/__init__.py +5 -5
- sklearnex/spmd/covariance/covariance.py +21 -0
- sklearnex/spmd/ensemble/forest.py +4 -12
- sklearnex/spmd/linear_model/__init__.py +2 -1
- sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- sklearnex/svm/_common.py +4 -7
- sklearnex/svm/nusvc.py +74 -55
- sklearnex/svm/nusvr.py +9 -56
- sklearnex/svm/svc.py +74 -56
- sklearnex/svm/svr.py +6 -53
- sklearnex/tests/_utils.py +164 -0
- sklearnex/tests/test_memory_usage.py +9 -7
- sklearnex/tests/test_monkeypatch.py +179 -138
- sklearnex/tests/test_n_jobs_support.py +77 -9
- sklearnex/tests/test_parallel.py +6 -8
- sklearnex/tests/test_patching.py +338 -89
- sklearnex/utils/__init__.py +2 -1
- sklearnex/utils/_namespace.py +97 -0
- scikit_learn_intelex-2024.1.0.dist-info/RECORD +0 -97
- sklearnex/neighbors/lof.py +0 -436
- sklearnex/preview/decomposition/pca.py +0 -376
- sklearnex/preview/decomposition/tests/test_preview_pca.py +0 -42
- sklearnex/preview/linear_model/tests/test_preview_logistic_regression.py +0 -59
- sklearnex/tests/_models_info.py +0 -170
- sklearnex/tests/utils/_launch_algorithms.py +0 -118
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/top_level.txt +0 -0
|
@@ -14,136 +14,30 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
from sklearn.neighbors._ball_tree import BallTree
|
|
20
|
-
from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
|
|
21
|
-
from sklearn.neighbors._kd_tree import KDTree
|
|
22
|
-
|
|
23
|
-
from daal4py.sklearn._utils import control_n_jobs, run_with_n_jobs, sklearn_check_version
|
|
24
|
-
|
|
25
|
-
if not sklearn_check_version("1.2"):
|
|
26
|
-
from sklearn.neighbors._base import _check_weights
|
|
27
|
-
|
|
28
|
-
import numpy as np
|
|
29
|
-
from sklearn.neighbors._base import VALID_METRICS
|
|
17
|
+
from sklearn.metrics import accuracy_score
|
|
30
18
|
from sklearn.neighbors._classification import (
|
|
31
19
|
KNeighborsClassifier as sklearn_KNeighborsClassifier,
|
|
32
20
|
)
|
|
33
21
|
from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
|
|
34
22
|
from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
|
|
35
23
|
|
|
24
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
25
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
36
26
|
from onedal.neighbors import KNeighborsClassifier as onedal_KNeighborsClassifier
|
|
37
|
-
from onedal.utils import _check_array, _num_features, _num_samples
|
|
38
27
|
|
|
39
28
|
from .._device_offload import dispatch, wrap_output_data
|
|
40
29
|
from .common import KNeighborsDispatchingBase
|
|
41
30
|
|
|
42
|
-
if sklearn_check_version("0.24"):
|
|
43
31
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@_deprecate_positional_args
|
|
51
|
-
def __init__(
|
|
52
|
-
self,
|
|
53
|
-
n_neighbors=5,
|
|
54
|
-
*,
|
|
55
|
-
weights="uniform",
|
|
56
|
-
algorithm="auto",
|
|
57
|
-
leaf_size=30,
|
|
58
|
-
p=2,
|
|
59
|
-
metric="minkowski",
|
|
60
|
-
metric_params=None,
|
|
61
|
-
n_jobs=None,
|
|
62
|
-
**kwargs,
|
|
63
|
-
):
|
|
64
|
-
super().__init__(
|
|
65
|
-
n_neighbors=n_neighbors,
|
|
66
|
-
algorithm=algorithm,
|
|
67
|
-
leaf_size=leaf_size,
|
|
68
|
-
metric=metric,
|
|
69
|
-
p=p,
|
|
70
|
-
metric_params=metric_params,
|
|
71
|
-
n_jobs=n_jobs,
|
|
72
|
-
**kwargs,
|
|
73
|
-
)
|
|
74
|
-
self.weights = (
|
|
75
|
-
weights if sklearn_check_version("1.0") else _check_weights(weights)
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
elif sklearn_check_version("0.22"):
|
|
79
|
-
from sklearn.neighbors._base import (
|
|
80
|
-
SupervisedIntegerMixin as BaseSupervisedIntegerMixin,
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
class KNeighborsClassifier_(sklearn_KNeighborsClassifier, BaseSupervisedIntegerMixin):
|
|
84
|
-
@_deprecate_positional_args
|
|
85
|
-
def __init__(
|
|
86
|
-
self,
|
|
87
|
-
n_neighbors=5,
|
|
88
|
-
*,
|
|
89
|
-
weights="uniform",
|
|
90
|
-
algorithm="auto",
|
|
91
|
-
leaf_size=30,
|
|
92
|
-
p=2,
|
|
93
|
-
metric="minkowski",
|
|
94
|
-
metric_params=None,
|
|
95
|
-
n_jobs=None,
|
|
96
|
-
**kwargs,
|
|
97
|
-
):
|
|
98
|
-
super().__init__(
|
|
99
|
-
n_neighbors=n_neighbors,
|
|
100
|
-
algorithm=algorithm,
|
|
101
|
-
leaf_size=leaf_size,
|
|
102
|
-
metric=metric,
|
|
103
|
-
p=p,
|
|
104
|
-
metric_params=metric_params,
|
|
105
|
-
n_jobs=n_jobs,
|
|
106
|
-
**kwargs,
|
|
107
|
-
)
|
|
108
|
-
self.weights = _check_weights(weights)
|
|
109
|
-
|
|
110
|
-
else:
|
|
111
|
-
from sklearn.neighbors.base import (
|
|
112
|
-
SupervisedIntegerMixin as BaseSupervisedIntegerMixin,
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
class KNeighborsClassifier_(sklearn_KNeighborsClassifier, BaseSupervisedIntegerMixin):
|
|
116
|
-
@_deprecate_positional_args
|
|
117
|
-
def __init__(
|
|
118
|
-
self,
|
|
119
|
-
n_neighbors=5,
|
|
120
|
-
*,
|
|
121
|
-
weights="uniform",
|
|
122
|
-
algorithm="auto",
|
|
123
|
-
leaf_size=30,
|
|
124
|
-
p=2,
|
|
125
|
-
metric="minkowski",
|
|
126
|
-
metric_params=None,
|
|
127
|
-
n_jobs=None,
|
|
128
|
-
**kwargs,
|
|
129
|
-
):
|
|
130
|
-
super().__init__(
|
|
131
|
-
n_neighbors=n_neighbors,
|
|
132
|
-
algorithm=algorithm,
|
|
133
|
-
leaf_size=leaf_size,
|
|
134
|
-
metric=metric,
|
|
135
|
-
p=p,
|
|
136
|
-
metric_params=metric_params,
|
|
137
|
-
n_jobs=n_jobs,
|
|
138
|
-
**kwargs,
|
|
139
|
-
)
|
|
140
|
-
self.weights = _check_weights(weights)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
@control_n_jobs
|
|
144
|
-
class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
32
|
+
@control_n_jobs(
|
|
33
|
+
decorated_methods=["fit", "predict", "predict_proba", "kneighbors", "score"]
|
|
34
|
+
)
|
|
35
|
+
class KNeighborsClassifier(sklearn_KNeighborsClassifier, KNeighborsDispatchingBase):
|
|
36
|
+
__doc__ = sklearn_KNeighborsClassifier.__doc__
|
|
145
37
|
if sklearn_check_version("1.2"):
|
|
146
|
-
_parameter_constraints: dict = {
|
|
38
|
+
_parameter_constraints: dict = {
|
|
39
|
+
**sklearn_KNeighborsClassifier._parameter_constraints
|
|
40
|
+
}
|
|
147
41
|
|
|
148
42
|
if sklearn_check_version("1.0"):
|
|
149
43
|
|
|
@@ -199,7 +93,6 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
199
93
|
)
|
|
200
94
|
|
|
201
95
|
def fit(self, X, y):
|
|
202
|
-
self._fit_validation(X, y)
|
|
203
96
|
dispatch(
|
|
204
97
|
self,
|
|
205
98
|
"fit",
|
|
@@ -243,10 +136,27 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
243
136
|
)
|
|
244
137
|
|
|
245
138
|
@wrap_output_data
|
|
246
|
-
def
|
|
139
|
+
def score(self, X, y, sample_weight=None):
|
|
247
140
|
check_is_fitted(self)
|
|
248
141
|
if sklearn_check_version("1.0"):
|
|
249
142
|
self._check_feature_names(X, reset=False)
|
|
143
|
+
return dispatch(
|
|
144
|
+
self,
|
|
145
|
+
"score",
|
|
146
|
+
{
|
|
147
|
+
"onedal": self.__class__._onedal_score,
|
|
148
|
+
"sklearn": sklearn_KNeighborsClassifier.score,
|
|
149
|
+
},
|
|
150
|
+
X,
|
|
151
|
+
y,
|
|
152
|
+
sample_weight=sample_weight,
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
@wrap_output_data
|
|
156
|
+
def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
|
|
157
|
+
check_is_fitted(self)
|
|
158
|
+
if sklearn_check_version("1.0") and X is not None:
|
|
159
|
+
self._check_feature_names(X, reset=False)
|
|
250
160
|
return dispatch(
|
|
251
161
|
self,
|
|
252
162
|
"kneighbors",
|
|
@@ -255,8 +165,8 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
255
165
|
"sklearn": sklearn_KNeighborsClassifier.kneighbors,
|
|
256
166
|
},
|
|
257
167
|
X,
|
|
258
|
-
n_neighbors,
|
|
259
|
-
return_distance,
|
|
168
|
+
n_neighbors=n_neighbors,
|
|
169
|
+
return_distance=return_distance,
|
|
260
170
|
)
|
|
261
171
|
|
|
262
172
|
@wrap_output_data
|
|
@@ -270,22 +180,13 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
270
180
|
or getattr(self, "_tree", 0) is None
|
|
271
181
|
and self._fit_method == "kd_tree"
|
|
272
182
|
):
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if sklearn_check_version("0.22"):
|
|
278
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
279
|
-
self, X, radius, return_distance, sort_results
|
|
280
|
-
)
|
|
281
|
-
else:
|
|
282
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
283
|
-
self, X, radius, return_distance
|
|
284
|
-
)
|
|
183
|
+
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
184
|
+
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
185
|
+
self, X, radius, return_distance, sort_results
|
|
186
|
+
)
|
|
285
187
|
|
|
286
188
|
return result
|
|
287
189
|
|
|
288
|
-
@run_with_n_jobs
|
|
289
190
|
def _onedal_fit(self, X, y, queue=None):
|
|
290
191
|
onedal_params = {
|
|
291
192
|
"n_neighbors": self.n_neighbors,
|
|
@@ -308,15 +209,12 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
308
209
|
|
|
309
210
|
self._save_attributes()
|
|
310
211
|
|
|
311
|
-
@run_with_n_jobs
|
|
312
212
|
def _onedal_predict(self, X, queue=None):
|
|
313
213
|
return self._onedal_estimator.predict(X, queue=queue)
|
|
314
214
|
|
|
315
|
-
@run_with_n_jobs
|
|
316
215
|
def _onedal_predict_proba(self, X, queue=None):
|
|
317
216
|
return self._onedal_estimator.predict_proba(X, queue=queue)
|
|
318
217
|
|
|
319
|
-
@run_with_n_jobs
|
|
320
218
|
def _onedal_kneighbors(
|
|
321
219
|
self, X=None, n_neighbors=None, return_distance=True, queue=None
|
|
322
220
|
):
|
|
@@ -324,6 +222,11 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
324
222
|
X, n_neighbors, return_distance, queue=queue
|
|
325
223
|
)
|
|
326
224
|
|
|
225
|
+
def _onedal_score(self, X, y, sample_weight=None, queue=None):
|
|
226
|
+
return accuracy_score(
|
|
227
|
+
y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
|
|
228
|
+
)
|
|
229
|
+
|
|
327
230
|
def _save_attributes(self):
|
|
328
231
|
self.classes_ = self._onedal_estimator.classes_
|
|
329
232
|
self.n_features_in_ = self._onedal_estimator.n_features_in_
|
|
@@ -333,3 +236,10 @@ class KNeighborsClassifier(KNeighborsClassifier_, KNeighborsDispatchingBase):
|
|
|
333
236
|
self._fit_method = self._onedal_estimator._fit_method
|
|
334
237
|
self.outputs_2d_ = self._onedal_estimator.outputs_2d_
|
|
335
238
|
self._tree = self._onedal_estimator._tree
|
|
239
|
+
|
|
240
|
+
fit.__doc__ = sklearn_KNeighborsClassifier.fit.__doc__
|
|
241
|
+
predict.__doc__ = sklearn_KNeighborsClassifier.predict.__doc__
|
|
242
|
+
predict_proba.__doc__ = sklearn_KNeighborsClassifier.predict_proba.__doc__
|
|
243
|
+
score.__doc__ = sklearn_KNeighborsClassifier.score.__doc__
|
|
244
|
+
kneighbors.__doc__ = sklearn_KNeighborsClassifier.kneighbors.__doc__
|
|
245
|
+
radius_neighbors.__doc__ = sklearn_NearestNeighbors.radius_neighbors.__doc__
|
|
@@ -14,132 +14,27 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
|
-
import warnings
|
|
18
|
-
|
|
19
|
-
from sklearn.neighbors._ball_tree import BallTree
|
|
20
|
-
from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
|
|
21
|
-
from sklearn.neighbors._kd_tree import KDTree
|
|
22
|
-
|
|
23
|
-
from daal4py.sklearn._utils import control_n_jobs, run_with_n_jobs, sklearn_check_version
|
|
24
|
-
|
|
25
|
-
if not sklearn_check_version("1.2"):
|
|
26
|
-
from sklearn.neighbors._base import _check_weights
|
|
27
|
-
|
|
28
|
-
import numpy as np
|
|
29
|
-
from sklearn.neighbors._base import VALID_METRICS
|
|
30
17
|
from sklearn.neighbors._regression import (
|
|
31
18
|
KNeighborsRegressor as sklearn_KNeighborsRegressor,
|
|
32
19
|
)
|
|
33
20
|
from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
|
|
34
21
|
from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
|
|
35
22
|
|
|
23
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
24
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
36
25
|
from onedal.neighbors import KNeighborsRegressor as onedal_KNeighborsRegressor
|
|
37
|
-
from onedal.utils import _check_array, _num_features, _num_samples
|
|
38
26
|
|
|
39
27
|
from .._device_offload import dispatch, wrap_output_data
|
|
40
28
|
from .common import KNeighborsDispatchingBase
|
|
41
29
|
|
|
42
|
-
if sklearn_check_version("0.24"):
|
|
43
|
-
|
|
44
|
-
class KNeighborsRegressor_(sklearn_KNeighborsRegressor):
|
|
45
|
-
if sklearn_check_version("1.2"):
|
|
46
|
-
_parameter_constraints: dict = {
|
|
47
|
-
**sklearn_KNeighborsRegressor._parameter_constraints
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
@_deprecate_positional_args
|
|
51
|
-
def __init__(
|
|
52
|
-
self,
|
|
53
|
-
n_neighbors=5,
|
|
54
|
-
*,
|
|
55
|
-
weights="uniform",
|
|
56
|
-
algorithm="auto",
|
|
57
|
-
leaf_size=30,
|
|
58
|
-
p=2,
|
|
59
|
-
metric="minkowski",
|
|
60
|
-
metric_params=None,
|
|
61
|
-
n_jobs=None,
|
|
62
|
-
**kwargs,
|
|
63
|
-
):
|
|
64
|
-
super().__init__(
|
|
65
|
-
n_neighbors=n_neighbors,
|
|
66
|
-
algorithm=algorithm,
|
|
67
|
-
leaf_size=leaf_size,
|
|
68
|
-
metric=metric,
|
|
69
|
-
p=p,
|
|
70
|
-
metric_params=metric_params,
|
|
71
|
-
n_jobs=n_jobs,
|
|
72
|
-
**kwargs,
|
|
73
|
-
)
|
|
74
|
-
self.weights = (
|
|
75
|
-
weights if sklearn_check_version("1.0") else _check_weights(weights)
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
elif sklearn_check_version("0.22"):
|
|
79
|
-
from sklearn.neighbors._base import SupervisedFloatMixin as BaseSupervisedFloatMixin
|
|
80
|
-
|
|
81
|
-
class KNeighborsRegressor_(sklearn_KNeighborsRegressor, BaseSupervisedFloatMixin):
|
|
82
|
-
@_deprecate_positional_args
|
|
83
|
-
def __init__(
|
|
84
|
-
self,
|
|
85
|
-
n_neighbors=5,
|
|
86
|
-
*,
|
|
87
|
-
weights="uniform",
|
|
88
|
-
algorithm="auto",
|
|
89
|
-
leaf_size=30,
|
|
90
|
-
p=2,
|
|
91
|
-
metric="minkowski",
|
|
92
|
-
metric_params=None,
|
|
93
|
-
n_jobs=None,
|
|
94
|
-
**kwargs,
|
|
95
|
-
):
|
|
96
|
-
super().__init__(
|
|
97
|
-
n_neighbors=n_neighbors,
|
|
98
|
-
algorithm=algorithm,
|
|
99
|
-
leaf_size=leaf_size,
|
|
100
|
-
metric=metric,
|
|
101
|
-
p=p,
|
|
102
|
-
metric_params=metric_params,
|
|
103
|
-
n_jobs=n_jobs,
|
|
104
|
-
**kwargs,
|
|
105
|
-
)
|
|
106
|
-
self.weights = _check_weights(weights)
|
|
107
|
-
|
|
108
|
-
else:
|
|
109
|
-
from sklearn.neighbors.base import SupervisedFloatMixin as BaseSupervisedFloatMixin
|
|
110
30
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
self,
|
|
115
|
-
n_neighbors=5,
|
|
116
|
-
*,
|
|
117
|
-
weights="uniform",
|
|
118
|
-
algorithm="auto",
|
|
119
|
-
leaf_size=30,
|
|
120
|
-
p=2,
|
|
121
|
-
metric="minkowski",
|
|
122
|
-
metric_params=None,
|
|
123
|
-
n_jobs=None,
|
|
124
|
-
**kwargs,
|
|
125
|
-
):
|
|
126
|
-
super().__init__(
|
|
127
|
-
n_neighbors=n_neighbors,
|
|
128
|
-
algorithm=algorithm,
|
|
129
|
-
leaf_size=leaf_size,
|
|
130
|
-
metric=metric,
|
|
131
|
-
p=p,
|
|
132
|
-
metric_params=metric_params,
|
|
133
|
-
n_jobs=n_jobs,
|
|
134
|
-
**kwargs,
|
|
135
|
-
)
|
|
136
|
-
self.weights = _check_weights(weights)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
@control_n_jobs
|
|
140
|
-
class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
31
|
+
@control_n_jobs(decorated_methods=["fit", "predict", "kneighbors"])
|
|
32
|
+
class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase):
|
|
33
|
+
__doc__ = sklearn_KNeighborsRegressor.__doc__
|
|
141
34
|
if sklearn_check_version("1.2"):
|
|
142
|
-
_parameter_constraints: dict = {
|
|
35
|
+
_parameter_constraints: dict = {
|
|
36
|
+
**sklearn_KNeighborsRegressor._parameter_constraints
|
|
37
|
+
}
|
|
143
38
|
|
|
144
39
|
if sklearn_check_version("1.0"):
|
|
145
40
|
|
|
@@ -195,7 +90,6 @@ class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
|
195
90
|
)
|
|
196
91
|
|
|
197
92
|
def fit(self, X, y):
|
|
198
|
-
self._fit_validation(X, y)
|
|
199
93
|
dispatch(
|
|
200
94
|
self,
|
|
201
95
|
"fit",
|
|
@@ -226,7 +120,7 @@ class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
|
226
120
|
@wrap_output_data
|
|
227
121
|
def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
|
|
228
122
|
check_is_fitted(self)
|
|
229
|
-
if sklearn_check_version("1.0"):
|
|
123
|
+
if sklearn_check_version("1.0") and X is not None:
|
|
230
124
|
self._check_feature_names(X, reset=False)
|
|
231
125
|
return dispatch(
|
|
232
126
|
self,
|
|
@@ -236,8 +130,8 @@ class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
|
236
130
|
"sklearn": sklearn_KNeighborsRegressor.kneighbors,
|
|
237
131
|
},
|
|
238
132
|
X,
|
|
239
|
-
n_neighbors,
|
|
240
|
-
return_distance,
|
|
133
|
+
n_neighbors=n_neighbors,
|
|
134
|
+
return_distance=return_distance,
|
|
241
135
|
)
|
|
242
136
|
|
|
243
137
|
@wrap_output_data
|
|
@@ -251,22 +145,13 @@ class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
|
251
145
|
or getattr(self, "_tree", 0) is None
|
|
252
146
|
and self._fit_method == "kd_tree"
|
|
253
147
|
):
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
if sklearn_check_version("0.22"):
|
|
259
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
260
|
-
self, X, radius, return_distance, sort_results
|
|
261
|
-
)
|
|
262
|
-
else:
|
|
263
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
264
|
-
self, X, radius, return_distance
|
|
265
|
-
)
|
|
148
|
+
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
149
|
+
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
150
|
+
self, X, radius, return_distance, sort_results
|
|
151
|
+
)
|
|
266
152
|
|
|
267
153
|
return result
|
|
268
154
|
|
|
269
|
-
@run_with_n_jobs
|
|
270
155
|
def _onedal_fit(self, X, y, queue=None):
|
|
271
156
|
onedal_params = {
|
|
272
157
|
"n_neighbors": self.n_neighbors,
|
|
@@ -289,11 +174,9 @@ class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
|
289
174
|
|
|
290
175
|
self._save_attributes()
|
|
291
176
|
|
|
292
|
-
@run_with_n_jobs
|
|
293
177
|
def _onedal_predict(self, X, queue=None):
|
|
294
178
|
return self._onedal_estimator.predict(X, queue=queue)
|
|
295
179
|
|
|
296
|
-
@run_with_n_jobs
|
|
297
180
|
def _onedal_kneighbors(
|
|
298
181
|
self, X=None, n_neighbors=None, return_distance=True, queue=None
|
|
299
182
|
):
|
|
@@ -308,3 +191,8 @@ class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
|
|
|
308
191
|
self._y = self._onedal_estimator._y
|
|
309
192
|
self._fit_method = self._onedal_estimator._fit_method
|
|
310
193
|
self._tree = self._onedal_estimator._tree
|
|
194
|
+
|
|
195
|
+
fit.__doc__ = sklearn_KNeighborsRegressor.__doc__
|
|
196
|
+
predict.__doc__ = sklearn_KNeighborsRegressor.predict.__doc__
|
|
197
|
+
kneighbors.__doc__ = sklearn_KNeighborsRegressor.kneighbors.__doc__
|
|
198
|
+
radius_neighbors.__doc__ = sklearn_NearestNeighbors.radius_neighbors.__doc__
|
|
@@ -14,91 +14,22 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
|
-
try:
|
|
18
|
-
from packaging.version import Version
|
|
19
|
-
except ImportError:
|
|
20
|
-
from distutils.version import LooseVersion as Version
|
|
21
|
-
|
|
22
|
-
import warnings
|
|
23
|
-
|
|
24
|
-
import numpy as np
|
|
25
|
-
from sklearn import __version__ as sklearn_version
|
|
26
|
-
from sklearn.neighbors._ball_tree import BallTree
|
|
27
|
-
from sklearn.neighbors._base import VALID_METRICS
|
|
28
|
-
from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
|
|
29
|
-
from sklearn.neighbors._kd_tree import KDTree
|
|
30
17
|
from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
|
|
31
18
|
from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
|
|
32
19
|
|
|
33
|
-
from daal4py.sklearn.
|
|
20
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
21
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
34
22
|
from onedal.neighbors import NearestNeighbors as onedal_NearestNeighbors
|
|
35
|
-
from onedal.utils import _check_array, _num_features, _num_samples
|
|
36
23
|
|
|
37
24
|
from .._device_offload import dispatch, wrap_output_data
|
|
38
25
|
from .common import KNeighborsDispatchingBase
|
|
39
26
|
|
|
40
|
-
if sklearn_check_version("0.22") and Version(sklearn_version) < Version("0.23"):
|
|
41
27
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
n_neighbors=5,
|
|
46
|
-
radius=1.0,
|
|
47
|
-
algorithm="auto",
|
|
48
|
-
leaf_size=30,
|
|
49
|
-
metric="minkowski",
|
|
50
|
-
p=2,
|
|
51
|
-
metric_params=None,
|
|
52
|
-
n_jobs=None,
|
|
53
|
-
):
|
|
54
|
-
super().__init__(
|
|
55
|
-
n_neighbors=n_neighbors,
|
|
56
|
-
radius=radius,
|
|
57
|
-
algorithm=algorithm,
|
|
58
|
-
leaf_size=leaf_size,
|
|
59
|
-
metric=metric,
|
|
60
|
-
p=p,
|
|
61
|
-
metric_params=metric_params,
|
|
62
|
-
n_jobs=n_jobs,
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
else:
|
|
66
|
-
|
|
67
|
-
class NearestNeighbors_(sklearn_NearestNeighbors):
|
|
68
|
-
if sklearn_check_version("1.2"):
|
|
69
|
-
_parameter_constraints: dict = {
|
|
70
|
-
**sklearn_NearestNeighbors._parameter_constraints
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@_deprecate_positional_args
|
|
74
|
-
def __init__(
|
|
75
|
-
self,
|
|
76
|
-
*,
|
|
77
|
-
n_neighbors=5,
|
|
78
|
-
radius=1.0,
|
|
79
|
-
algorithm="auto",
|
|
80
|
-
leaf_size=30,
|
|
81
|
-
metric="minkowski",
|
|
82
|
-
p=2,
|
|
83
|
-
metric_params=None,
|
|
84
|
-
n_jobs=None,
|
|
85
|
-
):
|
|
86
|
-
super().__init__(
|
|
87
|
-
n_neighbors=n_neighbors,
|
|
88
|
-
radius=radius,
|
|
89
|
-
algorithm=algorithm,
|
|
90
|
-
leaf_size=leaf_size,
|
|
91
|
-
metric=metric,
|
|
92
|
-
p=p,
|
|
93
|
-
metric_params=metric_params,
|
|
94
|
-
n_jobs=n_jobs,
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
@control_n_jobs
|
|
99
|
-
class NearestNeighbors(NearestNeighbors_, KNeighborsDispatchingBase):
|
|
28
|
+
@control_n_jobs(decorated_methods=["fit", "kneighbors"])
|
|
29
|
+
class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
30
|
+
__doc__ = sklearn_NearestNeighbors.__doc__
|
|
100
31
|
if sklearn_check_version("1.2"):
|
|
101
|
-
_parameter_constraints: dict = {**
|
|
32
|
+
_parameter_constraints: dict = {**sklearn_NearestNeighbors._parameter_constraints}
|
|
102
33
|
|
|
103
34
|
@_deprecate_positional_args
|
|
104
35
|
def __init__(
|
|
@@ -124,7 +55,6 @@ class NearestNeighbors(NearestNeighbors_, KNeighborsDispatchingBase):
|
|
|
124
55
|
)
|
|
125
56
|
|
|
126
57
|
def fit(self, X, y=None):
|
|
127
|
-
self._fit_validation(X, y)
|
|
128
58
|
dispatch(
|
|
129
59
|
self,
|
|
130
60
|
"fit",
|
|
@@ -150,8 +80,8 @@ class NearestNeighbors(NearestNeighbors_, KNeighborsDispatchingBase):
|
|
|
150
80
|
"sklearn": sklearn_NearestNeighbors.kneighbors,
|
|
151
81
|
},
|
|
152
82
|
X,
|
|
153
|
-
n_neighbors,
|
|
154
|
-
return_distance,
|
|
83
|
+
n_neighbors=n_neighbors,
|
|
84
|
+
return_distance=return_distance,
|
|
155
85
|
)
|
|
156
86
|
|
|
157
87
|
@wrap_output_data
|
|
@@ -165,22 +95,13 @@ class NearestNeighbors(NearestNeighbors_, KNeighborsDispatchingBase):
|
|
|
165
95
|
or getattr(self, "_tree", 0) is None
|
|
166
96
|
and self._fit_method == "kd_tree"
|
|
167
97
|
):
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if sklearn_check_version("0.22"):
|
|
173
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
174
|
-
self, X, radius, return_distance, sort_results
|
|
175
|
-
)
|
|
176
|
-
else:
|
|
177
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
178
|
-
self, X, radius, return_distance
|
|
179
|
-
)
|
|
98
|
+
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
99
|
+
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
100
|
+
self, X, radius, return_distance, sort_results
|
|
101
|
+
)
|
|
180
102
|
|
|
181
103
|
return result
|
|
182
104
|
|
|
183
|
-
@run_with_n_jobs
|
|
184
105
|
def _onedal_fit(self, X, y=None, queue=None):
|
|
185
106
|
onedal_params = {
|
|
186
107
|
"n_neighbors": self.n_neighbors,
|
|
@@ -202,11 +123,9 @@ class NearestNeighbors(NearestNeighbors_, KNeighborsDispatchingBase):
|
|
|
202
123
|
|
|
203
124
|
self._save_attributes()
|
|
204
125
|
|
|
205
|
-
@run_with_n_jobs
|
|
206
126
|
def _onedal_predict(self, X, queue=None):
|
|
207
127
|
return self._onedal_estimator.predict(X, queue=queue)
|
|
208
128
|
|
|
209
|
-
@run_with_n_jobs
|
|
210
129
|
def _onedal_kneighbors(
|
|
211
130
|
self, X=None, n_neighbors=None, return_distance=True, queue=None
|
|
212
131
|
):
|
|
@@ -221,3 +140,7 @@ class NearestNeighbors(NearestNeighbors_, KNeighborsDispatchingBase):
|
|
|
221
140
|
self._fit_X = self._onedal_estimator._fit_X
|
|
222
141
|
self._fit_method = self._onedal_estimator._fit_method
|
|
223
142
|
self._tree = self._onedal_estimator._tree
|
|
143
|
+
|
|
144
|
+
fit.__doc__ = sklearn_NearestNeighbors.__doc__
|
|
145
|
+
kneighbors.__doc__ = sklearn_NearestNeighbors.kneighbors.__doc__
|
|
146
|
+
radius_neighbors.__doc__ = sklearn_NearestNeighbors.radius_neighbors.__doc__
|