Source code for DashAI.back.models.scikit_learn.svc

from sklearn.svm import SVC as _SVC

from DashAI.back.core.schema_fields import (
    BaseSchema,
    bool_field,
    enum_field,
    optimizer_float_field,
    optimizer_int_field,
    schema_field,
)
from DashAI.back.core.utils import MultilingualString
from DashAI.back.models.scikit_learn.sklearn_like_classifier import (
    SklearnLikeClassifier,
)
from DashAI.back.models.scikit_learn.sklearn_like_model import (
    CategoricalEncodingStrategy,
)
from DashAI.back.models.tabular_classification_model import TabularClassificationModel


class SVCSchema(BaseSchema):
    """Support Vector Machine (SVM) is a machine learning algorithm that separates data
    into different classes by finding the optimal hyperplane
    """

    C: schema_field(
        optimizer_float_field(gt=0.0),
        placeholder={
            "optimize": False,
            "fixed_value": 1.0,
            "lower_bound": 1.0,
            "upper_bound": 10.0,
        },
        description=MultilingualString(
            en=(
                "The parameter 'C' is a regularization parameter. "
                "The strength of the regularization is inversely proportional to C"
            ),
            es=(
                "El parámetro 'C' es un parámetro de regularización. "
                "La fuerza de la regularización es inversamente proporcional a C"
            ),
        ),
        alias=MultilingualString(en="C", es="C"),
    )  # type: ignore
    coef0: schema_field(
        optimizer_float_field(),
        placeholder={
            "optimize": False,
            "fixed_value": 1.0,
            "lower_bound": 1.0,
            "upper_bound": 10.0,
        },
        description=MultilingualString(
            en=(
                "The parameter 'coef0' is independent term in "
                "kernel function. "
                "It is only significant for kernel poly and sigmoid. "
            ),
            es=(
                "El parámetro 'coef0' es un término independiente en la "
                "función del kernel. "
                "Solo es significativo para los kernels poly y sigmoid. "
            ),
        ),
        alias=MultilingualString(en="coef0", es="coef0"),
    )  # type: ignore
    degree: schema_field(
        optimizer_float_field(ge=0.0),
        placeholder={
            "optimize": False,
            "fixed_value": 1.0,
            "lower_bound": 1.0,
            "upper_bound": 10.0,
        },
        description=MultilingualString(
            en="The 'degree' parameter is only significant for 'poly' kernel.",
            es="El parámetro 'grado' solo es significativo para el kernel 'poly'.",
        ),
        alias=MultilingualString(en="degree", es="grado"),
    )  # type: ignore
    gamma: schema_field(
        enum_field(enum=["scale", "auto"]),
        placeholder="scale",
        description=MultilingualString(
            en="Coefficient for 'rbf', 'poly' and 'sigmoid' kernels.",
            es="Coeficiente para los kernels 'rbf', 'poly' y 'sigmoid'.",
        ),
        alias=MultilingualString(en="gamma", es="gamma"),
    )  # type: ignore
    kernel: schema_field(
        enum_field(enum=["linear", "poly", "rbf", "sigmoid"]),
        placeholder="rbf",
        description=MultilingualString(
            en="The 'kernel' parameter is the kernel used in the model.",
            es="El parámetro 'kernel' es el kernel utilizado en el modelo.",
        ),
        alias=MultilingualString(en="kernel", es="kernel"),
    )  # type: ignore
    max_iter: schema_field(
        optimizer_int_field(ge=-1),
        placeholder={
            "optimize": False,
            "fixed_value": -1,
            "lower_bound": -1,
            "upper_bound": 10,
        },
        description=MultilingualString(
            en=(
                "The 'max_iter' parameter determines the iteration limit for the "
                "solver. It must be of type positive integer "
                "or -1 to indicate no limit."
            ),
            es=(
                "El parámetro 'max_iter' determina el límite de iteraciones para el "
                "solucionador. Debe ser un entero positivo "
                "o -1 para indicar sin límite."
            ),
        ),
        alias=MultilingualString(en="max iterations", es="max iteraciones"),
    )  # type: ignore
    shrinking: schema_field(
        bool_field(),
        placeholder=True,
        description=MultilingualString(
            en=(
                "The 'shrinking' parameter determines whether "
                "a shrinking heuristic is used."
            ),
            es=(
                "El parámetro 'reducción' determina si "
                "se utiliza una heurística de reducción."
            ),
        ),
        alias=MultilingualString(en="shrinking", es="reducción"),
    )  # type: ignore
    tol: schema_field(
        optimizer_float_field(gt=0.0),
        placeholder={
            "optimize": False,
            "fixed_value": 1.0,
            "lower_bound": 1.0,
            "upper_bound": 10.0,
        },
        description=MultilingualString(
            en=("The parameter 'tol' determines the tolerance for the stop criterion."),
            es=(
                "El parámetro 'tol' determina "
                " la tolerancia para el criterio de detención."
            ),
        ),
        alias=MultilingualString(en="tolerance", es="tolerancia"),
    )  # type: ignore


[docs] class SVC(TabularClassificationModel, SklearnLikeClassifier, _SVC): """Scikit-learn's Support Vector Machine (SVM) classifier wrapper for DashAI.""" SCHEMA = SVCSchema DISPLAY_NAME: str = MultilingualString( en="Support Vector Machine (SVM)", es="Máquina de Vectores de Soporte (SVM)", ) DESCRIPTION: str = MultilingualString( en=( "Support Vector Machine (SVM) is a supervised machine learning algorithm " "used for classification and regression tasks. It works by finding the " "optimal hyperplane that maximizes the margin between different classes " "in a high-dimensional feature space. SVMs are effective in cases where " "the number of features is large relative to the number of samples and " "can model complex, non-linear decision boundaries through the use of " "kernel functions such as linear, polynomial, and radial basis function " "(RBF) kernels." ), es=( "La Máquina de Vectores de Soporte (SVM) es un algoritmo de aprendizaje " "automático supervisado utilizado para tareas de clasificación y " "regresión. Funciona encontrando el hiperplano óptimo que maximiza el " "margen entre las distintas clases en un espacio de características de " "alta dimensionalidad. Las SVM son especialmente efectivas cuando el " "número de características es grande en relación con el número de " "muestras y pueden modelar fronteras de decisión complejas y no lineales " "mediante el uso de funciones kernel como lineal, polinomial y de base " "radial (RBF)." ), ) COLOR: str = "#FF80AB" ICON: str = "Timeline" CATEGORICAL_ENCODING = CategoricalEncodingStrategy.ONE_HOT
[docs] def __init__(self, **kwargs): kwargs["probability"] = True super().__init__(**kwargs)