Skip to content

Commit

Permalink
preparation for batch optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
qnater committed Sep 29, 2024
1 parent c02f3cd commit 7937935
Show file tree
Hide file tree
Showing 17 changed files with 76 additions and 74 deletions.
77 changes: 42 additions & 35 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions env/optimal_parameters_b_chlorine_cdrec.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[cdrec]
rank = "8"
epsilon = 0.00018675637037515554
iteration = "1000"
4 changes: 4 additions & 0 deletions env/optimal_parameters_b_chlorine_stmvl.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[stmvl]
window_size = "2"
gamma = 0.999999
alpha = "6"
4 changes: 0 additions & 4 deletions env/optimal_parameters_cdrec.toml

This file was deleted.

4 changes: 0 additions & 4 deletions env/optimal_parameters_stmvl.toml

This file was deleted.

Binary file modified imputegap/assets/contamination/test_contamination.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified imputegap/assets/ground_truth/test_ground_truth.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified imputegap/assets/imputation/test_imputation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified imputegap/manager/__pycache__/utils.cpython-312.pyc
Binary file not shown.
4 changes: 2 additions & 2 deletions imputegap/manager/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def get_save_path_asset():
return filepath


def load_parameters(query: str = "default", algorithm: str = "cdrec"):
def load_parameters(query: str = "default", algorithm: str = "cdrec", dataset: str = "chlorine", optimizer: str="b"):
"""
Load default values of algorithms
Expand All @@ -44,7 +44,7 @@ def load_parameters(query: str = "default", algorithm: str = "cdrec"):
if query == "default":
filepath = "../env/default_values.toml"
elif query == "optimal":
filepath = "../env/optimal_parameters_"+str(algorithm)+".toml"
filepath = "../env/optimal_parameters_"+str(optimizer)+"_"+str(dataset)+"_"+str(algorithm)+".toml"
else:
print("Query not found for this function ('optimal' or 'default')")

Expand Down
Binary file not shown.
6 changes: 3 additions & 3 deletions imputegap/optimization/bayesian_optimization.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@

class Optimization:

def save_optimization(optimal_params, algorithm="cdrec", file_name=None):
def save_optimization(optimal_params, algorithm="cdrec", dataset="", optimizer="b", file_name=None):
"""
Save the optimization parameters to a TOML file to use later without recomputing.
:param optimal_params: dictionary of the optimal parameters.
:param file_name: name of the TOML file to save the results. Default is 'optimization_results.toml'.
"""
if file_name is None:
file_name = "../env/optimal_parameters_" + str(algorithm) + ".toml"
file_name = "../env/optimal_parameters_" + str(optimizer) + "_" + str(dataset) + "_" + str(algorithm) + ".toml"

if not os.path.exists(file_name):
file_name = file_name[1:]
Expand All @@ -40,7 +40,7 @@ def save_optimization(optimal_params, algorithm="cdrec", file_name=None):
class Bayesian:

def bayesian_optimization(ground_truth, contamination, selected_metrics=["RMSE"], algorithm="cdrec",
n_calls=10, n_random_starts=50, acq_func='gp_hedge'):
n_calls=100, n_random_starts=50, acq_func='gp_hedge'):
"""
Conduct the Bayesian optimization hyperparameter optimization.
Expand Down
34 changes: 18 additions & 16 deletions imputegap/runner_optimization.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,27 @@ def check_block_size(filename):
if __name__ == '__main__':

display_title()
datasets = ["bafu", "chlorine", "climate", "drift", "egg", "meteo", "test-large"]

filename = "eeg"
file_path = os.path.join("./dataset/", filename + ".txt")
gap = TimeSeries(data=file_path)
for filename in datasets :
file_path = os.path.join("./dataset/", filename + ".txt")
gap = TimeSeries(data=file_path)

block_size, plot_limit = check_block_size(filename)
block_size, plot_limit = check_block_size(filename)

gap.print(limitation=5)
gap.plot(title="test", save_path="assets", limitation=6, display=False)
gap.print(limitation=5)
gap.plot(title="test", save_path="assets", limitation=6, display=False)

gap.ts_contaminate = Contamination.scenario_mcar(ts=gap.ts, series_impacted=0.4, missing_rate=0.4, block_size=block_size, protection=0.1, use_seed=True, seed=42)
gap.print()
gap.plot(ts_type="contamination", title="test", save_path="assets", limitation=3, display=False)
gap.ts_contaminate = Contamination.scenario_mcar(ts=gap.ts, series_impacted=0.4, missing_rate=0.4, block_size=block_size, protection=0.1, use_seed=True, seed=42)
gap.print()
gap.plot(ts_type="contamination", title="test", save_path="assets", limitation=3, display=False)

for algo in ["cdrec", "stmvl", "iim", "mrnn"]:
print("RUN OPTIMIZATION FOR : ", algo, "...")
optimal_params, yi = Optimization.Bayesian.bayesian_optimization(ground_truth=gap.ts, contamination=gap.ts_contaminate, algorithm=algo)
print("\nOptical Params : ", optimal_params)
print("\nyi : ", yi, "\n")
Optimization.save_optimization(optimal_params=optimal_params, algorithm=algo)
print("\n", "_"*95, "end")
for algo in ["cdrec", "stmvl", "iim", "mrnn"]:
print("RUN OPTIMIZATION FOR : ", algo, "... with ", filename, "...")
optimal_params, yi = Optimization.Bayesian.bayesian_optimization(ground_truth=gap.ts, contamination=gap.ts_contaminate, algorithm=algo)
print("\nOptical Params : ", optimal_params)
print("\nyi : ", yi, "\n")
Optimization.save_optimization(optimal_params=optimal_params, algorithm=algo, dataset=filename, optimizer="b")
print("\n", "_"*95, "end")
print("\n", "_" * 95, "end")
print("\n", "_" * 95, "end")
7 changes: 3 additions & 4 deletions tests/test_opti_bayesian_cdrec.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ def test_optimization_bayesian_cdrec(self):
"""
the goal is to test if only the simple optimization with cdrec has the expected outcome
"""
gap = TimeSeries(utils.get_file_path_dataset("chlorine"))

algorithm = "cdrec"
dataset = "chlorine"

gap = TimeSeries(utils.get_file_path_dataset(dataset))

ts_contaminated = Contamination.scenario_mcar(ts=gap.ts, series_impacted=0.4, missing_rate=0.4, block_size=2, protection=0.1, use_seed=True, seed=42)

Expand All @@ -32,7 +33,5 @@ def test_optimization_bayesian_cdrec(self):
_, metrics_optimal = Imputation.MR.cdrec(ground_truth=gap.ts, contamination=ts_contaminated, params=params_optimal)
_, metrics_default = Imputation.MR.cdrec(ground_truth=gap.ts, contamination=ts_contaminated, params=params)

Optimization.save_optimization(optimal_params=optimal_params, algorithm=algorithm+"_test")

self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(yi > 0, True)
2 changes: 0 additions & 2 deletions tests/test_opti_bayesian_iim.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,5 @@ def test_optimization_bayesian_iim(self):
_, metrics_optimal = Imputation.Regression.iim_imputation(ground_truth=gap.ts, contamination=ts_contaminated, params=params_optimal)
_, metrics_default = Imputation.Regression.iim_imputation(ground_truth=gap.ts, contamination=ts_contaminated, params=params)

Optimization.save_optimization(optimal_params=optimal_params, algorithm=algorithm+"_test")

self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(yi > 0, True)
Loading

0 comments on commit 7937935

Please sign in to comment.