Skip to content

Commit d6d87ff

Browse files
committed
make unit tests work again
1 parent ad36d3b commit d6d87ff

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

openml/runs/functions.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import warnings
77
from sklearn.model_selection._search import BaseSearchCV
88

9+
from build.lib.openml.exceptions import PyOpenMLError
910
from .. import config
1011
from ..flows import sklearn_to_flow
1112
from ..exceptions import OpenMLCacheException
@@ -55,8 +56,9 @@ def run_task(task, model):
5556

5657
try:
5758
run.data_content, run.trace_content = _run_task_get_arffcontent(model, task, class_labels)
58-
except AttributeError as message:
59+
except PyOpenMLError as message:
5960
run.error_message = str(message)
61+
warnings.warn("Run terminated with error: %s" %run.error_message)
6062

6163
# now generate the flow
6264
flow = sklearn_to_flow(model)
@@ -124,17 +126,25 @@ def _run_task_get_arffcontent(model, task, class_labels):
124126
testX = X[test_indices]
125127
testY = Y[test_indices]
126128

127-
model.fit(trainX, trainY)
128-
if isinstance(model, BaseSearchCV):
129-
_add_results_to_arfftrace(arff_tracecontent, fold_no, model, rep_no)
129+
try:
130+
model.fit(trainX, trainY)
131+
132+
if isinstance(model, BaseSearchCV):
133+
_add_results_to_arfftrace(arff_tracecontent, fold_no, model, rep_no)
134+
model_classes = model.best_estimator_.classes_
135+
else:
136+
model_classes = model.classes_
137+
except AttributeError as e:
138+
# typically happens when training a regressor on classification task
139+
raise PyOpenMLError(str(e))
130140

131141
ProbaY = model.predict_proba(testX)
132142
PredY = model.predict(testX)
133143
if ProbaY.shape[1] != len(class_labels):
134144
warnings.warn("Repeat %d Fold %d: estimator only predicted for %d/%d classes!" %(rep_no, fold_no, ProbaY.shape[1], len(class_labels)))
135145

136146
for i in range(0, len(test_indices)):
137-
arff_line = _prediction_to_row(rep_no, fold_no, test_indices[i], class_labels[testY[i]], PredY[i], ProbaY[i], class_labels, model.classes_)
147+
arff_line = _prediction_to_row(rep_no, fold_no, test_indices[i], class_labels[testY[i]], PredY[i], ProbaY[i], class_labels, model_classes)
138148
arff_datacontent.append(arff_line)
139149

140150
fold_no = fold_no + 1

0 commit comments

Comments
 (0)