diff --git a/sklearn/cluster/_dbscan.py b/sklearn/cluster/_dbscan.py index 4dd09c9531c44..0129138801973 100644 --- a/sklearn/cluster/_dbscan.py +++ b/sklearn/cluster/_dbscan.py @@ -17,13 +17,18 @@ from ..base import BaseEstimator, ClusterMixin, _fit_context from ..metrics.pairwise import _VALID_METRICS from ..neighbors import NearestNeighbors -from ..utils._param_validation import Interval, StrOptions +from ..utils._param_validation import Interval, StrOptions, validate_params from ..utils.validation import _check_sample_weight from ._dbscan_inner import dbscan_inner -# This function is not validated using validate_params because -# it's just a factory for DBSCAN. +@validate_params( + { + "X": ["array-like", "sparse matrix"], + "sample_weight": ["array-like", None], + }, + prefer_skip_nested_validation=False, +) def dbscan( X, eps=0.5, diff --git a/sklearn/tests/test_public_functions.py b/sklearn/tests/test_public_functions.py index 1d9c75180c1ea..791ff4205e3cd 100644 --- a/sklearn/tests/test_public_functions.py +++ b/sklearn/tests/test_public_functions.py @@ -344,6 +344,7 @@ def test_function_param_validation(func_module): PARAM_VALIDATION_CLASS_WRAPPER_LIST = [ ("sklearn.cluster.affinity_propagation", "sklearn.cluster.AffinityPropagation"), + ("sklearn.cluster.dbscan", "sklearn.cluster.DBSCAN"), ("sklearn.cluster.k_means", "sklearn.cluster.KMeans"), ("sklearn.cluster.mean_shift", "sklearn.cluster.MeanShift"), ("sklearn.cluster.spectral_clustering", "sklearn.cluster.SpectralClustering"),