use std::{i32, f32};
pub struct Confusionmatrix {
pub true_positive: i32,
pub true_negative: i32,
pub false_positive: i32,
pub false_negative: i32,
}
impl Confusionmatrix {
pub fn total(&self) -> i32 {
self.true_positive + self.true_negative + self.false_positive + self.false_negative
}
pub fn accuracy(&self) -> f32 {
percentage((self.true_positive as f32 + self.true_negative as f32) / (self.total() as f32))
}
pub fn precision(&self) -> f32 {
percentage((self.true_positive as f32) /
(self.true_positive as f32 + self.false_positive as f32))
}
pub fn true_poitive_rate(&self) -> f32 {
percentage((self.true_positive as f32) /
(self.true_positive as f32 + self.false_negative as f32))
}
pub fn false_positive_rate(&self) -> f32 {
percentage((self.false_positive as f32) /
(self.false_positive as f32 + self.true_negative as f32))
}
pub fn misclassification_rate(&self) -> f32 {
percentage((self.false_positive as f32 + self.false_negative as f32) /
(self.total() as f32))
}
pub fn specificity(&self) -> f32 {
percentage((self.true_negative as f32) /
(self.false_positive as f32 + self.true_negative as f32))
}
pub fn prevalance(&self) -> f32 {
percentage((self.true_positive as f32 + self.false_negative as f32) / (self.total() as f32))
}
}
fn percentage(value: f32) -> f32 {
value as f32 * 100.0
}