sklears_feature_selection/genetic_optimization/
featurecountobjective_traits.rs1use 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}