Skip to content

Commit 4c71d1d

Browse files
amuellerMatthias Feurer
authored andcommitted
add sklearn version to external version in sklearn flows, (#742)
* add sklearn version to external version in sklearn flows, explicitly handle extension in flow creation * use dummy classifier instead of linear regression * use MyDummy instead of MyLR * typo aaah * all the typos * use custom pipeline instead of dummy class because sklearn 0.18 can't handle NaNs
1 parent 1f5d6a2 commit 4c71d1d

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

openml/extensions/sklearn/extension.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,7 @@ def _serialize_model(self, model: Any) -> OpenMLFlow:
550550
# annotate a class of sklearn.svm.SVC() with the
551551
# tag svm?
552552
],
553+
extension=self,
553554
language='English',
554555
# TODO fill in dependencies!
555556
dependencies=dependencies)
@@ -573,9 +574,12 @@ def _get_external_version_string(
573574
model_package_name, model_package_version_number,
574575
)
575576
openml_version = self._format_external_version('openml', openml.__version__)
577+
sklearn_version = self._format_external_version('sklearn', sklearn.__version__)
578+
576579
external_versions = set()
577580
external_versions.add(external_version)
578581
external_versions.add(openml_version)
582+
external_versions.add(sklearn_version)
579583
for visitee in sub_components.values():
580584
for external_version in visitee.external_version.split(','):
581585
external_versions.add(external_version)

openml/flows/flow.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def __init__(self, name, description, model, components, parameters,
8787
dependencies, class_name=None, custom_name=None,
8888
binary_url=None, binary_format=None,
8989
binary_md5=None, uploader=None, upload_date=None,
90-
flow_id=None, version=None):
90+
flow_id=None, extension=None, version=None):
9191
self.name = name
9292
self.description = description
9393
self.model = model
@@ -131,8 +131,10 @@ def __init__(self, name, description, model, components, parameters,
131131
self.language = language
132132
self.dependencies = dependencies
133133
self.flow_id = flow_id
134-
135-
self._extension = get_extension_by_flow(self)
134+
if extension is None:
135+
self._extension = get_extension_by_flow(self)
136+
else:
137+
self._extension = extension
136138

137139
@property
138140
def extension(self):

tests/test_extensions/test_sklearn_extension/test_sklearn_extension.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,6 +1233,14 @@ def setUp(self):
12331233
################################################################################################
12341234
# Test methods for performing runs with this extension module
12351235

1236+
def test_run_model_on_task(self):
1237+
class MyPipe(sklearn.pipeline.Pipeline):
1238+
pass
1239+
task = openml.tasks.get_task(1)
1240+
pipe = MyPipe([('imp', Imputer()),
1241+
('dummy', sklearn.dummy.DummyClassifier())])
1242+
openml.runs.run_model_on_task(pipe, task)
1243+
12361244
def test_seed_model(self):
12371245
# randomized models that are initialized without seeds, can be seeded
12381246
randomized_clfs = [

0 commit comments

Comments
 (0)