예제 #1
0
    def test_class_decision_tree(self):
        job = self.get_classification_job(
            PredictiveModels.CLASSIFICATION.value,
            ClassificationMethods.DECISION_TREE.value)

        results, _, _ = calculate_hyperopt(job)
        self.assertIsNotNone(results)
예제 #2
0
    def test_regression_xgboost(self):
        job = self.get_job(PredictiveModels.REGRESSION.value,
                           RegressionMethods.XGBOOST.value,
                           HyperOptLosses.RMSE.value)

        results, _, _ = calculate_hyperopt(job)
        self.assertIsNotNone(results)
예제 #3
0
    def test_class_xgboost(self):
        job = self.get_classification_job(
            PredictiveModels.CLASSIFICATION.value,
            ClassificationMethods.XGBOOST.value)

        results, _, _ = calculate_hyperopt(job)
        self.assertIsNotNone(results)
예제 #4
0
def prediction_task(job_id, do_publish_result=True):
    logger.info("Start prediction task ID {}".format(job_id))
    job = Job.objects.get(id=job_id)

    try:
        if (job.status == JobStatuses.CREATED.value and job.type != JobTypes.UPDATE.value) or \
           (job.status == JobStatuses.CREATED.value and job.type == JobTypes.UPDATE.value and
            job.incremental_train.status == JobStatuses.COMPLETED.value):

            job.status = JobStatuses.RUNNING.value
            job.save()
            job_start_time = time.time()
            if job.hyperparameter_optimizer is not None and \
                job.hyperparameter_optimizer.optimization_method != HyperparameterOptimizationMethods.NONE.value:
                result, _, model_split = calculate_hyperopt(job)
            else:
                result, model_split = calculate(job)
            job_elapsed_time = time.time() - job_start_time
            logger.info('\tJob took: {} in HH:MM:ss'.format(
                time.strftime("%H:%M:%S", time.gmtime(job_elapsed_time))))
            if job.create_models:
                save_models(model_split, job)
            job.result = result
            # Evaluation.init(
            #     job.predictive_model.predictive_model,
            #     results
            # )
            job.status = JobStatuses.COMPLETED.value
        elif job.status in [
                JobStatuses.COMPLETED.value, JobStatuses.ERROR.value,
                JobStatuses.RUNNING.value
        ]:
            django_rq.enqueue(prediction_task, job.id)
    except Exception as e:
        logger.error(e)
        job.status = JobStatuses.ERROR.value
        job.error = str(e.__repr__())
        raise e
    finally:
        job.save()
        if do_publish_result:
            publish(job)
예제 #5
0
def hyperopt_task(job):
    # job_dict = job.to_dict()
    results, config, model_split = calculate_hyperopt(job)
    # method_conf_name = "{}.{}".format(job_dict['type'], job_dict['method'])
    # job.config[method_conf_name] = config
    return results, model_split
예제 #6
0
 def test_class_randomForest(self):
     job = self.get_job(PredictiveModels.CLASSIFICATION.value,
                        ClassificationMethods.RANDOM_FOREST.value)
     results, _, _ = calculate_hyperopt(job)
     self.assertIsNotNone(results)
 def calculate_helper_hyperopt(job):
     start_time = time.time()
     calculate_hyperopt(job)
     print('Total for %s %s seconds' %
           (job['method'], time.time() - start_time))
예제 #8
0
 def setUp(self):
     self.job = self.get_regression_job(PredictiveModels.REGRESSION.value,
                                        RegressionMethods.XGBOOST.value)
     _, _, _ = calculate_hyperopt(self.job)
예제 #9
0
 def setUp(self):
     self.job = self.get_classification_job(
         PredictiveModels.CLASSIFICATION.value,
         ClassificationMethods.PERCEPTRON.value)
     _, _, _ = calculate_hyperopt(self.job)