
    rh/                         d Z ddlZddlmZ ddlmZ d Zd Zd Z	d Z
d	 Zd
 Zeee
e	eedZd Zd Zd Zd ZeeeedZddZddZddZddZeeeedZy)z(Utilities for the neural network modules    N)expit)xlogyc                      y)zSimply leave the input array unchanged.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        Data, where `n_samples` is the number of samples
        and `n_features` is the number of features.
    N Xs    o/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/sklearn/neural_network/_base.pyinplace_identityr
              c                 2    t        j                  | |        y)zCompute the exponential inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
    outN)npexpr   s    r	   inplace_expr      s     FF1!r   c                     t        | |        y)zCompute the logistic function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
    r   N)logistic_sigmoidr   s    r	   inplace_logisticr   "   s     QAr   c                 2    t        j                  | |        y)zCompute the hyperbolic tan function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
    r   N)r   tanhr   s    r	   inplace_tanhr   -   s     GGA1r   c                 4    t        j                  | d|        y)zCompute the rectified linear unit function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
    r   r   N)r   maximumr   s    r	   inplace_relur   8   s     JJq!r   c                     | | j                  d      ddt        j                  f   z
  }t        j                  ||        | | j	                  d      ddt        j                  f   z  } y)zCompute the K-way softmax function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
       axisNr   )maxr   newaxisr   sum)r   tmps     r	   inplace_softmaxr$   C   sT     aeeemArzzM*
*CFF3AAq"**}	%%Ar   )identityr   r   logisticrelusoftmaxc                      y)a  Apply the derivative of the identity function: do nothing.

    Parameters
    ----------
    Z : {array-like, sparse matrix}, shape (n_samples, n_features)
        The data which was output from the identity activation function during
        the forward pass.

    delta : {array-like}, shape (n_samples, n_features)
         The backpropagated error signal to be modified inplace.
    Nr   Zdeltas     r	   inplace_identity_derivativer-   Z   r   r   c                     || z  }|d| z
  z  }y)a  Apply the derivative of the logistic sigmoid function.

    It exploits the fact that the derivative is a simple function of the output
    value from logistic function.

    Parameters
    ----------
    Z : {array-like, sparse matrix}, shape (n_samples, n_features)
        The data which was output from the logistic activation function during
        the forward pass.

    delta : {array-like}, shape (n_samples, n_features)
         The backpropagated error signal to be modified inplace.
    r   Nr   r*   s     r	   inplace_logistic_derivativer/   i   s     
QJE	QUNEr   c                     |d| dz  z
  z  }y)a  Apply the derivative of the hyperbolic tanh function.

    It exploits the fact that the derivative is a simple function of the output
    value from hyperbolic tangent.

    Parameters
    ----------
    Z : {array-like, sparse matrix}, shape (n_samples, n_features)
        The data which was output from the hyperbolic tangent activation
        function during the forward pass.

    delta : {array-like}, shape (n_samples, n_features)
         The backpropagated error signal to be modified inplace.
    r      Nr   r*   s     r	   inplace_tanh_derivativer2   |   s     
QAXEr   c                     d|| dk(  <   y)a  Apply the derivative of the relu function.

    It exploits the fact that the derivative is a simple function of the output
    value from rectified linear units activation function.

    Parameters
    ----------
    Z : {array-like, sparse matrix}, shape (n_samples, n_features)
        The data which was output from the rectified linear units activation
        function during the forward pass.

    delta : {array-like}, shape (n_samples, n_features)
         The backpropagated error signal to be modified inplace.
    r   Nr   r*   s     r	   inplace_relu_derivativer4      s     E!q&Mr   )r%   r   r&   r'   c                 `    dt        j                  | |z
  dz  |d      j                         z  S )a  Compute the squared loss for regression.

    Parameters
    ----------
    y_true : array-like or label indicator matrix
        Ground truth (correct) values.

    y_pred : array-like or label indicator matrix
        Predicted values, as returned by a regression estimator.

    sample_weight : array-like of shape (n_samples,), default=None
        Sample weights.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    g      ?r1   r   weightsr   )r   averagemeany_truey_predsample_weights      r	   squared_lossr>      s0    ( 	bjj&6/a/QOTTVVr   c                 t    t        j                  t        | | |z        | z
  |z   |d      j                         S )a  Compute (half of the) Poisson deviance loss for regression.

    Parameters
    ----------
    y_true : array-like or label indicator matrix
        Ground truth (correct) labels.

    y_pred : array-like or label indicator matrix
        Predicted values, as returned by a regression estimator.

    sample_weight : array-like of shape (n_samples,), default=None
        Sample weights.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    r   r6   )r   r8   r   r"   r:   s      r	   poisson_lossr@      s9    , ::ffvo&/&8-VW	cer   c                    t        j                  |j                        j                  }t        j                  ||d|z
        }|j
                  d   dk(  rt        j                  d|z
  |d      }| j
                  d   dk(  rt        j                  d| z
  | d      } t        j                  t        | |      |d      j                          S )a  Compute Logistic loss for classification.

    Parameters
    ----------
    y_true : array-like or label indicator matrix
        Ground truth (correct) labels.

    y_prob : array-like of float, shape = (n_samples, n_classes)
        Predicted probabilities, as returned by a classifier's
        predict_proba method.

    sample_weight : array-like of shape (n_samples,), default=None
        Sample weights.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    r   r   r   r6   )
r   finfodtypeepsclipshapeappendr8   r   r"   r;   y_probr=   rD   s       r	   log_lossrJ      s    ( ((6<<
 
$
$CWWVS!c'*F||A!1v:vA6||A!1v:vA6JJuVV,m!LPPRRRr   c                    t        j                  |j                        j                  }t        j                  ||d|z
        }t        j
                  t        | |      t        d| z
  d|z
        z   |d      j                          S )a}  Compute binary logistic loss for classification.

    This is identical to log_loss in binary classification case,
    but is kept for its use in multilabel case.

    Parameters
    ----------
    y_true : array-like or label indicator matrix
        Ground truth (correct) labels.

    y_prob : array-like of float, shape = (n_samples, 1)
        Predicted probabilities, as returned by a classifier's
        predict_proba method.

    sample_weight : array-like of shape (n_samples,), default=None
        Sample weights.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    r   r   r6   )r   rB   rC   rD   rE   r8   r   r"   rH   s       r	   binary_log_lossrL      su    . ((6<<
 
$
$CWWVS!c'*FJJffa&j!f* == 
ce	 r   )squared_errorpoissonrJ   rL   )N)__doc__numpyr   scipy.specialr   r   r   r
   r   r   r   r   r$   ACTIVATIONSr-   r/   r2   r4   DERIVATIVESr>   r@   rJ   rL   LOSS_FUNCTIONSr   r   r	   <module>rU      s    .
  3 
& ! &$& ,#+#	06S>B "&	r   