ITMO_FS.hybrid.Melif

class ITMO_FS.hybrid.Melif(estimator, measure, cutting_rule, filter_ensemble, delta=0.5, points=None, seed=42, cv=3)

MeLiF algorithm.

Parameters:
  • estimator (object) – A supervised learning estimator that should have a fit(X, y) method and a predict(X) method.
  • measure (string or callable) – A standard estimator metric (e.g. ‘f1’ or ‘roc_auc’) or a callable with signature measure(estimator, X, y) which should return only a single value.
  • cutting_rule (string or callable) – A cutting rule name defined in GLOB_CR or a callable with signature cutting_rule (features), which should return a list features ranked by some rule.
  • filter_ensemble (object) – A filter ensemble (e.g. WeightBased) or a list of filters that will be used to create a WeightBased ensemble.
  • delta (float) – The step in coordinate descent.
  • points (array-like) – An array of starting points in the search.
  • seed (int) – Random seed used to initialize np.random.default_rng().
  • cv (int) – Number of folds in cross-validation.

See also

For

Examples

>>> from ITMO_FS.hybrid import Melif
>>> from ITMO_FS.filters.univariate import UnivariateFilter
>>> from sklearn.datasets import make_classification
>>> from sklearn.preprocessing import KBinsDiscretizer
>>> from sklearn.linear_model import LogisticRegression
>>> dataset = make_classification(n_samples=100, n_features=20,
... n_informative=5, n_redundant=0, shuffle=False, random_state=42)
>>> x, y = np.array(dataset[0]), np.array(dataset[1])
>>> x = KBinsDiscretizer(n_bins=10, encode='ordinal',
... strategy='uniform').fit_transform(x)
>>> filters = [UnivariateFilter('GiniIndex'),
... UnivariateFilter('FechnerCorr'),
... UnivariateFilter('SpearmanCorr'),
... UnivariateFilter('PearsonCorr')]
>>> algo = Melif(LogisticRegression(), 'f1_macro', ("K best", 5),
... filters, delta=0.5).fit(x, y)
>>> algo.selected_features_
array([ 3,  4,  1, 13, 16], dtype=int64)
__init__(estimator, measure, cutting_rule, filter_ensemble, delta=0.5, points=None, seed=42, cv=3)

Initialize self. See help(type(self)) for accurate signature.

fit(X, y=None, **fit_params)

Fit the algorithm.

Parameters:
  • X (array-like, shape (n_samples, n_features)) – The training input samples.
  • y (array-like, shape (n_samples,), optional) – The class labels.
  • fit_params (dict, optional) – Additional parameters to pass to underlying _fit function.
Returns:

Return type:

Self, i.e. the transformer object.

fit_transform(X, y=None, **fit_params)

Fit to data, then transform it.

Fits transformer to X and y with optional parameters fit_params and returns a transformed version of X.

Parameters:
  • X ({array-like, sparse matrix, dataframe} of shape (n_samples, n_features)) –
  • y (ndarray of shape (n_samples,), default=None) – Target values.
  • **fit_params (dict) – Additional fit parameters.
Returns:

X_new – Transformed array.

Return type:

ndarray array of shape (n_samples, n_features_new)

get_params(deep=True)

Get parameters for this estimator.

Parameters:deep (bool, default=True) – If True, will return the parameters for this estimator and contained subobjects that are estimators.
Returns:params – Parameter names mapped to their values.
Return type:mapping of string to any
predict(X)

Predict class labels for the input data.

Parameters:X (array-like, shape (n_samples, n_features)) – The input samples.
Returns:array-like, shape (n_samples,)
Return type:class labels
set_params(**params)

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as pipelines). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters:**params (dict) – Estimator parameters.
Returns:self – Estimator instance.
Return type:object
transform(X)

Transform given data by slicing it with selected features.

Parameters:X (array-like, shape (n_samples, n_features)) – The training input samples.
Returns:
Return type:Transformed 2D numpy array