sklears_ensemble/voting/
config.rs1use scirs2_core::ndarray::Array1;
4use sklears_core::types::Float;
5
6#[derive(Debug, Clone, PartialEq)]
8pub enum VotingStrategy {
9 Hard,
11 Soft,
13 Weighted,
15 ConfidenceWeighted,
17 BayesianAveraging,
19 RankBased,
21 MetaVoting,
23 DynamicWeightAdjustment,
25 UncertaintyAware,
27 ConsensusBased,
29 EntropyWeighted,
31 VarianceWeighted,
33 BootstrapAggregation,
35 TemperatureScaled,
37 AdaptiveEnsemble,
39}
40
41#[derive(Debug, Clone)]
43pub struct VotingClassifierConfig {
44 pub voting: VotingStrategy,
45 pub weights: Option<Vec<Float>>,
46 pub confidence_weighting: bool,
47 pub confidence_threshold: Float,
48 pub min_confidence_weight: Float,
49 pub enable_uncertainty: bool,
50 pub temperature: Float,
51 pub meta_regularization: Float,
52 pub n_bootstrap_samples: usize,
53 pub uncertainty_method: UncertaintyMethod,
54 pub consensus_threshold: Float,
55 pub entropy_weight_factor: Float,
56 pub variance_weight_factor: Float,
57 pub weight_adjustment_rate: Float,
58}
59
60impl Default for VotingClassifierConfig {
61 fn default() -> Self {
62 Self {
63 voting: VotingStrategy::Hard,
64 weights: None,
65 confidence_weighting: false,
66 confidence_threshold: 0.5,
67 min_confidence_weight: 0.1,
68 enable_uncertainty: false,
69 temperature: 1.0,
70 meta_regularization: 0.0,
71 n_bootstrap_samples: 100,
72 uncertainty_method: UncertaintyMethod::Variance,
73 consensus_threshold: 0.7,
74 entropy_weight_factor: 1.0,
75 variance_weight_factor: 1.0,
76 weight_adjustment_rate: 0.1,
77 }
78 }
79}
80
81#[derive(Debug, Clone, PartialEq)]
83pub enum UncertaintyMethod {
84 Variance,
86 Entropy,
88 EnsembleDisagreement,
90 Confidence,
92 Combined,
94 Bootstrap,
96 MCDropout,
98 Bayesian,
100 TemperatureScaled,
102 Quantile,
104}
105
106#[derive(Debug, Clone)]
108pub struct EnsembleSizeRecommendations {
109 pub min_size: usize,
110 pub max_size: usize,
111 pub sweet_spot: usize,
112 pub diminishing_returns_threshold: usize,
113}
114
115#[derive(Debug, Clone)]
117pub struct EnsembleSizeAnalysis {
118 pub performance_curve: Array1<Float>,
119 pub diversity_curve: Array1<Float>,
120 pub optimal_size: usize,
121 pub performance_plateau_size: usize,
122 pub diversity_saturation_size: usize,
123}