A comprehensive machine learning framework with 68 algorithms spanning classical ML, clustering, AutoML, and explainability
Project description
๐ Eclipsera
Modern Machine Learning, Built from Scratch
Version 1.2.0 โข 68+ Algorithms โข 100% Python โข Scikit-learn Compatible
๐ Documentation โข ๐ Quick Start โข ๐ฆ Installation โข ๐ค Contributing
๐ฏ About Eclipsera
Eclipsera is a comprehensive machine learning framework built from the ground up in Python. Designed for researchers, developers, and data scientists who need a unified, powerful, and transparent ML ecosystem without the complexity of heavy dependencies.
โจ Key Highlights
- ๐ง 68+ Algorithms - From classical ML to modern AutoML
- ๐ง Drop-in Compatible - 100% Scikit-learn API compatibility
- โก Performance Optimized - FastAlloc object pooling for 5-15% speedup
- ๐ก๏ธ Production Ready - 88% test coverage with 618 passing tests
- ๐ Explainable AI - Built-in model interpretation tools
- ๐จ Modern Python - Full type hints, Python 3.11+ support
๐ Quick Start
Installation
# Core package
pip install eclipsera
# With performance optimizations (recommended)
pip install eclipsera[perf]
# For plotting and visualization
pip install eclipsera[plot]
# Everything
pip install eclipsera[all]
First Steps
import numpy as np
from eclipsera.ml import RandomForestClassifier
from eclipsera.model_selection import train_test_split
# Generate sample data
X = np.random.randn(150, 4)
y = np.random.randint(0, 3, 150)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Train and evaluate
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
print(f"โ
Accuracy: {score:.3f}")
๐ Advanced Features
๐ค AutoML - Automatic Algorithm Selection
from eclipsera.automl import AutoClassifier
# Let Eclipsera find the best algorithm
auto_clf = AutoClassifier(cv=5, verbose=1)
auto_clf.fit(X_train, y_train)
print(f"๐ Best: {auto_clf.best_algorithm_} (score: {auto_clf.best_score_:.4f})")
๐ Model Explainability
from eclipsera.explainability import permutation_importance
# Understand what drives your model
result = permutation_importance(model, X_test, y_test, n_repeats=10)
for i, importance in enumerate(result['importances_mean']):
print(f"๐ Feature {i}: {importance:.4f}")
๐ Complete ML Pipeline
from eclipsera.pipeline import Pipeline
from eclipsera.preprocessing import StandardScaler
from eclipsera.feature_selection import SelectKBest
from eclipsera.decomposition import PCA
from eclipsera.ml import LogisticRegression
# Build sophisticated workflows
pipe = Pipeline([
('scaler', StandardScaler()),
('selector', SelectKBest(k=20)),
('pca', PCA(n_components=10)),
('classifier', LogisticRegression())
])
pipe.fit(X_train, y_train)
print(f"๐ฏ Pipeline Score: {pipe.score(X_test, y_test):.4f}")
๐ Algorithm Library
๐ Supervised Learning (28 Algorithms)
- Linear Models: LogisticRegression, LinearRegression, Ridge, Lasso
- Tree-Based: DecisionTree, RandomForest, GradientBoosting
- Support Vector Machines: SVC, SVR (linear, rbf, poly, sigmoid)
- Naive Bayes: GaussianNB, MultinomialNB, BernoulliNB
- Nearest Neighbors: KNeighborsClassifier, KNeighborsRegressor
- Neural Networks: MLPClassifier, MLPRegressor
๐ฏ Clustering (7 Methods)
- K-Means (Standard & MiniBatch)
- DBSCAN (Density-based)
- Agglomerative (4 linkage methods)
- Spectral (RBF & k-NN affinity)
- MeanShift (Kernel density)
- Gaussian Mixture (Probabilistic EM)
๐ Dimensionality Reduction
- PCA, TruncatedSVD, NMF
๐บ๏ธ Manifold Learning
- t-SNE, Isomap, LocallyLinearEmbedding
โ๏ธ Preprocessing & Feature Selection
- Scalers: StandardScaler, MinMaxScaler, RobustScaler
- Imputers: SimpleImputer, KNNImputer
- Encoders: LabelEncoder, OneHotEncoder, OrdinalEncoder
- Selection: VarianceThreshold, SelectKBest, RFE
๐ค AutoML & Explainability
- AutoClassifier, AutoRegressor
- permutation_importance, partial_dependence
- plot_partial_dependence, get_feature_importance
๐ Project Metrics
| Metric | Value |
|---|---|
| ๐ฏ Total Algorithms | 68+ |
| ๐ Lines of Code | ~10,500 |
| โ Test Coverage | 88% |
| ๐งช Tests Passing | 618/618 |
| ๐ฆ Python Version | 3.11+ |
| ๐ Dependencies | NumPy, SciPy, Pandas, Joblib |
๐ Version History
๐ก๏ธ Version 1.2.0 - Security Hardening (Current)
Security & Code Quality Focus
- โ Security hardening with pickle deserialization controls
- โ GitHub Actions supply chain hardening (pinned SHAs)
- โ Added Bandit and detect-secrets security scanning
- โ Fixed 522 flake8 linting errors
- โ SBOM generation for supply chain transparency
- โ Enhanced CLI security with confirmation gates
๐ Previous Versions
- v1.1.0 - Performance optimizations with FastAlloc
- v1.0.0 - Initial stable release
๐ ๏ธ Development
Setup for Contributors
git clone https://github.com/tiverse/eclipsera.git
cd eclipsera
pip install -e ".[dev,perf]"
pytest tests/
Contributing Guidelines
We welcome all contributions! Here's how you can help:
- ๐ Report bugs - Found an issue? Open an issue
- โจ Request features - Have an idea? Share it
- ๐ Improve docs - Help others understand Eclipsera
- ๐งช Add tests - Improve our coverage
- ๐ป Write code - Add algorithms or optimize existing ones
๐ License & Citation
License
This project is licensed under the MIT License - see the LICENSE file for details.
Citation
If you use Eclipsera in your research, please cite:
@software{eclipsera2024,
title = {Eclipsera: A Modern Machine Learning Framework},
author = {Roy, Eshan},
year = {2024},
url = {https://github.com/tiverse/eclipsera},
version = {1.2.0}
}
๐ Useful Links
๐ Why Eclipsera?
| ๐ฏ Comprehensive | ๐ง Compatible | ๐ก๏ธ Reliable |
|---|---|---|
| 68 algorithms covering all major ML workflows | 100% Scikit-learn compatible API | 88% test coverage with 618 passing tests |
| ๐จ Modern | โก Lightweight | ๐ Transparent |
|---|---|---|
| Built for Python 3.11+ with complete type hints | Minimal dependencies - only NumPy, SciPy, Pandas, Joblib | Clear, documented implementations |
Built with โค๏ธ by Eshan Roy
Empowering the next generation of machine learning applications
โญ If you find Eclipsera useful, consider giving it a star! โญ
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eclipsera-1.2.0.tar.gz.
File metadata
- Download URL: eclipsera-1.2.0.tar.gz
- Upload date:
- Size: 127.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40dc7f1fc15d858eff50129b9f242b598bc26f15e55af3df0743d9a2ffa8438a
|
|
| MD5 |
405abdc5a868c682b78469a9a90de536
|
|
| BLAKE2b-256 |
5fb2e19c9a35275b11efbb89cc5085c8dad30ccc63c5a98eed7b918d7efa475b
|
File details
Details for the file eclipsera-1.2.0-py3-none-any.whl.
File metadata
- Download URL: eclipsera-1.2.0-py3-none-any.whl
- Upload date:
- Size: 115.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2311e511a63583ec702b04f5198b00b0bb2bcc529a1ca49938ddd969cb46d1b5
|
|
| MD5 |
fd42d1e66c8bed89701ed4446811ad72
|
|
| BLAKE2b-256 |
51d21dc688612eb800166ef6a2fc3a62bc1e13bfd6a39b13c9a3b4437516b4a0
|