Skip to content

Commit ed068d1

Browse files
committed
comments required by reviewer of PR
1 parent 9ca14ec commit ed068d1

2 files changed

Lines changed: 24 additions & 13 deletions

File tree

openml/flows/sklearn_converter.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,6 @@ def sklearn_to_flow(o, parent_model=None):
4343
# TODO: explain what type of parameter is here
4444
rval = [sklearn_to_flow(element, parent_model) for element in o]
4545
if isinstance(o, tuple):
46-
assert(parent_model is not None)
47-
reserved_keywords = set(parent_model.get_params(deep=False).keys())
48-
if o[0] in reserved_keywords:
49-
parent_model_name = parent_model.__module__ + "." + \
50-
parent_model.__class__.__name__
51-
raise PyOpenMLError('Found element shadowing official ' + \
52-
'parameter for %s: %s' %(parent_model_name, o[0]))
5346
rval = tuple(rval)
5447
elif isinstance(o, (bool, int, float, six.string_types)) or o is None:
5548
# base parameter values
@@ -278,12 +271,20 @@ def _extract_information_from_model(model):
278271
isinstance(rval[0], (list, tuple)) and
279272
[type(rval[0]) == type(rval[i]) for i in range(len(rval))]):
280273

281-
# Steps in a pipeline or feature union
274+
# Steps in a pipeline or feature union, or base classifiers in voting classifier
282275
parameter_value = list()
276+
reserved_keywords = set(model.get_params(deep=False).keys())
277+
283278
for sub_component_tuple in rval:
284279
identifier, sub_component = sub_component_tuple
285280
sub_component_type = type(sub_component_tuple)
286281

282+
if identifier in reserved_keywords:
283+
parent_model_name = model.__module__ + "." + \
284+
model.__class__.__name__
285+
raise PyOpenMLError('Found element shadowing official ' + \
286+
'parameter for %s: %s' % (parent_model_name, identifier))
287+
287288
if sub_component is None:
288289
# In a FeatureUnion it is legal to have a None step
289290

tests/test_flows/test_sklearn.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -530,18 +530,28 @@ def test_illegal_parameter_names(self):
530530
clf1 = sklearn.ensemble.VotingClassifier(
531531
estimators=[('estimators', sklearn.ensemble.RandomForestClassifier()),
532532
('whatevs', sklearn.ensemble.ExtraTreesClassifier())])
533-
534-
535-
cases = [clf1]
533+
clf2 = sklearn.ensemble.VotingClassifier(
534+
estimators=[('whatevs', sklearn.ensemble.RandomForestClassifier()),
535+
('estimators', sklearn.ensemble.ExtraTreesClassifier())])
536+
cases = [clf1, clf2]
536537

537538
for case in cases:
538539
self.assertRaises(PyOpenMLError, sklearn_to_flow, case)
539540

540-
def test_illegal_parameter_names_sklearn(self):
541+
def test_illegal_parameter_names_pipeline(self):
541542
# illegal name: steps
542543
steps = [
543544
('Imputer', sklearn.preprocessing.Imputer(strategy='median')),
544545
('OneHotEncoder', sklearn.preprocessing.OneHotEncoder(sparse=False, handle_unknown='ignore')),
545546
('steps', sklearn.ensemble.BaggingClassifier(base_estimator=sklearn.tree.DecisionTreeClassifier))
546547
]
547-
self.assertRaises(ValueError, sklearn.pipeline.Pipeline, {'steps': steps })
548+
self.assertRaises(ValueError, sklearn.pipeline.Pipeline, steps=steps)
549+
550+
551+
def test_illegal_parameter_names_featureunion(self):
552+
# illegal name: transformer_list
553+
transformer_list = [
554+
('transformer_list', sklearn.preprocessing.Imputer(strategy='median')),
555+
('OneHotEncoder', sklearn.preprocessing.OneHotEncoder(sparse=False, handle_unknown='ignore'))
556+
]
557+
self.assertRaises(ValueError, sklearn.pipeline.FeatureUnion, transformer_list=transformer_list)

0 commit comments

Comments
 (0)