🌒 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! ⭐
Metadata
Release files for eclipsera 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eclipsera-1.2.0.tar.gz | 127.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eclipsera-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 243.5 kB
Release files / eclipsera-1.2.0.tar.gz
| Download URL | eclipsera-1.2.0.tar.gz |
|---|---|
| Size | 127.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40dc7f1fc15d858eff50129b9f242b598bc26f15e55af3df0743d9a2ffa8438a
|
|
BLAKE2b-256 checksum How to use checksums |
5fb2e19c9a35275b11efbb89cc5085c8dad30ccc63c5a98eed7b918d7efa475b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / eclipsera-1.2.0-py3-none-any.whl
| Download URL | eclipsera-1.2.0-py3-none-any.whl |
|---|---|
| Size | 115.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2311e511a63583ec702b04f5198b00b0bb2bcc529a1ca49938ddd969cb46d1b5
|
|
BLAKE2b-256 checksum How to use checksums |
51d21dc688612eb800166ef6a2fc3a62bc1e13bfd6a39b13c9a3b4437516b4a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|