Skip to content

A machine learning framework built from scratch with 68 algorithms spanning classical ML, clustering, dimensionality reduction, manifold learning, AutoML, and explainability.

License

Notifications You must be signed in to change notification settings

TIVerse/eclipsera

Repository files navigation

πŸŒ’ 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! ⭐

About

A machine learning framework built from scratch with 68 algorithms spanning classical ML, clustering, dimensionality reduction, manifold learning, AutoML, and explainability.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages