def pipeline(X, transformations, **kwargs):
    """Pipeline of preprocessing methods on features. Each preprocessing function should accept X as its first argument,
    and should output a single array, that corresponds to the preprocessed data.

    Parameters
    ----------
    X : :class:`numpy.ndarray`
        Features matrix of shape (n, d).
    transformations : list
        List of preprocessing functions
    """
    _X = X.copy()
    for T in transformations:
        _X = T(_X, **kwargs)

    return _X