mlquantify 0.0.11.2__tar.gz → 0.0.11.4__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 (78) hide show
  1. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/PKG-INFO +3 -2
  2. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/README.md +2 -1
  3. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/bias.py +1 -1
  4. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/plots/distribution_plot.py +54 -14
  5. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify.egg-info/PKG-INFO +3 -2
  6. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/setup.py +1 -1
  7. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/__init__.py +0 -0
  8. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/base.py +0 -0
  9. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/classification/__init__.py +0 -0
  10. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/classification/pwkclf.py +0 -0
  11. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/__init__.py +0 -0
  12. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/__init__.py +0 -0
  13. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/ae.py +0 -0
  14. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/kld.py +0 -0
  15. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/mse.py +0 -0
  16. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/nae.py +0 -0
  17. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/nkld.py +0 -0
  18. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/nrae.py +0 -0
  19. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/rae.py +0 -0
  20. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/measures/se.py +0 -0
  21. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/protocol/_Protocol.py +0 -0
  22. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/protocol/__init__.py +0 -0
  23. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/protocol/app.py +0 -0
  24. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/evaluation/protocol/npp.py +0 -0
  25. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/__init__.py +0 -0
  26. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/_ThreholdOptimization.py +0 -0
  27. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/__init__.py +0 -0
  28. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/acc.py +0 -0
  29. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/max.py +0 -0
  30. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/ms.py +0 -0
  31. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/ms2.py +0 -0
  32. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/pacc.py +0 -0
  33. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/t50.py +0 -0
  34. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/ThreholdOptm/x.py +0 -0
  35. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/__init__.py +0 -0
  36. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/cc.py +0 -0
  37. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/emq.py +0 -0
  38. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/fm.py +0 -0
  39. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/gac.py +0 -0
  40. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/gpac.py +0 -0
  41. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/_MixtureModel.py +0 -0
  42. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/__init__.py +0 -0
  43. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/dys.py +0 -0
  44. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/dys_syn.py +0 -0
  45. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/hdy.py +0 -0
  46. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/smm.py +0 -0
  47. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/mixtureModels/sord.py +0 -0
  48. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/pcc.py +0 -0
  49. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/aggregative/pwk.py +0 -0
  50. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/meta/__init__.py +0 -0
  51. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/meta/ensemble.py +0 -0
  52. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/non_aggregative/__init__.py +0 -0
  53. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/methods/non_aggregative/hdx.py +0 -0
  54. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/model_selection.py +0 -0
  55. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/plots/__init__.py +0 -0
  56. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/plots/protocol_plot.py +0 -0
  57. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/__init__.py +0 -0
  58. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/__init__.py +0 -0
  59. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/convert_col_to_array.py +0 -0
  60. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/generate_artificial_indexes.py +0 -0
  61. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/get_real_prev.py +0 -0
  62. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/load_quantifier.py +0 -0
  63. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/make_prevs.py +0 -0
  64. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/normalize.py +0 -0
  65. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/parallel.py +0 -0
  66. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/general_purposes/round_protocol_df.py +0 -0
  67. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/__init__.py +0 -0
  68. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/distances.py +0 -0
  69. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/getHist.py +0 -0
  70. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/get_scores.py +0 -0
  71. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/moss.py +0 -0
  72. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/ternary_search.py +0 -0
  73. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify/utils/method_purposes/tprfpr.py +0 -0
  74. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify.egg-info/SOURCES.txt +0 -0
  75. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify.egg-info/dependency_links.txt +0 -0
  76. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify.egg-info/requires.txt +0 -0
  77. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/mlquantify.egg-info/top_level.txt +0 -0
  78. {mlquantify-0.0.11.2 → mlquantify-0.0.11.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlquantify
3
- Version: 0.0.11.2
3
+ Version: 0.0.11.4
4
4
  Summary: Quantification Library
5
5
  Home-page: https://github.com/luizfernandolj/QuantifyML/tree/master
6
6
  Maintainer: Luiz Fernando Luth Junior
@@ -53,7 +53,7 @@ ___
53
53
 
54
54
  | Section | Description |
55
55
  |---|---|
56
- | **Quantification Methods** | Methods for quantification, such as classify & Count Correct methods, Threshold Optimization, Mixture Models and more.|
56
+ | **21 Quantification Methods** | Methods for quantification, such as classify & Count Correct methods, Threshold Optimization, Mixture Models and more.|
57
57
  | **Dynamic class management** | All methods are dynamic, and handles multiclass and binary problems, in case of binary it makes One-Vs-All (OVA) automatically. |
58
58
  | **Model Selection** | Criteria and processes used to select the best model, such as grid-search for the case of quantification|
59
59
  | **Evaluation Metrics** | Specific metrics used to evaluate quantification performance, (e.g., AE, BIAS, NAE, SE, KLD, etc.). |
@@ -117,6 +117,7 @@ ___
117
117
  - [Model Selection](https://github.com/luizfernandolj/mlquantify/wiki/Model-Selection)
118
118
  - [Evaluation](https://github.com/luizfernandolj/mlquantify/wiki/Evaluation)
119
119
  - [Plotting](https://github.com/luizfernandolj/mlquantify/wiki/Plotting)
120
+ - [Utilities](https://github.com/luizfernandolj/mlquantify/wiki/Utilities)
120
121
 
121
122
 
122
123
  ___
@@ -30,7 +30,7 @@ ___
30
30
 
31
31
  | Section | Description |
32
32
  |---|---|
33
- | **Quantification Methods** | Methods for quantification, such as classify & Count Correct methods, Threshold Optimization, Mixture Models and more.|
33
+ | **21 Quantification Methods** | Methods for quantification, such as classify & Count Correct methods, Threshold Optimization, Mixture Models and more.|
34
34
  | **Dynamic class management** | All methods are dynamic, and handles multiclass and binary problems, in case of binary it makes One-Vs-All (OVA) automatically. |
35
35
  | **Model Selection** | Criteria and processes used to select the best model, such as grid-search for the case of quantification|
36
36
  | **Evaluation Metrics** | Specific metrics used to evaluate quantification performance, (e.g., AE, BIAS, NAE, SE, KLD, etc.). |
@@ -94,6 +94,7 @@ ___
94
94
  - [Model Selection](https://github.com/luizfernandolj/mlquantify/wiki/Model-Selection)
95
95
  - [Evaluation](https://github.com/luizfernandolj/mlquantify/wiki/Evaluation)
96
96
  - [Plotting](https://github.com/luizfernandolj/mlquantify/wiki/Plotting)
97
+ - [Utilities](https://github.com/luizfernandolj/mlquantify/wiki/Utilities)
97
98
 
98
99
 
99
100
  ___
@@ -11,6 +11,6 @@ def bias(prev_real:np.any, prev_pred:np.any):
11
11
  abs_errors = abs(prev_pred - prev_real)
12
12
 
13
13
  if classes:
14
- return {class_:abs_error for class_, abs_error in zip(classes, abs_errors)}
14
+ return {class_:float(abs_error) for class_, abs_error in zip(classes, abs_errors)}
15
15
 
16
16
  return abs_errors
@@ -30,8 +30,6 @@ plt.rcParams.update({
30
30
  })
31
31
 
32
32
 
33
-
34
-
35
33
  COLORS = [
36
34
  '#FFAB91', '#FFE082', '#A5D6A7', '#4DD0E1', '#FF6F61', '#FF8C94', '#D4A5A5',
37
35
  '#FF677D', '#B9FBC0', '#C2C2F0', '#E3F9A6', '#E2A8F7', '#F7B7A3', '#F7C6C7',
@@ -40,6 +38,7 @@ COLORS = [
40
38
  '#4FC3F7', '#FFB3B3', '#FF6F61'
41
39
  ]
42
40
 
41
+
43
42
  def class_distribution_plot(values: Union[List, np.ndarray],
44
43
  labels: Union[List, np.ndarray],
45
44
  bins: int = 30,
@@ -47,7 +46,6 @@ def class_distribution_plot(values: Union[List, np.ndarray],
47
46
  legend: bool = True,
48
47
  save_path: Optional[str] = None,
49
48
  plot_params: Optional[Dict[str, Any]] = None):
50
-
51
49
  """Plot overlaid histograms of class distributions.
52
50
 
53
51
  This function creates a plot with overlaid histograms, each representing the distribution
@@ -76,30 +74,72 @@ def class_distribution_plot(values: Union[List, np.ndarray],
76
74
  If the number of labels does not match the number of value sets.
77
75
 
78
76
  """
79
-
80
-
77
+
78
+ # Ensure the number of labels matches the number of value sets
79
+ assert len(values) == len(labels), "The number of value sets must match the number of labels."
80
+
81
+ if isinstance(values, list):
82
+ values = np.asarray(values)
83
+ if isinstance(labels, list):
84
+ labels = np.asarray(labels)
85
+
86
+
81
87
  # Apply custom plotting parameters if provided
82
88
  if plot_params:
83
89
  plt.rcParams.update(plot_params)
84
90
 
85
- # Ensure the number of labels matches the number of value sets
86
- assert len(values) == len(labels), "The number of value sets must match the number of labels."
91
+ if values.shape[1] > 1:
92
+ num_plots = values.shape[1] # Number of columns in `values`
93
+ cols = int(np.ceil(np.sqrt(num_plots)))
94
+ rows = int(np.ceil(num_plots / cols))
87
95
 
96
+ fig, axs = plt.subplots(rows, cols, figsize=(cols * 5, rows * 4))
97
+ axs = axs.flatten()
98
+
88
99
  # Create the overlaid histogram
89
- for i, (value_set, label) in enumerate(zip(values, labels)):
90
- plt.hist(value_set, bins=bins, color=COLORS[i % len(COLORS)], edgecolor='black', alpha=0.5, label=label)
91
-
100
+ for i, label in enumerate(np.unique(labels)):
101
+ if values.shape[1] > 1:
102
+ for j, lab in enumerate(np.unique(labels)):
103
+ value_set = values[:, j][label == labels]
104
+ axs[i].hist(value_set, bins=bins, color=COLORS[j % len(COLORS)], edgecolor='black', alpha=0.5, label=lab)
105
+ axs[i].set_xlim([0, 1]) # Fix x-axis range between 0 and 1
106
+ else:
107
+ value_set = values[label == labels]
108
+ plt.hist(value_set, bins=bins, color=COLORS[i % len(COLORS)], edgecolor='black', alpha=0.5, label=label)
109
+ plt.xlim([0, 1]) # Fix x-axis range between 0 and 1
110
+
111
+ if values.shape[1] > 1:
112
+ for i in range(i + 1, len(axs)):
113
+ fig.delaxes(axs[i])
114
+
92
115
  # Add title to the plot if provided
93
116
  if title:
94
- plt.title(title)
117
+ if values.shape[1] > 1:
118
+ for i in range(values.shape[1]):
119
+ axs[i].set_title(f'{title} for class {i+1}')
120
+ else:
121
+ plt.title(title)
95
122
 
96
123
  # Add legend to the plot if enabled
97
124
  if legend:
98
- plt.legend(loc='upper right')
125
+ if values.shape[1] > 1:
126
+ for i in range(values.shape[1]):
127
+ axs[i].legend(loc='upper right')
128
+ else:
129
+ plt.legend(loc='upper right')
99
130
 
100
131
  # Set axis labels
101
- plt.xlabel('Values')
102
- plt.ylabel('Frequency')
132
+ if values.shape[1] > 1:
133
+ for i in range(values.shape[1]):
134
+ axs[i].set_xlabel('Values')
135
+ axs[i].set_ylabel('Frequency')
136
+ else:
137
+ plt.xlabel('Values')
138
+ plt.ylabel('Frequency')
139
+
140
+ # Adjust layout to prevent overlapping
141
+ plt.subplots_adjust(hspace=0.9, wspace=0.4)
142
+ plt.tight_layout()
103
143
 
104
144
  # Save the figure if a path is specified
105
145
  if save_path:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlquantify
3
- Version: 0.0.11.2
3
+ Version: 0.0.11.4
4
4
  Summary: Quantification Library
5
5
  Home-page: https://github.com/luizfernandolj/QuantifyML/tree/master
6
6
  Maintainer: Luiz Fernando Luth Junior
@@ -53,7 +53,7 @@ ___
53
53
 
54
54
  | Section | Description |
55
55
  |---|---|
56
- | **Quantification Methods** | Methods for quantification, such as classify & Count Correct methods, Threshold Optimization, Mixture Models and more.|
56
+ | **21 Quantification Methods** | Methods for quantification, such as classify & Count Correct methods, Threshold Optimization, Mixture Models and more.|
57
57
  | **Dynamic class management** | All methods are dynamic, and handles multiclass and binary problems, in case of binary it makes One-Vs-All (OVA) automatically. |
58
58
  | **Model Selection** | Criteria and processes used to select the best model, such as grid-search for the case of quantification|
59
59
  | **Evaluation Metrics** | Specific metrics used to evaluate quantification performance, (e.g., AE, BIAS, NAE, SE, KLD, etc.). |
@@ -117,6 +117,7 @@ ___
117
117
  - [Model Selection](https://github.com/luizfernandolj/mlquantify/wiki/Model-Selection)
118
118
  - [Evaluation](https://github.com/luizfernandolj/mlquantify/wiki/Evaluation)
119
119
  - [Plotting](https://github.com/luizfernandolj/mlquantify/wiki/Plotting)
120
+ - [Utilities](https://github.com/luizfernandolj/mlquantify/wiki/Utilities)
120
121
 
121
122
 
122
123
  ___
@@ -6,7 +6,7 @@ here = pathlib.Path(__file__).parent.resolve()
6
6
 
7
7
  long_description = (here / 'README.md').read_text(encoding='utf-8')
8
8
 
9
- VERSION = '0.0.11.2'
9
+ VERSION = '0.0.11.4'
10
10
  DESCRIPTION = 'Quantification Library'
11
11
 
12
12
  # Setting up
File without changes