Esempio n. 1
0
    def runModel(self, kind, conf):
        self.setDatasets(conf)

        # Create the experiment
        exp = self.experiment
        name = 'AL%d-Iter%d-%s' % (exp.experiment_id,
                                   self.iteration.iteration_number, kind)
        model_exp = ClassificationExperiment(exp.secuml_conf,
                                             session=exp.session)
        model_exp.initExperiment(exp.project,
                                 exp.dataset,
                                 experiment_name=name,
                                 parent=exp.experiment_id)
        model_exp.setConf(conf,
                          exp.features_filename,
                          annotations_id=exp.annotations_id)
        model_exp.export()

        # Build the model
        model = conf.model_class(model_exp.conf, cv_monitoring=True)
        model_run = RunClassifier(model, self.datasets, model_exp)
        model_run.run()
        self.models[kind] = model

        # Execution time monitoring
        time = model.training_execution_time + model.testing_execution_time
        self.times[kind] = time

        return model_exp
Esempio n. 2
0
 def createNaiveBayesConf(self):
     exp = self.experiment
     name = '-'.join([
         'AL' + str(exp.experiment_id),
         'Iter' + str(self.iteration.iteration_number), 'all', 'NaiveBayes'
     ])
     naive_bayes_exp = ClassificationExperiment(exp.secuml_conf,
                                                session=exp.session)
     naive_bayes_exp.initExperiment(exp.project,
                                    exp.dataset,
                                    experiment_name=name,
                                    parent=exp.experiment_id)
     test_conf = UnlabeledLabeledConf(logger=exp.logger)
     naive_bayes_conf = GaussianNaiveBayesConfiguration(
         exp.conf.models_conf['multiclass'].n_jobs,
         exp.conf.models_conf['multiclass'].num_folds,
         False,
         True,
         test_conf,
         logger=exp.logger)
     naive_bayes_exp.setConf(naive_bayes_conf,
                             exp.features_filename,
                             annotations_id=exp.annotations_id)
     naive_bayes_exp.export()
     return naive_bayes_conf
 def getMulticlassConf(self):
     conf = self.rare_category_detection_conf.classification_conf
     exp = self.experiment
     name = '-'.join(['AL' + str(exp.experiment_id),
                      'Iter' + str(self.iteration.iteration_number),
                      self.label,
                      'analysis'])
     self.multiclass_exp = ClassificationExperiment(exp.project, exp.dataset,
                                                    exp.session,
                                                    experiment_name=name,
                                                    parent=exp.experiment_id)
     self.multiclass_exp.setConf(conf, exp.features_filename,
                                 annotations_id=exp.annotations_id)
     self.multiclass_exp.export()
     return conf
Esempio n. 4
0
 def getNaiveBayesConf(self):
     exp = self.experiment
     name = '-'.join([
         'AL' + str(exp.experiment_id),
         'Iter' + str(self.iteration.iteration_number), 'all', 'NaiveBayes'
     ])
     naive_bayes_exp = ClassificationExperiment(exp.project,
                                                exp.dataset,
                                                exp.session,
                                                experiment_name=name,
                                                parent=exp.experiment_id)
     test_conf = UnlabeledLabeledConf()
     naive_bayes_conf = GaussianNaiveBayesConfiguration(
         exp.conf.num_folds, False, True, test_conf)
     naive_bayes_exp.setConf(naive_bayes_conf,
                             exp.features_filename,
                             annotations_id=exp.annotations_id)
     naive_bayes_exp.export()
     return naive_bayes_conf
class RareCategoryDetectionAnnotationQueriesExp(
        RareCategoryDetectionAnnotationQueries):
    def __init__(self,
                 iteration,
                 label,
                 proba_min,
                 proba_max,
                 multiclass_exp=None,
                 input_checking=True):
        RareCategoryDetectionAnnotationQueries.__init__(
            self,
            iteration,
            label,
            proba_min,
            proba_max,
            input_checking=input_checking)
        self.multiclass_exp = multiclass_exp
        self.experiment = iteration.experiment

    def generateAnnotationQuery(self,
                                instance_id,
                                predicted_proba,
                                suggested_label,
                                suggested_family,
                                confidence=None):
        return AnnotationQueryExp(instance_id,
                                  predicted_proba,
                                  suggested_label,
                                  suggested_family,
                                  confidence=confidence)

    def getMulticlassConf(self):
        conf = self.rare_category_detection_conf.classification_conf
        exp = self.experiment
        name = '-'.join([
            'AL%d' % exp.experiment_id,
            'Iter%d' % self.iteration.iteration_number, self.label, 'analysis'
        ])
        self.multiclass_exp = ClassificationExperiment(exp.secuml_conf,
                                                       session=exp.session)
        self.multiclass_exp.initExperiment(exp.project,
                                           exp.dataset,
                                           experiment_name=name,
                                           parent=exp.experiment_id)
        self.multiclass_exp.setConf(conf,
                                    exp.features_filename,
                                    annotations_id=exp.annotations_id)
        self.multiclass_exp.export()
        return conf

    def createClusteringExperiment(self):
        exp = self.experiment
        conf = ClusteringConfiguration(self.categories.numCategories(),
                                       logger=exp.logger)
        name = '-'.join([
            'AL%d' % exp.experiment_id,
            'Iter%d' % self.iteration.iteration_number, self.label,
            'clustering'
        ])
        clustering_exp = ClusteringExperiment(exp.secuml_conf,
                                              session=exp.session)
        clustering_exp.initExperiment(exp.project,
                                      exp.dataset,
                                      experiment_name=name,
                                      parent=exp.experiment_id)
        clustering_exp.setConf(conf,
                               exp.features_filename,
                               annotations_id=exp.annotations_id)
        clustering_exp.export()
        return clustering_exp

    def generateClusteringVisualization(self):
        if self.families_analysis:
            self.clustering_exp = self.createClusteringExperiment()
            clustering = Clustering(self.categories.instances,
                                    self.categories.assigned_categories)
            clustering.generateClustering(None, None)
            clustering.export(self.clustering_exp.getOutputDirectory())
        else:
            self.clustering_exp = None

    def setCategories(self, all_instances, assigned_categories,
                      predicted_proba):
        self.categories = CategoriesExp(self.multiclass_exp, self.iteration,
                                        all_instances, assigned_categories,
                                        predicted_proba, self.label,
                                        self.multiclass_model.class_labels)