Description
Describe the bug
imblearn.metrics.macro_averaged_mean_absolute_error()
raises an exception when not all classes are represented in the ground truth.
Thought I'd flag this because a similar function in sklearn behaves differently to imbalanced-learn. That function is f1_score
with macro averaging. Here's an example of how no exception is raised:
from sklearn.metrics import f1_score
print(f1_score([0, 1], [0, 0], average="macro"))
print(f1_score([0, 0], [0, 1], average="macro"))
Note that issue #912 had the same exception but I'm uncertain whether it's related.
Steps/Code to Reproduce
from imblearn.metrics import macro_averaged_mean_absolute_error
print(macro_averaged_mean_absolute_error([0, 1], [0, 0]))
print(macro_averaged_mean_absolute_error([0, 0], [0, 1]))
Expected Results
0.5
0.75
Actual Results
0.5
*** ValueError: Found array with 0 sample(s) (shape=(0,)) while a minimum of 1 is required.
Versions
System:
python: 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]
executable: /usr/bin/python
machine: Linux-6.5.0-45-generic-x86_64-with-glibc2.35
Python dependencies:
sklearn: 1.5.1
pip: 24.2
setuptools: 70.3.0
numpy: 1.26.4
scipy: 1.14.0
Cython: 3.0.11
pandas: 2.2.2
matplotlib: 3.9.2
joblib: 1.4.2
threadpoolctl: 3.5.0
Built with OpenMP: True
threadpoolctl info:
user_api: blas
internal_api: openblas
num_threads: 64
prefix: libopenblas
filepath: /usr/local/lib/python3.10/dist-packages/numpy.libs/libopenblas64_p-r0-0cf96a72.3.23.dev.so
version: 0.3.23.dev
threading_layer: pthreads
architecture: SkylakeX
user_api: blas
internal_api: openblas
num_threads: 64
prefix: libscipy_openblas
filepath: /usr/local/lib/python3.10/dist-packages/scipy.libs/libscipy_openblas-c128ec02.so
version: 0.3.27.dev
threading_layer: pthreads
architecture: SkylakeX
user_api: openmp
internal_api: openmp
num_threads: 64
prefix: libgomp
filepath: /usr/local/lib/python3.10/dist-packages/scikit_learn.libs/libgomp-a34b3233.so.1.0.0
version: None