"""
Wrapper module around `sklearn.ensemble`
"""
[docs]__author__ = "Elisha Yadgaran"
import logging
from sklearn.ensemble import (
AdaBoostClassifier,
BaggingClassifier,
ExtraTreesClassifier,
GradientBoostingClassifier,
HistGradientBoostingClassifier,
RandomForestClassifier,
VotingClassifier,
)
from simpleml.models.classifiers.external_models import ClassificationExternalModelMixin
from .base_sklearn_classifier import SklearnClassifier
[docs]LOGGER = logging.getLogger(__name__)
"""
AdaBoost Classifier
"""
# TODO: experiment with try excepts on different estimator types (feature_importances_, coefficients, ...)
[docs]class WrappedSklearnAdaBoostClassifier(
AdaBoostClassifier, ClassificationExternalModelMixin
):
# Boosted classifier doesnt have an easy way to aggregate feature metadata
pass
[docs]class SklearnAdaBoostClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs):
return WrappedSklearnAdaBoostClassifier(**kwargs)
"""
Bagging Classfier
"""
[docs]class WrappedSklearnBaggingClassifier(
BaggingClassifier, ClassificationExternalModelMixin
):
# Bagging classifier doesnt have an easy way to aggregate feature metadata
pass
[docs]class SklearnBaggingClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs):
return WrappedSklearnBaggingClassifier(**kwargs)
"""
Extra Trees Classifier
"""
"""
Gradient Boosting Classifier
"""
[docs]class WrappedSklearnGradientBoostingClassifier(
GradientBoostingClassifier, ClassificationExternalModelMixin
):
[docs]class SklearnGradientBoostingClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs):
return WrappedSklearnGradientBoostingClassifier(**kwargs)
"""
Random Forest Classifier
"""
[docs]class WrappedSklearnRandomForestClassifier(
RandomForestClassifier, ClassificationExternalModelMixin
):
[docs]class SklearnRandomForestClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs):
return WrappedSklearnRandomForestClassifier(**kwargs)
"""
Voting Classifier
"""
[docs]class WrappedSklearnVotingClassifier(
VotingClassifier, ClassificationExternalModelMixin
):
# Voting classifier doesnt have an easy way to aggregate feature metadata
pass
[docs]class SklearnVotingClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs):
return WrappedSklearnVotingClassifier(**kwargs)
"""
Histogram-based Gradient Boosting Classifier
"""
[docs]class WrappedSklearnHistGradientBoostingClassifier(
HistGradientBoostingClassifier, ClassificationExternalModelMixin
):
# Voting classifier doesnt have an easy way to aggregate feature metadata
pass
[docs]class SklearnHistGradientBoostingClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs):
return WrappedSklearnHistGradientBoostingClassifier(**kwargs)