Source code for simpleml.models.classifiers.sklearn.linear_model

'''
Wrapper module around `sklearn.linear_model`
'''

[docs]__author__ = 'Elisha Yadgaran'
from .base_sklearn_classifier import SklearnClassifier from simpleml.models.classifiers.external_models import ClassificationExternalModelMixin from sklearn.linear_model import LogisticRegression, LogisticRegressionCV, Perceptron,\ RidgeClassifier, RidgeClassifierCV, SGDClassifier import logging
[docs]LOGGER = logging.getLogger(__name__)
''' Logistic Regression '''
[docs]class WrappedSklearnLogisticRegression(LogisticRegression, ClassificationExternalModelMixin):
[docs] def get_feature_metadata(self, features, **kwargs): coefficients = self.coef_.squeeze() if features is None or len(features) < len(coefficients): LOGGER.warning('Fewer feature names than features passed, defaulting to numbered list') features = range(len(coefficients)) return dict(zip(features, coefficients))
[docs]class SklearnLogisticRegression(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs): return WrappedSklearnLogisticRegression(**kwargs)
[docs]class WrappedSklearnLogisticRegressionCV(LogisticRegressionCV, ClassificationExternalModelMixin):
[docs] def get_feature_metadata(self, features, **kwargs): coefficients = self.coef_.squeeze() if features is None or len(features) < len(coefficients): LOGGER.warning('Fewer feature names than features passed, defaulting to numbered list') features = range(len(coefficients)) return dict(zip(features, coefficients))
[docs]class SklearnLogisticRegressionCV(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs): return WrappedSklearnLogisticRegressionCV(**kwargs)
''' Perceptron '''
[docs]class WrappedSklearnPerceptron(Perceptron, ClassificationExternalModelMixin):
[docs] def get_feature_metadata(self, features, **kwargs): coefficients = self.coef_.squeeze() if features is None or len(features) < len(coefficients): LOGGER.warning('Fewer feature names than features passed, defaulting to numbered list') features = range(len(coefficients)) return dict(zip(features, coefficients))
[docs]class SklearnPerceptron(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs): return WrappedSklearnPerceptron(**kwargs)
''' Ridge Classifier '''
[docs]class WrappedSklearnRidgeClassifier(RidgeClassifier, ClassificationExternalModelMixin):
[docs] def get_feature_metadata(self, features, **kwargs): coefficients = self.coef_.squeeze() if features is None or len(features) < len(coefficients): LOGGER.warning('Fewer feature names than features passed, defaulting to numbered list') features = range(len(coefficients)) return dict(zip(features, coefficients))
[docs]class SklearnRidgeClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs): return WrappedSklearnRidgeClassifier(**kwargs)
[docs]class WrappedSklearnRidgeClassifierCV(RidgeClassifierCV, ClassificationExternalModelMixin):
[docs] def get_feature_metadata(self, features, **kwargs): coefficients = self.coef_.squeeze() if features is None or len(features) < len(coefficients): LOGGER.warning('Fewer feature names than features passed, defaulting to numbered list') features = range(len(coefficients)) return dict(zip(features, coefficients))
[docs]class SklearnRidgeClassifierCV(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs): return WrappedSklearnRidgeClassifierCV(**kwargs)
''' SGD Classifier '''
[docs]class WrappedSklearnSGDClassifier(SGDClassifier, ClassificationExternalModelMixin):
[docs] def get_feature_metadata(self, features, **kwargs): coefficients = self.coef_.squeeze() if features is None or len(features) < len(coefficients): LOGGER.warning('Fewer feature names than features passed, defaulting to numbered list') features = range(len(coefficients)) return dict(zip(features, coefficients))
[docs]class SklearnSGDClassifier(SklearnClassifier):
[docs] def _create_external_model(self, **kwargs): return WrappedSklearnSGDClassifier(**kwargs)