diff --git a/stubs/sklearn/cluster/__init__.pyi b/stubs/sklearn/cluster/__init__.pyi index 396ae63c..425ad794 100644 --- a/stubs/sklearn/cluster/__init__.pyi +++ b/stubs/sklearn/cluster/__init__.pyi @@ -9,6 +9,7 @@ from ._bicluster import SpectralBiclustering as SpectralBiclustering, SpectralCo from ._birch import Birch as Birch from ._bisect_k_means import BisectingKMeans as BisectingKMeans from ._dbscan import DBSCAN as DBSCAN, dbscan as dbscan +from ._hdbscan.hdbscan import HDBSCAN as HDBSCAN from ._kmeans import KMeans as KMeans, MiniBatchKMeans as MiniBatchKMeans, k_means as k_means, kmeans_plusplus as kmeans_plusplus from ._mean_shift import ( MeanShift as MeanShift, @@ -29,6 +30,7 @@ __all__ = [ "AgglomerativeClustering", "Birch", "DBSCAN", + "HDBSCAN", "OPTICS", "cluster_optics_dbscan", "cluster_optics_xi", diff --git a/stubs/sklearn/cluster/_hdbscan/__init__.pyi b/stubs/sklearn/cluster/_hdbscan/__init__.pyi new file mode 100644 index 00000000..e69de29b diff --git a/stubs/sklearn/cluster/_hdbscan/hdbscan.pyi b/stubs/sklearn/cluster/_hdbscan/hdbscan.pyi new file mode 100644 index 00000000..1cea7fb8 --- /dev/null +++ b/stubs/sklearn/cluster/_hdbscan/hdbscan.pyi @@ -0,0 +1,38 @@ +from typing import Any, Callable, ClassVar, Literal +from typing_extensions import Self + +from numpy import ndarray + +from ..._typing import Float, Int, MatrixLike +from ...base import BaseEstimator, ClusterMixin + +class HDBSCAN(ClusterMixin, BaseEstimator): + labels_: ndarray = ... + probabilities_: ndarray = ... + n_features_in_: int = ... + feature_names_in_: ndarray = ... + centroids_: ndarray = ... + medoids_: ndarray = ... + + _parameter_constraints: ClassVar[dict] = ... + + def __init__( + self, + min_cluster_size: Int = 5, + min_samples: None | Int = None, + cluster_selection_epsilon: Float = 0.0, + max_cluster_size: None | Int = None, + metric: str | Callable = "euclidean", + metric_params: None | dict = None, + alpha: Float = 1.0, + algorithm: Literal["auto", "brute", "kd_tree", "ball_tree"] = "auto", + leaf_size: Int = 40, + n_jobs: None | Int = None, + cluster_selection_method: Literal["eom", "leaf"] = "eom", + allow_single_cluster: bool = False, + store_centers: None | Literal["centroid", "medoid", "both"] = None, + copy: bool = False, + ) -> None: ... + def fit(self, X: MatrixLike, y: Any = None) -> Self: ... + def fit_predict(self, X: MatrixLike, y: Any = None) -> ndarray: ... + def dbscan_clustering(self, cut_distance: Float, min_cluster_size: Int = 5) -> ndarray: ... diff --git a/stubs/sklearn/metrics/_ranking.pyi b/stubs/sklearn/metrics/_ranking.pyi index 909cafc4..b53ea503 100644 --- a/stubs/sklearn/metrics/_ranking.pyi +++ b/stubs/sklearn/metrics/_ranking.pyi @@ -1,4 +1,5 @@ -from typing import Literal +from typing import Literal, overload +from typing_extensions import deprecated from numpy import ndarray @@ -40,12 +41,25 @@ def roc_auc_score( multi_class: Literal["raise", "ovr", "ovo"] = "raise", labels: None | ArrayLike = None, ) -> Float: ... +@overload def precision_recall_curve( y_true: ArrayLike, - probas_pred: ArrayLike, + y_score: ArrayLike, *, pos_label: None | str | Int = None, sample_weight: None | ArrayLike = None, + drop_intermediate: bool = False, +) -> tuple[ndarray, ndarray, ndarray]: ... +@deprecated("`probas_pred` is deprecated in 1.5 and will be removed in 1.7. Use `y_score` instead.") +@overload +def precision_recall_curve( + y_true: ArrayLike, + y_score: None = None, + *, + pos_label: None | str | Int = None, + sample_weight: None | ArrayLike = None, + drop_intermediate: bool = False, + probas_pred: ArrayLike, ) -> tuple[ndarray, ndarray, ndarray]: ... def roc_curve( y_true: ArrayLike, diff --git a/stubs/sklearn/stubtest_allowlist.txt b/stubs/sklearn/stubtest_allowlist.txt index b7d62874..70d1d64c 100644 --- a/stubs/sklearn/stubtest_allowlist.txt +++ b/stubs/sklearn/stubtest_allowlist.txt @@ -95,14 +95,13 @@ sklearn.cluster.BisectingKMeans.set_fit_request sklearn.cluster.BisectingKMeans.set_score_request sklearn.cluster.DBSCAN.__sklearn_tags__ sklearn.cluster.DBSCAN.set_fit_request -sklearn.cluster.HDBSCAN +sklearn.cluster.HDBSCAN.__sklearn_tags__ sklearn.cluster.KMeans.set_fit_request sklearn.cluster.KMeans.set_score_request sklearn.cluster.MiniBatchKMeans.set_fit_request sklearn.cluster.MiniBatchKMeans.set_partial_fit_request sklearn.cluster.MiniBatchKMeans.set_score_request sklearn.cluster.SpectralClustering.__sklearn_tags__ -sklearn.cluster.__all__ sklearn.cluster._affinity_propagation.AffinityPropagation.__sklearn_tags__ sklearn.cluster._bicluster.BaseSpectral.__sklearn_tags__ sklearn.cluster._birch.Birch.__sklearn_tags__ @@ -112,7 +111,9 @@ sklearn.cluster._bisect_k_means.BisectingKMeans.set_score_request sklearn.cluster._dbscan.DBSCAN.__sklearn_tags__ sklearn.cluster._dbscan.DBSCAN.set_fit_request sklearn.cluster._dbscan_inner.__test__ -sklearn.cluster._hdbscan.hdbscan +sklearn.cluster._hdbscan.hdbscan.FAST_METRICS +sklearn.cluster._hdbscan.hdbscan.HDBSCAN.__sklearn_tags__ +sklearn.cluster._hdbscan.hdbscan.remap_single_linkage_tree sklearn.cluster._hdbscan.tests sklearn.cluster._hdbscan.tests.test_reachibility sklearn.cluster._k_means_common.__pyx_capi__ @@ -1229,17 +1230,7 @@ sklearn.tree._splitter.RandomSplitter sklearn.tree._splitter.__test__ sklearn.tree._tree.NODE_DTYPE sklearn.tree._tree.TREE_UNDEFINED -sklearn.tree._tree.Tree.children_left -sklearn.tree._tree.Tree.children_right sklearn.tree._tree.Tree.compute_partial_dependence -sklearn.tree._tree.Tree.feature -sklearn.tree._tree.Tree.impurity -sklearn.tree._tree.Tree.max_depth -sklearn.tree._tree.Tree.missing_go_to_left -sklearn.tree._tree.Tree.n_leaves -sklearn.tree._tree.Tree.n_node_samples -sklearn.tree._tree.Tree.threshold -sklearn.tree._tree.Tree.weighted_n_node_samples sklearn.tree._tree.TreeBuilder.__reduce_cython__ sklearn.tree._tree.TreeBuilder.__setstate_cython__ sklearn.tree._tree.__pyx_capi__ @@ -1981,7 +1972,6 @@ sklearn.metrics._plot.precision_recall_curve.PrecisionRecallDisplay.plot sklearn.metrics._plot.roc_curve.RocCurveDisplay.from_estimator sklearn.metrics._plot.roc_curve.RocCurveDisplay.from_predictions sklearn.metrics._plot.roc_curve.RocCurveDisplay.plot -sklearn.metrics._ranking.precision_recall_curve sklearn.metrics._regression.mean_squared_error sklearn.metrics._regression.mean_squared_log_error sklearn.metrics._scorer.SCORERS @@ -2003,7 +1993,6 @@ sklearn.metrics.pairwise.check_pairwise_arrays sklearn.metrics.pairwise.manhattan_distances sklearn.metrics.pairwise.pairwise_distances sklearn.metrics.pairwise_distances -sklearn.metrics.precision_recall_curve sklearn.model_selection.GridSearchCV.classes_ sklearn.model_selection.GridSearchCV.n_features_in_ sklearn.model_selection.GroupKFold.__init__ diff --git a/stubs/sklearn/tree/_tree.pyi b/stubs/sklearn/tree/_tree.pyi index 8774cd09..5bccffac 100644 --- a/stubs/sklearn/tree/_tree.pyi +++ b/stubs/sklearn/tree/_tree.pyi @@ -63,17 +63,36 @@ class BestFirstTreeBuilder(TreeBuilder): class Tree: n_features: int - n_classes: int n_outputs: int max_n_classes: int - max_dept: int + max_depth: int node_count: int capacity: int nodes: np.ndarray value: np.ndarray value_stride: int + @property + def n_classes(self) -> np.ndarray: ... + @property + def children_left(self) -> np.ndarray: ... + @property + def children_right(self) -> np.ndarray: ... + @property + def n_leaves(self) -> int: ... + @property + def feature(self) -> np.ndarray: ... + @property + def threshold(self) -> np.ndarray: ... + @property + def impurity(self) -> np.ndarray: ... + @property + def n_node_samples(self) -> np.ndarray: ... + @property + def weighted_n_node_samples(self) -> np.ndarray: ... + @property + def missing_go_to_left(self) -> np.ndarray: ... def predict(self, X) -> np.ndarray: ... def apply(self, X) -> np.ndarray: ... def decision_path(self, X) -> Any: ...