Skip to content

Commit

Permalink
12. adding of eeg dataset with bayesian tests
Browse files Browse the repository at this point in the history
  • Loading branch information
qnater committed Sep 27, 2024
1 parent 37680e9 commit 95164ca
Show file tree
Hide file tree
Showing 13 changed files with 42 additions and 29 deletions.
29 changes: 18 additions & 11 deletions .idea/workspace.xml

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

Binary file not shown.
4 changes: 2 additions & 2 deletions imputegap/contamination/contamination.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ def scenario_missing_percentage(ts, series_impacted=0.2, missing_rate=0.2, prote
W = int((N - P) * missing_rate) # number of data to remove

for to_remove in range(0, W):
I = P + to_remove
ts_contaminated[S, I] = np.nan
index = P + to_remove
ts_contaminated[S, index] = np.nan

return ts_contaminated
Binary file modified imputegap/imputation/__pycache__/imputation.cpython-312.pyc
Binary file not shown.
16 changes: 9 additions & 7 deletions imputegap/imputation/imputation.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

class Imputation:

@classmethod
def load_parameters(query: str = "default", algorithm: str = "cdrec"):
"""
Load default values of algorithms
Expand All @@ -22,6 +23,7 @@ def load_parameters(query: str = "default", algorithm: str = "cdrec"):
:return: tuples of optimal parameters and the config of default values
"""

filepath = ""
if query == "default":
filepath = "../env/default_values.toml"
elif query == "optimal":
Expand All @@ -32,34 +34,34 @@ def load_parameters(query: str = "default", algorithm: str = "cdrec"):
if not os.path.exists(filepath):
filepath = filepath[1:]

print(filepath)

with open(filepath, "r") as _:
config = toml.load(filepath)

params = None
if algorithm == "cdrec":
truncation_rank = int(config['cdrec']['rank'])
epsilon = config['cdrec']['epsilon']
iterations = int(config['cdrec']['iteration'])
params = (truncation_rank, epsilon, iterations)
return (truncation_rank, epsilon, iterations)
elif algorithm == "stmvl":
window_size = int(config['stmvl']['window_size'])
gamma = float(config['stmvl']['gamma'])
alpha = int(config['stmvl']['alpha'])
params = (window_size, gamma, alpha)
return (window_size, gamma, alpha)
elif algorithm == "iim":
learning_neighbors = int(config['iim']['learning_neighbors'])
algo_code = config['iim']['algorithm_code']
params = (learning_neighbors, algo_code)
return (learning_neighbors, algo_code)
elif algorithm == "mrnn":
hidden_dim = int(config['mrnn']['hidden_dim'])
learning_rate = float(config['mrnn']['learning_rate'])
iterations = int(config['mrnn']['iterations'])
sequence_length = int(config['mrnn']['sequence_length'])
params = (hidden_dim, learning_rate, iterations, sequence_length)
return (hidden_dim, learning_rate, iterations, sequence_length)
else :
print("Default/Optimal config not found for this algorithm")

return params
return None

def evaluate_params(ground_truth, contamination, configuration, algorithm="cdrec"):
"""
Expand Down
Binary file not shown.
Binary file not shown.
3 changes: 1 addition & 2 deletions tests/test_contamination_mcar.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ def test_mcar_selection_datasets(self):

# 2) Check if the correct percentage of series are contaminated
contaminated_series = np.isnan(ts_contaminate).any(axis=1).sum()
self.assertEqual(contaminated_series, expected_contaminated_series,
f"Expected {expected_contaminated_series} contaminated series but found {contaminated_series}")
self.assertEqual(contaminated_series, expected_contaminated_series, f"Expected {expected_contaminated_series} contaminated series but found {contaminated_series}")

def test_mcar_position_datasets(self):
"""
Expand Down
11 changes: 8 additions & 3 deletions tests/test_contamination_mp.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os
import unittest
import numpy as np
import math

from imputegap.contamination.contamination import Contamination
from imputegap.manager.manager import TimeSeries
Expand Down Expand Up @@ -32,7 +33,7 @@ def get_file_path(set_name="test"):

class TestContamination(unittest.TestCase):

def test_mcar_selection(self):
def test_mp_selection(self):
"""
the goal is to test if only the selected values are contaminated
"""
Expand All @@ -41,13 +42,17 @@ def test_mcar_selection(self):
series_impacted = [0.4]
missing_rates = [0.4]
seeds_start, seeds_end = 42, 43
series_check = ["1", "2", "3", "4"]
protection = 0.1

length_of_gap_ts = len(impute_gap.ts[0])
len_expected = math.ceil(missing_rates[0] * length_of_gap_ts)
series_check = [str(i) for i in range(len_expected)]

for seed_value in range(seeds_start, seeds_end):
for series_sel in series_impacted:
for missing_rate in missing_rates:


ts_contaminate = Contamination.scenario_missing_percentage(ts=impute_gap.ts,
series_impacted=series_sel,
missing_rate=missing_rate,
Expand All @@ -69,7 +74,7 @@ def test_mcar_selection(self):

self.assertTrue(check_nan_series, True)

def test_mcar_position(self):
def test_mp_position(self):
"""
the goal is to test if the starting position is always guaranteed
"""
Expand Down
2 changes: 1 addition & 1 deletion tests/test_opti_bayesian_cdrec.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,5 @@ def test_optimization_bayesian_cdrec(self):

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

self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], True, f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(yi > 0, True)
2 changes: 1 addition & 1 deletion tests/test_opti_bayesian_iim.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,5 @@ def test_optimization_bayesian_iim(self):

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

self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], True, f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(yi > 0, True)
2 changes: 1 addition & 1 deletion tests/test_opti_bayesian_mrnn.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,5 @@ def test_optimization_bayesian_mrnn(self):

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

self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], True, f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(metrics_optimal["RMSE"] < metrics_default["RMSE"], f"Expected {metrics_optimal['RMSE']} > {metrics_default['RMSE']}")
self.assertTrue(yi > 0, True)
2 changes: 1 addition & 1 deletion tests/test_opti_bayesian_stmvl.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,5 @@ def test_optimization_bayesian_stmvl(self):

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

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

0 comments on commit 95164ca

Please sign in to comment.