RandomForestClassifier

Struct RandomForestClassifier 

Source
pub struct RandomForestClassifier<XT: Number, YT: WholeNumber> { /* private fields */ }

Implementations§

Source§

impl<XT: Number, YT: WholeNumber> RandomForestClassifier<XT, YT>

This module contains the implementation of the RandomForestClassifier struct.

The RandomForestClassifier is a machine learning algorithm that combines multiple decision trees to make predictions. It is used for classification tasks where the input features are of type XT and the target labels are of type YT.

§Example

use rusty_ai::forests::classifier::RandomForestClassifier;
use rusty_ai::data::dataset::Dataset;
use nalgebra::{DMatrix, DVector};

// Create a mock dataset
let x = DMatrix::from_row_slice(
    6,
    2,
    &[1.0, 2.0, 1.1, 2.1, 1.2, 2.2, 3.0, 4.0, 3.1, 4.1, 3.2, 4.2],
);
let y = DVector::from_vec(vec![0, 0, 0, 1, 1, 1]);
let dataset = Dataset::new(x, y);

// Create a random forest classifier with default parameters
let mut forest = RandomForestClassifier::<f64, u8>::default();

// Fit the classifier to the dataset
forest.fit(&dataset, Some(42)).unwrap();

// Make predictions on new features
let features = DMatrix::from_row_slice(
    2,
    2,
    &[
        1.0, 2.0, // Should be classified as class 0
        3.0, 4.0, // Should be classified as class 1
    ],
);
let predictions = forest.predict(&features).unwrap();
println!("Predictions: {:?}", predictions);
Source

pub fn new() -> Self

Creates a new instance of the Random Forest Classifier.

This function initializes the classifier with empty frequency maps and an empty vector to store the count of unique feature values.

§Returns

A new instance of the Random Forest Classifier.

Source

pub fn with_params( num_trees: Option<usize>, min_samples_split: Option<u16>, max_depth: Option<u16>, criterion: Option<String>, sample_size: Option<usize>, ) -> Result<Self, Box<dyn Error>>

Creates a new instance of the Random Forest Classifier with specified parameters.

§Arguments
  • num_trees - The number of trees in the forest. If not specified, defaults to 3.
  • min_samples_split - The minimum number of samples required to split an internal node. If not specified, defaults to 2.
  • max_depth - The maximum depth of the decision trees. If not specified, defaults to None.
  • criterion - The function to measure the quality of a split. If not specified, defaults to “gini”.
  • sample_size - The size of the random subsets of the dataset to train each tree. If not specified, defaults to None.
§Returns

A Result containing the Random Forest Classifier instance or an error.

Source

pub fn set_trees(&mut self, trees: Vec<DecisionTreeClassifier<XT, YT>>)

Sets the decision trees of the random forest.

§Arguments
  • trees - A vector of DecisionTreeClassifier instances.
Source

pub fn set_num_trees(&mut self, num_trees: usize) -> Result<(), Box<dyn Error>>

Sets the number of trees in the random forest.

§Arguments
  • num_trees - The number of trees.
§Returns

A Result indicating success or an error.

Source

pub fn set_sample_size( &mut self, sample_size: Option<usize>, ) -> Result<(), Box<dyn Error>>

Sets the sample size for each tree in the random forest.

§Arguments
  • sample_size - The sample size.
§Returns

A Result indicating success or an error.

Source

pub fn set_min_samples_split( &mut self, min_samples_split: u16, ) -> Result<(), Box<dyn Error>>

Sets the minimum number of samples required to split an internal node in each decision tree.

§Arguments
  • min_samples_split - The minimum number of samples.
§Returns

A Result indicating success or an error.

Source

pub fn set_max_depth( &mut self, max_depth: Option<u16>, ) -> Result<(), Box<dyn Error>>

Sets the maximum depth of each decision tree in the random forest.

§Arguments
  • max_depth - The maximum depth.
§Returns

A Result indicating success or an error.

Source

pub fn set_criterion(&mut self, criterion: String) -> Result<(), Box<dyn Error>>

Sets the criterion function to measure the quality of a split in each decision tree.

§Arguments
  • criterion - The criterion function.
§Returns

A Result indicating success or an error.

Source

pub fn trees(&self) -> &Vec<DecisionTreeClassifier<XT, YT>>

Returns a reference to the decision trees in the random forest.

Source

pub fn num_trees(&self) -> usize

Returns the number of trees in the random forest.

Source

pub fn sample_size(&self) -> Option<usize>

Returns the sample size for each tree in the random forest.

Source

pub fn min_samples_split(&self) -> u16

Returns the minimum number of samples required to split an internal node in each decision tree.

Source

pub fn max_depth(&self) -> Option<u16>

Returns the maximum depth of each decision tree in the random forest.

Source

pub fn criterion(&self) -> &String

Returns a reference to the criterion function used to measure the quality of a split in each decision tree.

Source

pub fn fit( &mut self, dataset: &Dataset<XT, YT>, seed: Option<u64>, ) -> Result<String, Box<dyn Error>>

Fits the random forest to the given dataset.

§Arguments
  • dataset - The dataset to fit the random forest to.
  • seed - The seed for the random number generator used to generate random subsets of the dataset. If not specified, a random seed will be used.
§Returns

A Result indicating whether the fitting process was successful or an error occurred.

Source

pub fn predict( &self, features: &DMatrix<XT>, ) -> Result<DVector<YT>, Box<dyn Error>>

Predicts the class labels for the given features using the random forest.

§Arguments
  • features - The features to predict the class labels for.
§Returns

A Result containing a vector of predicted class labels or an error if the prediction process fails.

Trait Implementations§

Source§

impl<XT: Number, YT: WholeNumber> ClassificationMetrics<YT> for RandomForestClassifier<XT, YT>

Source§

fn confusion_matrix( &self, y_true: &DVector<T>, y_pred: &DVector<T>, ) -> Result<DMatrix<usize>, Box<dyn Error>>

Computes the confusion matrix based on the true labels and predicted labels. Read more
Source§

fn accuracy( &self, y_true: &DVector<T>, y_pred: &DVector<T>, ) -> Result<f64, Box<dyn Error>>

Computes the accuracy based on the true labels and predicted labels. Read more
Source§

fn precision( &self, y_true: &DVector<T>, y_pred: &DVector<T>, ) -> Result<f64, Box<dyn Error>>

Computes the precision based on the true labels and predicted labels. Read more
Source§

fn recall( &self, y_true: &DVector<T>, y_pred: &DVector<T>, ) -> Result<f64, Box<dyn Error>>

Computes the recall based on the true labels and predicted labels. Read more
Source§

fn f1_score( &self, y_true: &DVector<T>, y_pred: &DVector<T>, ) -> Result<f64, Box<dyn Error>>

Computes the F1 score based on the true labels and predicted labels. Read more
Source§

impl<XT: Clone + Number, YT: Clone + WholeNumber> Clone for RandomForestClassifier<XT, YT>

Source§

fn clone(&self) -> RandomForestClassifier<XT, YT>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<XT: Debug + Number, YT: Debug + WholeNumber> Debug for RandomForestClassifier<XT, YT>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<XT: Number, YT: WholeNumber> Default for RandomForestClassifier<XT, YT>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<XT, YT> Freeze for RandomForestClassifier<XT, YT>

§

impl<XT, YT> RefUnwindSafe for RandomForestClassifier<XT, YT>

§

impl<XT, YT> Send for RandomForestClassifier<XT, YT>

§

impl<XT, YT> Sync for RandomForestClassifier<XT, YT>

§

impl<XT, YT> Unpin for RandomForestClassifier<XT, YT>
where XT: Unpin,

§

impl<XT, YT> UnwindSafe for RandomForestClassifier<XT, YT>
where XT: UnwindSafe, YT: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V