pub fn center_kernel_matrix(kernel_matrix: &[Vec<f64>]) -> Result<Vec<Vec<f64>>>Expand description
Center a kernel matrix by removing the mean in feature space.
Centered kernel: K_c = (I - 1/n * 11^T) K (I - 1/n * 11^T)
This transformation is required for kernel PCA to ensure the data is centered in feature space.
§Arguments
kernel_matrix- Input kernel matrix (must be square)
§Returns
- Centered kernel matrix
§Examples
use tensorlogic_sklears_kernels::kernel_transform::center_kernel_matrix;
let K = vec![
vec![1.0, 0.8, 0.6],
vec![0.8, 1.0, 0.7],
vec![0.6, 0.7, 1.0],
];
let K_centered = center_kernel_matrix(&K).unwrap();
// Row and column means should be approximately zero
let row_mean: f64 = K_centered[0].iter().sum::<f64>() / 3.0;
assert!(row_mean.abs() < 1e-10);