Wrong Mutual Information Calculation

### Describe the bug

#### Issue
I encountered a bug unexpectedly while reviewing some metrics in a project.
When calculating mutual information using the `mutual_info_classif`, I noticed values higher than entropy, which is [impossible](https://en.wikipedia.org/wiki/Mutual_information#/media/File:Figchannel2017ab.svg). There is no such issue with `mutual_info_regression` (although, there, the self-mi is far from entropy, which may be another interesting case).

##### Implication
Any algorithm sorting features based on `mutual_info_classif` or any metric based on this function may be affected.

Thanks a lot for putting time on this.


P.S. In the minimal example, the feature is fixed (all one). However, I encountered the same issue in other scenarios as well. The example is just more simplified. The problem persists on both Linux and Mac. I attached personal computer session info.

### Steps/Code to Reproduce

```python
import numpy as np
import pandas as pd

from sklearn.feature_selection import mutual_info_classif

big_n = 1_000_000
bug_df = pd.DataFrame({
    'feature': np.ones(big_n),
    'target': (np.arange(big_n) < 100).astype(int),
})
bug_df

mi = mutual_info_classif(bug_df[['feature']], bug_df['target'])
entropy = mutual_info_classif(bug_df[['target']], bug_df['target'])

print(f"mi: {mi[0] :.6f}")
print(f"self-mi (entropy): {entropy[0] :.6f}")

from scipy import stats

scipy_entropy = stats.entropy([bug_df['target'].mean(), 1 - bug_df['target'].mean()])

print(f"scipy entropy: {scipy_entropy :.6f}")
```

### Expected Results

```
mi: 0.000000
self-mi (entropy): 0.001023
scipy entropy: 0.001021
```

### Actual Results

```
mi: 0.215495
self-mi (entropy): 0.001023
scipy entropy: 0.001021
```

### Versions

```shell
System:
    python: 3.10.13 (main, Sep 11 2023, 08:16:02) [Clang 14.0.6 ]
executable: /Users/*/miniconda3/envs/*/bin/python
   machine: macOS-15.1.1-arm64-arm-64bit

Python dependencies:
      sklearn: 1.6.1
          pip: 23.3.1
   setuptools: 68.2.2
        numpy: 1.26.1
        scipy: 1.15.1
       Cython: None
       pandas: 2.2.3
   matplotlib: 3.8.2
       joblib: 1.3.2
threadpoolctl: 3.2.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: openblas
    num_threads: 8
         prefix: libopenblas
       filepath: /Users/*/miniconda3/envs/*/lib/python3.10/site-packages/numpy/.dylibs/libopenblas64_.0.dylib
        version: 0.3.23.dev
threading_layer: pthreads
   architecture: armv8

       user_api: openmp
   internal_api: openmp
    num_threads: 8
         prefix: libomp
       filepath: /Users/*/miniconda3/envs/*/lib/python3.10/site-packages/sklearn/.dylibs/libomp.dylib
        version: None
```

COMMENT:
@moinfar @ogrisel Perhaps the algorithm used by sklearn is not valid for delta-like distributions. 

The following code tests what would happen if the normal distribution approaches the Dirac delta as $\sigma\rightarrow0$. It looks like the MI as calculated by the sklearn algorithm would always increase to a level of the order $10^{-2}$ regardless of the target balance, although you would see a "contradiction" more easily if the target is imbalanced with a low entropy.
```python
import numpy as np
from sklearn.feature_selection import mutual_info_classif
from sklearn.metrics import mutual_info_score

n = 100000
k = 10
# k = n//2
y = np.array([0]*k+[1]*(n-k))
print(F'target entropy = {mutual_info_score(y, y):.6e}')
sigma = 1
for _ in range(16):
    x = np.random.default_rng(0).normal(1, sigma, len(y))
    # print(x)
    print(F'{sigma=:.2e}, {mutual_info_classif(x.reshape((-1,1)),y, random_state=0)[0]:.6e}')
    sigma /= 10
```
```text
target entropy = 1.021029e-03
sigma=1.00e+00, 0.000000e+00
sigma=1.00e-01, 0.000000e+00
sigma=1.00e-02, 0.000000e+00
sigma=1.00e-03, 0.000000e+00
sigma=1.00e-04, 0.000000e+00
sigma=1.00e-05, 0.000000e+00
sigma=1.00e-06, 0.000000e+00
sigma=1.00e-07, 2.814428e-05
sigma=1.00e-08, 1.220520e-04
sigma=1.00e-09, 1.716283e-03
sigma=1.00e-10, 1.915695e-02
sigma=1.00e-11, 2.200564e-02
sigma=1.00e-12, 1.769933e-02
sigma=1.00e-13, 2.906870e-02
sigma=1.00e-14, 2.264369e-02
sigma=1.00e-15, 2.572036e-02
```

Labels: Bug, Needs Investigation