pyppur.optimizers package

Optimization methods for projection pursuit.

class pyppur.optimizers.GridOptimizer(objective_func: Callable[[...], float], n_components: int, n_directions: int = 250, n_iterations: int = 10, max_iter: int = 1000, tol: float = 1e-06, random_state: int | None = None, verbose: bool = False, **kwargs: Any)[source]

Bases: BaseOptimizer

Optimizer using a grid-based search approach.

This optimizer is particularly useful for projection indices that are not differentiable or have many local minima. It systematically explores the space of projection directions using a grid-based approach.

optimize(X: ndarray, initial_guess: ndarray | None = None, **kwargs: Any) tuple[ndarray, float, dict[str, Any]][source]

Optimize the projection directions using a grid-based approach.

Parameters:
  • X – Input data, shape (n_samples, n_features).

  • initial_guess – Optional initial guess for projection directions.

  • **kwargs – Additional arguments for the objective function.

Returns:

  • Optimized projection directions, shape (n_components, n_features)

  • Final objective value

  • Additional optimizer information

Return type:

Tuple containing

class pyppur.optimizers.ScipyOptimizer(objective_func: Callable[[...], float], n_components: int, method: str = 'L-BFGS-B', max_iter: int = 1000, tol: float = 1e-06, random_state: int | None = None, verbose: bool = False, **kwargs: Any)[source]

Bases: BaseOptimizer

Optimizer using SciPy’s optimization methods.

This optimizer leverages SciPy’s optimization functionality, particularly the L-BFGS-B method which is well-suited for projection pursuit problems.

optimize(X: ndarray, initial_guess: ndarray | None = None, **kwargs: Any) tuple[ndarray, float, dict[str, Any]][source]

Optimize the projection directions using SciPy’s optimization methods.

Parameters:
  • X – Input data, shape (n_samples, n_features).

  • initial_guess – Optional initial guess for projection directions.

  • **kwargs – Additional arguments for the objective function.

Returns:

  • Optimized projection directions, shape (n_components, n_features)

  • Final objective value

  • Additional optimizer information

Return type:

Tuple containing

Submodules

pyppur.optimizers.base module

Base class for optimization methods.

pyppur.optimizers.scipy_optimizer module

SciPy-based optimizer for projection pursuit.

pyppur.optimizers.scipy_optimizer.normalize_projection_directions(a_flat: ndarray, n_components: int, n_features: int) ndarray[source]

Normalize the encoder projection directions to unit norm.

Parameters:
  • a_flat – Flattened parameter vector.

  • n_components – Number of projection components.

  • n_features – Number of features.

Returns:

Normalized parameter vector.

pyppur.optimizers.grid_optimizer module

Grid-based optimizer for projection pursuit.