'Transform data back to its original space.
Parameters
W : {array-like, sparse matrix}, shape (n_samples, n_components)
Transformed data matrix
Returns
X : {array-like, sparse matrix}, shape (n_samples, n_features)
Data matrix of original shape
.. versionadded:: 0.18'

def inverse_transform(self, W):

    check_is_fitted(self, 'n_components_')
    return np.dot(W, self.components_)
