RandomForestClassifier allows float max_samples greater than 1 without raising exception

### Describe the bug

When using the RandomForestClassifier from scikit-learn, the model allows passing float values greater than 1 for the max_samples parameter without raising an exception, which is unexpected. I expected the code to raise an exception, but it did not. I am using scikit-learn version 1.0.2. For below code example, notebook runs just fine, and doesn't give me any exceptions.

### Steps/Code to Reproduce

```from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(max_samples=1.5)
```

### Expected Results

At least it can throw an exception just like for integer max_samples case. 

### Actual Results

Code works just fine, without any exceptions.

### Versions

```shell
System:
    python: 3.7.15 (default, Nov 24 2022, 18:44:54) [MSC v.1916 64 bit (AMD64)]
executable: C:\ProgramData\Anaconda3\envs\ml_notes\python.exe
   machine: Windows-10-10.0.19041-SP0

Python dependencies:
          pip: 22.3.1
   setuptools: 65.6.3
      sklearn: 1.0.2
        numpy: 1.21.5
        scipy: 1.7.3
       Cython: None
       pandas: 1.3.5
   matplotlib: 3.5.2
       joblib: 1.1.1
threadpoolctl: 2.2.0

Built with OpenMP: True
```

COMMENT:
It is already solved in `scikit-learn` 1.2 with the parameter validation framework. Note that the validation happens when calling `fit` but not when instantiating the object.

```python
In [1]: from sklearn.datasets import load_digits

In [2]: X, y = load_digits(return_X_y=True)

In [3]: from sklearn.ensemble import RandomForestClassifier

In [4]: clf = RandomForestClassifier(max_samples=1.5).fit(X, y)
---------------------------------------------------------------------------
InvalidParameterError                     Traceback (most recent call last)
Cell In [4], line 1
----> 1 clf = RandomForestClassifier(max_samples=1.5).fit(X, y)

File ~/Documents/packages/scikit-learn/sklearn/ensemble/_forest.py:341, in BaseForest.fit(self, X, y, sample_weight)
    314 def fit(self, X, y, sample_weight=None):
    315     """
    316     Build a forest of trees from the training set (X, y).
    317 
   (...)
    339         Fitted estimator.
    340     """
--> 341     self._validate_params()
    343     # Validate or convert input data
    344     if issparse(y):

File ~/Documents/packages/scikit-learn/sklearn/base.py:578, in BaseEstimator._validate_params(self)
    570 def _validate_params(self):
    571     """Validate types and values of constructor parameters
    572 
    573     The expected type and values must be defined in the `_parameter_constraints`
   (...)
    576     accepted constraints.
    577     """
--> 578     validate_parameter_constraints(
    579         self._parameter_constraints,
    580         self.get_params(deep=False),
    581         caller_name=self.__class__.__name__,
    582     )

File ~/Documents/packages/scikit-learn/sklearn/utils/_param_validation.py:97, in validate_parameter_constraints(parameter_constraints, params, caller_name)
     91 else:
     92     constraints_str = (
     93         f"{', '.join([str(c) for c in constraints[:-1]])} or"
     94         f" {constraints[-1]}"
     95     )
---> 97 raise InvalidParameterError(
     98     f"The {param_name!r} parameter of {caller_name} must be"
     99     f" {constraints_str}. Got {param_val!r} instead."
    100 )

InvalidParameterError: The 'max_samples' parameter of RandomForestClassifier must be None, a float in the range (0.0, 1.0] or an int in the range [1, inf). Got 1.5 instead.
```

Labels: Bug, Needs Triage