44 lines
1.2 KiB
Rust
44 lines
1.2 KiB
Rust
extern crate blas_src;
|
|
|
|
use approx::assert_abs_diff_eq;
|
|
use kickscore as ks;
|
|
|
|
#[test]
|
|
fn kickscore_basic() {
|
|
let mut model = ks::model::Binary::probit();
|
|
|
|
let k_spike = ks::kernel::Constant::new(0.5);
|
|
let k_tom = ks::kernel::Exponential::new(1.0, 1.0);
|
|
let k_jerry = (
|
|
ks::kernel::Constant::new(1.0),
|
|
ks::kernel::Matern52::new(0.5, 1.0),
|
|
);
|
|
|
|
model.add_item("Spike", k_spike);
|
|
model.add_item("Tom", k_tom);
|
|
model.add_item("Jerry", k_jerry);
|
|
|
|
model.observe(&["Jerry"], &["Tom"], 0.0);
|
|
model.observe(&["Jerry"], &["Tom"], 0.9);
|
|
|
|
model.observe(&["Tom"], &["Spike"], 1.7);
|
|
model.observe(&["Tom"], &["Jerry"], 2.1);
|
|
|
|
model.observe(&["Jerry"], &["Tom"], 3.0);
|
|
model.observe(&["Jerry"], &["Tom", "Spike"], 3.5);
|
|
|
|
model.fit();
|
|
|
|
let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], 4.0);
|
|
|
|
assert_abs_diff_eq!(p_win, 0.7299975928462964, epsilon = f64::EPSILON);
|
|
|
|
let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], 2.0);
|
|
|
|
assert_abs_diff_eq!(p_win, 0.4705389648502623, epsilon = f64::EPSILON);
|
|
|
|
let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], -1.0);
|
|
|
|
assert_abs_diff_eq!(p_win, 0.7030407811954662, epsilon = f64::EPSILON);
|
|
}
|