'Transform a new matrix using the built clustering
Parameters
X : array-like, shape = [n_samples, n_features] or [n_features]
A M by N array of M observations in N dimensions or a length
M array of M one-dimensional observations.
Returns
Y : array, shape = [n_samples, n_clusters] or [n_clusters]
The pooled values for each feature cluster.'

def transform(self, X):

    check_is_fitted(self, 'labels_')
    pooling_func = self.pooling_func
    X = check_array(X)
    nX = []
    if (len(self.labels_) != X.shape[1]):
        raise ValueError('X    has    a    different    number    of    features    than    during    fitting.')
    for l in np.unique(self.labels_):
        nX.append(pooling_func(X[:, (self.labels_ == l)], axis=1))
    return np.array(nX).T
