Skip to content

Commit 502e8b4

Browse files
committed
fix issue with np 1.16.3 which forbids pickle loading
1 parent d350685 commit 502e8b4

File tree

4 files changed

+48
-48
lines changed

4 files changed

+48
-48
lines changed

autosklearn/ensemble_builder.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -636,11 +636,11 @@ def predict(self, set_: str,
636636

637637
def _read_np_fn(self, fp):
638638
if self.precision is "16":
639-
predictions = np.load(fp).astype(dtype=np.float16)
639+
predictions = np.load(fp, allow_pickle=True).astype(dtype=np.float16)
640640
elif self.precision is "32":
641-
predictions = np.load(fp).astype(dtype=np.float32)
641+
predictions = np.load(fp, allow_pickle=True).astype(dtype=np.float32)
642642
elif self.precision is "64":
643-
predictions = np.load(fp).astype(dtype=np.float64)
643+
predictions = np.load(fp, allow_pickle=True).astype(dtype=np.float64)
644644
else:
645-
predictions = np.load(fp)
645+
predictions = np.load(fp, allow_pickle=True)
646646
return predictions

autosklearn/util/backend.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ def save_targets_ensemble(self, targets):
265265
# number of times where we erronously keep a lock on the ensemble
266266
# targets file although the process already was killed
267267
try:
268-
existing_targets = np.load(filepath)
268+
existing_targets = np.load(filepath, allow_pickle=True)
269269
if existing_targets.shape[0] > targets.shape[0] or \
270270
(existing_targets.shape == targets.shape and
271271
np.allclose(existing_targets, targets)):
@@ -278,7 +278,7 @@ def save_targets_ensemble(self, targets):
278278
with lockfile.LockFile(lock_path):
279279
if os.path.exists(filepath):
280280
with open(filepath, 'rb') as fh:
281-
existing_targets = np.load(fh)
281+
existing_targets = np.load(fh, allow_pickle=True)
282282
if existing_targets.shape[0] > targets.shape[0] or \
283283
(existing_targets.shape == targets.shape and
284284
np.allclose(existing_targets, targets)):
@@ -299,7 +299,7 @@ def load_targets_ensemble(self):
299299
lock_path = filepath + '.lock'
300300
with lockfile.LockFile(lock_path):
301301
with open(filepath, 'rb') as fh:
302-
targets = np.load(fh)
302+
targets = np.load(fh, allow_pickle=True)
303303

304304
return targets
305305

test/test_automl/test_estimators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ def test_fit_pSMAC(self):
271271
true_targets_ensemble_path = os.path.join(tmp, '.auto-sklearn',
272272
'true_targets_ensemble.npy')
273273
with open(true_targets_ensemble_path, 'rb') as fh:
274-
true_targets_ensemble = np.load(fh)
274+
true_targets_ensemble = np.load(fh, allow_pickle=True)
275275
true_targets_ensemble[-1] = 1 if true_targets_ensemble[-1] != 1 else 0
276276
true_targets_ensemble = true_targets_ensemble.astype(int)
277277
probas = np.zeros((len(true_targets_ensemble), 2), dtype=float)

test/test_ensemble_builder/test_ensemble.py

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,27 @@
1616

1717

1818
class BackendMock(object):
19-
19+
2020
def __init__(self):
2121
this_directory = os.path.abspath(
2222
os.path.dirname(__file__)
2323
)
2424
self.temporary_directory = os.path.join(
2525
this_directory, 'data',
2626
)
27-
27+
2828
def load_targets_ensemble(self):
2929
with open(os.path.join(
3030
self.temporary_directory,
3131
".auto-sklearn",
3232
"predictions_ensemble",
3333
"predictions_ensemble_true.npy"
3434
),"rb") as fp:
35-
y = np.load(fp)
35+
y = np.load(fp, allow_pickle=True)
3636
return y
37-
37+
3838
class EnsembleBuilderMemMock(EnsembleBuilder):
39-
39+
4040
def fit_ensemble(self,selected_keys):
4141
np.ones([10000000,1000000])
4242

@@ -49,7 +49,7 @@ def tearDown(self):
4949
pass
5050

5151
def testRead(self):
52-
52+
5353
ensbuilder = EnsembleBuilder(
5454
backend=self.backend,
5555
dataset_name="TEST",
@@ -74,9 +74,9 @@ def testRead(self):
7474
".auto-sklearn/predictions_ensemble/predictions_ensemble_0_2.npy"
7575
)
7676
self.assertEqual(ensbuilder.read_preds[filename]["ens_score"], 1.0)
77-
77+
7878
def testNBest(self):
79-
79+
8080
ensbuilder = EnsembleBuilder(
8181
backend=self.backend,
8282
dataset_name="TEST",
@@ -86,7 +86,7 @@ def testNBest(self):
8686
seed=0, # important to find the test files
8787
ensemble_nbest=1,
8888
)
89-
89+
9090
ensbuilder.read_ensemble_preds()
9191
sel_keys = ensbuilder.get_n_best_preds()
9292

@@ -97,18 +97,18 @@ def testNBest(self):
9797
".auto-sklearn/predictions_ensemble/predictions_ensemble_0_2.npy"
9898
)
9999
self.assertEquals(sel_keys[0], fixture)
100-
100+
101101
def testFallBackNBest(self):
102-
103-
ensbuilder = EnsembleBuilder(backend=self.backend,
102+
103+
ensbuilder = EnsembleBuilder(backend=self.backend,
104104
dataset_name="TEST",
105105
task_type=1, #Binary Classification
106106
metric=roc_auc,
107107
limit=-1, # not used,
108108
seed=0, # important to find the test files
109109
ensemble_nbest=1
110110
)
111-
111+
112112
ensbuilder.read_ensemble_preds()
113113

114114
filename = os.path.join(
@@ -122,28 +122,28 @@ def testFallBackNBest(self):
122122
".auto-sklearn/predictions_ensemble/predictions_ensemble_0_1.npy"
123123
)
124124
ensbuilder.read_preds[filename]["ens_score"] = -1
125-
125+
126126
sel_keys = ensbuilder.get_n_best_preds()
127127

128128
fixture = os.path.join(
129129
self.backend.temporary_directory,
130130
".auto-sklearn/predictions_ensemble/predictions_ensemble_0_1.npy"
131131
)
132132
self.assertEquals(sel_keys[0], fixture)
133-
133+
134134
def testGetValidTestPreds(self):
135-
136-
ensbuilder = EnsembleBuilder(backend=self.backend,
135+
136+
ensbuilder = EnsembleBuilder(backend=self.backend,
137137
dataset_name="TEST",
138138
task_type=1, #Binary Classification
139139
metric=roc_auc,
140140
limit=-1, # not used,
141141
seed=0, # important to find the test files
142142
ensemble_nbest=1
143143
)
144-
144+
145145
ensbuilder.read_ensemble_preds()
146-
146+
147147
d2 = os.path.join(
148148
self.backend.temporary_directory,
149149
".auto-sklearn/predictions_ensemble/predictions_ensemble_0_2.npy"
@@ -152,21 +152,21 @@ def testGetValidTestPreds(self):
152152
self.backend.temporary_directory,
153153
".auto-sklearn/predictions_ensemble/predictions_ensemble_0_1.npy"
154154
)
155-
155+
156156
sel_keys = ensbuilder.get_n_best_preds()
157-
157+
158158
ensbuilder.get_valid_test_preds(selected_keys=sel_keys)
159-
159+
160160
# selected --> read valid and test predictions
161161
self.assertIsNotNone(ensbuilder.read_preds[d2][Y_VALID])
162162
self.assertIsNotNone(ensbuilder.read_preds[d2][Y_TEST])
163-
163+
164164
# not selected --> should still be None
165165
self.assertIsNone(ensbuilder.read_preds[d1][Y_VALID])
166166
self.assertIsNone(ensbuilder.read_preds[d1][Y_TEST])
167-
167+
168168
def testEntireEnsembleBuilder(self):
169-
169+
170170
ensbuilder = EnsembleBuilder(
171171
backend=self.backend,
172172
dataset_name="TEST",
@@ -177,7 +177,7 @@ def testEntireEnsembleBuilder(self):
177177
ensemble_nbest=2,
178178
)
179179
ensbuilder.SAVE2DISC = False
180-
180+
181181
ensbuilder.read_ensemble_preds()
182182

183183
d2 = os.path.join(
@@ -187,12 +187,12 @@ def testEntireEnsembleBuilder(self):
187187

188188
sel_keys = ensbuilder.get_n_best_preds()
189189
self.assertGreater(len(sel_keys), 0)
190-
190+
191191
ensemble = ensbuilder.fit_ensemble(selected_keys=sel_keys)
192192
print(ensemble, sel_keys)
193-
193+
194194
n_sel_valid, n_sel_test = ensbuilder.get_valid_test_preds(selected_keys=sel_keys)
195-
195+
196196
# both valid and test prediction files are available
197197
self.assertGreater(len(n_sel_valid), 0)
198198
self.assertEqual(n_sel_valid, n_sel_test)
@@ -221,10 +221,10 @@ def testEntireEnsembleBuilder(self):
221221
# so that y_valid should be exactly y_valid_d2
222222
y_valid_d2 = ensbuilder.read_preds[d2][Y_VALID][:, 1]
223223
np.testing.assert_array_almost_equal(y_valid, y_valid_d2)
224-
224+
225225
def testMain(self):
226-
227-
ensbuilder = EnsembleBuilder(backend=self.backend,
226+
227+
ensbuilder = EnsembleBuilder(backend=self.backend,
228228
dataset_name="TEST",
229229
task_type=1, #Binary Classification
230230
metric=roc_auc,
@@ -234,17 +234,17 @@ def testMain(self):
234234
max_iterations=1 # prevents infinite loop
235235
)
236236
ensbuilder.SAVE2DISC = False
237-
237+
238238
ensbuilder.main()
239-
239+
240240
self.assertEqual(len(ensbuilder.read_preds), 2)
241241
self.assertIsNotNone(ensbuilder.last_hash)
242242
self.assertIsNotNone(ensbuilder.y_true_ensemble)
243-
243+
244244
def testLimit(self):
245-
246-
247-
ensbuilder = EnsembleBuilderMemMock(backend=self.backend,
245+
246+
247+
ensbuilder = EnsembleBuilderMemMock(backend=self.backend,
248248
dataset_name="TEST",
249249
task_type=1, #Binary Classification
250250
metric=roc_auc,
@@ -255,9 +255,9 @@ def testLimit(self):
255255
memory_limit=10 # small memory limit to trigger MemoryException
256256
)
257257
ensbuilder.SAVE2DISC = False
258-
258+
259259
ensbuilder.run()
260-
260+
261261
# it should try to reduce ensemble_nbest until it also failed at 2
262262
self.assertEqual(ensbuilder.ensemble_nbest,1)
263263

0 commit comments

Comments
 (0)