o
    tBh                     @   s   d Z ddlZddlmZ ddlmZ dd Zdd Zd	d
 Z	dd Z
dd Zee	ee
edZdd Zdd Zdd Zdd ZeeeedZdd Zdd Zdd ZeeedZdS ) z)Utilities for the neural network modules
    N)expit)xlogyc                 C      dS )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 Xr   r   s/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/neural_network/_base.pyinplace_identity       r	   c                 C   s   t | | d dS )zCompute the logistic function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
    outN)logistic_sigmoidr   r   r   r   inplace_logistic   s   r   c                 C   s   t j| | d dS )zCompute the hyperbolic tan function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
    r   N)nptanhr   r   r   r   inplace_tanh$   s   r   c                 C   s   t j| d| d dS )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   r   r   r   inplace_relu/   s   r   c                 C   sN   | | j ddddtjf  }tj|| d | | jddddtjf  } dS )zCompute the K-way softmax function inplace.

    Parameters
    ----------
    X : {array-like, sparse matrix}, shape (n_samples, n_features)
        The input data.
       axisNr   )maxr   newaxisexpsum)r   tmpr   r   r   inplace_softmax:   s   "r   )identityr   logisticrelusoftmaxc                 C   r   )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deltar   r   r   inplace_identity_derivativeP   r
   r$   c                 C   s   || 9 }|d|  9 }dS )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!   r   r   r   inplace_logistic_derivative_   s   r%   c                 C   s   |d| d  9 }dS )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!   r   r   r   inplace_tanh_derivativer   s   r'   c                 C   s   d|| dk< dS )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!   r   r   r   inplace_relu_derivative   s   r(   )r   r   r   r   c                 C   s   | | d   d 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.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    r&   )mean)y_truey_predr   r   r   squared_loss   s   r,   c                 C   s~   t |jj}t ||d| }|jd dkr!t jd| |dd}| jd dkr2t jd|  | dd} t| |  |jd  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.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    r   r   r   )	r   finfodtypeepsclipshapeappendr   r   r*   y_probr/   r   r   r   log_loss   s   r5   c                 C   sP   t |jj}t ||d| }t| | td|  d|    |jd  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.

    Returns
    -------
    loss : float
        The degree to which the samples are correctly predicted.
    r   r   )r   r-   r.   r/   r0   r   r   r1   r3   r   r   r   binary_log_loss   s   $r6   )squared_errorr5   r6   )__doc__numpyr   scipy.specialr   r   r   r	   r   r   r   r   ACTIVATIONSr$   r%   r'   r(   DERIVATIVESr,   r5   r6   LOSS_FUNCTIONSr   r   r   r   <module>   s>    	
