Module minder_utils.models.feature_selectors.supervised.wrapper
Expand source code
from sklearn.feature_selection import RFE, RFECV
from minder_utils.models.utils import Feature_selector
import numpy as np
class Wrapper_Selector(Feature_selector):
'''
This class provide a set of supervised feature selection methods.
Particularly, it contains a set of filter methods, which will perform SEPARATELY with the classifier.
Currently, it contains:
- REF: Recursive feature elimination
```Example```
```
from minder_utils.models.feature_selectors.supervised.wrapper import Supervised_wrapper
from sklearn.svm import SVC
selector = Supervised_wrapper(SVC(kernel='linear'), model_name='rfe')
# show the available methods:
selector.get_info(verbose=True)
# train the selector
selector.fit(X, y)
# do the selection
X = selector.transform(X)
```
'''
def __init__(self, estimator, model_name='rfe', num_features=10):
'''
Parameters
----------
estimator: sklearn estimator
model_name: 'rfe' or 'refcv'
num_features: int / float, number / percentage of features to be selected
'''
self.estimator = estimator
self.num_features = num_features
super().__init__(model_name)
def reset_model(self, model_name, num_features=None):
self.num_features = self.num_features if num_features is None else num_features
self.name = self.methods[model_name]
self.model = getattr(self, model_name)()
@property
def methods(self):
return {
'rfe': 'Recursive feature elimination',
'rfecv': 'Recursive feature elimination with cross-validation ',
}
def rfe(self):
return RFE(self.estimator, n_features_to_select=self.num_features)
def rfecv(self):
return RFECV(self.estimator, min_features_to_select=self.num_features, cv=5)
def fit(self, X, y):
if y.ndim > 1:
y = np.argmax(y, axis=1)
return self.model.fit(X, y)
def transform(self, X):
return self.model.transform(X)
def mask_of_features(self):
return self.model.support_
def __name__(self):
return 'Supervised Filter', self.name
Classes
class Wrapper_Selector (estimator, model_name='rfe', num_features=10)
-
This class provide a set of supervised feature selection methods. Particularly, it contains a set of filter methods, which will perform SEPARATELY with the classifier.
Currently, it contains: - REF: Recursive feature elimination
Example
from minder_utils.models.feature_selectors.supervised.wrapper import Supervised_wrapper from sklearn.svm import SVC selector = Supervised_wrapper(SVC(kernel='linear'), model_name='rfe') # show the available methods: selector.get_info(verbose=True) # train the selector selector.fit(X, y) # do the selection X = selector.transform(X)
Parameters
estimator
:sklearn estimator
model_name
:'rfe'
or'refcv'
num_features
:int / float, number / percentage
offeatures to be selected
Expand source code
class Wrapper_Selector(Feature_selector): ''' This class provide a set of supervised feature selection methods. Particularly, it contains a set of filter methods, which will perform SEPARATELY with the classifier. Currently, it contains: - REF: Recursive feature elimination ```Example``` ``` from minder_utils.models.feature_selectors.supervised.wrapper import Supervised_wrapper from sklearn.svm import SVC selector = Supervised_wrapper(SVC(kernel='linear'), model_name='rfe') # show the available methods: selector.get_info(verbose=True) # train the selector selector.fit(X, y) # do the selection X = selector.transform(X) ``` ''' def __init__(self, estimator, model_name='rfe', num_features=10): ''' Parameters ---------- estimator: sklearn estimator model_name: 'rfe' or 'refcv' num_features: int / float, number / percentage of features to be selected ''' self.estimator = estimator self.num_features = num_features super().__init__(model_name) def reset_model(self, model_name, num_features=None): self.num_features = self.num_features if num_features is None else num_features self.name = self.methods[model_name] self.model = getattr(self, model_name)() @property def methods(self): return { 'rfe': 'Recursive feature elimination', 'rfecv': 'Recursive feature elimination with cross-validation ', } def rfe(self): return RFE(self.estimator, n_features_to_select=self.num_features) def rfecv(self): return RFECV(self.estimator, min_features_to_select=self.num_features, cv=5) def fit(self, X, y): if y.ndim > 1: y = np.argmax(y, axis=1) return self.model.fit(X, y) def transform(self, X): return self.model.transform(X) def mask_of_features(self): return self.model.support_ def __name__(self): return 'Supervised Filter', self.name
Ancestors
- Feature_selector
- abc.ABC
Instance variables
var methods
-
Expand source code
@property def methods(self): return { 'rfe': 'Recursive feature elimination', 'rfecv': 'Recursive feature elimination with cross-validation ', }
Methods
def fit(self, X, y)
-
Expand source code
def fit(self, X, y): if y.ndim > 1: y = np.argmax(y, axis=1) return self.model.fit(X, y)
def mask_of_features(self)
-
Expand source code
def mask_of_features(self): return self.model.support_
def reset_model(self, model_name, num_features=None)
-
Expand source code
def reset_model(self, model_name, num_features=None): self.num_features = self.num_features if num_features is None else num_features self.name = self.methods[model_name] self.model = getattr(self, model_name)()
def rfe(self)
-
Expand source code
def rfe(self): return RFE(self.estimator, n_features_to_select=self.num_features)
def rfecv(self)
-
Expand source code
def rfecv(self): return RFECV(self.estimator, min_features_to_select=self.num_features, cv=5)
def transform(self, X)
-
Expand source code
def transform(self, X): return self.model.transform(X)