Beispiel #1
0
class Feature(Bean):
    name = StringField()
    type = StringField()
    data_type = StringField()
    correlation = BeanField(bean_cls=FeatureCorrelation)
    missing = BeanField(bean_cls=FeatureMissing)
    unique = BeanField(bean_cls=FeatureUnique)
    extension = DictField()
Beispiel #2
0
class JobStep(Bean):
    type = StringField()
    status = StringField()
    took = FloatField()
    datetime = IntegerField()
    extension = DictField()

    class Status:
        Succeed = "succeed"
        Failed = "failed"
Beispiel #3
0
class Model(Bean):
    name = StringField()
    framework = StringField()
    dataset_name = StringField()
    model_file_size = IntegerField()
    no_experiment = IntegerField()
    inputs = ListBeanField(ModelFeature)
    task_type = StringField()
    performance = BeanField(Performance)
    model_path = StringField()
    status = StringField()
    pid = IntegerField()
    score = FloatField()
    progress = StringField()
    train_job_name = StringField()
    train_trail_no = IntegerField()
    trails = ListBeanField(TrainTrail)
    extension = DictField()
    create_datetime = DatetimeField()
    finish_datetime = DatetimeField()
    last_update_datetime = DatetimeField()

    def escaped_time(self):
        if self.status in [ModelStatusType.Succeed, ModelStatusType.Failed]:
            if self.finish_datetime is None:
                raise Exception(
                    "Internal error, train finished but has no finish_datetime. "
                )
            escaped = util.datetime_diff_human_format_by_minute(
                self.finish_datetime, self.create_datetime)
        else:
            escaped = util.datetime_diff_human_format_by_minute(
                util.get_now_datetime(), self.create_datetime)
        return escaped

    def escaped_time_by_seconds(self):
        if self.status in [ModelStatusType.Succeed, ModelStatusType.Failed]:
            if self.finish_datetime is None:
                raise Exception(
                    f"Internal error, model name = {self.name} train finished but has no finish_datetime. "
                )
            escaped = util.datetime_diff(self.finish_datetime,
                                         self.create_datetime)
        else:
            escaped = util.datetime_diff(util.get_now_datetime(),
                                         self.create_datetime)
        return escaped

    def default_metric(self):
        m = \
            {
                'multi_classification': "logloss",
                'regression': "mae",
                'binary_classification': "auc"
            }
        return m[self.task_type]

    def log_file_path(self):
        # exits begin from train start
        return util.relative_path(P.join(str(self.model_path), 'train.log'))

    def train_source_code_path(self):
        # exits begin from train start
        return util.relative_path(P.join(str(self.model_path), 'train.py'))

    def train_notebook_uri(self):
        # exits begin from train start
        train_notebook_path = P.join(str(self.model_path), 'train.ipynb')
        return util.relative_path(train_notebook_path)
Beispiel #4
0
class TrainTrail(Bean):
    trail_no = IntegerField()
    reward = FloatField()
    elapsed = FloatField()
    params = DictField()
Beispiel #5
0
class Performance(Bean):
    metrics = DictField()  # RegressionTaskMetrics or ClassifyTaskMetrics
    confusion_matrix = BeanField(ConfusionMatrix)
    roc_curve = BeanField(ROCCurve)
Beispiel #6
0
class TrainTrial(Bean):
    trial_no = IntegerField()
    status = StringField()
    extension = DictField()