`classification_report` gives micro averages when `labels` is a superset of the observed labels

### Describe the bug

When the value of the `labels` parameter is a superset of all observed classes in `y_true` and `y_pred`, `classification_report()` gives separate macro average values for precision, recall, and F1, although according to [the documentation](https://scikit-learn.org/1.3/modules/generated/sklearn.metrics.classification_report.html) this should only be done when `labels` is a subset of the observed classes.

### Steps/Code to Reproduce

```python
from sklearn.metrics import classification_report
print(classification_report([0, 1], [1, 0], labels=[0, 1, 2], zero_division=0.0))
```

### Expected Results

```
              precision    recall  f1-score   support

           0       0.00      0.00      0.00       1.0
           1       0.00      0.00      0.00       1.0
           2       0.00      0.00      0.00       0.0

    accuracy                           0.00       2.0
   macro avg       0.00      0.00      0.00       2.0
weighted avg       0.00      0.00      0.00       2.0
```

### Actual Results

```
              precision    recall  f1-score   support

           0       0.00      0.00      0.00       1.0
           1       0.00      0.00      0.00       1.0
           2       0.00      0.00      0.00       0.0

   micro avg       0.00      0.00      0.00       2.0
   macro avg       0.00      0.00      0.00       2.0
weighted avg       0.00      0.00      0.00       2.0
```

### Versions

```shell
System:
    python: 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0]
executable: /home/connor/miniconda3/envs/playground/bin/python
   machine: Linux-6.2.0-37-generic-x86_64-with-glibc2.35

Python dependencies:
      sklearn: 1.3.2
          pip: 23.3
   setuptools: 68.0.0
        numpy: 1.26.2
        scipy: 1.11.4
       Cython: None
       pandas: None
   matplotlib: None
       joblib: 1.3.2
threadpoolctl: 3.2.0

Built with OpenMP: True

threadpoolctl info:
       user_api: openmp
   internal_api: openmp
    num_threads: 12
         prefix: libgomp
       filepath: /home/connor/miniconda3/envs/playground/lib/python3.11/site-packages/scikit_learn.libs/libgomp-a34b3233.so.1.0.0
        version: None

       user_api: blas
   internal_api: openblas
    num_threads: 12
         prefix: libopenblas
       filepath: /home/connor/miniconda3/envs/playground/lib/python3.11/site-packages/numpy.libs/libopenblas64_p-r0-0cf96a72.3.23.dev.so
        version: 0.3.23.dev
threading_layer: pthreads
   architecture: Zen

       user_api: blas
   internal_api: openblas
    num_threads: 12
         prefix: libopenblas
       filepath: /home/connor/miniconda3/envs/playground/lib/python3.11/site-packages/scipy.libs/libopenblasp-r0-23e5df77.3.21.dev.so
        version: 0.3.21.dev
threading_layer: pthreads
   architecture: Zen
```

COMMENT:
Here is the relevant paragraph:

> The reported averages include macro average (averaging the unweighted mean per label), weighted average (averaging the support-weighted mean per label), and sample average (only for multilabel classification). Micro average (averaging the total true positives, false negatives and false positives) is only shown for multi-label or multi-class with a subset of classes, because it corresponds to accuracy otherwise and would be the same for all metrics. See also [precision_recall_fscore_support](https://scikit-learn.org/1.3/modules/generated/sklearn.metrics.precision_recall_fscore_support.html#sklearn.metrics.precision_recall_fscore_support) for more details on averages.

I agree it sounds like a bug: the code should do what the documentation says.

Labels: Bug