I think that instead of metafeatures_to_compute = hyperparams.Hyperparameter[List[str]] as a hyper-parameter, it would be better to list all metafeatures explicitly. Something like:
metafeatures_to_compute = hyperparams.Set(
elements=hyperparams.Enumeration(
values=['name1', 'name2', 'name3', ...],
# Default is ignored.
# TODO: Remove default. See: https://gitlab.com/datadrivendiscovery/d3m/issues/141
default='',
),
default=('name1', 'name2', 'name3', ...),
semantic_types=['https://metadata.datadrivendiscovery.org/types/MetafeatureParameter'],
description='Custom list of specific metafeatures to compute by name. Only used if \'metafeature_subset\' hyperparam is set to \'CUSTOM\'',
)
Moreover, you can also use a Choice hyper-parameter, which would all you to change metafeature_subset so that it is a choice between multiple different options, and if custom is picked, it has a sub-hyper-parmeter metafeatures_to_compute.
I think that instead of
metafeatures_to_compute = hyperparams.Hyperparameter[List[str]]as a hyper-parameter, it would be better to list all metafeatures explicitly. Something like:Moreover, you can also use a
Choicehyper-parameter, which would all you to changemetafeature_subsetso that it is a choice between multiple different options, and ifcustomis picked, it has a sub-hyper-parmetermetafeatures_to_compute.