コード例 #1
0
    def worker(i, working_queue, output_q, cv_splits, ds_collection):
        while True:
            try:
                exp_params = working_queue.get_nowait()
                exp = Experiment.from_params(exp_params)
                exp.cv_splits = cv_splits
                exp.set_datasets(ds_collection)

                Print.progress("{}: Running Experiment".format(i))
                exp.run()
                output_q.put(exp.report)
            except Empty:
                Print.info("Queue Empty")
                break

        return
コード例 #2
0
    def run_experiments(self, fast_datasets=False):
        time.sleep(1)
        start_run_time = time.time()

        ds_collection = DatasetCollection.from_params(self.params,
                                                      self.cv_splits,
                                                      fast=fast_datasets)

        if self.multiprocessing == "exp":
            self.run_multi(ds_collection)
        else:
            for i, exp_params in enumerate(
                    tqdm(self.exp_params_list, desc="Running Experiments")):
                exp = Experiment.from_params(exp_params)
                exp.cv_splits = self.cv_splits
                exp.index = i
                exp.set_datasets(ds_collection)

                exp.multiprocessing = (self.multiprocessing == "cv")

                exp.run()

                if self.best_exp is None or exp.report[
                        "accuracy"] > self.best_exp.report["accuracy"]:
                    Print.good("New best: {}".format(
                        np.round(exp.report["accuracy"], 3)))
                    self.best_exp = exp

                self.exp_reports.append(exp.report)

        self.run_time = time.time() - start_run_time
        self.generate_report()

        if self.save_best:
            from sklearn.externals import joblib
            fp = Path.classifiers + '/' + "classifier1.pkl"

            joblib.dump(self.best_exp.pipeline, fp)