"Use this sub-skill for MLAlgorithms clustering, Gaussian mixtures,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill unsupervised-and-reduction --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Unsupervised And Reduction?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-unsupervised-and-reduction)More formats (shields.io, HTML) on the badges page.
---
name: unsupervised-and-reduction
description: "Use this sub-skill for MLAlgorithms clustering, Gaussian mixtures,
PCA, t-SNE, RBM feature learning, metrics/distances, and packaged demo dataset
loaders."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# Unsupervised and Reduction
Use this sub-skill when a task asks for MLAlgorithms' unsupervised estimators, dimensionality reduction, small visualization-oriented workflows, RBM feature learning, or demo data loaders. These APIs are CPU-only educational implementations; keep workloads small and validate output shapes or assignments before scaling.
## Route elsewhere
- Supervised regression/classification, SVM kernels, random forests, gradient boosting, KNN supervised modes, and factorization machines belong in `../classical-estimators/SKILL.md`.
- The custom neural-network container, layer stack, optimizers, CNN/RNN/LSTM recipes, and DQN belong in `../neural-network-building-blocks/SKILL.md`.
- Cross-cutting installation, provenance, and route selection are in the root skill.
## Start here
1. Confirm the public imports you need:
```python
from mla.kmeans import KMeans
from mla.gaussian_mixture import GaussianMixture
from mla.pca import PCA
from mla.tsne import TSNE
from mla.rbm import RBM
from mla.datasets import load_mnist, load_nietzsche
```
2. Choose the workflow:
- Cluster assignments: `KMeans(K=..., init="random"|"++")`.
- Soft density-style clusters: `GaussianMixture(K=..., init="random"|"kmeans")`.
- Linear reduction for downstream models: `PCA(n_components, solver="svd"|"eigen")`.
- 2D nonlinear visualization: `TSNE(n_components=2, perplexity=..., max_iter=...)`.
- Binary/continuous unsupervised features: `RBM(n_hidden=..., max_epochs=...)`.
3. Avoid plotting in headless or automated runs; inspect returned labels, component shapes, likelihoods, embeddings, or errors instead.
4. Run `scripts/run_unsupervised_smoke.py --workflow all` for a safe no-display check.
## Common workflows
### KMeans clustering
```python
from sklearn.datasets import make_blobs
from mla.kmeans import KMeans
X, _ = make_blobs(n_samples=120, centers=3, n_features=2, random_state=42)
model = KMeans(K=3, max_iters=50, init="++")
model.fit(X)
labels = model.predict() # labels for the fitted training data
centroids = model.centroids
```
Call `fit(X)` before `predict()`. `KMeans.predict()` without an argument returns assignments for the stored training data because the class overrides `_predict` around `self.X`.
### Gaussian mixture model
```python
from mla.gaussian_mixture import GaussianMixture
model = GaussianMixture(K=3, init="kmeans", max_iters=50, tolerance=1e-3)
model.fit(X)
assignments = model.predict(X)
```
GMM uses full covariance matrices and SciPy's `multivariate_normal.pdf`. Tiny or duplicate clusters can produce singular-covariance failures; increase samples, reduce `K`, or add slight jitter.
### PCA reduction
```python
from mla.pca import PCA
pca = PCA(n_components=2, solver="svd")
pca.fit(X_train)
X_train_2d = pca.transform(X_train)
X_test_2d = pca.transform(X_test)
```
Fit PCA on training data only, then transform held-out data with the learned mean and components.
### t-SNE embedding
```python
from mla.tsne import TSNE
embedding = TSNE(n_components=2, perplexity=10.0, max_iter=250, learning_rate=200).fit_transform(X)
```
Use t-SNE for visualization-style embeddings rather than predictive features. Keep sample counts small; this implementation uses dense pairwise distances and a Python loop.
### RBM feature learning
```python
import numpy as np
from mla.rbm import RBM
X = np.random.RandomState(0).uniform(0, 1, (100, 8))
rbm = RBM(n_hidden=4, learning_rate=0.05, batch_size=10, max_epochs=5)
rbm.fit(X)
features = rbm.predict(X)
```
RBM stores per-epoch reconstruction errors in `rbm.errors`.
### Demo dataset loaders
`load_mnist()` returns `(X_train, X_test, y_train, y_test)` with image arrays shaped for the ConvNet example. `load_nietzsche()` creates one-hot text sequences for recurrent examples. Both read package data shipped with the distribution; do not copy those datasets into generated skills. With modern NumPy, `load_nietzsche()` may need `numpy<1.24` or a source patch because it uses deprecated `np.bool`.
## Bundled references and helpers
- Read `references/api-reference.md` for import paths, signatures, state attributes, and outputs.
- Read `references/workflows.md` for cluster/reduction/RBM recipes and validation ideas.
- Read `references/troubleshooting.md` for singular covariance, plotting, data-loader, t-SNE runtime, and NumPy compatibility issues.
- Run `scripts/run_unsupervised_smoke.py --workflow all` to exercise small no-display checks against an installed `mla` package.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!