use crate::dataset::BinnedDataset;
pub trait EnsembleMember: Send + Sync {
fn oof_predictions(&self) -> Option<(&[f32], &[usize])>;
fn predict(&self, dataset: &BinnedDataset) -> Vec<f32>;
fn model_id(&self) -> u64;
fn seed(&self) -> u64;
fn clone_boxed(&self) -> Box<dyn EnsembleMember>;
}
pub trait Stacker: Send + Sync {
fn fit(&mut self, oof_preds: &[Vec<f32>], targets: &[f32]);
fn combine(&self, predictions: &[Vec<f32>]) -> Vec<f32>;
fn weights(&self) -> Option<&[f32]>;
fn name(&self) -> &'static str;
}