Skip to main content

sklears_feature_selection/genetic_optimization/
featurecountobjective_traits.rs

1//! # FeatureCountObjective - Trait Implementations
2//!
3//! This module contains trait implementations for `FeatureCountObjective`.
4//!
5//! ## Implemented Traits
6//!
7//! - `ObjectiveFunction`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use super::functions::*;
12use super::types::*;
13use scirs2_core::ndarray::{Array1, Array2};
14use sklears_core::error::Result as SklResult;
15
16impl ObjectiveFunction for FeatureCountObjective {
17    fn evaluate(
18        &self,
19        _x: &Array2<f64>,
20        _y_classif: Option<&Array1<i32>>,
21        _y_regression: Option<&Array1<f64>>,
22        feature_mask: &[bool],
23    ) -> SklResult<f64> {
24        let n_selected = feature_mask.iter().filter(|&&selected| selected).count();
25        let n_total = feature_mask.len();
26        Ok(-(n_selected as f64) / (n_total as f64))
27    }
28    fn name(&self) -> &str {
29        "feature_count"
30    }
31    fn is_minimization(&self) -> bool {
32        true
33    }
34    fn clone_box(&self) -> Box<dyn ObjectiveFunction> {
35        Box::new(self.clone())
36    }
37}