Skip to main content

minmax_scale_columns

Function minmax_scale_columns 

Source
pub fn minmax_scale_columns(x: &Tensor) -> Result<Tensor, MattenMlprepError>
Expand description

Scales each column to the [0, 1] range: out[i,j] = (x[i,j] - min_j) / (max_j - min_j).

ยงErrors

use matten::Tensor;
use matten_mlprep::minmax_scale_columns;

// Column 0: [0, 5, 10] -> [0, 0.5, 1].
let x = Tensor::new(vec![0.0, 5.0, 10.0], &[3, 1]);
let s = minmax_scale_columns(&x).unwrap();
assert_eq!(s.as_slice(), &[0.0, 0.5, 1.0]);
Examples found in repository?
examples/minmax_scale.rs (line 19)
16fn main() {
17    // 3 samples, 2 features.
18    let x = Tensor::new(vec![0.0, 100.0, 5.0, 150.0, 10.0, 200.0], &[3, 2]);
19    let s = minmax_scale_columns(&x).expect("two non-constant columns");
20    println!("input  shape {:?}: {:?}", x.shape(), x.as_slice());
21    println!("scaled shape {:?}: {:?}", s.shape(), s.as_slice());
22
23    // Per column: min -> 0.0, max -> 1.0 (column 0 = [0,5,10], column 1 = [100,150,200]).
24    assert_eq!(s.shape(), x.shape());
25    let ss = s.as_slice();
26    assert_eq!(ss[0], 0.0); // col 0 min
27    assert_eq!(ss[4], 1.0); // col 0 max
28    assert_eq!(ss[1], 0.0); // col 1 min
29    assert_eq!(ss[5], 1.0); // col 1 max
30    println!("minmax_scale: OK");
31}