Installs into .claude/skills of the current project.
Are you the author of Classical Estimators?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-classical-estimators)
---
name: classical-estimators
description: "Use this sub-skill for MLAlgorithms supervised tabular estimators:
linear/logistic regression, KNN, Naive Bayes, SVM kernels, random forests,
gradient boosting, and experimental factorization machines."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# Classical Estimators
Use this sub-skill when a task asks for MLAlgorithms' CPU-only supervised learning APIs, estimator selection, fit/predict examples, or debugging for tabular models. The package exposes scikit-learn-like classes but is intentionally minimal and educational; prefer explicit NumPy arrays, small datasets, and direct metric checks.
## Route elsewhere
- Clustering, Gaussian mixtures, PCA, t-SNE, RBM, and package demo dataset loaders belong in `../unsupervised-and-reduction/SKILL.md`.
- The custom `NeuralNet` stack, MLP/CNN/RNN/LSTM recipes, optimizers, activations, and DQN belong in `../neural-network-building-blocks/SKILL.md`.
- Repo-wide install/import checks, package compatibility, provenance, and cross-cutting metrics are summarized in the root skill.
## Start here
1. Confirm the environment imports the package and scientific stack:
```bash
python - <<'PY'
import mla, numpy, scipy, sklearn, autograd
from mla.linear_models import LinearRegression, LogisticRegression
print("mla import ok")
PY
```
2. Pick the estimator family from the data and output shape:
- Continuous targets: `LinearRegression`, `KNNRegressor`, `RandomForestRegressor`, `GradientBoostingRegressor`; treat `FMRegressor` as experimental in this version.
- Binary class labels `{0, 1}`: `LogisticRegression`, `NaiveBayesClassifier`, tree/boosting classifiers, KNN.
- SVM: convert labels to `{-1, 1}` before fitting.
3. Convert inputs to NumPy arrays before calling `fit`. The shared `BaseEstimator` converts array-like inputs, but explicit arrays make shapes and dtype errors easier to diagnose.
4. After `fit`, call `predict(X_test)` and validate with `mla.metrics` or an external metric such as `sklearn.metrics.roc_auc_score`.
5. For a deterministic smoke check, run `scripts/run_classical_smoke.py` from this sub-skill. It uses small synthetic datasets and does not read original repository examples.
## Primary workflows
### Linear and logistic regression
Use `mla.linear_models.LinearRegression` for continuous targets and `LogisticRegression` for binary probabilities. Both use gradient descent, so `lr`, `max_iters`, `tolerance`, `penalty`, and `C` directly affect convergence.
```python
import numpy as np
from mla.linear_models import LogisticRegression
from mla.metrics.metrics import accuracy
X = np.asarray([[0.0], [0.2], [1.0], [1.2]])
y = np.asarray([0, 0, 1, 1])
model = LogisticRegression(lr=0.01, max_iters=200, penalty="l1", C=0.01)
model.fit(X, y)
proba = model.predict(np.asarray([[0.1], [1.1]]))
labels = (proba >= 0.5).astype(int)
```
### K-nearest neighbors
Use `KNNClassifier` or `KNNRegressor` for simple instance-based baselines. The default distance function is `scipy.spatial.distance.euclidean`; pass another two-argument distance callable when needed. Set `k=0` to use all training examples.
### Naive Bayes
`NaiveBayesClassifier` implements Gaussian Naive Bayes for binary labels exactly `[0, 1]`. It returns normalized class-probability rows. Avoid constant-variance features unless you add preprocessing, because the Gaussian PDF divides by per-class variance.
### SVM kernels
Import kernels from the repository's real module spelling, `mla.svm.kernerls`:
```python
from mla.svm.svm import SVM
from mla.svm.kernerls import Linear, Poly, RBF
signed_y = (binary_y * 2) - 1
model = SVM(C=0.6, kernel=RBF(gamma=0.05), max_iter=200)
model.fit(X_train, signed_y)
pred = model.predict(X_test)
```
### Tree ensembles and boosting
Use `RandomForestClassifier`/`Regressor` for bagged decision trees and `GradientBoostingClassifier`/`Regressor` for additive trees. Keep `max_features` less than the number of columns when you pass it explicitly.
### Factorization machines
`FMRegressor` and `FMClassifier` exist in the package and expose the `BaseFM` constructor, but the current source initializes loss functions after the base training call. Treat these classes as experimental and verify a focused smoke before relying on `fit`.
## Bundled references and helpers
- Read `references/api-reference.md` for import paths, signatures, outputs, and version-specific caveats.
- Read `references/workflows.md` for supervised recipes and model-family selection guidance.
- Read `references/troubleshooting.md` when fitting fails, scores are unstable, labels have the wrong encoding, or dependency versions drift.
- Run `scripts/run_classical_smoke.py --workflow all` to test a small installed-package baseline without original examples or downloads.