Bisecting Kmeans predict and transform.argmin do not give same results

### Describe the bug

The bisecting KMeans algorithm does not give the same result when using `.predict(X)` and `.transform(X).argmin(1)`. 

I'm not sure what the desired output would be, and whether they should be equal. This, however, does go against how other clusterers (most notably the regular KMeans) work. I think the difference lies in the fact that the predict method works hierarchically through the original tree, while the transform method just calculates the euclidean distance between the terminal cluster centers.


### Steps/Code to Reproduce


```python
from sklearn.cluster import BisectingKMeans, KMeans
from sklearn.datasets import make_blobs

X, y = make_blobs(10000, random_state=44)

bs = BisectingKMeans(n_clusters=32)
bs.fit(X)

pred = bs.predict(X)
pred_2 = bs.transform(X).argmin(1)

# For comparison
km = KMeans(n_clusters=32)
km.fit(X)

pred_km = km.predict(X)
pred_km_2 = km.transform(X).argmin(1)

(pred == pred_2).all()  # False
(pred_km == pred_km_2).all()  # True
```

### Expected Results

pred and pred_2 should be equal I think.

### Actual Results

They are not equal, but pred_km and pred_km_2 are.

### Versions

```shell
System:
    python: 3.9.15 (main, Oct 11 2022, 21:39:54)  [Clang 14.0.0 (clang-1400.0.29.102)]
executable: /Users/stephantulkens/Documents/code/similarity/.venv/bin/python
   machine: macOS-12.5-arm64-arm-64bit

Python dependencies:
      sklearn: 1.2.0
          pip: 22.3.1
   setuptools: 65.6.3
        numpy: 1.24.1
        scipy: 1.9.3
       Cython: None
       pandas: 1.5.2
   matplotlib: 3.6.2
       joblib: 1.2.0
threadpoolctl: 3.1.0

Built with OpenMP: True

threadpoolctl info:
       user_api: openmp
   internal_api: openmp
         prefix: libomp
       filepath: /Users/stephantulkens/Documents/code/similarity/.venv/lib/python3.9/site-packages/sklearn/.dylibs/libomp.dylib
        version: None
    num_threads: 10

       user_api: blas
   internal_api: openblas
         prefix: libopenblas
       filepath: /Users/stephantulkens/Documents/code/similarity/.venv/lib/python3.9/site-packages/numpy/.dylibs/libopenblas64_.0.dylib
        version: 0.3.21
threading_layer: pthreads
   architecture: armv8
    num_threads: 10

       user_api: blas
   internal_api: openblas
         prefix: libopenblas
       filepath: /Users/stephantulkens/Documents/code/similarity/.venv/lib/python3.9/site-packages/scipy/.dylibs/libopenblasp-r0.3.20.dylib
        version: 0.3.18
threading_layer: pthreads
   architecture: armv8
    num_threads: 10
```

COMMENT:
> I think the difference lies in the fact that the predict method works hierarchically through the original tree, while the transform method just calculates the euclidean distance between the terminal cluster centers.

Hi @stephantul, it's precisely the reason of the discrepency between the 2. The prediction of BisectingKMeans does not necessarily assing a point to its closest center. Since you walk down the bisecting tree, you can end up in a cluster that does not contain the final subcluster (leaf) the point would be assigned to if we were only considering the leaves.

Labels: Bug, Needs Triage