<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fit(self, X, y=None, **kwargs):
 """Determine transformation parameters from data in X. Subsequent calls to `transform(Y)` compute the pairwise distance to `X`. Parameters of the clinical kernel are only updated if `fit_once` is `False`, otherwise you have to explicitly call `prepare()` once. Parameters X: pandas.DataFrame, shape = (n_samples, n_features) Data to estimate parameters from. y : None Argument is ignored (included for compatibility reasons). kwargs : dict Argument is ignored (included for compatibility reasons). Returns ------- self : object Returns the instance itself. """

        if X.ndim != 2:
            raise ValueError("expected 2d array, but got %d" % X.ndim)

        if self.fit_once:
            self.X_fit_ = X
        else:
            self._prepare_by_column_dtype(X)

        return self