Quick Start¶
This guide walks through a complete example: training a GLVQ classifier on the Iris dataset, making predictions, and inspecting the results.
Loading Data¶
Prosemble provides built-in dataset loaders that return JAX arrays:
from prosemble.datasets import load_iris_jax
from prosemble.core.utils import train_test_split_jax
dataset = load_iris_jax()
X, y = dataset.input_data, dataset.labels
X_train, X_test, y_train, y_test = train_test_split_jax(
X, y, test_size=0.2, random_seed=42
)
Training a Model¶
All supervised models follow the same fit / predict API:
from prosemble.models import GLVQ
model = GLVQ(
n_prototypes_per_class=2,
max_iter=100,
lr=0.01,
random_seed=42,
)
model.fit(X_train, y_train)
print(f"Converged in {model.n_iter_} iterations")
print(f"Final loss: {model.loss_:.4f}")
Making Predictions¶
import jax.numpy as jnp
predictions = model.predict(X_test)
accuracy = float(jnp.mean(predictions == y_test))
print(f"Test accuracy: {accuracy:.2%}")
# Class probabilities
probabilities = model.predict_proba(X_test)
Inspecting the Model¶
After training, fitted attributes are available:
# Prototype positions and labels
print(model.prototypes_.shape) # (n_prototypes, n_features)
print(model.prototype_labels_) # class label per prototype
# Training history
print(model.loss_history_[-5:]) # last 5 loss values
Unsupervised Models¶
Clustering models use the same pattern, without labels:
from prosemble.models import FCM
fcm = FCM(n_clusters=3, fuzzifier=2.0, max_iter=100)
fcm.fit(X_train)
labels = fcm.predict(X_test)
membership = fcm.predict_proba(X_test) # fuzzy membership matrix
print(fcm.centroids_.shape) # (n_clusters, n_features)
Next Steps¶
Supervised Models — Full guide to supervised LVQ models
Fuzzy Clustering — Fuzzy clustering models
Topology-Preserving Models — Neural Gas, SOM, and topology models
One-Class Classification — One-class classification
Advanced Features — JIT compilation, mixed precision, checkpointing