diff --git a/multiview_platform/tests/test_exec_classif.py b/multiview_platform/tests/test_exec_classif.py index 5187ad89a1e4c687eaea5550060d9ad54d588a47..062761391e9f5fb0616d14b8627a3a23f4b497ee 100644 --- a/multiview_platform/tests/test_exec_classif.py +++ b/multiview_platform/tests/test_exec_classif.py @@ -33,10 +33,10 @@ class Test_InitArgumentDictionaries(unittest.TestCase): cls.nb_class = 2 cls.monoview_classifier_name = "fake_monoview_classifier" cls.monoview_classifier_arg_name = "fake_arg" - cls.monoview_classifier_arg_value = ["fake_value_1"] + cls.monoview_classifier_arg_value = "fake_value_1" cls.multiview_classifier_name = "fake_multiview_classifier" cls.multiview_classifier_arg_name = "fake_arg_mv" - cls.multiview_classifier_arg_value = ["fake_value_2"] + cls.multiview_classifier_arg_value = "fake_value_2" cls.init_kwargs = { 'monoview':{ cls.monoview_classifier_name: @@ -56,14 +56,14 @@ class Test_InitArgumentDictionaries(unittest.TestCase): "None", {}) expected_output = [{ self.monoview_classifier_name: { - self.monoview_classifier_arg_name:self.monoview_classifier_arg_value[0]}, + self.monoview_classifier_arg_name:self.monoview_classifier_arg_value}, "view_name": "test_view_0", 'hps_kwargs': {}, "classifier_name": self.monoview_classifier_name, "nb_class": self.nb_class, "view_index": 0}, {self.monoview_classifier_name: { - self.monoview_classifier_arg_name: self.monoview_classifier_arg_value[0]}, + self.monoview_classifier_arg_name: self.monoview_classifier_arg_value}, "view_name": "test_view", 'hps_kwargs': {}, "classifier_name": self.monoview_classifier_name, @@ -89,7 +89,7 @@ class Test_InitArgumentDictionaries(unittest.TestCase): "labels_names":None, self.multiview_classifier_name: { self.multiview_classifier_arg_name: - self.multiview_classifier_arg_value[0]}, + self.multiview_classifier_arg_value}, },] self.assertEqual(arguments["multiview"][0], expected_output[0]) diff --git a/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py b/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py index c717411688e4f70fc0c17f995b39ff598215b59f..e51c9e7b27bfdf29834588895e73e9e229588a30 100644 --- a/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py +++ b/multiview_platform/tests/test_mono_view/test_ExecClassifMonoView.py @@ -115,7 +115,7 @@ class Test_getHPs(unittest.TestCase): cls.output_file_name = tmp_path cls.cv = StratifiedKFold(n_splits=2, random_state=cls.random_state, shuffle=True) cls.nb_cores = 1 - cls.metrics = [["accuracy_score", None]] + cls.metrics = {"accuracy_score*": {}} cls.kwargs = {"decision_tree" : {"max_depth": 1, "criterion": "gini", "splitter": "best"}} diff --git a/multiview_platform/tests/test_result_analysis/test_error_analysis.py b/multiview_platform/tests/test_result_analysis/test_error_analysis.py index 3168048ae04f61a305f7b79e0b134ef48ae5abfc..07ec87c2e4b8d96dc93db8d92e63d346ddcfcf2b 100644 --- a/multiview_platform/tests/test_result_analysis/test_error_analysis.py +++ b/multiview_platform/tests/test_result_analysis/test_error_analysis.py @@ -14,14 +14,14 @@ class Test_get_example_errors(unittest.TestCase): results = [MultiviewResult("mv", "", {"accuracy_score": [0.7, 0.75], "f1_score": [0.71, 0.76]}, np.array([0,0,0,0,1,1,1,1,1]), - 0,0,0), + 0,0,0, {}), MonoviewResult(0, "dt", "1", {"accuracy_score": [0.8, 0.85], "f1_score": [0.81, 0.86]} , np.array([0,0,1,1,0,0,1,1,0]), "", "", - "", "",0,0) + "", "",0,0, {}) ] example_errors = get_example_errors(ground_truth, results) @@ -45,7 +45,7 @@ class Test_gen_error_data(unittest.TestCase): self.assertEqual(nb_examples, 7) self.assertEqual(classifiers_names, ["ada-1", "mv"]) np.testing.assert_array_equal(data_2d, np.array([ada_data, mv_data]).transpose()) - np.testing.assert_array_equal(error_on_examples, -1*(ada_data+mv_data)/nb_classifiers) + np.testing.assert_array_equal(error_on_examples, (ada_data+mv_data)/nb_classifiers) @@ -72,5 +72,5 @@ class Test_gen_error_data_glob(unittest.TestCase): self.assertEqual(nb_examples, 7) self.assertEqual(nb_classifiers, 2) np.testing.assert_array_equal(data, np.array([ada_sum, mv_sum]).transpose()) - np.testing.assert_array_equal(error_on_examples, -1*np.sum(np.array([ada_sum, mv_sum]), axis=0)+(nb_classifiers*stats_iter)) + np.testing.assert_array_equal(error_on_examples, np.sum(np.array([ada_sum, mv_sum]), axis=0)/(nb_classifiers*stats_iter)) self.assertEqual(classifier_names, ["ada-1", "mv"]) \ No newline at end of file diff --git a/multiview_platform/tests/test_result_analysis/test_execution.py b/multiview_platform/tests/test_result_analysis/test_execution.py index 3d11cb564d352747589066a8d23a5d0ba51bd00e..cafd6c90e2c73402d1ad68c4121580ff1d8dd86e 100644 --- a/multiview_platform/tests/test_result_analysis/test_execution.py +++ b/multiview_platform/tests/test_result_analysis/test_execution.py @@ -10,7 +10,7 @@ from multiview_platform.mono_multi_view_classifiers.result_analysis.execution im class Test_format_previous_results(unittest.TestCase): def test_simple(self): - iter_results = {"metrics_scores":[], "example_errors":[], "feature_importances":[], "labels":[], "durations":[]} + iter_results = {"metrics_scores":[], "example_errors":[], "feature_importances":[], "labels":[], "durations":[], "class_metrics_scores":[]} random_state = np.random.RandomState(42) # Gen metrics data @@ -46,7 +46,7 @@ class Test_format_previous_results(unittest.TestCase): data=np.ones((2, 2)))) # Running the function - metric_analysis, error_analysis, \ + metric_analysis, class_met, error_analysis, \ feature_importances, feature_stds, \ labels, durations_mean, duration_std = format_previous_results(iter_results) mean_df = pd.DataFrame(data=np.mean(np.array([metrics_1_data, diff --git a/multiview_platform/tests/test_result_analysis/test_metric_analysis.py b/multiview_platform/tests/test_result_analysis/test_metric_analysis.py index 17f8cee856262b19222ab06965090b51b6e453df..800b916e87cafe07b2fe66717f3778a9cfe6a4f3 100644 --- a/multiview_platform/tests/test_result_analysis/test_metric_analysis.py +++ b/multiview_platform/tests/test_result_analysis/test_metric_analysis.py @@ -12,20 +12,20 @@ class Test_get_metrics_scores(unittest.TestCase): def test_simple(self): - metrics = [["accuracy_score"], ["f1_score"]] + metrics = {"accuracy_score*":{},"f1_score":{}} results = [MonoviewResult(0, "ada", "0", - {"accuracy_score":[0.9, 0.95], + {"accuracy_score*":[0.9, 0.95], "f1_score":[0.91, 0.96]} - , "", "", "", "", "",0,0)] - metrics_scores = get_metrics_scores(metrics, - results) + , "", "", "", "", "",0,0,{})] + metrics_scores, class_met = get_metrics_scores(metrics, + results, []) self.assertIsInstance(metrics_scores, dict) - self.assertIsInstance(metrics_scores["accuracy_score"], pd.DataFrame) - np.testing.assert_array_equal(np.array(metrics_scores["accuracy_score"].loc["train"]), np.array([0.9])) + self.assertIsInstance(metrics_scores["accuracy_score*"], pd.DataFrame) + np.testing.assert_array_equal(np.array(metrics_scores["accuracy_score*"].loc["train"]), np.array([0.9])) np.testing.assert_array_equal( - np.array(metrics_scores["accuracy_score"].loc["test"]), + np.array(metrics_scores["accuracy_score*"].loc["test"]), np.array([0.95])) np.testing.assert_array_equal( np.array(metrics_scores["f1_score"].loc["train"]), @@ -37,11 +37,11 @@ class Test_get_metrics_scores(unittest.TestCase): np.array(["ada-0"])) def test_multiple_monoview_classifiers(self): - metrics = [["accuracy_score"], ["f1_score"]] + metrics = {"accuracy_score*":{},"f1_score":{}} results = [MonoviewResult(view_index=0, classifier_name="ada", view_name="0", - metrics_scores={"accuracy_score": [0.9, 0.95], + metrics_scores={"accuracy_score*": [0.9, 0.95], "f1_score": [0.91, 0.96]}, full_labels_pred="", classifier_config="", @@ -49,11 +49,12 @@ class Test_get_metrics_scores(unittest.TestCase): n_features="", hps_duration=0, fit_duration=0, - pred_duration=0), + pred_duration=0, + class_metric_scores={}), MonoviewResult(view_index=0, classifier_name="dt", view_name="1", - metrics_scores={"accuracy_score": [0.8, 0.85], + metrics_scores={"accuracy_score*": [0.8, 0.85], "f1_score": [0.81, 0.86]}, full_labels_pred="", classifier_config="", @@ -61,17 +62,18 @@ class Test_get_metrics_scores(unittest.TestCase): n_features="", hps_duration=0, fit_duration=0, - pred_duration=0) + pred_duration=0, + class_metric_scores={}) ] - metrics_scores = get_metrics_scores(metrics, - results) + metrics_scores, class_met = get_metrics_scores(metrics, + results, []) self.assertIsInstance(metrics_scores, dict) - self.assertIsInstance(metrics_scores["accuracy_score"], pd.DataFrame) + self.assertIsInstance(metrics_scores["accuracy_score*"], pd.DataFrame) np.testing.assert_array_equal( - np.array(metrics_scores["accuracy_score"].loc["train"]), + np.array(metrics_scores["accuracy_score*"].loc["train"]), np.array([0.9, 0.8])) np.testing.assert_array_equal( - np.array(metrics_scores["accuracy_score"].loc["test"]), + np.array(metrics_scores["accuracy_score*"].loc["test"]), np.array([0.95, 0.85])) np.testing.assert_array_equal( np.array(metrics_scores["f1_score"].loc["train"]), @@ -84,13 +86,13 @@ class Test_get_metrics_scores(unittest.TestCase): np.array(["ada-0", "dt-1"])) def test_mutiview_result(self): - metrics = [["accuracy_score"], ["f1_score"]] - results = [MultiviewResult("mv", "", {"accuracy_score": [0.7, 0.75], - "f1_score": [0.71, 0.76]}, "",0,0,0 ), + metrics = {"accuracy_score*":{},"f1_score":{}} + results = [MultiviewResult("mv", "", {"accuracy_score*": [0.7, 0.75], + "f1_score": [0.71, 0.76]}, "",0,0,0, {}), MonoviewResult(view_index=0, classifier_name="dt", view_name="1", - metrics_scores={"accuracy_score": [0.8, 0.85], + metrics_scores={"accuracy_score*": [0.8, 0.85], "f1_score": [0.81, 0.86]}, full_labels_pred="", classifier_config="", @@ -98,17 +100,18 @@ class Test_get_metrics_scores(unittest.TestCase): n_features="", hps_duration=0, fit_duration=0, - pred_duration=0) + pred_duration=0, + class_metric_scores={}) ] - metrics_scores = get_metrics_scores(metrics, - results) + metrics_scores, class_met = get_metrics_scores(metrics, + results, []) self.assertIsInstance(metrics_scores, dict) - self.assertIsInstance(metrics_scores["accuracy_score"], pd.DataFrame) + self.assertIsInstance(metrics_scores["accuracy_score*"], pd.DataFrame) np.testing.assert_array_equal( - np.array(metrics_scores["accuracy_score"].loc["train"]), + np.array(metrics_scores["accuracy_score*"].loc["train"]), np.array([0.7, 0.8])) np.testing.assert_array_equal( - np.array(metrics_scores["accuracy_score"].loc["test"]), + np.array(metrics_scores["accuracy_score*"].loc["test"]), np.array([0.75, 0.85])) np.testing.assert_array_equal( np.array(metrics_scores["f1_score"].loc["train"]), @@ -132,17 +135,19 @@ class Test_init_plot(unittest.TestCase): directory = "dir" database_name = 'db' labels_names = ['lb1', "lb2"] + class_met = metric_dataframe = pd.DataFrame(index=["train", "test"], + columns=["dt-1", "mv"], data=data) train, test, classifier_names, \ - file_name, nb_results, results = init_plot(results, + file_name, nb_results, results, class_test = init_plot(results, metric_name, metric_dataframe, directory, database_name, - labels_names) - self.assertEqual(file_name, os.path.join("dir", "db-lb1_vs_lb2-acc")) + class_met) + self.assertEqual(file_name, os.path.join("dir", "db-acc")) np.testing.assert_array_equal(train, data[0,:]) np.testing.assert_array_equal(test, data[1, :]) np.testing.assert_array_equal(classifier_names, np.array(["dt-1", "mv"])) self.assertEqual(nb_results, 2) - self.assertEqual(results, [["dt-1", "acc", data[1,0], 0], - ["mv", "acc", data[1,1], 0]]) \ No newline at end of file + self.assertEqual(results, [["dt-1", "acc", data[1,0], 0.0, data[1,0]], + ["mv", "acc", data[1,1], 0.0, data[1,1]]]) \ No newline at end of file diff --git a/multiview_platform/tests/test_utils/test_base.py b/multiview_platform/tests/test_utils/test_base.py index 3147da48fd545eb270afe1689f544854ac086a7b..90532ce06444b5567b3207ed26453742523d6705 100644 --- a/multiview_platform/tests/test_utils/test_base.py +++ b/multiview_platform/tests/test_utils/test_base.py @@ -32,14 +32,12 @@ class Test_ResultAnalyzer(unittest.TestCase): cls.n_splits = 5 cls.k_folds = StratifiedKFold(n_splits=cls.n_splits, ) cls.hps_method = "randomized_search" - cls.metrics_list = [("accuracy_score", {}), ("f1_score", {})] + cls.metrics_list = {"accuracy_score": {}, "f1_score":{}} cls.n_iter = 6 cls.class_label_names = ["class{}".format(ind+1) for ind in range(cls.n_classes)] - cls.train_pred = np.random.randint(0, cls.n_classes, - size=cls.train_length) - cls.test_pred = np.random.randint(0, cls.n_classes, - size=cls.test_length) + cls.pred = np.random.randint(0, cls.n_classes, + size=cls.n_examples) cls.directory = "fake_directory" cls.base_file_name = "fake_file" cls.labels = np.random.randint(0, cls.n_classes, @@ -48,19 +46,19 @@ class Test_ResultAnalyzer(unittest.TestCase): cls.nb_cores = 0.5 cls.duration = -4 cls.train_accuracy = accuracy_score(cls.labels[cls.train_indices], - cls.train_pred) + cls.pred[cls.train_indices]) cls.test_accuracy = accuracy_score(cls.labels[cls.test_indices], - cls.test_pred) + cls.pred[cls.test_indices]) cls.train_f1 = f1_score(cls.labels[cls.train_indices], - cls.train_pred, average='micro') + cls.pred[cls.train_indices], average='micro') cls.test_f1 = f1_score(cls.labels[cls.test_indices], - cls.test_pred, average='micro') + cls.pred[cls.test_indices], average='micro') def test_simple(self): RA = base.ResultAnalyser(self.classifier, self.classification_indices, self.k_folds, self.hps_method, self.metrics_list, self.n_iter, self.class_label_names, - self.train_pred, self.test_pred, self.directory, + self.pred, self.directory, self.base_file_name, self.labels, self.database_name, self.nb_cores, self.duration) @@ -70,20 +68,20 @@ class Test_ResultAnalyzer(unittest.TestCase): self.k_folds, self.hps_method, self.metrics_list, self.n_iter, self.class_label_names, - self.train_pred, self.test_pred, + self.pred, self.directory, self.base_file_name, self.labels, self.database_name, self.nb_cores, self.duration) - train_score, test_score = RA.get_metric_score("accuracy_score", {}) - self.assertEqual(train_score, self.train_accuracy) - self.assertEqual(test_score, self.test_accuracy) + cl_train, cl_test,train_score, test_score = RA.get_metric_score("accuracy_score", {}) + np.testing.assert_array_equal(train_score, self.train_accuracy) + np.testing.assert_array_equal(test_score, self.test_accuracy) def test_get_all_metrics_scores(self): RA = base.ResultAnalyser(self.classifier, self.classification_indices, self.k_folds, self.hps_method, self.metrics_list, self.n_iter, self.class_label_names, - self.train_pred, self.test_pred, + self.pred, self.directory, self.base_file_name, self.labels, self.database_name, self.nb_cores, self.duration)