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
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)