scikit-learn-intelex 2024.2.0__py312-none-manylinux1_x86_64.whl → 2024.4.0__py312-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.

Files changed (50) hide show
  1. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/METADATA +2 -2
  2. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/RECORD +45 -45
  3. sklearnex/__init__.py +9 -7
  4. sklearnex/_device_offload.py +31 -4
  5. sklearnex/basic_statistics/__init__.py +2 -1
  6. sklearnex/basic_statistics/incremental_basic_statistics.py +288 -0
  7. sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +386 -0
  8. sklearnex/cluster/dbscan.py +3 -1
  9. sklearnex/conftest.py +63 -0
  10. sklearnex/decomposition/pca.py +319 -1
  11. sklearnex/decomposition/tests/test_pca.py +34 -5
  12. sklearnex/dispatcher.py +74 -43
  13. sklearnex/ensemble/_forest.py +78 -89
  14. sklearnex/ensemble/tests/test_forest.py +15 -19
  15. sklearnex/linear_model/linear.py +275 -340
  16. sklearnex/linear_model/logistic_regression.py +63 -11
  17. sklearnex/linear_model/tests/test_linear.py +40 -5
  18. sklearnex/linear_model/tests/test_logreg.py +0 -2
  19. sklearnex/neighbors/_lof.py +74 -20
  20. sklearnex/neighbors/common.py +4 -1
  21. sklearnex/neighbors/knn_classification.py +44 -131
  22. sklearnex/neighbors/knn_regression.py +16 -126
  23. sklearnex/neighbors/knn_unsupervised.py +11 -86
  24. sklearnex/neighbors/tests/test_neighbors.py +0 -5
  25. sklearnex/preview/__init__.py +1 -1
  26. sklearnex/preview/cluster/k_means.py +5 -73
  27. sklearnex/preview/covariance/covariance.py +6 -5
  28. sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  29. sklearnex/spmd/ensemble/forest.py +4 -12
  30. sklearnex/svm/_common.py +4 -7
  31. sklearnex/svm/nusvc.py +70 -50
  32. sklearnex/svm/nusvr.py +6 -52
  33. sklearnex/svm/svc.py +70 -51
  34. sklearnex/svm/svr.py +3 -49
  35. sklearnex/tests/_utils.py +164 -0
  36. sklearnex/tests/test_memory_usage.py +8 -3
  37. sklearnex/tests/test_monkeypatch.py +177 -149
  38. sklearnex/tests/test_n_jobs_support.py +8 -2
  39. sklearnex/tests/test_parallel.py +6 -8
  40. sklearnex/tests/test_patching.py +322 -87
  41. sklearnex/utils/__init__.py +2 -1
  42. sklearnex/utils/_namespace.py +97 -0
  43. sklearnex/preview/decomposition/__init__.py +0 -19
  44. sklearnex/preview/decomposition/pca.py +0 -374
  45. sklearnex/preview/decomposition/tests/test_preview_pca.py +0 -42
  46. sklearnex/tests/_models_info.py +0 -170
  47. sklearnex/tests/utils/_launch_algorithms.py +0 -118
  48. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/LICENSE.txt +0 -0
  49. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/WHEEL +0 -0
  50. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/top_level.txt +0 -0
@@ -14,6 +14,7 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
+
17
18
  import gc
18
19
  import logging
19
20
  import tracemalloc
@@ -30,7 +31,6 @@ from sklearn.model_selection import KFold
30
31
  from sklearnex import get_patch_map
31
32
  from sklearnex.metrics import pairwise_distances, roc_auc_score
32
33
  from sklearnex.model_selection import train_test_split
33
- from sklearnex.preview.decomposition import PCA as PreviewPCA
34
34
  from sklearnex.utils import _assert_all_finite
35
35
 
36
36
 
@@ -75,6 +75,8 @@ class RocAucEstimator:
75
75
 
76
76
 
77
77
  # add all daal4py estimators enabled in patching (except banned)
78
+
79
+
78
80
  def get_patched_estimators(ban_list, output_list):
79
81
  patched_estimators = get_patch_map().values()
80
82
  for listing in patched_estimators:
@@ -96,7 +98,6 @@ def remove_duplicated_estimators(estimators_list):
96
98
 
97
99
  BANNED_ESTIMATORS = ("TSNE",) # too slow for using in testing on common data size
98
100
  estimators = [
99
- PreviewPCA,
100
101
  TrainTestSplitEstimator,
101
102
  FiniteCheckEstimator,
102
103
  CosineDistancesEstimator,
@@ -153,6 +154,7 @@ def split_train_inference(kf, x, y, estimator):
153
154
  y_train, y_test = y.iloc[train_index], y.iloc[test_index]
154
155
  # TODO: add parameters for all estimators to prevent
155
156
  # fallback to stock scikit-learn with default parameters
157
+
156
158
  alg = estimator()
157
159
  alg.fit(x_train, y_train)
158
160
  if hasattr(alg, "predict"):
@@ -163,7 +165,6 @@ def split_train_inference(kf, x, y, estimator):
163
165
  alg.kneighbors(x_test)
164
166
  del alg, x_train, x_test, y_train, y_test
165
167
  mem_tracks.append(tracemalloc.get_traced_memory()[0])
166
-
167
168
  return mem_tracks
168
169
 
169
170
 
@@ -215,6 +216,10 @@ def _kfold_function_template(estimator, data_transform_function, data_shape):
215
216
  )
216
217
 
217
218
 
219
+ # disable fallback check as logging impacts memory use
220
+
221
+
222
+ @pytest.mark.allow_sklearn_fallback
218
223
  @pytest.mark.parametrize("data_transform_function", data_transforms)
219
224
  @pytest.mark.parametrize("estimator", estimators)
220
225
  @pytest.mark.parametrize("data_shape", data_shapes)
@@ -17,6 +17,12 @@
17
17
  import sklearnex
18
18
  from daal4py.sklearn._utils import daal_check_version
19
19
 
20
+ # General use of patch_sklearn and unpatch_sklearn in pytest is not recommended.
21
+ # It changes global state and can impact the operation of other tests. This file
22
+ # specifically tests patch_sklearn and unpatch_sklearn and is exempt from this.
23
+ # If sklearnex patching is necessary in testing, use the 'with_sklearnex' pytest
24
+ # fixture.
25
+
20
26
 
21
27
  def test_monkey_patching():
22
28
  _tokens = sklearnex.get_patch_names()
@@ -27,150 +33,170 @@ def test_monkey_patching():
27
33
  for c in v:
28
34
  _classes.append(c[0])
29
35
 
30
- sklearnex.patch_sklearn()
31
-
32
- for i, _ in enumerate(_tokens):
33
- t = _tokens[i]
34
- p = _classes[i][0]
35
- n = _classes[i][1]
36
-
37
- class_module = getattr(p, n).__module__
38
- assert class_module.startswith("daal4py") or class_module.startswith(
39
- "sklearnex"
40
- ), "Patching has completed with error."
41
-
42
- for i, _ in enumerate(_tokens):
43
- t = _tokens[i]
44
- p = _classes[i][0]
45
- n = _classes[i][1]
46
-
47
- sklearnex.unpatch_sklearn(t)
48
- sklearn_class = getattr(p, n, None)
49
- if sklearn_class is not None:
50
- sklearn_class = sklearn_class.__module__
51
- assert sklearn_class is None or sklearn_class.startswith(
52
- "sklearn"
53
- ), "Unpatching has completed with error."
54
-
55
- sklearnex.unpatch_sklearn()
56
-
57
- for i, _ in enumerate(_tokens):
58
- t = _tokens[i]
59
- p = _classes[i][0]
60
- n = _classes[i][1]
61
-
62
- sklearn_class = getattr(p, n, None)
63
- if sklearn_class is not None:
64
- sklearn_class = sklearn_class.__module__
65
- assert sklearn_class is None or sklearn_class.startswith(
66
- "sklearn"
67
- ), "Unpatching has completed with error."
68
-
69
- sklearnex.unpatch_sklearn()
70
-
71
- for i, _ in enumerate(_tokens):
72
- t = _tokens[i]
73
- p = _classes[i][0]
74
- n = _classes[i][1]
75
-
76
- sklearnex.patch_sklearn(t)
77
-
78
- class_module = getattr(p, n).__module__
79
- assert class_module.startswith("daal4py") or class_module.startswith(
80
- "sklearnex"
81
- ), "Patching has completed with error."
82
-
83
- sklearnex.unpatch_sklearn()
36
+ try:
37
+ sklearnex.patch_sklearn()
38
+
39
+ for i, _ in enumerate(_tokens):
40
+ t = _tokens[i]
41
+ p = _classes[i][0]
42
+ n = _classes[i][1]
43
+
44
+ class_module = getattr(p, n).__module__
45
+ assert class_module.startswith("daal4py") or class_module.startswith(
46
+ "sklearnex"
47
+ ), "Patching has completed with error."
48
+
49
+ for i, _ in enumerate(_tokens):
50
+ t = _tokens[i]
51
+ p = _classes[i][0]
52
+ n = _classes[i][1]
53
+
54
+ sklearnex.unpatch_sklearn(t)
55
+ sklearn_class = getattr(p, n, None)
56
+ if sklearn_class is not None:
57
+ sklearn_class = sklearn_class.__module__
58
+ assert sklearn_class is None or sklearn_class.startswith(
59
+ "sklearn"
60
+ ), "Unpatching has completed with error."
61
+
62
+ finally:
63
+ sklearnex.unpatch_sklearn()
64
+
65
+ try:
66
+ for i, _ in enumerate(_tokens):
67
+ t = _tokens[i]
68
+ p = _classes[i][0]
69
+ n = _classes[i][1]
70
+
71
+ sklearn_class = getattr(p, n, None)
72
+ if sklearn_class is not None:
73
+ sklearn_class = sklearn_class.__module__
74
+ assert sklearn_class is None or sklearn_class.startswith(
75
+ "sklearn"
76
+ ), "Unpatching has completed with error."
77
+
78
+ finally:
79
+ sklearnex.unpatch_sklearn()
80
+
81
+ try:
82
+ for i, _ in enumerate(_tokens):
83
+ t = _tokens[i]
84
+ p = _classes[i][0]
85
+ n = _classes[i][1]
86
+
87
+ sklearnex.patch_sklearn(t)
88
+
89
+ class_module = getattr(p, n).__module__
90
+ assert class_module.startswith("daal4py") or class_module.startswith(
91
+ "sklearnex"
92
+ ), "Patching has completed with error."
93
+ finally:
94
+ sklearnex.unpatch_sklearn()
84
95
 
85
96
 
86
97
  def test_patch_by_list_simple():
87
- sklearnex.patch_sklearn(["LogisticRegression"])
88
-
89
- from sklearn.ensemble import RandomForestRegressor
90
- from sklearn.linear_model import LogisticRegression
91
- from sklearn.neighbors import KNeighborsRegressor
92
- from sklearn.svm import SVC
98
+ try:
99
+ sklearnex.patch_sklearn(["LogisticRegression"])
93
100
 
94
- assert RandomForestRegressor.__module__.startswith("sklearn")
95
- assert KNeighborsRegressor.__module__.startswith("sklearn")
96
- if daal_check_version((2024, "P", 1)):
97
- assert LogisticRegression.__module__.startswith("sklearnex")
98
- else:
99
- assert LogisticRegression.__module__.startswith("daal4py")
100
- assert SVC.__module__.startswith("sklearn")
101
+ from sklearn.ensemble import RandomForestRegressor
102
+ from sklearn.linear_model import LogisticRegression
103
+ from sklearn.neighbors import KNeighborsRegressor
104
+ from sklearn.svm import SVC
101
105
 
102
- sklearnex.unpatch_sklearn()
106
+ assert RandomForestRegressor.__module__.startswith("sklearn")
107
+ assert KNeighborsRegressor.__module__.startswith("sklearn")
108
+ if daal_check_version((2024, "P", 1)):
109
+ assert LogisticRegression.__module__.startswith("sklearnex")
110
+ else:
111
+ assert LogisticRegression.__module__.startswith("daal4py")
112
+ assert SVC.__module__.startswith("sklearn")
113
+ finally:
114
+ sklearnex.unpatch_sklearn()
103
115
 
104
116
 
105
117
  def test_patch_by_list_many_estimators():
106
- sklearnex.patch_sklearn(["LogisticRegression", "SVC"])
118
+ try:
119
+ sklearnex.patch_sklearn(["LogisticRegression", "SVC"])
107
120
 
108
- from sklearn.ensemble import RandomForestRegressor
109
- from sklearn.linear_model import LogisticRegression
110
- from sklearn.neighbors import KNeighborsRegressor
111
- from sklearn.svm import SVC
121
+ from sklearn.ensemble import RandomForestRegressor
122
+ from sklearn.linear_model import LogisticRegression
123
+ from sklearn.neighbors import KNeighborsRegressor
124
+ from sklearn.svm import SVC
112
125
 
113
- assert RandomForestRegressor.__module__.startswith("sklearn")
114
- assert KNeighborsRegressor.__module__.startswith("sklearn")
115
- if daal_check_version((2024, "P", 1)):
116
- assert LogisticRegression.__module__.startswith("sklearnex")
117
- else:
118
- assert LogisticRegression.__module__.startswith("daal4py")
119
- assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith("sklearnex")
126
+ assert RandomForestRegressor.__module__.startswith("sklearn")
127
+ assert KNeighborsRegressor.__module__.startswith("sklearn")
128
+ if daal_check_version((2024, "P", 1)):
129
+ assert LogisticRegression.__module__.startswith("sklearnex")
130
+ else:
131
+ assert LogisticRegression.__module__.startswith("daal4py")
132
+ assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith(
133
+ "sklearnex"
134
+ )
120
135
 
121
- sklearnex.unpatch_sklearn()
136
+ finally:
137
+ sklearnex.unpatch_sklearn()
122
138
 
123
139
 
124
140
  def test_unpatch_by_list_many_estimators():
125
- sklearnex.patch_sklearn()
141
+ try:
142
+ sklearnex.patch_sklearn()
126
143
 
127
- from sklearn.ensemble import RandomForestRegressor
128
- from sklearn.linear_model import LogisticRegression
129
- from sklearn.neighbors import KNeighborsRegressor
130
- from sklearn.svm import SVC
144
+ from sklearn.ensemble import RandomForestRegressor
145
+ from sklearn.linear_model import LogisticRegression
146
+ from sklearn.neighbors import KNeighborsRegressor
147
+ from sklearn.svm import SVC
131
148
 
132
- assert RandomForestRegressor.__module__.startswith("sklearnex")
133
- assert KNeighborsRegressor.__module__.startswith(
134
- "daal4py"
135
- ) or KNeighborsRegressor.__module__.startswith("sklearnex")
136
- if daal_check_version((2024, "P", 1)):
137
- assert LogisticRegression.__module__.startswith("sklearnex")
138
- else:
139
- assert LogisticRegression.__module__.startswith("daal4py")
140
- assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith("sklearnex")
149
+ assert RandomForestRegressor.__module__.startswith("sklearnex")
150
+ assert KNeighborsRegressor.__module__.startswith(
151
+ "daal4py"
152
+ ) or KNeighborsRegressor.__module__.startswith("sklearnex")
153
+ if daal_check_version((2024, "P", 1)):
154
+ assert LogisticRegression.__module__.startswith("sklearnex")
155
+ else:
156
+ assert LogisticRegression.__module__.startswith("daal4py")
157
+ assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith(
158
+ "sklearnex"
159
+ )
141
160
 
142
- sklearnex.unpatch_sklearn(["KNeighborsRegressor", "RandomForestRegressor"])
161
+ sklearnex.unpatch_sklearn(["KNeighborsRegressor", "RandomForestRegressor"])
143
162
 
144
- from sklearn.ensemble import RandomForestRegressor
145
- from sklearn.linear_model import LogisticRegression
146
- from sklearn.neighbors import KNeighborsRegressor
147
- from sklearn.svm import SVC
163
+ from sklearn.ensemble import RandomForestRegressor
164
+ from sklearn.linear_model import LogisticRegression
165
+ from sklearn.neighbors import KNeighborsRegressor
166
+ from sklearn.svm import SVC
148
167
 
149
- assert RandomForestRegressor.__module__.startswith("sklearn")
150
- assert KNeighborsRegressor.__module__.startswith("sklearn")
151
- if daal_check_version((2024, "P", 1)):
152
- assert LogisticRegression.__module__.startswith("sklearnex")
153
- else:
154
- assert LogisticRegression.__module__.startswith("daal4py")
168
+ assert RandomForestRegressor.__module__.startswith("sklearn")
169
+ assert KNeighborsRegressor.__module__.startswith("sklearn")
170
+ if daal_check_version((2024, "P", 1)):
171
+ assert LogisticRegression.__module__.startswith("sklearnex")
172
+ else:
173
+ assert LogisticRegression.__module__.startswith("daal4py")
155
174
 
156
- assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith("sklearnex")
175
+ assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith(
176
+ "sklearnex"
177
+ )
178
+ finally:
179
+ sklearnex.unpatch_sklearn()
157
180
 
158
181
 
159
182
  def test_patching_checker():
160
183
  for name in [None, "SVC", "PCA"]:
161
- sklearnex.patch_sklearn(name=name)
162
- assert sklearnex.sklearn_is_patched(name=name)
163
-
164
- sklearnex.unpatch_sklearn(name=name)
165
- assert not sklearnex.sklearn_is_patched(name=name)
184
+ try:
185
+ sklearnex.patch_sklearn(name=name)
186
+ assert sklearnex.sklearn_is_patched(name=name)
187
+
188
+ finally:
189
+ sklearnex.unpatch_sklearn(name=name)
190
+ assert not sklearnex.sklearn_is_patched(name=name)
191
+ try:
192
+ sklearnex.patch_sklearn()
193
+ patching_status_map = sklearnex.sklearn_is_patched(return_map=True)
194
+ assert len(patching_status_map) == len(sklearnex.get_patch_names())
195
+ for status in patching_status_map.values():
196
+ assert status
197
+ finally:
198
+ sklearnex.unpatch_sklearn()
166
199
 
167
- sklearnex.patch_sklearn()
168
- patching_status_map = sklearnex.sklearn_is_patched(return_map=True)
169
- assert len(patching_status_map) == len(sklearnex.get_patch_names())
170
- for status in patching_status_map.values():
171
- assert status
172
-
173
- sklearnex.unpatch_sklearn()
174
200
  patching_status_map = sklearnex.sklearn_is_patched(return_map=True)
175
201
  assert len(patching_status_map) == len(sklearnex.get_patch_names())
176
202
  for status in patching_status_map.values():
@@ -193,27 +219,27 @@ def test_preview_namespace():
193
219
  RandomForestClassifier(),
194
220
  )
195
221
 
196
- # BUG: previous patching tests force PCA to be patched with daal4py.
197
- # This unpatching returns behavior to expected
198
- sklearnex.unpatch_sklearn()
199
- # behavior with enabled preview
200
- sklearnex.patch_sklearn(preview=True)
201
222
  from sklearnex.dispatcher import _is_preview_enabled
202
223
 
203
- assert _is_preview_enabled()
224
+ try:
225
+ sklearnex.patch_sklearn(preview=True)
204
226
 
205
- lr, pca, dbscan, svc, rfc = get_estimators()
206
- assert "sklearnex" in rfc.__module__
227
+ assert _is_preview_enabled()
228
+
229
+ lr, pca, dbscan, svc, rfc = get_estimators()
230
+ assert "sklearnex" in rfc.__module__
207
231
 
208
- if daal_check_version((2023, "P", 100)):
209
- assert "sklearnex" in lr.__module__
210
- else:
211
- assert "daal4py" in lr.__module__
232
+ if daal_check_version((2023, "P", 100)):
233
+ assert "sklearnex" in lr.__module__
234
+ else:
235
+ assert "daal4py" in lr.__module__
212
236
 
213
- assert "sklearnex.preview" in pca.__module__
214
- assert "sklearnex" in dbscan.__module__
215
- assert "sklearnex" in svc.__module__
216
- sklearnex.unpatch_sklearn()
237
+ assert "sklearnex" in pca.__module__
238
+ assert "sklearnex" in dbscan.__module__
239
+ assert "sklearnex" in svc.__module__
240
+
241
+ finally:
242
+ sklearnex.unpatch_sklearn()
217
243
 
218
244
  # no patching behavior
219
245
  lr, pca, dbscan, svc, rfc = get_estimators()
@@ -224,17 +250,19 @@ def test_preview_namespace():
224
250
  assert "sklearn." in rfc.__module__ and "daal4py" not in rfc.__module__
225
251
 
226
252
  # default patching behavior
227
- sklearnex.patch_sklearn()
228
- assert not _is_preview_enabled()
229
-
230
- lr, pca, dbscan, svc, rfc = get_estimators()
231
- if daal_check_version((2023, "P", 100)):
232
- assert "sklearnex" in lr.__module__
233
- else:
234
- assert "daal4py" in lr.__module__
235
-
236
- assert "daal4py" in pca.__module__
237
- assert "sklearnex" in rfc.__module__
238
- assert "sklearnex" in dbscan.__module__
239
- assert "sklearnex" in svc.__module__
240
- sklearnex.unpatch_sklearn()
253
+ try:
254
+ sklearnex.patch_sklearn()
255
+ assert not _is_preview_enabled()
256
+
257
+ lr, pca, dbscan, svc, rfc = get_estimators()
258
+ if daal_check_version((2023, "P", 100)):
259
+ assert "sklearnex" in lr.__module__
260
+ else:
261
+ assert "daal4py" in lr.__module__
262
+
263
+ assert "sklearnex" in pca.__module__
264
+ assert "sklearnex" in rfc.__module__
265
+ assert "sklearnex" in dbscan.__module__
266
+ assert "sklearnex" in svc.__module__
267
+ finally:
268
+ sklearnex.unpatch_sklearn()
@@ -84,10 +84,16 @@ def test_n_jobs_support(caplog, estimator_class, n_jobs):
84
84
  if method_name == "fit":
85
85
  continue
86
86
  method = getattr(estimator_instance, method_name)
87
- if len(inspect.signature(method).parameters) == 0:
87
+ argdict = inspect.signature(method).parameters
88
+ argnum = len(
89
+ [i for i in argdict if argdict[i].default == inspect.Parameter.empty]
90
+ )
91
+ if argnum == 0:
88
92
  check_method(method=method, caplog=caplog)
89
- else:
93
+ elif argnum == 1:
90
94
  check_method(X, method=method, caplog=caplog)
95
+ else:
96
+ check_method(X, Y, method=method, caplog=caplog)
91
97
  # check if correct methods were decorated
92
98
  check_methods_decoration(estimator_class)
93
99
  check_methods_decoration(estimator_instance)
@@ -15,13 +15,7 @@
15
15
  # ==============================================================================
16
16
  import pytest
17
17
 
18
- from sklearnex import config_context, patch_sklearn
19
-
20
- patch_sklearn()
21
-
22
- from sklearn.datasets import make_classification
23
- from sklearn.ensemble import BaggingClassifier
24
- from sklearn.svm import SVC
18
+ from sklearnex import config_context
25
19
 
26
20
  try:
27
21
  import dpctl
@@ -38,7 +32,11 @@ except (ImportError, ModuleNotFoundError):
38
32
  "to see raised 'SyclQueueCreationError'. "
39
33
  "'dpctl' module is required for test.",
40
34
  )
41
- def test_config_context_in_parallel():
35
+ def test_config_context_in_parallel(with_sklearnex):
36
+ from sklearn.datasets import make_classification
37
+ from sklearn.ensemble import BaggingClassifier
38
+ from sklearn.svm import SVC
39
+
42
40
  x, y = make_classification(random_state=42)
43
41
  try:
44
42
  with config_context(target_offload="gpu", allow_fallback_to_host=False):