pub struct DecisionTreeClassifier<F> {
pub max_depth: Option<usize>,
pub min_samples_split: usize,
pub min_samples_leaf: usize,
pub min_weight_fraction_leaf: F,
pub min_impurity_decrease: F,
pub ccp_alpha: F,
pub max_leaf_nodes: Option<usize>,
pub criterion: ClassificationCriterion,
pub class_weight: ClassWeight<F>,
/* private fields */
}Expand description
CART decision tree classifier.
Builds a binary tree by recursively finding the feature and threshold that maximises the reduction in the chosen impurity criterion (Gini or Entropy).
§Type Parameters
F: The floating-point type (f32orf64).
Fields§
§max_depth: Option<usize>Maximum depth of the tree. None means unlimited.
min_samples_split: usizeMinimum number of samples required to split an internal node.
min_samples_leaf: usizeMinimum number of samples required in a leaf node.
min_weight_fraction_leaf: FMinimum weighted fraction of the total sample weight required at a leaf.
Mirrors sklearn’s min_weight_fraction_leaf (_classes.py:946,
default 0.0). For uniform sample weights the effective minimum leaf
size becomes max(min_samples_leaf, ceil(min_weight_fraction_leaf · N))
where N is the total training-sample count (_classes.py:371,
_splitter.pyx:470).
min_impurity_decrease: FMinimum tree-normalized weighted impurity decrease required to split a node.
Mirrors sklearn’s min_impurity_decrease (_classes.py:946, default
0.0). A node is made a leaf when the split’s improvement
N_t/N·(parent − N_tL/N_t·imp_L − N_tR/N_t·imp_R) satisfies
improvement + EPSILON < min_impurity_decrease (_tree.pyx:284).
ccp_alpha: FComplexity parameter for Minimal Cost-Complexity Pruning.
Mirrors sklearn’s ccp_alpha (_classes.py:946, default 0.0,
Interval(Real, 0.0, None, closed="left"), _classes.py:123). After the
tree is grown, the subtree with the largest cost complexity that is
smaller than ccp_alpha is chosen (Breiman weakest-link pruning,
_tree.pyx::_cost_complexity_prune). 0.0 ⇒ no pruning.
max_leaf_nodes: Option<usize>Maximum number of leaf nodes. None ⇒ unlimited (depth-first growth).
Mirrors sklearn’s max_leaf_nodes (_classes.py:946, default None,
Interval(Integral, 2, None, closed="left"), _classes.py:121). When
Some(k), the tree is grown best-first (highest impurity improvement
expanded first, BestFirstTreeBuilder, _tree.pyx:407) until it has k
leaves (2k−1 nodes) or no expandable frontier node remains. None
keeps the byte-identical depth-first build.
criterion: ClassificationCriterionSplitting criterion.
class_weight: ClassWeight<F>Per-class weighting (sklearn class_weight, _classes.py:801, default
None). Expanded to per-sample weights at fit and folded into every
weighted quantity (node class counts, gini/entropy, the leaf
distribution / predict_proba, the min_weight_fraction_leaf gate).
ClassWeight::None (default) ⇒ a byte-identical unweighted tree.
Implementations§
Source§impl<F: Float> DecisionTreeClassifier<F>
impl<F: Float> DecisionTreeClassifier<F>
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new DecisionTreeClassifier with default settings.
Defaults: max_depth = None, min_samples_split = 2,
min_samples_leaf = 1, min_weight_fraction_leaf = 0.0,
min_impurity_decrease = 0.0, ccp_alpha = 0.0,
max_leaf_nodes = None, criterion = Gini,
class_weight = ClassWeight::None.
Sourcepub fn with_max_depth(self, max_depth: Option<usize>) -> Self
pub fn with_max_depth(self, max_depth: Option<usize>) -> Self
Set the maximum tree depth.
Sourcepub fn with_min_samples_split(self, min_samples_split: usize) -> Self
pub fn with_min_samples_split(self, min_samples_split: usize) -> Self
Set the minimum number of samples required to split a node.
Sourcepub fn with_min_samples_leaf(self, min_samples_leaf: usize) -> Self
pub fn with_min_samples_leaf(self, min_samples_leaf: usize) -> Self
Set the minimum number of samples required in a leaf node.
Sourcepub fn with_min_weight_fraction_leaf(self, min_weight_fraction_leaf: F) -> Self
pub fn with_min_weight_fraction_leaf(self, min_weight_fraction_leaf: F) -> Self
Set the minimum weighted fraction of the total sample weight required at
a leaf (sklearn min_weight_fraction_leaf, _classes.py:946).
Sourcepub fn with_min_impurity_decrease(self, min_impurity_decrease: F) -> Self
pub fn with_min_impurity_decrease(self, min_impurity_decrease: F) -> Self
Set the minimum tree-normalized weighted impurity decrease required to
split a node (sklearn min_impurity_decrease, _classes.py:946).
Sourcepub fn with_ccp_alpha(self, ccp_alpha: F) -> Self
pub fn with_ccp_alpha(self, ccp_alpha: F) -> Self
Set the complexity parameter for Minimal Cost-Complexity Pruning
(sklearn ccp_alpha, _classes.py:946, default 0.0).
Sourcepub fn with_max_leaf_nodes(self, max_leaf_nodes: Option<usize>) -> Self
pub fn with_max_leaf_nodes(self, max_leaf_nodes: Option<usize>) -> Self
Set the maximum number of leaf nodes (sklearn max_leaf_nodes,
_classes.py:946, default None). Some(k) switches the build to
best-first growth (BestFirstTreeBuilder, _tree.pyx:407).
Sourcepub fn with_criterion(self, criterion: ClassificationCriterion) -> Self
pub fn with_criterion(self, criterion: ClassificationCriterion) -> Self
Set the splitting criterion.
Sourcepub fn with_class_weight(self, class_weight: ClassWeight<F>) -> Self
pub fn with_class_weight(self, class_weight: ClassWeight<F>) -> Self
Set the per-class weighting (sklearn class_weight, _classes.py:801).
ClassWeight::None (default) leaves every class at 1.0;
ClassWeight::Balanced uses n_samples / (n_classes · count_c);
ClassWeight::Explicit takes a per-class-label weight map
(compute_class_weight, class_weight.py:20). The weights are expanded
to per-sample weights at fit and fold into every weighted node quantity.
Trait Implementations§
Source§impl<F: Clone> Clone for DecisionTreeClassifier<F>
impl<F: Clone> Clone for DecisionTreeClassifier<F>
Source§fn clone(&self) -> DecisionTreeClassifier<F>
fn clone(&self) -> DecisionTreeClassifier<F>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<F: Debug> Debug for DecisionTreeClassifier<F>
impl<F: Debug> Debug for DecisionTreeClassifier<F>
Source§impl<F: Float> Default for DecisionTreeClassifier<F>
impl<F: Float> Default for DecisionTreeClassifier<F>
Source§impl<'de, F> Deserialize<'de> for DecisionTreeClassifier<F>where
F: Deserialize<'de>,
impl<'de, F> Deserialize<'de> for DecisionTreeClassifier<F>where
F: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<F: Float + Send + Sync + 'static> Fit<ArrayBase<OwnedRepr<F>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<usize>, Dim<[usize; 1]>>> for DecisionTreeClassifier<F>
impl<F: Float + Send + Sync + 'static> Fit<ArrayBase<OwnedRepr<F>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<usize>, Dim<[usize; 1]>>> for DecisionTreeClassifier<F>
Source§fn fit(
&self,
x: &Array2<F>,
y: &Array1<usize>,
) -> Result<FittedDecisionTreeClassifier<F>, FerroError>
fn fit( &self, x: &Array2<F>, y: &Array1<usize>, ) -> Result<FittedDecisionTreeClassifier<F>, FerroError>
Fit the decision tree classifier on the training data.
§Errors
Returns FerroError::ShapeMismatch if x and y have different
numbers of samples.
Returns FerroError::InsufficientSamples if there are no samples.
Returns FerroError::InvalidParameter if hyperparameters are invalid.
Source§type Fitted = FittedDecisionTreeClassifier<F>
type Fitted = FittedDecisionTreeClassifier<F>
fit.Source§type Error = FerroError
type Error = FerroError
fit.Source§impl<F: Float + ToPrimitive + FromPrimitive + Send + Sync + 'static> PipelineEstimator<F> for DecisionTreeClassifier<F>
impl<F: Float + ToPrimitive + FromPrimitive + Send + Sync + 'static> PipelineEstimator<F> for DecisionTreeClassifier<F>
Source§fn fit_pipeline(
&self,
x: &Array2<F>,
y: &Array1<F>,
) -> Result<Box<dyn FittedPipelineEstimator<F>>, FerroError>
fn fit_pipeline( &self, x: &Array2<F>, y: &Array1<F>, ) -> Result<Box<dyn FittedPipelineEstimator<F>>, FerroError>
Auto Trait Implementations§
impl<F> Freeze for DecisionTreeClassifier<F>where
F: Freeze,
impl<F> RefUnwindSafe for DecisionTreeClassifier<F>where
F: RefUnwindSafe,
impl<F> Send for DecisionTreeClassifier<F>where
F: Send,
impl<F> Sync for DecisionTreeClassifier<F>where
F: Sync,
impl<F> Unpin for DecisionTreeClassifier<F>where
F: Unpin,
impl<F> UnsafeUnpin for DecisionTreeClassifier<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for DecisionTreeClassifier<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more