nkululeko 0.93.13__tar.gz → 0.93.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. {nkululeko-0.93.13 → nkululeko-0.93.15}/CHANGELOG.md +8 -0
  2. {nkululeko-0.93.13/nkululeko.egg-info → nkululeko-0.93.15}/PKG-INFO +1 -1
  3. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/constants.py +1 -1
  4. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/data/dataset_csv.py +5 -4
  5. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/modelrunner.py +4 -4
  6. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/plots.py +12 -3
  7. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/utils/stats.py +11 -9
  8. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/utils/util.py +15 -0
  9. {nkululeko-0.93.13 → nkululeko-0.93.15/nkululeko.egg-info}/PKG-INFO +1 -1
  10. {nkululeko-0.93.13 → nkululeko-0.93.15}/LICENSE +0 -0
  11. {nkululeko-0.93.13 → nkululeko-0.93.15}/README.md +0 -0
  12. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/aesdd/process_database.py +0 -0
  13. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/ased/process_database.py +0 -0
  14. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/asvp-esd/process_database.py +0 -0
  15. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/baved/process_database.py +0 -0
  16. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/cafe/process_database.py +0 -0
  17. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/clac/process_database.py +0 -0
  18. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/cmu-mosei/process_database.py +0 -0
  19. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/demos/process_database.py +0 -0
  20. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/ekorpus/process_database.py +0 -0
  21. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emns/process_database.py +0 -0
  22. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emofilm/convert_to_16k.py +0 -0
  23. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emofilm/process_database.py +0 -0
  24. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emorynlp/process_database.py +0 -0
  25. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emov-db/process_database.py +0 -0
  26. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emovo/process_database.py +0 -0
  27. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/emozionalmente/create.py +0 -0
  28. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/enterface/process_database.py +0 -0
  29. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/esd/process_database.py +0 -0
  30. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/gerparas/process_database.py +0 -0
  31. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/iemocap/process_database.py +0 -0
  32. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/jl/process_database.py +0 -0
  33. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/jtes/process_database.py +0 -0
  34. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/meld/process_database.py +0 -0
  35. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/mesd/process_database.py +0 -0
  36. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/mess/process_database.py +0 -0
  37. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/mlendsnd/process_database.py +0 -0
  38. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/msp-improv/process_database2.py +0 -0
  39. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/msp-podcast/process_database.py +0 -0
  40. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/oreau2/process_database.py +0 -0
  41. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/portuguese/process_database.py +0 -0
  42. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/ravdess/process_database.py +0 -0
  43. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/ravdess/process_database_speaker.py +0 -0
  44. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/savee/process_database.py +0 -0
  45. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/shemo/process_database.py +0 -0
  46. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/subesco/process_database.py +0 -0
  47. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/tess/process_database.py +0 -0
  48. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/thorsten-emotional/process_database.py +0 -0
  49. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/urdu/process_database.py +0 -0
  50. {nkululeko-0.93.13 → nkululeko-0.93.15}/data/vivae/process_database.py +0 -0
  51. {nkululeko-0.93.13 → nkululeko-0.93.15}/docs/source/conf.py +0 -0
  52. {nkululeko-0.93.13 → nkululeko-0.93.15}/meta/demos/demo_best_model.py +0 -0
  53. {nkululeko-0.93.13 → nkululeko-0.93.15}/meta/demos/my_experiment.py +0 -0
  54. {nkululeko-0.93.13 → nkululeko-0.93.15}/meta/demos/my_experiment_local.py +0 -0
  55. {nkululeko-0.93.13 → nkululeko-0.93.15}/meta/demos/plot_faster_anim.py +0 -0
  56. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/__init__.py +0 -0
  57. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/aug_train.py +0 -0
  58. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/augment.py +0 -0
  59. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/augmenting/__init__.py +0 -0
  60. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/augmenting/augmenter.py +0 -0
  61. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/augmenting/randomsplicer.py +0 -0
  62. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/augmenting/randomsplicing.py +0 -0
  63. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/augmenting/resampler.py +0 -0
  64. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/__init__.py +0 -0
  65. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_age.py +0 -0
  66. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_arousal.py +0 -0
  67. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_dominance.py +0 -0
  68. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_gender.py +0 -0
  69. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_mos.py +0 -0
  70. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_pesq.py +0 -0
  71. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_sdr.py +0 -0
  72. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_sid.py +0 -0
  73. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_snr.py +0 -0
  74. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_stoi.py +0 -0
  75. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/ap_valence.py +0 -0
  76. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/autopredict/estimate_snr.py +0 -0
  77. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/cacheddataset.py +0 -0
  78. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/data/__init__.py +0 -0
  79. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/data/dataset.py +0 -0
  80. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/demo-ft.py +0 -0
  81. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/demo.py +0 -0
  82. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/demo_feats.py +0 -0
  83. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/demo_predictor.py +0 -0
  84. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/ensemble.py +0 -0
  85. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/experiment.py +0 -0
  86. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/explore.py +0 -0
  87. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/export.py +0 -0
  88. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/__init__.py +0 -0
  89. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_agender.py +0 -0
  90. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_agender_agender.py +0 -0
  91. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_analyser.py +0 -0
  92. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_ast.py +0 -0
  93. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_auddim.py +0 -0
  94. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_audmodel.py +0 -0
  95. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_clap.py +0 -0
  96. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_hubert.py +0 -0
  97. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_import.py +0 -0
  98. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_mld.py +0 -0
  99. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_mos.py +0 -0
  100. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_opensmile.py +0 -0
  101. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_oxbow.py +0 -0
  102. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_praat.py +0 -0
  103. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_snr.py +0 -0
  104. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_spectra.py +0 -0
  105. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_spkrec.py +0 -0
  106. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_squim.py +0 -0
  107. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_trill.py +0 -0
  108. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_wav2vec2.py +0 -0
  109. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_wavlm.py +0 -0
  110. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feats_whisper.py +0 -0
  111. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/featureset.py +0 -0
  112. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/feinberg_praat.py +0 -0
  113. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feat_extract/transformer_feature_extractor.py +0 -0
  114. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/feature_extractor.py +0 -0
  115. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/file_checker.py +0 -0
  116. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/filter_data.py +0 -0
  117. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/fixedsegment.py +0 -0
  118. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/glob_conf.py +0 -0
  119. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/losses/__init__.py +0 -0
  120. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/losses/loss_ccc.py +0 -0
  121. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/losses/loss_softf1loss.py +0 -0
  122. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/__init__.py +0 -0
  123. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model.py +0 -0
  124. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_bayes.py +0 -0
  125. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_cnn.py +0 -0
  126. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_gmm.py +0 -0
  127. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_knn.py +0 -0
  128. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_knn_reg.py +0 -0
  129. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_lin_reg.py +0 -0
  130. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_mlp.py +1 -1
  131. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_mlp_regression.py +0 -0
  132. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_svm.py +0 -0
  133. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_svr.py +0 -0
  134. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_tree.py +0 -0
  135. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_tree_reg.py +0 -0
  136. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_tuned.py +0 -0
  137. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_xgb.py +0 -0
  138. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/models/model_xgr.py +0 -0
  139. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/multidb.py +0 -0
  140. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/nkuluflag.py +0 -0
  141. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/nkululeko.py +0 -0
  142. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/predict.py +0 -0
  143. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/__init__.py +0 -0
  144. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/defines.py +0 -0
  145. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/latex_writer.py +0 -0
  146. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/report.py +0 -0
  147. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/report_item.py +0 -0
  148. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/reporter.py +0 -0
  149. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/reporting/result.py +0 -0
  150. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/resample.py +0 -0
  151. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/runmanager.py +0 -0
  152. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/scaler.py +0 -0
  153. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/segment.py +0 -0
  154. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/segmenting/__init__.py +0 -0
  155. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/segmenting/seg_inaspeechsegmenter.py +0 -0
  156. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/segmenting/seg_pyannote.py +0 -0
  157. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/segmenting/seg_silero.py +0 -0
  158. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/syllable_nuclei.py +0 -0
  159. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/test.py +0 -0
  160. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/test_predictor.py +0 -0
  161. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/test_pretrain.py +0 -0
  162. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/utils/__init__.py +0 -0
  163. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko/utils/files.py +0 -0
  164. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko.egg-info/SOURCES.txt +0 -0
  165. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko.egg-info/dependency_links.txt +0 -0
  166. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko.egg-info/entry_points.txt +0 -0
  167. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko.egg-info/requires.txt +0 -0
  168. {nkululeko-0.93.13 → nkululeko-0.93.15}/nkululeko.egg-info/top_level.txt +0 -0
  169. {nkululeko-0.93.13 → nkululeko-0.93.15}/pyproject.toml +0 -0
  170. {nkululeko-0.93.13 → nkululeko-0.93.15}/setup.cfg +0 -0
  171. {nkululeko-0.93.13 → nkululeko-0.93.15}/setup.py +0 -0
@@ -1,6 +1,14 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ Version 0.93.15 (24-01-30)
5
+ --------------------------
6
+ * fixed bug that last confusion matrix was not plotted
7
+
8
+ Version 0.93.14 (24-01-27)
9
+ --------------------------
10
+ * print cohen's d results to store
11
+
4
12
  Version 0.93.13 (24-01-27)
5
13
  --------------------------
6
14
  * plot: replaced "class_label" by target name for continuous distributions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nkululeko
3
- Version: 0.93.13
3
+ Version: 0.93.15
4
4
  Summary: Machine learning audio prediction experiments based on templates
5
5
  Home-page: https://github.com/felixbur/nkululeko
6
6
  Author: Felix Burkhardt
@@ -1,2 +1,2 @@
1
- VERSION="0.93.13"
1
+ VERSION="0.93.15"
2
2
  SAMPLING_RATE = 16000
@@ -3,19 +3,20 @@ import ast
3
3
  import os
4
4
  import os.path
5
5
 
6
- import audformat.utils
7
6
  import pandas as pd
8
7
 
9
- import nkululeko.glob_conf as glob_conf
8
+ import audformat.utils
9
+
10
10
  from nkululeko.data.dataset import Dataset
11
+ import nkululeko.glob_conf as glob_conf
11
12
  from nkululeko.reporting.report_item import ReportItem
12
13
 
13
14
 
14
15
  class Dataset_CSV(Dataset):
15
- """Class to represent datasets stored as a csv file"""
16
+ """Class to represent datasets stored as a csv file."""
16
17
 
17
18
  def load(self):
18
- """Load the dataframe with files, speakers and task labels"""
19
+ """Load the dataframe with files, speakers and task labels."""
19
20
  self.util.debug(f"loading {self.name}")
20
21
  self.got_target, self.got_speaker, self.got_gender = False, False, False
21
22
  data_file = self.util.config_val_data(self.name, "", "")
@@ -68,7 +68,7 @@ class Modelrunner:
68
68
  report.plot_confmatrix(plot_name, epoch)
69
69
  else:
70
70
  # for all epochs
71
- for epoch in range(epoch_num):
71
+ for epoch_index, epoch in enumerate(range(epoch_num)):
72
72
  if only_test:
73
73
  self.model.load(self.run, epoch)
74
74
  self.util.debug(f"reusing model: {self.model.store_path}")
@@ -119,13 +119,13 @@ class Modelrunner:
119
119
  )
120
120
  break
121
121
  # After training, report the best performance and epoch
122
- best_report = reports[self.best_epoch]
122
+ last_report = reports[-1]
123
123
  # self.util.debug(f"Best score at epoch: {self.best_epoch}, UAR: {self.best_performance}") # move to reporter below
124
124
 
125
125
  if not plot_epochs:
126
126
  # Do at least one confusion matrix plot
127
- self.util.debug(f"plotting confusion matrix to {plot_name}")
128
- best_report.plot_confmatrix(plot_name, self.best_epoch)
127
+ self.util.debug(f"plotting last confusion matrix to {plot_name}")
128
+ last_report.plot_confmatrix(plot_name, epoch_index)
129
129
  return reports, epoch
130
130
 
131
131
  def _select_model(self, model_type):
@@ -24,8 +24,10 @@ class Plots:
24
24
  self.format = self.util.config_val("PLOT", "format", "png")
25
25
  self.target = self.util.config_val("DATA", "target", "emotion")
26
26
  self.with_ccc = eval(self.util.config_val("PLOT", "ccc", "False"))
27
+ self.type_s = "samples"
27
28
 
28
29
  def plot_distributions_speaker(self, df):
30
+ self.type_s = "speaker"
29
31
  df_speakers = pd.DataFrame()
30
32
  pd.options.mode.chained_assignment = None # default='warn'
31
33
  for s in df.speaker.unique():
@@ -301,11 +303,18 @@ class Plots:
301
303
  plot_df = plot_df.rename(columns={cont_col: self.target})
302
304
  cont_col = self.target
303
305
  dist_type = self.util.config_val("EXPL", "dist_type", "kde")
304
- cats, cat_str, es = su.get_effect_size(plot_df, cat_col, cont_col)
306
+ max_cat, cat_str, effect_results = su.get_effect_size(
307
+ plot_df, cat_col, cont_col
308
+ )
309
+ self.util.debug(effect_results)
310
+ self.util.print_results_to_store(
311
+ f"cohens-d_{self.type_s}", str(effect_results) + "\n"
312
+ )
313
+ es = effect_results[max_cat]
305
314
  model_type = self.util.get_model_type()
306
315
  if dist_type == "hist" and model_type != "tree":
307
316
  ax = sns.histplot(plot_df, x=cont_col, hue=cat_col, kde=True)
308
- caption = f"{ylab} {plot_df.shape[0]}. {cat_str} ({cats}):" f" {es}"
317
+ caption = f"{ylab} {plot_df.shape[0]}. {cat_str} ({max_cat}):" f" {es}"
309
318
  ax.set_title(caption)
310
319
  ax.set_xlabel(f"{cont_col}")
311
320
  ax.set_ylabel(f"number of {ylab}")
@@ -319,7 +328,7 @@ class Plots:
319
328
  warn_singular=False,
320
329
  )
321
330
  ax.set(xlabel=f"{cont_col}")
322
- caption = f"{ylab} {plot_df.shape[0]}. {cat_str} ({cats}):" f" {es}"
331
+ caption = f"{ylab} {plot_df.shape[0]}. {cat_str} ({max_cat}):" f" {es}"
323
332
  ax.figure.suptitle(caption)
324
333
  return ax, caption
325
334
 
@@ -1,7 +1,8 @@
1
- import math
2
1
  from itertools import combinations
2
+ import math
3
3
 
4
4
  import numpy as np
5
+ import pandas as pd
5
6
 
6
7
 
7
8
  def check_na(a):
@@ -14,9 +15,8 @@ def check_na(a):
14
15
  return a
15
16
 
16
17
 
17
- def cohen_d(d1, d2):
18
- """
19
- Compute Cohen's d from two distributions of real valued arrays.
18
+ def cohen_d(d1: np.array, d2: np.array) -> float:
19
+ """Compute Cohen's d from two distributions of real valued arrays.
20
20
 
21
21
  Args:
22
22
  d1: one array
@@ -50,7 +50,9 @@ def all_combinations(items_list):
50
50
  return result
51
51
 
52
52
 
53
- def get_effect_size(df, target, variable):
53
+ def get_effect_size(
54
+ df: pd.DataFrame, target: str, variable: str
55
+ ) -> tuple[str, str, dict]:
54
56
  """Get the effect size as Cohen's D.
55
57
 
56
58
  Effect size is computed from a real numbered variable on a categorical target.
@@ -68,10 +70,10 @@ def get_effect_size(df, target, variable):
68
70
  for c in categories:
69
71
  cats[c] = df[df[target] == c][variable].values
70
72
  combos = all_combinations(categories)
71
- results = {}
73
+ results = {categories[0]: 0}
72
74
  if len(categories) == 1:
73
75
  cat_s = cohens_D_to_string(0)
74
- return categories[0], cat_s, 0
76
+ return categories[0], cat_s, results
75
77
  else:
76
78
  for combo in combos:
77
79
  one = combo[0]
@@ -79,10 +81,10 @@ def get_effect_size(df, target, variable):
79
81
  results[f"{one}-{other}"] = cohen_d(cats[one], cats[other])
80
82
  max_cat = max(results, key=results.get)
81
83
  cat_s = cohens_D_to_string(float(results[max_cat]))
82
- return max_cat, cat_s, results[max_cat]
84
+ return max_cat, cat_s, results
83
85
 
84
86
 
85
- def cohens_D_to_string(val):
87
+ def cohens_D_to_string(val: float) -> str:
86
88
  if val < 0.2:
87
89
  rval = "no effect"
88
90
  elif val < 0.2:
@@ -160,6 +160,21 @@ class Util:
160
160
  pred_name = self.get_model_description()
161
161
  return f"{results_dir}/pred_{target}_{pred_name}.csv"
162
162
 
163
+ def print_results_to_store(self, name: str, contents: str) -> str:
164
+ """Write contents to a result file.
165
+
166
+ Args:
167
+ name (str): the (sub) name of the file_
168
+
169
+ Returns:
170
+ str: The path to the file
171
+ """
172
+ results_dir = self.get_path("res_dir")
173
+ pred_name = self.get_model_description()
174
+ path = os.path.join(results_dir, f"{name}_{pred_name}.txt")
175
+ with open(path, "a") as f:
176
+ f.write(contents)
177
+
163
178
  def is_categorical(self, pd_series):
164
179
  """Check if a dataframe column is categorical."""
165
180
  return pd_series.dtype.name == "object" or isinstance(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nkululeko
3
- Version: 0.93.13
3
+ Version: 0.93.15
4
4
  Summary: Machine learning audio prediction experiments based on templates
5
5
  Home-page: https://github.com/felixbur/nkululeko
6
6
  Author: Felix Burkhardt
File without changes
File without changes
@@ -4,8 +4,8 @@ from collections import OrderedDict
4
4
 
5
5
  import numpy as np
6
6
  import pandas as pd
7
- import torch
8
7
  from sklearn.metrics import recall_score
8
+ import torch
9
9
 
10
10
  import nkululeko.glob_conf as glob_conf
11
11
  from nkululeko.losses.loss_softf1loss import SoftF1Loss
File without changes
File without changes
File without changes