'Predict the output.
Parameters
X : array, shape (n_samples, n_features)
The data.
Returns
X : ndarray
The predicted response.'

def predict(self, X):

    out = np.zeros((X.shape[0], self.coef_.shape[0]))
    smin = self._smin
    offset = max(smin, 0)
    for oi in range(self.coef_.shape[0]):
        for fi in range(self.coef_.shape[1]):
            temp = np.convolve(X[:, fi], self.coef_[(oi, fi)][::(-1)])
            temp = temp[max((- smin), 0):][:(len(out) - offset)]
            out[offset:(len(temp) + offset), oi] += temp
    out += self.intercept_
    return out
