pyppur: Python Projection Pursuit Unsupervised Reduction¶
pyppur is a Python package that implements projection pursuit methods for dimensionality reduction. Unlike traditional methods such as PCA, pyppur focuses on finding interesting non-linear projections by minimizing either reconstruction loss or distance distortion.
Features¶
Two optimization objectives:
Distance Distortion: Preserves pairwise distances between data points (with optional nonlinearity)
Reconstruction: Minimizes reconstruction error using ridge functions (tied or untied weights)
Multiple initialization strategies (PCA-based and random)
Full scikit-learn compatible API
Supports standardization and custom weighting
Mathematical flexibility with configurable ridge functions and regularization
Quick Start¶
Installation¶
pip install pyppur
Basic Usage¶
import numpy as np
from pyppur import ProjectionPursuit, Objective
from sklearn.datasets import load_digits
# Load data
digits = load_digits()
X = digits.data
y = digits.target
# Projection pursuit with distance distortion
pp_dist = ProjectionPursuit(
n_components=2,
objective=Objective.DISTANCE_DISTORTION,
alpha=1.5,
n_init=3
)
# Fit and transform
X_transformed = pp_dist.fit_transform(X)
# Evaluate the embedding
metrics = pp_dist.evaluate(X, y)
print(f"Trustworthiness: {metrics['trustworthiness']:.3f}")
API Reference: