pub mod map;
pub mod precision;
use crate::error::LtrError;
use crate::ranklist::RankList;
use crate::DataSet;
pub trait Evaluator: ToString {
fn evaluate_dataset(&self, dataset: &DataSet) -> Result<f32, LtrError> {
if dataset.is_empty() {
return Err(LtrError::EvaluationError(
"Error in Evaluator::evaluate_dataset: the dataset is empty.",
));
}
let mut score = 0.0f32;
for ranklist in dataset {
score += self.evaluate_ranklist(ranklist);
}
Ok(score / dataset.len() as f32)
}
fn evaluate_ranklist(&self, ranklist: &RankList) -> f32;
}