Exemple #1
0
def build_config_space(clustering_ls=["KMeans", "DBSCAN"],
                       dim_reduction_ls=[]):
    cs = ConfigurationSpace()

    if len(clustering_ls) > 0:
        clustering_choice = CategoricalHyperparameter(
            "clustering_choice", clustering_ls, default_value=clustering_ls[0])
        cs.add_hyperparameters([clustering_choice])

    if len(dim_reduction_ls) > 0:
        dim_reduction_choice = CategoricalHyperparameter(
            "dim_reduction_choice",
            dim_reduction_ls,
            default_value=dim_reduction_ls[0])
        cs.add_hyperparameters([dim_reduction_choice])

    for idx, string in enumerate(
            itertools.chain(clustering_ls, dim_reduction_ls)):
        algorithm = Mapper.getClass(string)

        # encode parameter names
        encoded_params = []
        for param in algorithm.params:
            encoded_string = StringUtils.encode_parameter(
                param.name, algorithm.name)
            param.name = encoded_string

        # add encoded paramters to configuration space
        cs.add_hyperparameters(algorithm.params)

        # define dependency
        for param in algorithm.params:
            cs.add_condition(
                InCondition(child=param,
                            parent=clustering_choice if
                            idx < len(clustering_ls) else dim_reduction_choice,
                            values=[string]))

        # add forbidden clauses
        for condition in algorithm.forbidden_clauses:
            cs.add_forbidden_clause(condition)

    return cs
def build_config_space(clustering_ls: List[str] = None,
                       feature_selection_ls: List[str] = None):
    if clustering_ls is None:
        clustering_ls = ["KMeans", "DBSCAN"]
    if feature_selection_ls is None:
        feature_selection_ls = ["NullModel", "NormalizedCut"]
    assert len(clustering_ls) > 0
    assert len(feature_selection_ls) > 0

    cs = ConfigurationSpace()

    clustering_choice = CategoricalHyperparameter(
        "clustering_choice", clustering_ls, default_value=clustering_ls[0])
    feature_selection_choice = CategoricalHyperparameter(
        "feature_selection_choice",
        feature_selection_ls,
        default_value=feature_selection_ls[0])
    cs.add_hyperparameters([clustering_choice])
    cs.add_hyperparameters([feature_selection_choice])

    for idx, string in enumerate(
            itertools.chain(clustering_ls, feature_selection_ls)):
        algorithm = Mapper.get_class(string)

        for param in algorithm.params:
            encoded_string = encode_parameter(param.name, algorithm.name)
            param.name = encoded_string

        cs.add_hyperparameters(algorithm.params)

        for param in algorithm.params:
            cs.add_condition(
                InCondition(
                    child=param,
                    parent=clustering_choice
                    if idx < len(clustering_ls) else feature_selection_choice,
                    values=[string]))

        for condition in algorithm.forbidden_clauses:
            cs.add_forbidden_clause(condition)

    return cs