def SklearnClassifier(
    model: "sklearn.base.BaseEstimator",
    clip_values: "CLIP_VALUES_TYPE" | None = None,
    preprocessing_defences: "Preprocessor" | list["Preprocessor"] | None = None,
    postprocessing_defences: "Postprocessor" | list["Postprocessor"] | None = None,
    preprocessing: "PREPROCESSING_TYPE" = (0.0, 1.0),
    use_logits: bool = False,
) -> "ScikitlearnClassifier":
    """
    Create a `Classifier` instance from a scikit-learn Classifier model. This is a convenience function that
    instantiates the correct class for the given scikit-learn model.

    :param model: scikit-learn Classifier model.
    :param clip_values: Tuple of the form `(min, max)` representing the minimum and maximum values allowed
            for features.
    :param preprocessing_defences: Preprocessing defence(s) to be applied by the classifier.
    :param postprocessing_defences: Postprocessing defence(s) to be applied by the classifier.
    :param preprocessing: Tuple of the form `(subtrahend, divisor)` of floats or `np.ndarray` of values to be
            used for data preprocessing. The first value will be subtracted from the input. The input will then
            be divided by the second one.
    """
    if model.__class__.__module__.split(".")[0] != "sklearn":  # pragma: no cover
        raise TypeError(f"Model is not an sklearn model. Received '{model.__class__}'")

    sklearn_name = model.__class__.__name__
    module = importlib.import_module("art.estimators.classification.scikitlearn")
    if hasattr(module, f"Scikitlearn{sklearn_name}"):
        return getattr(module, f"Scikitlearn{sklearn_name}")(
            model=model,
            clip_values=clip_values,
            preprocessing_defences=preprocessing_defences,
            postprocessing_defences=postprocessing_defences,
            preprocessing=preprocessing,
        )

    # This basic class at least generically handles `fit`, `predict` and `save`
    return ScikitlearnClassifier(
        model,
        clip_values,
        preprocessing_defences,
        postprocessing_defences,
        preprocessing,
        use_logits,
    )

    Create a `Classifier` instance from a scikit-learn Classifier model. This is a convenience function that
    instantiates the correct class for the given scikit-learn model.

    :param model: scikit-learn Classifier model.
    :param clip_values: Tuple of the form `(min, max)` representing the minimum and maximum values allowed
            for features.
    :param preprocessing_defences: Preprocessing defence(s) to be applied by the classifier.
    :param postprocessing_defences: Postprocessing defence(s) to be applied by the classifier.
    :param preprocessing: Tuple of the form `(subtrahend, divisor)` of floats or `np.ndarray` of values to be
            used for data preprocessing. The first value will be subtracted from the input. The input will then
            be divided by the second one.
    
art/estimators/classification/scikitlearn.py