From e36fed491bb6cd078ff7cc21e14fb5447e0189e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Wed, 30 Jun 2021 09:23:58 +0200 Subject: [PATCH] Add sqlite config Add sqlite to report_score --- data/stree.sqlite | Bin 0 -> 245760 bytes experimentation/.myconfig.dist | 3 ++- experimentation/Database.py | 12 ++++++++++-- experimentation/mysql/.myconfig | 6 ++++++ experimentation/mysql/.tunnel | 5 +++++ experimentation/sqlite/.myconfig | 6 ++++++ experimentation/sqlite/.tunnel | 5 +++++ report_score.py | 4 +++- 8 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 data/stree.sqlite create mode 100644 experimentation/mysql/.myconfig create mode 100644 experimentation/mysql/.tunnel create mode 100644 experimentation/sqlite/.myconfig create mode 100644 experimentation/sqlite/.tunnel diff --git a/data/stree.sqlite b/data/stree.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..ea91b79dc0a635bca6d2a6ba1c4e3e324ce0f66e GIT binary patch literal 245760 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 z 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 port=tunnel user=stree password= -database=stree_experiments \ No newline at end of file +database=stree_experiments +sqlite=None diff --git a/experimentation/Database.py b/experimentation/Database.py index 282b175..22d9955 100644 --- a/experimentation/Database.py +++ b/experimentation/Database.py @@ -42,13 +42,21 @@ class MySQL: if self._tunnel: self._server.start() self._config_db["port"] = self._server.local_bind_port - self._database = mysql.connector.connect(**self._config_db) + if self._config_db["sqlite"] == "None": + del self._config_db["sqlite"] + self._config_db["buffered"] = True + self._database = mysql.connector.connect(**self._config_db) + else: + self._database = sqlite3.connect(self._config_db["sqlite"]) + # return dict as a result of select + self._database.row_factory = sqlite3.Row + return self._database def find_best( self, dataset, classifier="any", experiment="any", time_info=False ): - cursor = self._database.cursor(buffered=True) + cursor = self._database.cursor() date_from = "2021-01-20" # date_to = "2021-04-07" command = ( diff --git a/experimentation/mysql/.myconfig b/experimentation/mysql/.myconfig new file mode 100644 index 0000000..7b79ceb --- /dev/null +++ b/experimentation/mysql/.myconfig @@ -0,0 +1,6 @@ +host=127.0.0.1 +port=3306 +user=stree +password=xtree +database=stree +sqlite=None diff --git a/experimentation/mysql/.tunnel b/experimentation/mysql/.tunnel new file mode 100644 index 0000000..3c52126 --- /dev/null +++ b/experimentation/mysql/.tunnel @@ -0,0 +1,5 @@ +ssh_address_or_host=('atenea.rmontanana.es', 31427) +ssh_username=rmontanana +ssh_private_key=/home/rmontanana/.ssh/id_rsa +remote_bind_address=('127.0.0.1', 3306) +enabled=1 diff --git a/experimentation/sqlite/.myconfig b/experimentation/sqlite/.myconfig new file mode 100644 index 0000000..757273c --- /dev/null +++ b/experimentation/sqlite/.myconfig @@ -0,0 +1,6 @@ +host=127.0.0.1 +port=3306 +user=stree +password=xtree +database=stree +sqlite=./data/stree.sqlite diff --git a/experimentation/sqlite/.tunnel b/experimentation/sqlite/.tunnel new file mode 100644 index 0000000..556b9f1 --- /dev/null +++ b/experimentation/sqlite/.tunnel @@ -0,0 +1,5 @@ +ssh_address_or_host=('atenea.rmontanana.es', 31427) +ssh_username=rmontanana +ssh_private_key=/home/rmontanana/.ssh/id_rsa +remote_bind_address=('127.0.0.1', 3306) +enabled=0 diff --git a/report_score.py b/report_score.py index cd51f33..fa8143b 100644 --- a/report_score.py +++ b/report_score.py @@ -126,11 +126,13 @@ def process_dataset(dataset, verbose, model, params): record = dbh.find_best(dataset, model, "gridsearch") hyperparameters = json.loads(record[8] if record[8] != "" else "{}") hyperparameters.pop("random_state", None) + print("*" * 100) for random_state in random_seeds: random.seed(random_state) np.random.seed(random_state) kfold = KFold(shuffle=True, random_state=random_state, n_splits=5) clf = get_classifier(model, random_state, hyperparameters) + print(hyperparameters) res = cross_validate(clf, X, y, cv=kfold, return_estimator=True) scores.append(res["test_score"]) times.append(res["fit_time"]) @@ -361,7 +363,7 @@ standardize = False excel, discretize, ) = parse_arguments() -# parameters = '{"splitter":"cfs","max_features":"auto"}' +# parameters = '{"kernel":"rbf","max_features":"auto"}' dbh = MySQL() if sql: sql_output = open(f"{model}.sql", "w")