Skip to main content

minmax_scaling/
minmax_scaling.rs

1//! Min-max (0–1) scaling of each column.
2//!
3//! Run: cargo run --example minmax_scaling
4
5use matten::Tensor;
6
7fn main() {
8    let data = Tensor::new(
9        vec![1.0, 10.0, 100.0, 2.0, 20.0, 200.0, 3.0, 30.0, 300.0],
10        &[3, 3],
11    );
12
13    // Column min and max using axis reductions
14    let col_min = data.min_axis(0);
15    let col_max = data.max_axis(0);
16    let range = &col_max - &col_min;
17
18    // Broadcast: (data - min) / (max - min)
19    let scaled = &(&data - &col_min) / ⦥
20
21    println!("col_min  = {:?}", col_min.as_slice());
22    println!("col_max  = {:?}", col_max.as_slice());
23    println!("scaled shape = {:?}", scaled.shape());
24
25    // First row should be all 0.0, last row all 1.0
26    let row0 = scaled.slice().index(0).all().build().unwrap();
27    let row2 = scaled.slice().index(2).all().build().unwrap();
28    assert!(row0.as_slice().iter().all(|&v| (v - 0.0).abs() < 1e-10));
29    assert!(row2.as_slice().iter().all(|&v| (v - 1.0).abs() < 1e-10));
30    println!("Min-max scaling: OK");
31}