A Package for wrapping Python classes into Scikit-Learn estimators
Project description
What is Sklearn-Wrap?
Sklearn-wrap enables you to wrap any Python class into a scikit-learn compatible estimator without rewriting your code. Whether you're integrating XGBoost's Booster API, custom gradient descent algorithms, or third-party machine learning libraries, sklearn-wrap provides the glue layer that makes them work seamlessly with sklearn's ecosystem.
With sklearn-wrap, you gain immediate access to GridSearchCV for hyperparameter tuning, Pipeline for composable workflows, and joblib for serialization—all while maintaining your original implementation. Perfect for data scientists who want sklearn compatibility without sacrificing custom logic or performance.
What are the features of Sklearn-Wrap?
- Minimal boilerplate: 10-15 lines to wrap any Python class into a full sklearn estimator
- Auto-parameter discovery: Constructor parameters automatically exposed for GridSearchCV/RandomizedSearchCV
- Nested parameters: Support sklearn's double-underscore syntax for nested estimator hierarchies
- Full ecosystem compatibility: Works seamlessly with Pipeline, cross-validation, and joblib serialization
- Built-in validation: Optional parameter constraints with automatic type/value checking before fit
How to install Sklearn-Wrap?
Install the Sklearn-Wrap package using pip:
pip install sklearn_wrap
or using uv:
uv pip install sklearn_wrap
or using conda:
conda install -c conda-forge sklearn_wrap
or using mamba:
mamba install -c conda-forge sklearn_wrap
or alternatively, add sklearn_wrap to your requirements.txt or pyproject.toml file.
How to get started with Sklearn-Wrap?
Here's a minimal example wrapping a custom polynomial regression class:
import numpy as np
from sklearn_wrap.base import BaseClassWrapper, _fit_context
from sklearn.base import RegressorMixin
from sklearn.model_selection import GridSearchCV
# Your custom class (unchanged)
class PolynomialRegressor:
def __init__(self, degree=2, learning_rate=0.01, n_iterations=1000):
self._degree = degree
self._learning_rate = learning_rate
self._n_iterations = n_iterations
def fit_model(self, X, y):
# ... your implementation ...
return self
def predict_output(self, X):
# ... your implementation ...
pass
# Wrapper (just 10 lines!)
class PolynomialWrapper(BaseClassWrapper, RegressorMixin):
_estimator_name = "regressor"
_estimator_base_class = object
@_fit_context(prefer_skip_nested_validation=True)
def fit(self, X, y):
self.instance_.fit_model(X, y) # Delegate to wrapped instance
return self
def predict(self, X):
return self.instance_.predict_output(X)
# Use with sklearn tools
wrapper = PolynomialWrapper(
regressor=PolynomialRegressor,
degree=2,
learning_rate=0.01
)
# Immediate GridSearchCV compatibility
param_grid = {'degree': [1, 2, 3], 'learning_rate': [0.001, 0.01, 0.1]}
grid_search = GridSearchCV(wrapper, param_grid, cv=5)
grid_search.fit(X, y)
How do I use Sklearn-Wrap?
Full documentation is available at https://sklearn-wrap.readthedocs.io/.
Interactive examples are available in the examples/ directory:
- Online: https://sklearn-wrap.readthedocs.io/en/latest/pages/examples/
- Locally: Run
marimo edit examples/hello.pyto open an interactive notebook
Can I contribute?
We welcome contributions, feedback, and questions:
- Report issues or request features: GitHub Issues
- Join the discussion: GitHub Discussions
- Contributing Guide: CONTRIBUTING.md
If you are interested in becoming a maintainer or taking a more active role, please reach out to Guillaume Tauzin on stateful-y.io.
Where can I learn more?
- Full documentation: https://sklearn-wrap.readthedocs.io/
- Interactive Examples: https://sklearn-wrap.readthedocs.io/en/latest/pages/examples/
For questions and discussions, you can also open a discussion.
License
This project is licensed under the terms of the Apache-2.0 License.
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 sklearn_wrap-0.1.0a2.tar.gz.
File metadata
- Download URL: sklearn_wrap-0.1.0a2.tar.gz
- Upload date:
- Size: 107.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c2059d272f9c3c40b6e44c93c9d0624b9680004b008469cdce166ab64b3f776
|
|
| MD5 |
90dc0c76795a5e0432ae9f675801e1a8
|
|
| BLAKE2b-256 |
284474dfd5021edc110ba43117e2ba080fa6d19e31e3ec2d8ffdc8e136596b84
|
Provenance
The following attestation bundles were made for sklearn_wrap-0.1.0a2.tar.gz:
Publisher:
publish-release.yml on stateful-y/sklearn-wrap
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sklearn_wrap-0.1.0a2.tar.gz -
Subject digest:
6c2059d272f9c3c40b6e44c93c9d0624b9680004b008469cdce166ab64b3f776 - Sigstore transparency entry: 934004279
- Sigstore integration time:
-
Permalink:
stateful-y/sklearn-wrap@9dbb001f5ea470d036da29ea14e34b9680ea68b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/stateful-y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-release.yml@9dbb001f5ea470d036da29ea14e34b9680ea68b6 -
Trigger Event:
pull_request
-
Statement type:
File details
Details for the file sklearn_wrap-0.1.0a2-py3-none-any.whl.
File metadata
- Download URL: sklearn_wrap-0.1.0a2-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9acaceb583d6e7603cad0b3eb8fab2f26b065e03f54fdba807153d25f5117146
|
|
| MD5 |
b0e7111c4f33984a558f4efcf00a893e
|
|
| BLAKE2b-256 |
31203694136a7d1faa190e0053ffed663f5147681ab22d105cb6d5437e195d0a
|
Provenance
The following attestation bundles were made for sklearn_wrap-0.1.0a2-py3-none-any.whl:
Publisher:
publish-release.yml on stateful-y/sklearn-wrap
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sklearn_wrap-0.1.0a2-py3-none-any.whl -
Subject digest:
9acaceb583d6e7603cad0b3eb8fab2f26b065e03f54fdba807153d25f5117146 - Sigstore transparency entry: 934004334
- Sigstore integration time:
-
Permalink:
stateful-y/sklearn-wrap@9dbb001f5ea470d036da29ea14e34b9680ea68b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/stateful-y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-release.yml@9dbb001f5ea470d036da29ea14e34b9680ea68b6 -
Trigger Event:
pull_request
-
Statement type: