Exemplo n.º 1
0
    def model_config(self, model_name):
        model = self.models[model_name]
        if model is None:
            return None
        model_config = deepcopy(model)
        config_keys = [
            "name",
            "type",
            "path",
            "target",
            "prediction_key",
            "features",
            "training_features",
            "hparams",
            "data_partition_ratio",
            "aggregates",
            "training",
            "evaluation",
            "tags",
        ]
        util.keep_dict_keys(model_config, config_keys)

        for i, feature_name in enumerate(model_config["features"]):
            model_config["features"][i] = self.feature_config(feature_name)

        for i, feature_name in enumerate(model_config["training_features"]):
            model_config["training_features"][i] = self.feature_config(
                feature_name)

        model_config["target"] = self.feature_config(model_config["target"])

        aggregates_dict = {key: key for key in model_config["aggregates"]}
        model_config["aggregates"] = self.populate_args(aggregates_dict)

        return model_config
Exemplo n.º 2
0
 def constant_config(self, constant_name):
     constant = self.constants[constant_name]
     if constant is None:
         return None
     config = deepcopy(constant)
     config_keys = ["name", "type", "tags"]
     util.keep_dict_keys(config, config_keys)
     return config
Exemplo n.º 3
0
 def raw_column_config(self, column_name):
     raw_column = self.raw_columns[column_name]
     if raw_column is None:
         return None
     config = deepcopy(raw_column)
     config_keys = ["name", "type", "required", "min", "max", "values", "tags"]
     util.keep_dict_keys(config, config_keys)
     return config
Exemplo n.º 4
0
 def transformer_config(self, transformer_name):
     transformer = self.transformers[transformer_name]
     if transformer is None:
         return None
     config = deepcopy(transformer)
     config_keys = ["name", "output_type", "inputs"]
     util.keep_dict_keys(config, config_keys)
     config["name"] = transformer_name  # Use the fully qualified name (includes namespace)
     return config
Exemplo n.º 5
0
 def aggregator_config(self, aggregator_name):
     aggregator = self.aggregators[aggregator_name]
     if aggregator is None:
         return None
     config = deepcopy(aggregator)
     config_keys = ["name", "output_type", "inputs"]
     util.keep_dict_keys(config, config_keys)
     config["name"] = aggregator_name  # Use the fully qualified name (includes namespace)
     return config
Exemplo n.º 6
0
 def aggregate_config(self, aggregate_name):
     aggregate = self.aggregates[aggregate_name]
     if aggregate is None:
         return None
     config = deepcopy(aggregate)
     config_keys = ["name", "type", "inputs", "aggregator", "tags"]
     util.keep_dict_keys(config, config_keys)
     config["inputs"] = self._expand_inputs_config(config["inputs"])
     config["aggregator"] = self.aggregator_config(config["aggregator"])
     return config
Exemplo n.º 7
0
 def transformed_column_config(self, column_name):
     transformed_column = self.transformed_columns[column_name]
     if transformed_column is None:
         return None
     config = deepcopy(transformed_column)
     config_keys = ["name", "transformer", "inputs", "tags", "type"]
     util.keep_dict_keys(config, config_keys)
     config["inputs"] = self._expand_inputs_config(config["inputs"])
     config["transformer"] = self.transformer_config(config["transformer"])
     return config
Exemplo n.º 8
0
 def transformed_feature_config(self, feature_name):
     transformed_feature = self.transformed_features[feature_name]
     if transformed_feature is None:
         return None
     config = deepcopy(transformed_feature)
     config_keys = ["name", "transformer", "inputs", "tags", "type"]
     util.keep_dict_keys(config, config_keys)
     config["inputs"] = self._expand_inputs_config(config["inputs"])
     config["transformer"] = self.transformer_config(config["transformer"])
     return config
Exemplo n.º 9
0
 def raw_feature_config(self, feature_name):
     raw_feature = self.raw_features[feature_name]
     if raw_feature is None:
         return None
     config = deepcopy(raw_feature)
     config_keys = [
         "name", "type", "required", "min", "max", "values", "tags"
     ]
     util.keep_dict_keys(config, config_keys)
     return config
Exemplo n.º 10
0
    def model_config(self, model_name):
        model = self.models[model_name]
        if model is None:
            return None
        estimator = self.estimators[model["estimator"]]
        target_column = self.columns[util.get_resource_ref(model["target_column"])]

        if estimator.get("target_column") is not None:
            target_col_type = self.get_inferred_column_type(target_column["name"])
            if target_col_type not in estimator["target_column"]:
                raise UserException(
                    "model " + model_name,
                    "target_column",
                    target_column["name"],
                    "unsupported type (expected type {}, got type {})".format(
                        util.data_type_str(estimator["target_column"]),
                        util.data_type_str(target_col_type),
                    ),
                )

        model_config = deepcopy(model)
        config_keys = [
            "name",
            "estimator"
            "estimator_path"
            "target_column"
            "input"
            "training_input"
            "hparams"
            "prediction_key"
            "data_partition_ratio"
            "training"
            "evaluation"
            "tags",
        ]
        util.keep_dict_keys(model_config, config_keys)

        model_config["target_column"] = target_column["name"]
        model_config["input"] = self.populate_values(
            model["input"], estimator["input"], preserve_column_refs=False
        )
        if model.get("training_input") is not None:
            model_config["training_input"] = self.populate_values(
                model["training_input"], estimator["training_input"], preserve_column_refs=False
            )
        if model.get("hparams") is not None:
            model_config["hparams"] = self.populate_values(
                model["hparams"], estimator["hparams"], preserve_column_refs=False
            )

        return model_config