'''
Wrapper module around `sklearn.ensemble`
'''
[docs]__author__ = 'Elisha Yadgaran'
from .base_sklearn_classifier import SklearnClassifier
from simpleml.models.classifiers.external_models import ClassificationExternalModelMixin
from sklearn.ensemble import AdaBoostClassifier, BaggingClassifier, ExtraTreesClassifier,\
GradientBoostingClassifier, RandomForestClassifier, VotingClassifier
import logging
[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)