Software
spdal
Single-pass, discard-after-learn hyperellipsoid classifiers for online learning
spdal implements a family of classifiers that see each training sample once and then discard it, so the full dataset is never stored. Every classifier follows scikit-learn’s partial_fit / predict interface and can be dropped into an existing pipeline.
pip install spdalfrom sklearn.datasets import make_classification
from spdal import TRACED
import numpy as np
X, y = make_classification(n_samples=500, random_state=42)
classes = np.unique(y)
clf = TRACED()
for i in range(0, 400, 50): # stream the data in chunks
clf.partial_fit(X[i:i+50], y[i:i+50], classes=classes)
print(clf.predict(X[400:]))Included classifiers
| Class | Method | Year |
|---|---|---|
VEBF |
Versatile Elliptic Basis Function | 2010 |
SCIL |
Streaming Chunk Incremental Learning | 2019 |
LRHE |
Learning with Recoil in Hyperellipsoidal Structure | 2020 |
SHEF |
Scalable Hyper-Ellipsoidal Function | 2020 |
D4 |
Diversion of Data Distribution Direction (ESWA 2025) | 2025 |
TRACED |
Trend-Adaptive Classification with Ellipsoidal Disambiguation (Information Sciences 2026) | 2026 |
D4 and TRACED are reference implementations of my published methods. The other classifiers are baselines from the literature, implemented under the same interface so they can be compared directly.
molprim
Primitive structure extraction and graph kernels for molecular graph classification
molprim is the implementation of the JCSSE 2020 paper on classifying biochemical compounds by their primitive structures. It rewrites each molecular graph as a smaller graph whose vertices are rings, branching points and bonds, and then compares molecules with graph kernels (Weisfeiler–Lehman subtree, Weisfeiler–Lehman shortest-path, or shortest-path). Every step is a scikit-learn transformer, so it fits into Pipeline and GridSearchCV, and it needs neither graph-tool nor grakel.
pip install molprimfrom sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.svm import SVC
from molprim import GraphKernelTransformer, PrimitiveStructureExtractor, fetch_tudataset
graphs, y = fetch_tudataset("MUTAG")
model = make_pipeline(
PrimitiveStructureExtractor(),
GraphKernelTransformer(kernel="wl_sp", n_iter=2),
SVC(kernel="precomputed"),
)
print(cross_val_score(model, graphs, y, cv=5).mean())