§
    ¥˜ºh  ã                   óf   — d 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  G d„ d	e¦  «        ZdS )
zY
Feature agglomeration. Base classes and functions for performing feature
agglomeration.
é    N)Úissparseé   )ÚTransformerMixin)Úmetadata_routing)Úcheck_is_fittedc                   ó2   — e Zd ZdZdej        iZd„ Zdd„ZdS )ÚAgglomerationTransformzH
    A class for feature agglomeration via the transform interface.
    ÚXredc                 óÊ  ‡ ‡‡— t          ‰ ¦  «         ‰                      ‰d¬¦  «        Š‰ j        t          j        k    ret          ‰¦  «        sVt          j        ‰ j        ¦  «        Š‰j        d         }t          j	        ˆˆ ˆfd„t          |¦  «        D ¦   «         ¦  «        }n?ˆˆ fd„t          j        ‰ j        ¦  «        D ¦   «         }t          j	        |¦  «        j        }|S )aì  
        Transform a new matrix using the built clustering.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features) or                 (n_samples, n_samples)
            A M by N array of M observations in N dimensions or a length
            M array of M one-dimensional observations.

        Returns
        -------
        Y : ndarray of shape (n_samples, n_clusters) or (n_clusters,)
            The pooled values for each feature cluster.
        F)Úresetr   c           	      ó^   •— g | ])}t          j        ‰j        ‰|d d …f         ¦  «        ‰z  ‘Œ*S )N)ÚnpÚbincountÚlabels_)Ú.0ÚiÚXÚselfÚsizes     €€€ún/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/cluster/_feature_agglomeration.pyú
<listcomp>z4AgglomerationTransform.transform.<locals>.<listcomp>7   s8   ø€ ÐUÐUÐU¸q•”˜Tœ\¨1¨Q°°°¨T¬7Ñ3Ô3°dÑ:ÐUÐUÐUó    c                 ód   •— g | ],}‰                      ‰d d …‰j        |k    f         d¬¦  «        ‘Œ-S )Né   )Úaxis)Úpooling_funcr   )r   Úlr   r   s     €€r   r   z4AgglomerationTransform.transform.<locals>.<listcomp>:   sQ   ø€ ð ð ð àð ×!Ò! ! A A A t¤|°qÒ'8Ð$8Ô"9ÀÐ!ÑBÔBðð ð r   )r   Ú_validate_datar   r   Úmeanr   r   r   ÚshapeÚarrayÚrangeÚuniqueÚT)r   r   Ú	n_samplesÚnXr   s   ``  @r   Ú	transformz AgglomerationTransform.transform   së   øøø€ õ  	˜ÑÔÐà×Ò ¨ÐÑ/Ô/ˆØÔ¥¤Ò'Ð'µ¸±´Ð'Ý”;˜tœ|Ñ,Ô,ˆDØœ œ
ˆIå”ØUÐUÐUÐUÐUÐUÅEÈ)ÑDTÔDTÐUÑUÔUñô ˆBˆBðð ð ð ð åœ 4¤<Ñ0Ô0ðñ ô ˆBõ ”˜"‘””ˆBØˆ	r   Nc                 óø   — |€|€t          d¦  «        ‚|�|�t          d¦  «        ‚|�t          j        dt          ¦  «         |}t          | ¦  «         t          j        | j        d¬¦  «        \  }}|d|f         S )aE  
        Inverse the transformation and return a vector of size `n_features`.

        Parameters
        ----------
        Xt : array-like of shape (n_samples, n_clusters) or (n_clusters,)
            The values to be assigned to each cluster of samples.

        Xred : deprecated
            Use `Xt` instead.

            .. deprecated:: 1.3

        Returns
        -------
        X : ndarray of shape (n_samples, n_features) or (n_features,)
            A vector of size `n_samples` with the values of `Xred` assigned to
            each of the cluster of samples.
        Nz(Missing required positional argument: Xtz)Please provide only `Xt`, and not `Xred`.zNInput argument `Xred` was renamed to `Xt` in v1.3 and will be removed in v1.5.T)Úreturn_inverse.)	Ú	TypeErrorÚ
ValueErrorÚwarningsÚwarnÚFutureWarningr   r   r#   r   )r   ÚXtr
   ÚunilÚinverses        r   Úinverse_transformz(AgglomerationTransform.inverse_transformA   s—   € ð( ˆ:˜$˜,ÝÐFÑGÔGÐGàÐ  ÝÐHÑIÔIÐIàÐÝŒMð(õ ñô ð ð ˆBå˜ÑÔÐåœ	 $¤,¸tÐDÑDÔD‰ˆˆgØ�#�w�,ÔÐr   )NN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚUNUSEDÚ<_AgglomerationTransform__metadata_request__inverse_transformr'   r2   © r   r   r	   r	      sS   € € € € € ðð ð .4Ð5EÔ5LÐ,MÐ)ð ð  ð  ðD' ð ' ð ' ð ' ð ' ð ' r   r	   )r6   r,   Únumpyr   Úscipy.sparser   Úbaser   Úutilsr   Úutils.validationr   r	   r9   r   r   ú<module>r?      s­   ððð ð €€€à Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø .Ð .Ð .Ð .Ð .Ð .ðS ð S ð S ð S ð S Ð-ñ S ô S ð S ð S ð S r   