From 24b21f9dceea4e537a4d4b5154e994b89b06cee6 Mon Sep 17 00:00:00 2001 From: FBurkhardt Date: Mon, 18 Mar 2024 17:11:41 +0100 Subject: [PATCH] 0.81.0 --- CHANGELOG.md | 4 ++++ nkululeko/constants.py | 2 +- nkululeko/data/dataset.py | 8 ++++---- nkululeko/experiment.py | 5 +++-- nkululeko/test.py | 2 +- nkululeko/test_predictor.py | 16 +++++++++++----- test_runs.sh | 13 +++++++++++-- tests/data_roots.ini | 2 +- tests/exp_emodb_os_xgb_test.ini | 17 +++++++++++++++++ 9 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 tests/exp_emodb_os_xgb_test.ini diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ba22e57..ff7a8686 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ Changelog ========= +Version 0.81.0 +-------------- +* added test selection to test module + Version 0.80.4 -------------- * added test-file folder to demo file lists diff --git a/nkululeko/constants.py b/nkululeko/constants.py index 262a8f20..b4c223c2 100644 --- a/nkululeko/constants.py +++ b/nkululeko/constants.py @@ -1,2 +1,2 @@ -VERSION="0.80.4" +VERSION="0.81.0" SAMPLING_RATE = 16000 diff --git a/nkululeko/data/dataset.py b/nkululeko/data/dataset.py index a45fef8f..e8257378 100644 --- a/nkululeko/data/dataset.py +++ b/nkululeko/data/dataset.py @@ -541,10 +541,10 @@ def prepare_labels(self): only_tests = eval(self.util.config_val("DATA", "tests", "False")) module = glob_conf.module if only_tests and module == "test": - self.df = self.map_labels(self.df) + self.df_test = self.map_labels(self.df_test) # Bin target values if they are continuous but a classification experiment should be done - self.map_continuous_classification(self.df) - self.df = self._add_labels(self.df) + self.map_continuous_classification(self.df_test) + self.df_test = self._add_labels(self.df_test) if self.util.config_val_data(self.name, "value_counts", False): if not self.got_gender or not self.got_speaker: self.util.error( @@ -552,7 +552,7 @@ def prepare_labels(self): ) else: self.plot.describe_df( - self.name, self.df, self.target, f"{self.name}_distplot" + self.name, self.df_test, self.target, f"{self.name}_distplot" ) return self.df_train = self.map_labels(self.df_train) diff --git a/nkululeko/experiment.py b/nkululeko/experiment.py index 939d17da..d853f330 100644 --- a/nkululeko/experiment.py +++ b/nkululeko/experiment.py @@ -153,16 +153,17 @@ def fill_tests(self): self.got_age = True if data.got_speaker: self.got_speaker = True + data.split() data.prepare_labels() self.df_test = pd.concat( - [self.df_test, self.util.make_segmented_index(data.df)] + [self.df_test, self.util.make_segmented_index(data.df_test)] ) self.df_test.is_labeled = data.is_labeled self.df_test.got_gender = self.got_gender self.df_test.got_speaker = self.got_speaker # self.util.set_config_val('FEATS', 'needs_features_extraction', 'True') # self.util.set_config_val('FEATS', 'no_reuse', 'True') - self.df_test["class_labels"] = self.df_test[self.target] + self.df_test["class_label"] = self.df_test[self.target] self.df_test[self.target] = self.label_encoder.transform( self.df_test[self.target] ) diff --git a/nkululeko/test.py b/nkululeko/test.py index a1b8084a..c20d0704 100644 --- a/nkululeko/test.py +++ b/nkululeko/test.py @@ -35,7 +35,7 @@ def main(src_dir): expr = Experiment(config) module = "test" expr.set_module(module) - util = Util(module) + util = Util(module, has_config=True) util.debug( f"running {expr.name} from config {config_file}, nkululeko version" f" {VERSION}" diff --git a/nkululeko/test_predictor.py b/nkululeko/test_predictor.py index bd5af9d2..2c9d8fea 100644 --- a/nkululeko/test_predictor.py +++ b/nkululeko/test_predictor.py @@ -2,6 +2,7 @@ Predict targets from a model and save as csv file. """ + import nkululeko.glob_conf as glob_conf from nkululeko.utils.util import Util import pandas as pd @@ -50,9 +51,14 @@ def predict_and_store(self): else: predictions = self.model.get_predictions() # print(predictions) - df = pd.DataFrame(index=self.orig_df.index) - df["speaker"] = self.orig_df["speaker"] - df["gender"] = self.orig_df["gender"] - df[self.target] = self.label_encoder.inverse_transform(predictions) - # df[self.target] = predictions + # df = pd.DataFrame(index=self.orig_df.index) + # df["speaker"] = self.orig_df["speaker"] + # df["gender"] = self.orig_df["gender"] + # df[self.target] = self.orig_df[self.target] + df = self.orig_df.copy() + df["predictions"] = self.label_encoder.inverse_transform(predictions) + target = self.util.config_val("DATA", "target", "emotion") + if "class_label" in df.columns: + df = df.drop(columns=[target]) + df = df.rename(columns={"class_label": target}) df.to_csv(self.name) diff --git a/test_runs.sh b/test_runs.sh index dbe7d796..4a2a60e0 100644 --- a/test_runs.sh +++ b/test_runs.sh @@ -1,29 +1,38 @@ +# test explore module python -m nkululeko.explore --config tests/exp_emodb_explore_data.ini python -m nkululeko.explore --config tests/exp_emodb_explore_featimportance.ini python -m nkululeko.explore --config tests/exp_emodb_explore_scatter.ini python -m nkululeko.explore --config tests/exp_emodb_explore_features.ini python -m nkululeko.explore --config tests/exp_androids_explore.ini +python -m nkululeko.explore --config tests/exp_agedb_explore_data.ini +# test basic nkululeko python -m nkululeko.nkululeko --config tests/exp_emodb_os_praat_xgb.ini python -m nkululeko.nkululeko --config tests/exp_emodb_featimport_xgb.ini python -m nkululeko.nkululeko --config tests/exp_emodb_cnn.ini python -m nkululeko.nkululeko --config tests/exp_emodb_balancing.ini python -m nkululeko.nkululeko --config tests/exp_emodb_audmodel_xgb.ini python -m nkululeko.nkululeko --config tests/exp_emodb_split.ini -#python -m nkululeko.nkululeko --config tests/exp_emodb_clap_mlp.ini python -m nkululeko.nkululeko --config tests/exp_emodb_os_mlp.ini python -m nkululeko.nkululeko --config tests/exp_ravdess_os_xgb.ini python -m nkululeko.nkululeko --config tests/exp_agedb_os_xgr.ini python -m nkululeko.nkululeko --config tests/exp_agedb_os_mlp.ini python -m nkululeko.nkululeko --config tests/exp_agedb_class_os_xgb.ini -python -m nkululeko.explore --config tests/exp_agedb_explore_data.ini +# test augmentation python -m nkululeko.augment --config tests/exp_emodb_augment_os_xgb.ini python -m nkululeko.nkululeko --config tests/exp_emodb-aug_os_xgb.ini python -m nkululeko.augment --config tests/exp_emodb_random_splice_os_xgb.ini python -m nkululeko.nkululeko --config tests/exp_emodb_rs_os_xgb.ini python -m nkululeko.aug_train --config tests/emodb_aug_train.ini python -m nkululeko.nkululeko --config tests/exp_androids_os_svm.ini +# test prediction python -m nkululeko.predict --config tests/exp_emodb_predict.ini python -m nkululeko.nkululeko --config tests/emodb_demo.ini +# test demo python -m nkululeko.demo --config tests/emodb_demo.ini --list data/test/samples.csv +# test test module +python -m nkululeko.nkululeko --config exp_emodb_os_xgb_test.ini +python -m nkululeko.test --config exp_emodb_os_xgb_test.ini +# test multidb python -m nkululeko.multidb --config tests/exp_multidb.ini +# test spotlight python -m nkululeko.explore --config tests/exp_explore.ini diff --git a/tests/data_roots.ini b/tests/data_roots.ini index d45302bb..82bc8435 100644 --- a/tests/data_roots.ini +++ b/tests/data_roots.ini @@ -6,5 +6,5 @@ emodb.train_tables = ['emotion.categories.train.gold_standard'] emodb.mapping = {'anger':'angry', 'happiness':'happy', 'sadness':'sad', 'neutral':'neutral'} polish = ./data/polish_emo polish.mapping = {'anger':'angry', 'joy':'happy', 'sadness':'sad', 'neutral':'neutral'} -polish.split_strategy = speaker_split +polish.split_strategy = test polish.test_size = 30 diff --git a/tests/exp_emodb_os_xgb_test.ini b/tests/exp_emodb_os_xgb_test.ini new file mode 100644 index 00000000..7ff0576d --- /dev/null +++ b/tests/exp_emodb_os_xgb_test.ini @@ -0,0 +1,17 @@ +[EXP] +root = ./tests/results/ +name = exp_testmodule +save = True +[DATA] +databases = ['emodb'] +root_folders = tests/data_roots.ini +target = emotion +tests = ['polish'] +polish.split_strategy = speaker_split +labels = ['angry', 'happy', 'neutral', 'sad'] +no_reuse = True +[FEATS] +type = ['os'] +[MODEL] +type = xgb +save = True