Ë
    5¾ªjŸ  ã                   ó|   — d Z ddlmZmZ ddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ  G d	„ d
ee	«      Zy)zuRegressor utilities for MySQL Connector/Python.

Provides a scikit-learn compatible regressor backed by HeatWave ML.
é    )ÚOptionalÚUnionN)ÚRegressorMixin)ÚMyBaseMLModel)ÚML_TASK)Ú	copy_dict)ÚMySQLConnectionAbstractc                   óú   — e Zd ZdZ	 	 	 	 ddedee   dee   dee   dee   f
d„Zd	e	e
j                  ej                  f   d
ej                  fd„Zd	e	e
j                  ej                  f   d
e
j                  fd„Zy)ÚMyRegressoraØ  
    MySQL HeatWave scikit-learn compatible regressor estimator.

    Provides prediction output from a regression model deployed in MySQL,
    and manages fit, explain, and prediction options as per HeatWave ML interface.

    Attributes:
        predict_extra_options (dict): Optional parameter dict passed to the backend for prediction.
        _model (MyModel): Underlying interface for database model operations.
        fit_extra_options (dict): See MyBaseMLModel.
        explain_extra_options (dict): See MyBaseMLModel.

    Args:
        db_connection (MySQLConnectionAbstract): Active MySQL connector DB connection.
        model_name (str, optional): Custom name for the model.
        fit_extra_options (dict, optional): Extra options for fitting.
        explain_extra_options (dict, optional): Extra options for explanations.
        predict_extra_options (dict, optional): Extra options for predictions.

    Methods:
        predict(X): Predict regression target.
    NÚdb_connectionÚ
model_nameÚfit_extra_optionsÚexplain_extra_optionsÚpredict_extra_optionsc                 ó”   — t        j                  | |t        j                  ||¬«       t	        |«      | _        t	        |«      | _        y)a  
        Initialize a MyRegressor.

        Args:
            db_connection: Active MySQL connector database connection.
            model_name: Optional, custom model name.
            fit_extra_options: Optional fit options.
            explain_extra_options: Optional explain options.
            predict_extra_options: Optional prediction options.

        Raises:
            DatabaseError:
                If a database connection issue occurs.
                If an operational error occurs during execution.
        )r   r   N)r   Ú__init__r   Ú
REGRESSIONr   r   r   )Úselfr   r   r   r   r   s         úT/var/www/html/serviGia/entorno/lib/python3.12/site-packages/mysql/ai/ml/regressor.pyr   zMyRegressor.__init__F   sE   € ô. 	×ÑØØÜ×ÑØ!Ø/õ	
ô &/Ð/DÓ%EˆÔ"Ü%.Ð/DÓ%EˆÕ"ó    ÚXÚreturnc                 óv   — | j                   j                  || j                  ¬«      }|d   j                  «       S )aZ  
        Predict a continuous target for the input features using the MySQL model.

        Args:
            X: Input samples as a numpy array or pandas DataFrame.

        Returns:
            ndarray: Array of predicted target values, shape (n_samples,).

        Raises:
            DatabaseError:
                If provided options are invalid or unsupported,
                or if the model is not initialized, i.e., fit or import has not
                been called
                If a database connection issue occurs.
                If an operational error occurs during execution.
        ©ÚoptionsÚ
Prediction)Ú_modelÚpredictr   Úto_numpy)r   r   Úresults      r   r   zMyRegressor.predicth   s7   € ð( —‘×$Ñ$ Q°×0JÑ0JÐ$ÓKˆØ�lÑ#×,Ñ,Ó.Ð.r   c                 óR   — | j                   j                  || j                  ¬«       y)ai  
        Explain model predictions using provided data.

        References:
            https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-explain-table.html
                A full list of supported options can be found under "ML_EXPLAIN_TABLE Options"

        Args:
            X: DataFrame for which predictions should be explained.

        Returns:
            DataFrame containing explanation details (feature attributions, etc.)

        Raises:
            DatabaseError:
                If provided options are invalid or unsupported,
                or if the model is not initialized, i.e., fit or import has not
                been called
                If a database connection issue occurs.
                If an operational error occurs during execution.

        Notes:
            Temporary input/output tables are cleaned up after explanation.
        r   N)r   Úexplain_predictionsr   )r   r   s     r   r"   zMyRegressor.explain_predictions   s!   € ð6 	�‰×'Ñ'¨°4×3MÑ3MÐ'ÕNr   )NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   ÚstrÚdictr   r   ÚpdÚ	DataFrameÚnpÚndarrayr   r"   © r   r   r   r   .   sº   „ ñð4 %)Ø,0Ø04Ø04ñ Fà.ð Fð ˜S‘Mð Fð $ D™>ð	 Fð
  (¨™~ð Fð  (¨™~ó FðD/Ø�r—|‘| R§Z¡ZÐ/Ñ0ð/à	�‰ó/ð.OØ�r—|‘| R§Z¡ZÐ/Ñ0ðOà	�‰ôOr   r   )r&   Útypingr   r   Únumpyr+   Úpandasr)   Úsklearn.baser   Úmysql.ai.ml.baser   Úmysql.ai.ml.modelr   Úmysql.ai.utilsr   Úmysql.connector.abstractsr	   r   r-   r   r   ú<module>r6      s6   ðñ:÷ #ã Û Ý 'å *Ý %Ý $å =ôlO�- õ lOr   