Skip to main content

normalize_kernel_matrix

Function normalize_kernel_matrix 

Source
pub fn normalize_kernel_matrix(
    kernel_matrix: &[Vec<f64>],
) -> Result<Vec<Vec<f64>>>
Expand description

Normalize a kernel matrix to have unit diagonal entries.

Normalized kernel: K_norm(x,y) = K(x,y) / sqrt(K(x,x) * K(y,y))

This ensures all diagonal entries equal 1.0, which is useful for algorithms that assume normalized kernels.

§Arguments

  • kernel_matrix - Input kernel matrix (must be square)

§Returns

  • Normalized kernel matrix

§Examples

use tensorlogic_sklears_kernels::kernel_transform::normalize_kernel_matrix;

let K = vec![
    vec![4.0, 2.0, 1.0],
    vec![2.0, 9.0, 3.0],
    vec![1.0, 3.0, 16.0],
];

let K_norm = normalize_kernel_matrix(&K).unwrap();

// All diagonal entries should be 1.0
assert!((K_norm[0][0] - 1.0).abs() < 1e-10);
assert!((K_norm[1][1] - 1.0).abs() < 1e-10);
assert!((K_norm[2][2] - 1.0).abs() < 1e-10);