dragon-ml-toolbox 20.8.0__tar.gz → 20.10.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 (154) hide show
  1. {dragon_ml_toolbox-20.8.0/dragon_ml_toolbox.egg-info → dragon_ml_toolbox-20.10.0}/PKG-INFO +1 -1
  2. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0/dragon_ml_toolbox.egg-info}/PKG-INFO +1 -1
  3. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/dragon_ml_toolbox.egg-info/SOURCES.txt +1 -0
  4. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_datasetmaster/_base_datasetmaster.py +53 -3
  5. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/_classification.py +17 -14
  6. dragon_ml_toolbox-20.10.0/ml_tools/ML_evaluation/_helpers.py +41 -0
  7. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/_regression.py +5 -0
  8. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation_captum/_ML_evaluation_captum.py +12 -4
  9. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/keys/_keys.py +3 -3
  10. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/pyproject.toml +1 -1
  11. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/LICENSE +0 -0
  12. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/LICENSE-THIRD-PARTY.md +0 -0
  13. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/README.md +0 -0
  14. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/dragon_ml_toolbox.egg-info/dependency_links.txt +0 -0
  15. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/dragon_ml_toolbox.egg-info/requires.txt +0 -0
  16. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/dragon_ml_toolbox.egg-info/top_level.txt +0 -0
  17. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_cleaning/__init__.py +0 -0
  18. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_cleaning/_basic_clean.py +0 -0
  19. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_cleaning/_clean_tools.py +0 -0
  20. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_cleaning/_dragon_cleaner.py +0 -0
  21. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_engineering/__init__.py +0 -0
  22. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_engineering/_dragon_engineering.py +0 -0
  23. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ETL_engineering/_transforms.py +0 -0
  24. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/GUI_tools/_GUI_tools.py +0 -0
  25. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/GUI_tools/__init__.py +0 -0
  26. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/IO_tools/_IO_loggers.py +0 -0
  27. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/IO_tools/_IO_save_load.py +0 -0
  28. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/IO_tools/_IO_utils.py +0 -0
  29. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/IO_tools/__init__.py +0 -0
  30. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/MICE/_MICE_imputation.py +0 -0
  31. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/MICE/__init__.py +0 -0
  32. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/MICE/_dragon_mice.py +0 -0
  33. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_callbacks/__init__.py +0 -0
  34. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_callbacks/_base.py +0 -0
  35. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_callbacks/_checkpoint.py +0 -0
  36. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_callbacks/_early_stop.py +0 -0
  37. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_callbacks/_scheduler.py +0 -0
  38. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_chain/__init__.py +0 -0
  39. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_chain/_chaining_tools.py +0 -0
  40. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_chain/_dragon_chain.py +0 -0
  41. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_chain/_update_schema.py +0 -0
  42. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_configuration/__init__.py +0 -0
  43. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_configuration/_base_model_config.py +0 -0
  44. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_configuration/_finalize.py +0 -0
  45. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_configuration/_metrics.py +0 -0
  46. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_configuration/_models.py +0 -0
  47. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_configuration/_training.py +0 -0
  48. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_datasetmaster/__init__.py +0 -0
  49. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_datasetmaster/_datasetmaster.py +0 -0
  50. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_datasetmaster/_sequence_datasetmaster.py +0 -0
  51. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_datasetmaster/_vision_datasetmaster.py +0 -0
  52. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/__init__.py +0 -0
  53. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/_feature_importance.py +0 -0
  54. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/_loss.py +0 -0
  55. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/_sequence.py +0 -0
  56. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation/_vision.py +0 -0
  57. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_evaluation_captum/__init__.py +0 -0
  58. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_finalize_handler/_ML_finalize_handler.py +0 -0
  59. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_finalize_handler/__init__.py +0 -0
  60. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference/__init__.py +0 -0
  61. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference/_base_inference.py +0 -0
  62. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference/_chain_inference.py +0 -0
  63. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference/_dragon_inference.py +0 -0
  64. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference/_multi_inference.py +0 -0
  65. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference_sequence/__init__.py +0 -0
  66. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference_sequence/_sequence_inference.py +0 -0
  67. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference_vision/__init__.py +0 -0
  68. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_inference_vision/_vision_inference.py +0 -0
  69. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/__init__.py +0 -0
  70. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_base_mlp_attention.py +0 -0
  71. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_base_save_load.py +0 -0
  72. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_dragon_autoint.py +0 -0
  73. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_dragon_gate.py +0 -0
  74. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_dragon_node.py +0 -0
  75. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_dragon_tabnet.py +0 -0
  76. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_dragon_tabular.py +0 -0
  77. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_mlp_attention.py +0 -0
  78. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models/_models_advanced_helpers.py +0 -0
  79. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_sequence/__init__.py +0 -0
  80. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_sequence/_sequence_models.py +0 -0
  81. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_vision/__init__.py +0 -0
  82. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_vision/_base_wrapper.py +0 -0
  83. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_vision/_image_classification.py +0 -0
  84. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_vision/_image_segmentation.py +0 -0
  85. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_models_vision/_object_detection.py +0 -0
  86. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_optimization/__init__.py +0 -0
  87. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_optimization/_multi_dragon.py +0 -0
  88. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_optimization/_single_dragon.py +0 -0
  89. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_optimization/_single_manual.py +0 -0
  90. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_scaler/_ML_scaler.py +0 -0
  91. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_scaler/__init__.py +0 -0
  92. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_trainer/__init__.py +0 -0
  93. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_trainer/_base_trainer.py +0 -0
  94. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_trainer/_dragon_detection_trainer.py +0 -0
  95. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_trainer/_dragon_sequence_trainer.py +0 -0
  96. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_trainer/_dragon_trainer.py +0 -0
  97. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_utilities/__init__.py +0 -0
  98. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_utilities/_artifact_finder.py +0 -0
  99. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_utilities/_inspection.py +0 -0
  100. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_utilities/_train_tools.py +0 -0
  101. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_vision_transformers/__init__.py +0 -0
  102. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_vision_transformers/_core_transforms.py +0 -0
  103. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ML_vision_transformers/_offline_augmentation.py +0 -0
  104. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/PSO_optimization/_PSO.py +0 -0
  105. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/PSO_optimization/__init__.py +0 -0
  106. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/SQL/__init__.py +0 -0
  107. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/SQL/_dragon_SQL.py +0 -0
  108. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/VIF/_VIF_factor.py +0 -0
  109. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/VIF/__init__.py +0 -0
  110. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/__init__.py +0 -0
  111. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/_core/__init__.py +0 -0
  112. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/_core/_logger.py +0 -0
  113. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/_core/_schema_load_ops.py +0 -0
  114. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/_core/_script_info.py +0 -0
  115. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/constants.py +0 -0
  116. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/data_exploration/__init__.py +0 -0
  117. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/data_exploration/_analysis.py +0 -0
  118. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/data_exploration/_cleaning.py +0 -0
  119. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/data_exploration/_features.py +0 -0
  120. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/data_exploration/_plotting.py +0 -0
  121. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/data_exploration/_schema_ops.py +0 -0
  122. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ensemble_evaluation/__init__.py +0 -0
  123. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ensemble_evaluation/_ensemble_evaluation.py +0 -0
  124. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ensemble_inference/__init__.py +0 -0
  125. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ensemble_inference/_ensemble_inference.py +0 -0
  126. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ensemble_learning/__init__.py +0 -0
  127. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/ensemble_learning/_ensemble_learning.py +0 -0
  128. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/excel_handler/__init__.py +0 -0
  129. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/excel_handler/_excel_handler.py +0 -0
  130. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/keys/__init__.py +0 -0
  131. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/math_utilities/__init__.py +0 -0
  132. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/math_utilities/_math_utilities.py +0 -0
  133. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/optimization_tools/__init__.py +0 -0
  134. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/optimization_tools/_optimization_bounds.py +0 -0
  135. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/optimization_tools/_optimization_plots.py +0 -0
  136. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/path_manager/__init__.py +0 -0
  137. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/path_manager/_dragonmanager.py +0 -0
  138. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/path_manager/_path_tools.py +0 -0
  139. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/plot_fonts/__init__.py +0 -0
  140. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/plot_fonts/_plot_fonts.py +0 -0
  141. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/resampling/__init__.py +0 -0
  142. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/resampling/_base_resampler.py +0 -0
  143. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/resampling/_multi_resampling.py +0 -0
  144. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/resampling/_single_resampling.py +0 -0
  145. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/schema/__init__.py +0 -0
  146. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/schema/_feature_schema.py +0 -0
  147. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/schema/_gui_schema.py +0 -0
  148. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/serde/__init__.py +0 -0
  149. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/serde/_serde.py +0 -0
  150. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/utilities/__init__.py +0 -0
  151. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/utilities/_translate.py +0 -0
  152. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/utilities/_utility_save_load.py +0 -0
  153. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/ml_tools/utilities/_utility_tools.py +0 -0
  154. {dragon_ml_toolbox-20.8.0 → dragon_ml_toolbox-20.10.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dragon-ml-toolbox
3
- Version: 20.8.0
3
+ Version: 20.10.0
4
4
  Summary: Complete pipelines and helper tools for data science and machine learning projects.
5
5
  Author-email: Karl Luigi Loza Vidaurre <luigiloza@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dragon-ml-toolbox
3
- Version: 20.8.0
3
+ Version: 20.10.0
4
4
  Summary: Complete pipelines and helper tools for data science and machine learning projects.
5
5
  Author-email: Karl Luigi Loza Vidaurre <luigiloza@gmail.com>
6
6
  License-Expression: MIT
@@ -48,6 +48,7 @@ ml_tools/ML_datasetmaster/_vision_datasetmaster.py
48
48
  ml_tools/ML_evaluation/__init__.py
49
49
  ml_tools/ML_evaluation/_classification.py
50
50
  ml_tools/ML_evaluation/_feature_importance.py
51
+ ml_tools/ML_evaluation/_helpers.py
51
52
  ml_tools/ML_evaluation/_loss.py
52
53
  ml_tools/ML_evaluation/_regression.py
53
54
  ml_tools/ML_evaluation/_sequence.py
@@ -133,7 +133,7 @@ class _BaseDatasetMaker(ABC):
133
133
 
134
134
  # Get continuous feature indices *from the schema*
135
135
  if schema.continuous_feature_names:
136
- if verbose >= 2:
136
+ if verbose >= 3:
137
137
  _LOGGER.info("Getting continuous feature indices from schema.")
138
138
  try:
139
139
  # Convert columns to a standard list for .index()
@@ -189,7 +189,7 @@ class _BaseDatasetMaker(ABC):
189
189
  # ------------------------------------------------------------------
190
190
 
191
191
  if self.target_scaler is None:
192
- if verbose >= 2:
192
+ if verbose >= 3:
193
193
  _LOGGER.info("Fitting a new DragonScaler on training targets.")
194
194
  # Convert to float tensor for calculation
195
195
  y_train_tensor = torch.tensor(y_train_arr, dtype=torch.float32)
@@ -202,6 +202,9 @@ class _BaseDatasetMaker(ABC):
202
202
  y_val_tensor = self.target_scaler.transform(torch.tensor(y_val_arr, dtype=torch.float32))
203
203
  y_test_tensor = self.target_scaler.transform(torch.tensor(y_test_arr, dtype=torch.float32))
204
204
  return y_train_tensor.numpy(), y_val_tensor.numpy(), y_test_tensor.numpy()
205
+
206
+ if verbose >= 2:
207
+ _LOGGER.info("Target scaling transformation complete.")
205
208
 
206
209
  return y_train_arr, y_val_arr, y_test_arr
207
210
 
@@ -214,6 +217,9 @@ class _BaseDatasetMaker(ABC):
214
217
 
215
218
  @property
216
219
  def train_dataset(self) -> Dataset:
220
+ """
221
+ Returns the training dataset.
222
+ """
217
223
  if self._train_ds is None:
218
224
  _LOGGER.error("Train Dataset not yet created.")
219
225
  raise RuntimeError()
@@ -221,6 +227,9 @@ class _BaseDatasetMaker(ABC):
221
227
 
222
228
  @property
223
229
  def validation_dataset(self) -> Dataset:
230
+ """
231
+ Returns the validation dataset.
232
+ """
224
233
  if self._val_ds is None:
225
234
  _LOGGER.error("Validation Dataset not yet created.")
226
235
  raise RuntimeError()
@@ -228,6 +237,9 @@ class _BaseDatasetMaker(ABC):
228
237
 
229
238
  @property
230
239
  def test_dataset(self) -> Dataset:
240
+ """
241
+ Returns the test dataset.
242
+ """
231
243
  if self._test_ds is None:
232
244
  _LOGGER.error("Test Dataset not yet created.")
233
245
  raise RuntimeError()
@@ -235,30 +247,50 @@ class _BaseDatasetMaker(ABC):
235
247
 
236
248
  @property
237
249
  def feature_names(self) -> list[str]:
250
+ """
251
+ Returns a list with the feature names.
252
+ """
238
253
  return self._feature_names
239
254
 
240
255
  @property
241
256
  def target_names(self) -> list[str]:
257
+ """
258
+ Returns a list with the target names.
259
+ """
242
260
  return self._target_names
243
261
 
244
262
  @property
245
263
  def number_of_features(self) -> int:
264
+ """
265
+ Returns the number of features.
266
+ """
246
267
  return len(self._feature_names)
247
268
 
248
269
  @property
249
270
  def number_of_targets(self) -> int:
271
+ """
272
+ Returns the number of targets.
273
+ """
250
274
  return len(self._target_names)
251
275
 
252
276
  @property
253
277
  def id(self) -> Optional[str]:
278
+ """
279
+ Returns the dataset ID if set, otherwise None.
280
+ """
254
281
  return self._id
255
282
 
256
283
  @id.setter
257
284
  def id(self, dataset_id: str):
258
- if not isinstance(dataset_id, str): raise ValueError("ID must be a string.")
285
+ if not isinstance(dataset_id, str):
286
+ _LOGGER.error("Dataset ID must be a string.")
287
+ raise ValueError()
259
288
  self._id = dataset_id
260
289
 
261
290
  def dataframes_info(self) -> None:
291
+ """
292
+ Prints the shapes of the dataframes after the split.
293
+ """
262
294
  print("--- DataFrame Shapes After Split ---")
263
295
  print(f" X_train shape: {self._X_train_shape}, y_train shape: {self._y_train_shape}")
264
296
  print(f" X_val shape: {self._X_val_shape}, y_val shape: {self._y_val_shape}")
@@ -266,12 +298,26 @@ class _BaseDatasetMaker(ABC):
266
298
  print("------------------------------------")
267
299
 
268
300
  def save_feature_names(self, directory: Union[str, Path], verbose: bool=True) -> None:
301
+ """
302
+ Saves the feature names to a text file.
303
+
304
+ Args:
305
+ directory (str | Path): Directory to save the feature names.
306
+ verbose (bool): Whether to print log messages.
307
+ """
269
308
  save_list_strings(list_strings=self._feature_names,
270
309
  directory=directory,
271
310
  filename=DatasetKeys.FEATURE_NAMES,
272
311
  verbose=verbose)
273
312
 
274
313
  def save_target_names(self, directory: Union[str, Path], verbose: bool=True) -> None:
314
+ """
315
+ Saves the target names to a text file.
316
+
317
+ Args:
318
+ directory (str | Path): Directory to save the target names.
319
+ verbose (bool): Whether to print log messages.
320
+ """
275
321
  save_list_strings(list_strings=self._target_names,
276
322
  directory=directory,
277
323
  filename=DatasetKeys.TARGET_NAMES,
@@ -281,6 +327,10 @@ class _BaseDatasetMaker(ABC):
281
327
  """
282
328
  Saves both feature and target scalers (if they exist) to a single .pth file
283
329
  using a dictionary structure.
330
+
331
+ Args:
332
+ directory (str | Path): Directory to save the scaler.
333
+ verbose (bool): Whether to print log messages.
284
334
  """
285
335
  if self.feature_scaler is None and self.target_scaler is None:
286
336
  _LOGGER.warning("No scalers (feature or target) were fitted. Nothing to save.")
@@ -28,6 +28,8 @@ from ..path_manager import make_fullpath, sanitize_filename
28
28
  from .._core import get_logger
29
29
  from ..keys._keys import _EvaluationConfig
30
30
 
31
+ from ._helpers import check_and_abbreviate_name
32
+
31
33
 
32
34
  _LOGGER = get_logger("Classification Metrics")
33
35
 
@@ -85,7 +87,8 @@ def classification_metrics(save_dir: Union[str, Path],
85
87
  try:
86
88
  sorted_items = sorted(class_map.items(), key=lambda item: item[1])
87
89
  map_labels = [item[1] for item in sorted_items]
88
- map_display_labels = [item[0] for item in sorted_items]
90
+ # Abbreviate display labels if needed
91
+ map_display_labels = [check_and_abbreviate_name(item[0]) for item in sorted_items]
89
92
  except Exception as e:
90
93
  _LOGGER.warning(f"Could not parse 'class_map': {e}")
91
94
  map_labels = None
@@ -397,6 +400,10 @@ def classification_metrics(save_dir: Union[str, Path],
397
400
  # --- Step 1: Get binned data directly ---
398
401
  # calculates reliability diagram data without needing a temporary plot
399
402
  prob_true, prob_pred = calibration_curve(y_true_binary, y_score, n_bins=dynamic_bins)
403
+
404
+ # Anchor the plot to (0,0) and (1,1) to ensure the line spans the full diagonal
405
+ prob_true = np.concatenate(([0.0], prob_true, [1.0]))
406
+ prob_pred = np.concatenate(([0.0], prob_pred, [1.0]))
400
407
 
401
408
  # --- Step 2: Plot ---
402
409
  ax_cal.plot([0, 1], [0, 1], 'k--', label='Perfectly calibrated')
@@ -467,6 +474,9 @@ def multi_label_classification_metrics(
467
474
 
468
475
  save_dir_path = make_fullpath(save_dir, make=True, enforce="directory")
469
476
 
477
+ # --- Pre-process target names for abbreviation ---
478
+ target_names = [check_and_abbreviate_name(name) for name in target_names]
479
+
470
480
  # --- Parse Config or use defaults ---
471
481
  if config is None:
472
482
  # Create a default config if one wasn't provided
@@ -502,7 +512,7 @@ def multi_label_classification_metrics(
502
512
  # print(overall_report)
503
513
  overall_report_path = save_dir_path / "classification_report.txt"
504
514
  overall_report_path.write_text(overall_report)
505
-
515
+
506
516
  # --- Save Classification Report Heatmap (Multi-label) ---
507
517
  try:
508
518
  # Generate full report as dict
@@ -566,18 +576,6 @@ def multi_label_classification_metrics(
566
576
  pred_i = y_pred[:, i] # Use passed-in y_pred
567
577
  prob_i = y_prob[:, i] # Use passed-in y_prob
568
578
  sanitized_name = sanitize_filename(name)
569
-
570
- # if name is too long, just take the first letter of each word. Each word might be separated by space or underscore
571
- if len(name) >= _EvaluationConfig.NAME_LIMIT:
572
- parts = [w for w in name.replace("_", " ").split() if w]
573
- abbr = "".join(p[0].upper() for p in parts)
574
- # keep only alpha numeric chars
575
- abbr = "".join(ch for ch in abbr if ch.isalnum())
576
- if not abbr:
577
- # fallback to a sanitized, truncated version of the original name
578
- abbr = sanitize_filename(name)[: _EvaluationConfig.NAME_LIMIT]
579
- _LOGGER.warning(f"Using abbreviated name '{abbr}' for '{name}' plots.")
580
- name = abbr
581
579
 
582
580
  # --- Save Classification Report for the label (uses y_pred) ---
583
581
  report_text = classification_report(true_i, pred_i)
@@ -726,6 +724,11 @@ def multi_label_classification_metrics(
726
724
  # Calculate calibration curve for this specific label
727
725
  prob_true, prob_pred = calibration_curve(true_i, prob_i, n_bins=dynamic_bins)
728
726
 
727
+ # Anchor the plot to (0,0) and (1,1)
728
+ prob_true = np.concatenate(([0.0], prob_true, [1.0]))
729
+ prob_pred = np.concatenate(([0.0], prob_pred, [1.0]))
730
+
731
+ # Plot the calibration curve
729
732
  ax_cal.plot([0, 1], [0, 1], 'k--', label='Perfectly calibrated')
730
733
  ax_cal.plot(prob_pred,
731
734
  prob_true,
@@ -0,0 +1,41 @@
1
+ from ..keys._keys import _EvaluationConfig
2
+ from ..path_manager import sanitize_filename
3
+ from .._core import get_logger
4
+
5
+
6
+ _LOGGER = get_logger("Metrics Helper")
7
+
8
+
9
+ def check_and_abbreviate_name(name: str) -> str:
10
+ """
11
+ Checks if a name exceeds the NAME_LIMIT. If it does, creates an abbreviation
12
+ (initials of words) or truncates it if the abbreviation is empty.
13
+
14
+ Args:
15
+ name (str): The original label or target name.
16
+
17
+ Returns:
18
+ str: The potentially abbreviated name.
19
+ """
20
+ limit = _EvaluationConfig.NAME_LIMIT
21
+
22
+ # Strip whitespace
23
+ name = name.strip()
24
+
25
+ if len(name) <= limit:
26
+ return name
27
+
28
+ # Attempt abbreviation: First letter of each word (split by space or underscore)
29
+ parts = [w for w in name.replace("_", " ").split() if w]
30
+ abbr = "".join(p[0].upper() for p in parts)
31
+
32
+ # Keep only alphanumeric characters
33
+ abbr = "".join(ch for ch in abbr if ch.isalnum())
34
+
35
+ # Fallback if abbreviation failed or is empty
36
+ if not abbr:
37
+ sanitized = sanitize_filename(name)
38
+ abbr = sanitized[:limit]
39
+
40
+ _LOGGER.warning(f"Label '{name}' is too long. Abbreviating to '{abbr}'.")
41
+ return abbr
@@ -19,6 +19,8 @@ from ..path_manager import make_fullpath, sanitize_filename
19
19
  from .._core import get_logger
20
20
  from ..keys._keys import _EvaluationConfig
21
21
 
22
+ from ._helpers import check_and_abbreviate_name
23
+
22
24
 
23
25
  _LOGGER = get_logger("Regression Metrics")
24
26
 
@@ -180,6 +182,9 @@ def multi_target_regression_metrics(
180
182
  if y_true.shape[1] != len(target_names):
181
183
  _LOGGER.error("Number of target names must match the number of columns in y_true.")
182
184
  raise ValueError()
185
+
186
+ # --- Pre-process target names for abbreviation ---
187
+ target_names = [check_and_abbreviate_name(name) for name in target_names]
183
188
 
184
189
  save_dir_path = make_fullpath(save_dir, make=True, enforce="directory")
185
190
  metrics_summary = []
@@ -126,7 +126,8 @@ def captum_feature_importance(model: nn.Module,
126
126
  feature_names=feature_names,
127
127
  save_dir=save_dir_path,
128
128
  n_steps=n_steps,
129
- file_suffix=f"_{clean_name}"
129
+ file_suffix=f"_{clean_name}",
130
+ target_name=name # Pass original name for plotting
130
131
  )
131
132
 
132
133
 
@@ -137,7 +138,8 @@ def _process_single_target(ig: 'IntegratedGradients', # type: ignore
137
138
  feature_names: Optional[list[str]],
138
139
  save_dir: Path,
139
140
  n_steps: int,
140
- file_suffix: str):
141
+ file_suffix: str,
142
+ target_name: str = ""):
141
143
  """
142
144
  Private helper to run the attribution, aggregation, and saving for a single context.
143
145
  """
@@ -214,7 +216,11 @@ def _process_single_target(ig: 'IntegratedGradients', # type: ignore
214
216
  plt.xlabel("Mean Absolute Attribution")
215
217
 
216
218
  title = "Feature Importance"
217
- if file_suffix:
219
+
220
+ # Use the original target name if provided, otherwise fallback to suffix logic
221
+ if target_name:
222
+ title += f" ({target_name})"
223
+ elif file_suffix:
218
224
  # Remove the leading underscore for the title
219
225
  clean_suffix = file_suffix.lstrip("_").replace("_", " ")
220
226
  title += f" ({clean_suffix})"
@@ -228,7 +234,9 @@ def _process_single_target(ig: 'IntegratedGradients', # type: ignore
228
234
  plt.savefig(plot_path)
229
235
  plt.close()
230
236
 
231
- _LOGGER.info(f"🔬 Captum explanation for target '{file_suffix.lstrip("_").replace("_", " ")}' saved to '{save_dir.name}'")
237
+ # Use target_name for logging if available, otherwise fallback to cleaning the suffix
238
+ log_name = target_name if target_name else file_suffix.lstrip("_").replace("_", " ")
239
+ _LOGGER.info(f"🔬 Captum explanation for target '{log_name}' saved to '{save_dir.name}'")
232
240
 
233
241
 
234
242
  def captum_image_heatmap(model: nn.Module,
@@ -296,8 +296,8 @@ class _EvaluationConfig:
296
296
  DPI = 400
297
297
  LABEL_PADDING = 10
298
298
  # large sizes for SVG layout to accommodate large fonts
299
- REGRESSION_PLOT_SIZE = (12, 8)
300
- SEQUENCE_PLOT_SIZE = (12, 8)
299
+ REGRESSION_PLOT_SIZE = (10, 7)
300
+ SEQUENCE_PLOT_SIZE = (10, 7)
301
301
  CLASSIFICATION_PLOT_SIZE = (9, 9)
302
302
  # Loss plot
303
303
  LOSS_PLOT_SIZE = (18, 9)
@@ -306,7 +306,7 @@ class _EvaluationConfig:
306
306
  LOSS_PLOT_LEGEND_SIZE = 24
307
307
  # CM settings
308
308
  CM_SIZE = (9, 8) # used for multi label binary classification confusion matrix
309
- NAME_LIMIT = 20 # max number of characters for feature/label names in plots
309
+ NAME_LIMIT = 15 # max number of characters for feature/label names in plots
310
310
 
311
311
  class _OneHotOtherPlaceholder:
312
312
  """Used internally by GUI_tools."""
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dragon-ml-toolbox"
3
- version = "20.8.0"
3
+ version = "20.10.0"
4
4
  description = "Complete pipelines and helper tools for data science and machine learning projects."
5
5
  authors = [
6
6
  { name = "Karl Luigi Loza Vidaurre", email = "luigiloza@gmail.com" }