Skip to main content

🌒 Eclipsera

Modern Machine Learning, Built from Scratch

PyPI version PyPI - Downloads Python 3.11+ License: MIT Build Coverage

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

📋 Full Changelog


🛠️ 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

Documentation Performance Guide Roadmap Issues


🌟 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

Made with Love Python Open Source

⭐ 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)

Source distribution for eclipsera 1.2.0
File Size Uploaded
eclipsera-1.2.0.tar.gz 127.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eclipsera 1.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page