-
-
Notifications
You must be signed in to change notification settings - Fork 26.5k
Closed
Closed
Copy link
Labels
Description
Describe the bug
If min_samples_split is set to 1, an exception should be raised according to the paramter's constraints:
scikit-learn/sklearn/tree/_classes.py
Lines 100 to 103 in e2e7050
| "min_samples_split": [ | |
| Interval(Integral, 2, None, closed="left"), | |
| Interval(Real, 0.0, 1.0, closed="right"), | |
| ], |
However, DecisionTreeClassifier accepts min_samples_split=1 without complaining.
With scikit-survival 1.0, this raises an exception as expected:
ValueError: min_samples_split == 1, must be >= 2.
I suspect that this has to do with the Intervals of the constraints overlapping. min_samples_split=1 satisfies the Real constraint, whereas the Integral constraint should have precedence.
Steps/Code to Reproduce
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
t = DecisionTreeClassifier(min_samples_split=1)
t.fit(X, y)Expected Results
sklearn.utils._param_validation.InvalidParameterError: The 'min_samples_split' parameter of DecisionTreeClassifier must be an int in the range [2, inf) or a float in the range (0.0, 1.0]. Got 1 instead.
Actual Results
No exception is raised.
Versions
System:
python: 3.10.8 | packaged by conda-forge | (main, Nov 22 2022, 08:26:04) [GCC 10.4.0]
executable: /…/bin/python
machine: Linux-6.1.6-100.fc36.x86_64-x86_64-with-glibc2.35
Python dependencies:
sklearn: 1.3.dev0
pip: 22.2.2
setuptools: 63.2.0
numpy: 1.24.1
scipy: 1.10.0
Cython: None
pandas: None
matplotlib: None
joblib: 1.2.0
threadpoolctl: 3.1.0
Built with OpenMP: True
threadpoolctl info:
user_api: openmp
internal_api: openmp
prefix: libgomp
filepath: /…/lib/libgomp.so.1.0.0
version: None
num_threads: 16
user_api: blas
internal_api: openblas
prefix: libopenblas
filepath: /…/lib/python3.10/site-packages/numpy.libs/libopenblas64_p-r0-15028c96.3.21.so
version: 0.3.21
threading_layer: pthreads
architecture: Zen
num_threads: 16
user_api: blas
internal_api: openblas
prefix: libopenblas
filepath: /…/lib/python3.10/site-packages/scipy.libs/libopenblasp-r0-41284840.3.18.so
version: 0.3.18
threading_layer: pthreads
architecture: Zen
num_threads: 16