ITMO_FS.filters.multivariate.CMIM

ITMO_FS.filters.multivariate.CMIM(selected_features, free_features, x, y, **kwargs)

Conditional Mutual Info Maximisation feature scoring criterion. Given set of already selected features and set of remaining features on dataset X with labels y selects next feature.

Parameters:
  • selected_features (list of ints) – already selected features
  • free_features (list of ints) – free features
  • x (array-like, shape (n_samples, n_features)) – The training input samples.
  • y (array-like, shape (n_samples,)) – The target values.
  • kwargs (dict, optional) – Additional parameters to pass to generalizedCriteria.
Returns:

array-like, shape (n_features,)

Return type:

feature scores

Notes

For more details see this paper.

Examples

>>> from ITMO_FS.filters.multivariate import CMIM
>>> from sklearn.preprocessing import KBinsDiscretizer
>>> import numpy as np
>>> x = np.array([[1, 2, 3, 3, 1], [2, 2, 3, 3, 2], [1, 3, 3, 1, 3],
... [3, 1, 3, 1, 4], [4, 4, 3, 1, 5]])
>>> y = np.array([1, 2, 3, 4, 5])
>>> est = KBinsDiscretizer(n_bins=10, encode='ordinal')
>>> x = est.fit_transform(x)
>>> selected_features = []
>>> other_features = [i for i in range(0, x.shape[1]) if i
... not in selected_features]
>>> CMIM(np.array(selected_features), np.array(other_features), x, y)
array([1.33217904, 1.33217904, 0.        , 0.67301167, 1.60943791])
>>> selected_features = [1, 2]
>>> other_features = [i for i in range(0, x.shape[1]) if i
... not in selected_features]
>>> CMIM(np.array(selected_features), np.array(other_features), x, y)
array([0.27725887, 0.        , 0.27725887])