<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def inverse_transform(self, Y, columns=None):
 """Transform input data `Y` to ambient data space defined by `self.data` Takes data in the same reduced space as `self.data_nu` and transforms it to be in the same ambient space as `self.data`. Parameters Y : array-like, shape=[n_samples_y, n_pca] n_features must be the same as `self.data_nu`. columns : list-like list of integers referring to column indices in the original data space to be returned. Avoids recomputing the full matrix where only a few dimensions of the ambient space are of interest Returns ------- Inverse transformed data, shape=[n_samples_y, n_features] Raises ------ ValueError : if Y.shape[1] != self.data_nu.shape[1] """

        try:
            if not hasattr(self, "data_pca"):
                # no pca performed
                try:
                    if Y.shape[1] != self.data_nu.shape[1]:
                        # shape is wrong
                        raise ValueError
                except IndexError:
                    # len(Y.shape) < 2
                    raise ValueError
                if columns is None:
                    return Y
                else:
                    columns = np.array([columns]).flatten()
                    return Y[:, columns]
            else:
                if columns is None:
                    return self.data_pca.inverse_transform(Y)
                else:
                    # only return specific columns
                    columns = np.array([columns]).flatten()
                    Y_inv = np.dot(Y, self.data_pca.components_[:, columns])
                    if hasattr(self.data_pca, "mean_"):
                        Y_inv += self.data_pca.mean_[columns]
                    return Y_inv
        except ValueError:
            # more informative error
            raise ValueError("data of shape {} cannot be inverse transformed"
                             " from graph built on data of shape {}".format(
                                 Y.shape, self.data_nu.shape))