def test_class_nb(self):
     job = create_test_job(
         predictive_model=create_test_predictive_model(
             prediction_method=ClassificationMethods.
             MULTINOMIAL_NAIVE_BAYES.value),
         labelling=create_test_labelling(
             label_type=LabelTypes.ATTRIBUTE_STRING.value,
             attribute_name='concept:name'),
         clustering=create_test_clustering(
             clustering_type=ClusteringMethods.NO_CLUSTER.value))
     result, _ = calculate(job)
     del result['elapsed_time']
     self.assertDictEqual(
         result, {
             'f1score': 0.0,
             'acc': 0.0,
             'precision': 0.0,
             'recall': 0.0,
             'true_positive': 0,
             'true_negative': 0,
             'false_negative': 2,
             'false_positive': 0,
             'auc': 0.0
         })
    def test_next_activity(self):
        labelling = create_test_labelling(
            label_type=LabelTypes.NEXT_ACTIVITY.value)
        encoding = create_test_encoding(
            value_encoding=ValueEncodings.BOOLEAN.value,
            prefix_length=3,
            task_generation_type=TaskGenerationTypes.ONLY_THIS.value)

        _, df = encode_label_logs(
            self.test_log, self.test_log,
            create_test_job(
                encoding=encoding,
                labelling=labelling,
                predictive_model=create_test_predictive_model(
                    predictive_model=PredictiveModels.CLASSIFICATION.value)))
        self.assertEqual(df.shape, (2, 9))
        trace_5 = df[df.trace_id == '5'].iloc[0].values.tolist()
        self.assertListEqual(
            trace_5,
            ['5', True, True, True, False, False, False, False, 'decide'])
        trace_4 = df[df.trace_id == '4'].iloc[0].values.tolist()
        self.assertListEqual(
            trace_4,
            ['4', True, False, True, False, False, False, True, 'decide'])
示例#3
0
    def test_explain(self):
        split = create_test_split(
            split_type=SplitTypes.SPLIT_DOUBLE.value,
            split_ordering_method=SplitOrderingMethods.SPLIT_SEQUENTIAL.value,
            test_size=0.2,
            original_log=None,
            train_log=create_test_log(
                log_name='train_explainability.xes',
                log_path='cache/log_cache/test_logs/train_explainability.xes'),
            test_log=create_test_log(
                log_name='test_explainability.xes',
                log_path='cache/log_cache/test_logs/test_explainability.xes'))

        predictive_model = create_test_predictive_model(
            predictive_model=PredictiveModels.CLASSIFICATION.value,
            prediction_method=ClassificationMethods.DECISION_TREE.value)

        job = create_test_job(
            split=split,
            encoding=create_test_encoding(
                prefix_length=4,
                padding=True,
                value_encoding=ValueEncodings.SIMPLE_INDEX.value),
            labelling=create_test_labelling(
                label_type=LabelTypes.ATTRIBUTE_STRING.value,
                attribute_name='label'),
            clustering=None,
            create_models=True,
            predictive_model=predictive_model,
            job_type=JobTypes.PREDICTION.value,
            hyperparameter_optimizer=None,
            incremental_train=None)

        prediction_task(job.id, do_publish_result=False)
        job.refresh_from_db()

        exp = Explanation.objects.get_or_create(
            type=ExplanationTypes.ICE.value,
            split=split,
            predictive_model=predictive_model,
            job=job,
            results={})[0]
        training_df_old, test_df_old = get_encoded_logs(job)

        explanation_target = 'prefix_2'

        explanation = explain(exp,
                              training_df_old,
                              test_df_old,
                              explanation_target,
                              prefix_target=None)

        expected = [{
            'value': 'Contact Hospital',
            'label': 1.2962962962962963,
            'count': 351
        }, {
            'value': 'Create Questionnaire',
            'label': 1.5526992287917738,
            'count': 1167
        }, {
            'value': 'High Insurance Check',
            'label': 1.2667660208643816,
            'count': 671
        }]

        self.assertEqual(expected, explanation)
    def test_prefix1_no_label(self):
        labelling = create_test_labelling(label_type=LabelTypes.NO_LABEL.value)
        df = frequency(self.log, self.event_names, labelling, self.encoding)

        self.assertEqual(df.shape, (2, 8))
        self.assertNotIn('label', df.columns.values.tolist())
示例#5
0
 def test_remaining_time(self):
     job = self.get_job()
     job.labelling = create_test_labelling(label_type=LabelTypes.REMAINING_TIME.value)
     job.save()
     result, _ = calculate(job)
     self.assertEqual(result, {'true': 529, 'false': 354})