Repository navigation
auto_math_kernel_density_and_coherence_3
github-actions[bot] edited this page Nov 14, 2025
·
1 revision
from sklearn.decomposition import PCA
def fit_kde_with_pca(traces: np.ndarray, M: np.ndarray,
n_components: int = 3) -> tuple:
"""
Fit KDE after PCA dimensionality reduction.
Args:
traces: High-dimensional data (n x d).
M: Metric matrix (d x d).
n_components: Target dimensionality.
Returns:
Tuple of (estimator, pca_transformer).
"""
estimator = CoherenceEstimator()
Z = estimator._whiten(traces, M)
pca = PCA(n_components=n_components)
Z_reduced = pca.fit_transform(Z)
estimator.kde = gaussian_kde(Z_reduced.T)
estimator.pca = pca
variance_explained = pca.explained_variance_ratio_.sum()
print(f"Variance retained: {variance_explained:.2%}")
return estimator, pca
# Example
traces_high_dim = np.random.randn(100, 20)
M_high_dim = np.eye(20)
est, pca = fit_kde_with_pca(traces_high_dim, M_high_dim, n_components=5)