nkululeko 0.77.14__tar.gz → 0.78.0__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 (165) hide show
  1. {nkululeko-0.77.14 → nkululeko-0.78.0}/CHANGELOG.md +5 -0
  2. {nkululeko-0.77.14/nkululeko.egg-info → nkululeko-0.78.0}/PKG-INFO +6 -1
  3. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/constants.py +1 -1
  4. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/plots.py +97 -58
  5. {nkululeko-0.77.14 → nkululeko-0.78.0/nkululeko.egg-info}/PKG-INFO +6 -1
  6. {nkululeko-0.77.14 → nkululeko-0.78.0}/LICENSE +0 -0
  7. {nkululeko-0.77.14 → nkululeko-0.78.0}/README.md +0 -0
  8. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/aesdd/process_database.py +0 -0
  9. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/androids/process_database.py +0 -0
  10. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/androids_orig/process_database.py +0 -0
  11. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/androids_test/process_database.py +0 -0
  12. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/ased/process_database.py +0 -0
  13. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/asvp-esd/process_database.py +0 -0
  14. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/baved/process_database.py +0 -0
  15. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/cafe/process_database.py +0 -0
  16. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/clac/process_database.py +0 -0
  17. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/cmu-mosei/process_database.py +0 -0
  18. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/crema-d/process_database.py +0 -0
  19. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/demos/process_database.py +0 -0
  20. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/ekorpus/process_database.py +0 -0
  21. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emns/process_database.py +0 -0
  22. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emofilm/convert_to_16k.py +0 -0
  23. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emofilm/process_database.py +0 -0
  24. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emorynlp/process_database.py +0 -0
  25. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emov-db/process_database.py +0 -0
  26. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emovo/process_database.py +0 -0
  27. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/emozionalmente/create.py +0 -0
  28. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/enterface/process_database.py +0 -0
  29. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/esd/process_database.py +0 -0
  30. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/gerparas/process_database.py +0 -0
  31. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/iemocap/process_database.py +0 -0
  32. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/jl/process_database.py +0 -0
  33. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/jtes/process_database.py +0 -0
  34. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/meld/process_database.py +0 -0
  35. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/mesd/process_database.py +0 -0
  36. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/mess/process_database.py +0 -0
  37. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/mlendsnd/process_database.py +0 -0
  38. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/msp-improv/process_database2.py +0 -0
  39. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/msp-podcast/process_database.py +0 -0
  40. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/oreau2/process_database.py +0 -0
  41. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/portuguese/process_database.py +0 -0
  42. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/ravdess/process_database.py +0 -0
  43. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/ravdess/process_database_speaker.py +0 -0
  44. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/savee/process_database.py +0 -0
  45. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/shemo/process_database.py +0 -0
  46. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/subesco/process_database.py +0 -0
  47. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/tess/process_database.py +0 -0
  48. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/thorsten-emotional/process_database.py +0 -0
  49. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/urdu/process_database.py +0 -0
  50. {nkululeko-0.77.14 → nkululeko-0.78.0}/data/vivae/process_database.py +0 -0
  51. {nkululeko-0.77.14 → nkululeko-0.78.0}/docs/source/conf.py +0 -0
  52. {nkululeko-0.77.14 → nkululeko-0.78.0}/meta/demos/demo_best_model.py +0 -0
  53. {nkululeko-0.77.14 → nkululeko-0.78.0}/meta/demos/multiple_exeriments/do_experiments.py +0 -0
  54. {nkululeko-0.77.14 → nkululeko-0.78.0}/meta/demos/multiple_exeriments/parse_nkulu.py +0 -0
  55. {nkululeko-0.77.14 → nkululeko-0.78.0}/meta/demos/my_experiment.py +0 -0
  56. {nkululeko-0.77.14 → nkululeko-0.78.0}/meta/demos/my_experiment_local.py +0 -0
  57. {nkululeko-0.77.14 → nkululeko-0.78.0}/meta/demos/plot_faster_anim.py +0 -0
  58. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/__init__.py +0 -0
  59. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/aug_train.py +0 -0
  60. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/augment.py +0 -0
  61. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/augmenting/__init__.py +0 -0
  62. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/augmenting/augmenter.py +0 -0
  63. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/augmenting/randomsplicer.py +0 -0
  64. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/augmenting/randomsplicing.py +0 -0
  65. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/augmenting/resampler.py +0 -0
  66. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/__init__.py +0 -0
  67. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_age.py +0 -0
  68. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_arousal.py +0 -0
  69. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_dominance.py +0 -0
  70. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_gender.py +0 -0
  71. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_mos.py +0 -0
  72. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_pesq.py +0 -0
  73. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_sdr.py +0 -0
  74. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_snr.py +0 -0
  75. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_stoi.py +0 -0
  76. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/ap_valence.py +0 -0
  77. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/autopredict/estimate_snr.py +0 -0
  78. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/cacheddataset.py +0 -0
  79. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/data/__init__.py +0 -0
  80. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/data/dataset.py +0 -0
  81. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/data/dataset_csv.py +0 -0
  82. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/demo.py +0 -0
  83. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/demo_predictor.py +0 -0
  84. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/experiment.py +0 -0
  85. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/explore.py +0 -0
  86. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/export.py +0 -0
  87. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/__init__.py +0 -0
  88. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_agender.py +0 -0
  89. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_agender_agender.py +0 -0
  90. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_analyser.py +0 -0
  91. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_audmodel.py +0 -0
  92. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_audmodel_dim.py +0 -0
  93. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_clap.py +0 -0
  94. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_hubert.py +0 -0
  95. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_import.py +0 -0
  96. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_mld.py +0 -0
  97. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_mos.py +0 -0
  98. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_opensmile.py +0 -0
  99. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_oxbow.py +0 -0
  100. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_praat.py +0 -0
  101. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_snr.py +0 -0
  102. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_spectra.py +0 -0
  103. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_spkrec.py +0 -0
  104. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_squim.py +0 -0
  105. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_trill.py +0 -0
  106. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_wav2vec2.py +0 -0
  107. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feats_wavlm.py +0 -0
  108. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/featureset.py +0 -0
  109. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feat_extract/feinberg_praat.py +0 -0
  110. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/feature_extractor.py +0 -0
  111. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/file_checker.py +0 -0
  112. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/filter_data.py +0 -0
  113. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/glob_conf.py +0 -0
  114. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/losses/__init__.py +0 -0
  115. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/losses/loss_ccc.py +0 -0
  116. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/losses/loss_softf1loss.py +0 -0
  117. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/modelrunner.py +0 -0
  118. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/__init__.py +0 -0
  119. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model.py +0 -0
  120. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_bayes.py +0 -0
  121. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_cnn.py +0 -0
  122. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_gmm.py +0 -0
  123. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_knn.py +0 -0
  124. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_knn_reg.py +0 -0
  125. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_lin_reg.py +0 -0
  126. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_mlp.py +0 -0
  127. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_mlp_regression.py +0 -0
  128. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_svm.py +0 -0
  129. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_svr.py +0 -0
  130. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_tree.py +0 -0
  131. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_tree_reg.py +0 -0
  132. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_xgb.py +0 -0
  133. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/models/model_xgr.py +0 -0
  134. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/multidb.py +0 -0
  135. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/nkululeko.py +0 -0
  136. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/predict.py +0 -0
  137. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/reporter.py +0 -0
  138. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/reporting/__init__.py +0 -0
  139. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/reporting/defines.py +0 -0
  140. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/reporting/latex_writer.py +0 -0
  141. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/reporting/report.py +0 -0
  142. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/reporting/report_item.py +0 -0
  143. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/resample.py +0 -0
  144. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/result.py +0 -0
  145. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/runmanager.py +0 -0
  146. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/scaler.py +0 -0
  147. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/segment.py +0 -0
  148. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/segmenting/__init__.py +0 -0
  149. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/segmenting/seg_inaspeechsegmenter.py +0 -0
  150. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/segmenting/seg_silero.py +0 -0
  151. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/syllable_nuclei.py +0 -0
  152. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/test.py +0 -0
  153. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/test_predictor.py +0 -0
  154. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/utils/__init__.py +0 -0
  155. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/utils/files.py +0 -0
  156. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/utils/stats.py +0 -0
  157. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko/utils/util.py +0 -0
  158. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko.egg-info/SOURCES.txt +0 -0
  159. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko.egg-info/dependency_links.txt +0 -0
  160. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko.egg-info/requires.txt +0 -0
  161. {nkululeko-0.77.14 → nkululeko-0.78.0}/nkululeko.egg-info/top_level.txt +0 -0
  162. {nkululeko-0.77.14 → nkululeko-0.78.0}/pyproject.toml +0 -0
  163. {nkululeko-0.77.14 → nkululeko-0.78.0}/setup.cfg +0 -0
  164. {nkululeko-0.77.14 → nkululeko-0.78.0}/setup.py +0 -0
  165. {nkululeko-0.77.14 → nkululeko-0.78.0}/venv/bin/activate_this.py +0 -0
@@ -1,6 +1,11 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ Version 0.78.0
5
+ --------------
6
+ * added 3-d scatter plots
7
+ * removed epoch-plots if epoch_num=1
8
+
4
9
  Version 0.77.14
5
10
  --------------
6
11
  * fixed bug preventing bin scaling to work
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nkululeko
3
- Version: 0.77.14
3
+ Version: 0.78.0
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
@@ -314,6 +314,11 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
314
314
  Changelog
315
315
  =========
316
316
 
317
+ Version 0.78.0
318
+ --------------
319
+ * added 3-d scatter plots
320
+ * removed epoch-plots if epoch_num=1
321
+
317
322
  Version 0.77.14
318
323
  --------------
319
324
  * fixed bug preventing bin scaling to work
@@ -1,2 +1,2 @@
1
- VERSION="0.77.14"
1
+ VERSION="0.78.0"
2
2
  SAMPLING_RATE = 16000
@@ -379,51 +379,115 @@ class Plots:
379
379
  )
380
380
 
381
381
  def scatter_plot(self, feats, label_df, label, dimred_type):
382
+ dim_num = int(self.util.config_val("EXPL", "scatter.dim", 2))
382
383
  fig_dir = self.util.get_path("fig_dir") + "../" # one up because of the runs
383
384
  sample_selection = self.util.config_val("EXPL", "sample_selection", "all")
384
- filename = (
385
- f"{label}_{self.util.get_feattype_name()}_{sample_selection}_{dimred_type}"
386
- )
385
+ filename = f"{label}_{self.util.get_feattype_name()}_{sample_selection}_{dimred_type}_{str(dim_num)}d"
387
386
  filename = f"{fig_dir}{filename}.{self.format}"
388
387
  self.util.debug(f"computing {dimred_type}, this might take a while...")
389
388
  data = None
390
389
  labels = label_df[label]
391
390
  if dimred_type == "tsne":
392
- data = self.getTsne(feats)
393
- elif dimred_type == "umap":
394
- import umap
391
+ data = self.getTsne(feats, dim_num)
392
+ else:
393
+ if dimred_type == "umap":
394
+ import umap
395
+
396
+ y = umap.UMAP(
397
+ n_neighbors=10,
398
+ random_state=0,
399
+ n_components=dim_num,
400
+ ).fit_transform(feats.values)
401
+ elif dimred_type == "pca":
402
+ from sklearn.decomposition import PCA
403
+ from sklearn.preprocessing import StandardScaler
395
404
 
396
- y_umap = umap.UMAP(
397
- n_neighbors=10,
398
- random_state=0,
399
- ).fit_transform(feats.values)
405
+ scaler = StandardScaler()
406
+ pca = PCA(n_components=dim_num)
407
+ y = pca.fit_transform(scaler.fit_transform(feats.values))
408
+ else:
409
+ self.util.error(
410
+ f"no such dimensionality reduction function: {dimred_type}"
411
+ )
412
+ if dim_num == 2:
413
+ columns = ["Dim_1", "Dim_2"]
414
+ elif dim_num == 3:
415
+ columns = ["Dim_1", "Dim_2", "Dim_3"]
416
+ else:
417
+ self.util.error(f"wrong dimension number: {dim_num}")
400
418
  data = pd.DataFrame(
401
- y_umap,
419
+ y,
402
420
  feats.index,
403
- columns=["Dim_1", "Dim_2"],
421
+ columns=columns,
404
422
  )
405
- elif dimred_type == "pca":
406
- from sklearn.decomposition import PCA
407
- from sklearn.preprocessing import StandardScaler
408
423
 
409
- scaler = StandardScaler()
410
- pca = PCA(n_components=2)
411
- y_pca = pca.fit_transform(scaler.fit_transform(feats.values))
412
- data = pd.DataFrame(
413
- y_pca,
414
- feats.index,
415
- columns=["Dim_1", "Dim_2"],
424
+ if dim_num == 2:
425
+ plot_data = np.vstack((data.T, labels)).T
426
+ plot_df = pd.DataFrame(data=plot_data, columns=("Dim_1", "Dim_2", "label"))
427
+ # plt.tight_layout()
428
+ ax = (
429
+ sns.FacetGrid(plot_df, hue="label", height=6)
430
+ .map(plt.scatter, "Dim_1", "Dim_2")
431
+ .add_legend()
432
+ )
433
+ elif dim_num == 3:
434
+ from mpl_toolkits.mplot3d import Axes3D
435
+ from sklearn.preprocessing import LabelEncoder
436
+
437
+ le = LabelEncoder()
438
+
439
+ labels_e = le.fit_transform(labels)
440
+ plot_data = np.vstack((data.T, labels_e)).T
441
+ plot_df = pd.DataFrame(
442
+ data=plot_data, columns=("Dim_1", "Dim_2", "Dim_3", "label")
416
443
  )
444
+ # plt.tight_layout()
445
+ # axes instance
446
+ fig = plt.figure(figsize=(6, 6))
447
+ ax = Axes3D(fig, auto_add_to_figure=False)
448
+ fig.add_axes(ax)
449
+ # get colormap from seaborn
450
+ # cmap = ListedColormap(sns.color_palette("hsv", 256).as_hex())
451
+ color_dict = {
452
+ 0: "red",
453
+ 1: "blue",
454
+ 2: "green",
455
+ 3: "yellow",
456
+ 4: "purple",
457
+ 5: "#ff69b4",
458
+ 6: "black",
459
+ 7: "cyan",
460
+ 8: "magenta",
461
+ 9: "#faebd7",
462
+ 10: "#2e8b57",
463
+ 11: "#eeefff",
464
+ 12: "#da70d6",
465
+ 13: "#ff7f50",
466
+ 14: "#cd853f",
467
+ 15: "#bc8f8f",
468
+ 16: "#5f9ea0",
469
+ 17: "#daa520",
470
+ }
471
+ # plot
472
+ # make the numbers bigger so they can be used as distinguishable colors
473
+ labels_ex = [color_dict[xi] for xi in labels_e]
474
+ sc = ax.scatter(
475
+ plot_df.Dim_1,
476
+ plot_df.Dim_2,
477
+ plot_df.Dim_3,
478
+ s=40,
479
+ c=labels_ex,
480
+ marker="o",
481
+ # cmap=cmap,
482
+ alpha=1,
483
+ )
484
+ ax.set_xlabel("Dim_1")
485
+ ax.set_ylabel("Dim_2")
486
+ ax.set_zlabel("Dim_3")
487
+ # legend
488
+ plt.legend(*sc.legend_elements(), bbox_to_anchor=(1.05, 1), loc=2)
417
489
  else:
418
- self.util.error(f"no such dimensionality reduction function: {dimred_type}")
419
- plot_data = np.vstack((data.T, labels)).T
420
- plot_df = pd.DataFrame(data=plot_data, columns=("Dim_1", "Dim_2", "label"))
421
- # plt.tight_layout()
422
- ax = (
423
- sns.FacetGrid(plot_df, hue="label", height=6)
424
- .map(plt.scatter, "Dim_1", "Dim_2")
425
- .add_legend()
426
- )
490
+ self.util.error(f"wrong dimension number: {dim_num}")
427
491
  fig = ax.figure
428
492
  plt.savefig(filename)
429
493
  fig.clear()
@@ -437,35 +501,10 @@ class Plots:
437
501
  )
438
502
  )
439
503
 
440
- def plotTsne(self, feats, labels, filename, perplexity=30, learning_rate=200):
441
- """Make a TSNE plot to see whether features are useful for classification"""
442
- fig_dir = self.util.get_path("fig_dir") + "../" # one up because of the runs
443
- filename = f"{fig_dir}{filename}.{self.format}"
444
- self.util.debug(f"plotting tsne to {filename}, this might take a while...")
445
- model = TSNE(
446
- n_components=2,
447
- random_state=0,
448
- perplexity=perplexity,
449
- learning_rate=learning_rate,
450
- )
451
- tsne_data = model.fit_transform(feats)
452
- tsne_data_labs = np.vstack((tsne_data.T, labels)).T
453
- tsne_df = pd.DataFrame(data=tsne_data_labs, columns=("Dim_1", "Dim_2", "label"))
454
- # plt.tight_layout()
455
- ax = (
456
- sns.FacetGrid(tsne_df, hue="label", height=6)
457
- .map(plt.scatter, "Dim_1", "Dim_2")
458
- .add_legend()
459
- )
460
- fig = ax.figure
461
- plt.savefig(filename)
462
- fig.clear()
463
- plt.close(fig)
464
-
465
- def getTsne(self, feats, perplexity=30, learning_rate=200):
504
+ def getTsne(self, feats, dim_num, perplexity=30, learning_rate=200):
466
505
  """Make a TSNE plot to see whether features are useful for classification"""
467
506
  model = TSNE(
468
- n_components=2,
507
+ n_components=dim_num,
469
508
  random_state=0,
470
509
  perplexity=perplexity,
471
510
  learning_rate=learning_rate,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nkululeko
3
- Version: 0.77.14
3
+ Version: 0.78.0
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
@@ -314,6 +314,11 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
314
314
  Changelog
315
315
  =========
316
316
 
317
+ Version 0.78.0
318
+ --------------
319
+ * added 3-d scatter plots
320
+ * removed epoch-plots if epoch_num=1
321
+
317
322
  Version 0.77.14
318
323
  --------------
319
324
  * fixed bug preventing bin scaling to work
File without changes
File without changes
File without changes
File without changes
File without changes