pgcuts.metrics

Clustering evaluation metrics and graph cut objectives.

Clustering evaluation

pgcuts.metrics.evaluate_clustering(true_labels, cluster_assignments, num_classes, num_clusters=-1)[source]

Evaluate clustering performance.

Parameters:
  • true_labels (ndarray) – True labels.

  • cluster_assignments (ndarray) – Predicted clusters.

  • num_classes (int) – Number of true classes.

  • num_clusters (int) – Number of predicted clusters.

Returns:

Dict with accuracy, NMI, confusion matrix.

Return type:

Dict

pgcuts.metrics.nmi_score(true_labels, cluster_labels)[source]

Compute normalized mutual information.

Parameters:
  • true_labels – True labels.

  • cluster_labels – Cluster labels.

Returns:

NMI score.

pgcuts.metrics.ari_score(y_true, y_pred)[source]

Compute adjusted Rand index.

Parameters:
  • y_true – True labels.

  • y_pred – Predicted labels.

Returns:

ARI score.

pgcuts.metrics.cluster_acc_score(y_true, y_pred)[source]

Compute cluster accuracy score.

Parameters:
  • y_true – True labels.

  • y_pred – Predicted labels.

Returns:

Accuracy score.

Label assignment

pgcuts.metrics.assign_clusters(true_labels, cluster_assignments, num_classes, num_clusters=-1)[source]

Assign clusters based on optimal matching.

Parameters:
  • true_labels (ndarray) – True labels.

  • cluster_assignments (ndarray) – Predicted clusters.

  • num_classes (int) – Number of true classes.

  • num_clusters (int) – Number of predicted clusters.

Returns:

Transformed cluster assignments.

Return type:

ndarray

pgcuts.metrics.assign_unique_clusters(true_labels, cluster_assignments, num_clusters)[source]

Assign clusters using Munkres algorithm.

Parameters:
  • true_labels (ndarray) – True labels.

  • cluster_assignments (ndarray) – Predicted clusters.

  • num_clusters (int) – Number of clusters.

Returns:

Transformed predictions.

Return type:

ndarray

Graph objectives

pgcuts.metrics.compute_rcut_ncut(w_mat, labels)[source]

Compute ratio cut and normalized cut values.

Parameters:
  • w_mat – Sparse or dense weight matrix.

  • labels – Integer cluster labels.

Returns:

(rcut, ncut) tuple.

Return type:

Tuple[float, float]

pgcuts.metrics.ratio_cut_score(w_mat, y, num_clusters)[source]

Compute ratio cut value for a graph.

Parameters:
  • w_mat – Adjacency matrix.

  • y – Cluster assignments.

  • num_clusters – Number of clusters.

Returns:

Ratio cut value.

Soft objectives

pgcuts.metrics.soft_ncut(w_sparse, probs, degrees=None)[source]

Soft (expected) normalized cut.

Parameters:
  • w_sparse – Sparse adjacency matrix (n, n).

  • probs – Soft assignments, shape (n, K).

  • degrees – Optional precomputed degrees.

Returns:

Soft NCut value (float).

pgcuts.metrics.soft_rcut(w_sparse, probs)[source]

Soft (expected) ratio cut.

Parameters:
  • w_sparse – Sparse adjacency matrix (n, n).

  • probs – Soft assignments, shape (n, K).

Returns:

Soft RCut value (float).