class imblearn.FunctionSampler(*, func=None, accept_sparse=True, kw_args=None, validate=True)[source]

Construct a sampler from calling an arbitrary callable.

Read more in the User Guide.

funccallable, default=None

The callable to use for the transformation. This will be passed the same arguments as transform, with args and kwargs forwarded. If func is None, then func will be the identity function.

accept_sparsebool, default=True

Whether sparse input are supported. By default, sparse inputs are supported.

kw_argsdict, default=None

The keyword argument expected by func.

validatebool, default=True

Whether or not to bypass the validation of X and y. Turning-off validation allows to use the FunctionSampler with any type of data.

See also


Stateless transformer.


See Customized sampler to implement an outlier rejections estimator


>>> import numpy as np
>>> from sklearn.datasets import make_classification
>>> from imblearn import FunctionSampler
>>> X, y = make_classification(n_classes=2, class_sep=2,
... weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0,
... n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)

We can create to select only the first ten samples for instance.

>>> def func(X, y):
...   return X[:10], y[:10]
>>> sampler = FunctionSampler(func=func)
>>> X_res, y_res = sampler.fit_resample(X, y)
>>> np.all(X_res == X[:10])
>>> np.all(y_res == y[:10])

We can also create a specific function which take some arguments.

>>> from collections import Counter
>>> from imblearn.under_sampling import RandomUnderSampler
>>> def func(X, y, sampling_strategy, random_state):
...   return RandomUnderSampler(
...       sampling_strategy=sampling_strategy,
...       random_state=random_state).fit_resample(X, y)
>>> sampler = FunctionSampler(func=func,
...                           kw_args={'sampling_strategy': 'auto',
...                                    'random_state': 0})
>>> X_res, y_res = sampler.fit_resample(X, y)
>>> print('Resampled dataset shape {}'.format(
...     sorted(Counter(y_res).items())))
Resampled dataset shape [(0, 100), (1, 100)]
__init__(self, *, func=None, accept_sparse=True, kw_args=None, validate=True)[source]

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