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);