Chapter 06: Ensemble Methods
Contract:
apr-book-ch06
Run: cargo run -p aprender-core --example ch06_ensembles
#![allow(clippy::disallowed_methods)]
//! Chapter 6: Ensemble Methods
//!
//! Demonstrates RandomForestClassifier on separable data.
//! Citation: Chen & Guestrin, "XGBoost," arXiv:1603.02754
//! Contract: contracts/apr-book-ch06-v1.yaml
use aprender::primitives::Matrix;
use aprender::tree::RandomForestClassifier;
use aprender::metrics::classification::accuracy;
fn main() {
// Simple classification dataset
let x = Matrix::from_vec(6, 2, vec![
1.0, 2.0, 2.0, 3.0, 3.0, 1.0, 6.0, 5.0, 7.0, 8.0, 8.0, 6.0,
])
.expect("valid 6x2 matrix");
let y: Vec<usize> = vec![0, 0, 0, 1, 1, 1];
// Random forest classifier
let mut rf = RandomForestClassifier::new(10).with_random_state(42);
rf.fit(&x, &y).expect("random forest fit");
let preds = rf.predict(&x);
let acc = accuracy(&preds, &y);
println!("RandomForest accuracy: {acc:.2}");
assert!(acc >= 0.8, "RF training accuracy contract");
println!("Ensemble: 10 trees (Breiman, 2001)");
println!("Chapter 6 contracts: PASSED");
}