def METHOD_NAME(self, X, y, sample_weight=None, eval_set=None, sample_weight_eval_set=None, **kwargs):
    orig_cols = list(X.names)
    self.params_override()
    params = self.params.copy()
    if params.get('model_type', 'lda') == 'lda':
        model_class = LinearDiscriminantAnalysis
        params.pop('reg_param', None)
    else:
        model_class = QuadraticDiscriminantAnalysis
        params.pop('solver', None)
    params.pop('model_type', None)
    if self.num_classes >= 2:
        lb = LabelEncoder()
        lb.METHOD_NAME(self.labels)
        y = lb.transform(y)
        model = model_class(**params)
    else:
        model = model_class(**params)
    X = self.basic_impute(X)
    X = X.to_numpy()
    try:
        model.METHOD_NAME(X, y)
    except np.linalg.LinAlgError as e:
        # nothing can be done, just revert to constant predictions
        raise IgnoreEntirelyError(str(e))
    except Exception as e:
        if 'On entry to DGESDD parameter number 10 had an illegal value' in str(e):
            # nothing can be done, just revert to constant predictions
            raise IgnoreEntirelyError(str(e))
        else:
            raise
    importances = np.array([1 for x in range(len(orig_cols))])
    self.set_model_properties(model=model,
                              features=orig_cols,
                              importances=importances.tolist(),
                              iterations=1)