Integers vs floats in categorical features in HistGradientBoostingRegressor

### Describe the bug

Hi there,

I'm having an issue with the HistGradientBoostingRegressor model and its native usage of categorical features. The documentation suggests that categorical features should be encoded as integers. However, once the model has been trained, it produces the same predictions regardless of whether I pass a pandas dataframe with integers or a numpy array with floats.

I'm unsure if the model is treating the categorical features correctly since, in a categorical context, category 1.0 is different from category 1. Shouldn't the model recognize 1.0 as a separate category and produce different predictions based on this?

Thanks a lot for your help

### Steps/Code to Reproduce

```
from sklearn.ensemble import HistGradientBoostingRegressor
import pandas as pd
import numpy as np

# Data
# ===============================================================================
y = pd.Series(np.random.normal(size=50))
X = pd.DataFrame({
    'col_1': pd.Series(np.random.normal(size=50), dtype=float),
    'col_2': pd.Series(np.random.choice([1, 2, 3, 4], size=50), dtype='category')
})

# Model
# ===============================================================================
model = HistGradientBoostingRegressor(categorical_features=['col_2'], max_iter=10)
_ = model.fit(y=y, X=X)

# Predict using a pandas dataframe with category 
# ===============================================================================
predictions_1 = model.predict(X=X)
print(predictions_1)


# Predict using a numpy array with float values 
# ===============================================================================
X_float = X.to_numpy()
print(X_float.dtype)
predictions_2 = model.predict(X=X_float)
print(predictions_2)

# Check predictions are equal
# ===============================================================================
np.testing.assert_array_equal(predictions_1, predictions_2)
```

### Expected Results

AssertionError:  Arrays are not equal

### Actual Results

arrays are equal

### Versions

```shell
System:
    python: 3.10.9 (main, Jan 11 2023, 15:21:40) [GCC 11.2.0]
executable: /home/ubuntu/anaconda3/envs/cienciadedatos_p10/bin/python
   machine: Linux-5.15.0-1033-aws-x86_64-with-glibc2.31

Python dependencies:
      sklearn: 1.2.2
          pip: 22.3.1
   setuptools: 65.6.3
        numpy: 1.23.5
        scipy: 1.8.1
       Cython: 0.29.33
       pandas: 1.5.3
   matplotlib: 3.6.3
       joblib: 1.2.0
threadpoolctl: 3.1.0

Built with OpenMP: True

threadpoolctl info:
       user_api: openmp
   internal_api: openmp
         prefix: libgomp
       filepath: /home/ubuntu/anaconda3/envs/cienciadedatos_p10/lib/python3.10/site-packages/scikit_learn.libs/libgomp-a34b3233.so.1.0.0
        version: None
    num_threads: 16

       user_api: blas
   internal_api: openblas
         prefix: libopenblas
       filepath: /home/ubuntu/anaconda3/envs/cienciadedatos_p10/lib/python3.10/site-packages/numpy.libs/libopenblas64_p-r0-742d56dc.3.20.so
        version: 0.3.20
threading_layer: pthreads
   architecture: SkylakeX
    num_threads: 16

       user_api: blas
   internal_api: openblas
         prefix: libopenblas
       filepath: /home/ubuntu/anaconda3/envs/cienciadedatos_p10/lib/python3.10/site-packages/scipy.libs/libopenblasp-r0-8b9e111f.3.17.so
        version: 0.3.17
threading_layer: pthreads
   architecture: SkylakeX
    num_threads: 16
```

COMMENT:
For categorical features, `HistGradientBoosting` treats `1.0` the same as `1`, `2.0` as `2.`, etc. This was done to reduce the complexity of the implementation. Internally, `HistGradientBoosting` converts all input into an float array, which casts the integer a float array. This is casting is okay, because the maximum number of support categories is 255.

I am in-favor of updating the docstring for `categorical_features` to clarify the behavior.

Labels: Documentation, module:ensemble