# Clustering


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## GMM

------------------------------------------------------------------------

<a
href="https://github.com/qic-ibk/qdisc/blob/main/qdisc/clustering/core.py#L204"
target="_blank" style="float:right; font-size:smaller">source</a>

### select_n_components

``` python

def select_n_components(
    X, ks, n_init:int=5, max_iter:int=100, covariant_reg:float=1e-06, init_params:str='kmeans', random_seed:int=0
):

```

*Try multiple K values and several initializations, return a summary
dict.*

Returns: results: dict keyed by K containing the best model and metrics
(bic, aic, avg_log_lik, silhouette if possible).

------------------------------------------------------------------------

<a
href="https://github.com/qic-ibk/qdisc/blob/main/qdisc/clustering/core.py#L18"
target="_blank" style="float:right; font-size:smaller">source</a>

### GaussianMixture

``` python

def GaussianMixture(
    n_components, tol:float=1e-06, max_iter:int=100, reg_covar:float=1e-06, init_params:str='kmeans'
):

```

*Gaussian Mixture Model with EM algorithm and K-means initialization.*

Args:

    n_components (int): Number of Gaussian components.
    tol (float): Convergence tolerance.
    max_iter (int): Maximum number of EM iterations.
    reg_covar (float): Regularization for covariance matrix.
    init_params (str): Initialization method ('kmeans' or 'random').

------------------------------------------------------------------------

<a
href="https://github.com/qic-ibk/qdisc/blob/main/qdisc/clustering/core.py#L79"
target="_blank" style="float:right; font-size:smaller">source</a>

### GaussianMixture.fit

``` python

def fit(
    X, key:ArrayImpl=Array([0, 0], dtype=uint32)
):

```

*Fit the Gaussian mixture model using EM.*

X : array (N, D) key : PRNGKey for random init
