§
    ¦˜ºhö@  ã                   ó  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZmZ d dlmZmZmZ ej                             d ¦  «        Ze                     d¬¦  «        Ze                     d¬¦  «        Zee                     d	¬
¦  «        dd…ej        f         z  Zee                     d	¬
¦  «        dd…ej        f         z  Zej                              dg d¢¦  «        ej                              dg d¢¦  «        ej                              dd dg¦  «        d„ ¦   «         ¦   «         ¦   «         Z!ej                              dddg¦  «        ej                              dg d¢¦  «        ej                              dd dg¦  «        d„ ¦   «         ¦   «         ¦   «         Z"d„ Z#d„ Z$ej                              dg d¢¦  «        ej                              d e%d	d¦  «        ¦  «        d„ ¦   «         ¦   «         Z&d„ Z'ej                              dg d¢¦  «        d„ ¦   «         Z(d „ Z)d!„ Z*d"„ Z+d#„ Z,d$„ Z-d%„ Z.d&„ Z/d'„ Z0d(„ Z1d)„ Z2d*„ Z3d+„ Z4d,„ Z5d-„ Z6d.„ Z7d/„ Z8ej                              d0eeee
g¦  «        d1„ ¦   «         Z9d2„ Z:dS )3é    N)Ú
csr_matrix)Úmake_classification)ÚAdditiveChi2SamplerÚNystroemÚPolynomialCountSketchÚ
RBFSamplerÚSkewedChi2Sampler)Úchi2_kernelÚkernel_metricsÚpolynomial_kernelÚ
rbf_kernel)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)é,  é2   ©Úsizeé   ©ÚaxisÚgamma)çš™™™™™¹?r   ç      @zdegree, n_components))r   éô  )é   r   )é   iˆ  Úcoef0r   c                 óü  — t          t          t          | ||¬¦  «        }t          || ||d¬¦  «        }|                     t          ¦  «        }|                     t          ¦  «        }t          j        ||j        ¦  «        }||z
  }	t          j	        t          j
        |	¦  «        ¦  «        dk    sJ ‚t          j	        |	|	¬¦  «         t          j        |	¦  «        dk    sJ ‚t          j
        |	¦  «        dk    sJ ‚d S )N)r   Údegreer   é*   )Ún_componentsr   r   r    Úrandom_stateçš™™™™™©?©Úoutr   )r   ÚXÚYr   Úfit_transformÚ	transformÚnpÚdotÚTÚabsÚmeanÚmax)
r   r    r   r"   ÚkernelÚps_transformÚX_transÚY_transÚkernel_approxÚerrors
             úo/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/tests/test_kernel_approximation.pyÚtest_polynomial_count_sketchr8   #   sö   € õ �q¥!¨5¸ÀuÐMÑMÔM€Fõ )Ø!ØØØØðñ ô €Lð ×(Ò(­Ñ+Ô+€GØ×$Ò$¥QÑ'Ô'€GÝ”F˜7 G¤IÑ.Ô.€Mà�]Ñ"€EÝŒ6•"”'˜%‘.”.Ñ!Ô! TÒ)Ð)Ð)Ð)Ý„Fˆ5�eÐÑÔÐÝŒ6�%‰=Œ=˜CÒÐÐÐÝŒ7�5‰>Œ>˜TÒ!Ð!Ð!Ð!Ð!Ð!ó    r   ç      ð?r    )r   r   r   c                 óš  — t          d| ||d¬¦  «        }|                     t          ¦  «        }|                     t          ¦  «        }t          d| ||d¬¦  «        }|                     t          t          ¦  «        ¦  «        }|                     t          t          ¦  «        ¦  «        }t          ||¦  «         t          ||¦  «         dS )zZCheck that PolynomialCountSketch results are the same for dense and sparse
    input.
    r   r!   )r"   r   r    r   r#   N)r   r)   r'   r*   r(   r   r   )	r   r    r   Úps_denseÚXt_denseÚYt_denseÚ	ps_sparseÚ	Xt_sparseÚ	Yt_sparses	            r7   Ú)test_polynomial_count_sketch_dense_sparserB   @   sÆ   € õ %Ø ¨f¸EÐPRðñ ô €Hð ×%Ò%¥aÑ(Ô(€HØ×!Ò!¥!Ñ$Ô$€Hå%Ø ¨f¸EÐPRðñ ô €Ið ×'Ò'­
µ1©¬Ñ6Ô6€IØ×#Ò#¥J­q¡M¤MÑ2Ô2€Iå�H˜iÑ(Ô(Ð(Ý�H˜iÑ(Ô(Ð(Ð(Ð(r9   c                 ó6   — t          j        | |j        ¦  «        S )N)r+   r,   r-   )r'   r(   s     r7   Ú_linear_kernelrD   W   s   € ÝŒ6�!�Q”S‰>Œ>Ðr9   c                  óš  — t           d d …t          j        d d …f         } t          t          j        d d …d d …f         }d| z  |z  | |z   z  }|                     d¬¦  «        }t          d¬¦  «        }|                     t           ¦  «        }|                     t          ¦  «        }t          j        ||j	        ¦  «        }t          ||d¦  «         |                     t          t           ¦  «        ¦  «        }|                     t          t          ¦  «        ¦  «        }	t          ||                     ¦   «         ¦  «         t          ||	                     ¦   «         ¦  «         t                               ¦   «         }
d|
d<   d}t          j        t"          |¬	¦  «        5  |                     |
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   r   r   ©Úsample_stepsr   éÿÿÿÿ©r   r   z!Negative values in data passed to©Úmatch)r'   r+   Únewaxisr(   Úsumr   r)   r*   r,   r-   r   r   r   ÚtoarrayÚcopyÚpytestÚraisesÚ
ValueErrorÚfit)ÚX_ÚY_Úlarge_kernelr1   r*   r3   r4   r5   Ú
X_sp_transÚ
Y_sp_transÚY_negÚmsgs               r7   Útest_additive_chi2_samplerr[   [   s×  € õ
 
ˆ1ˆ1ˆ1�bŒj˜!˜!˜!ÐÔ	€BÝ	
�2Œ:�q�q�q˜!˜!˜!ÐÔ	€Bà�r‘6˜B‘; " r¡'Ñ*€Lð ×Ò 1ÐÑ%Ô%€Fõ $°Ð3Ñ3Ô3€IØ×%Ò%¥aÑ(Ô(€GØ×!Ò!¥!Ñ$Ô$€Gå”F˜7 G¤IÑ.Ô.€Må˜f m°QÑ7Ô7Ð7à×(Ò(­µA©¬Ñ7Ô7€JØ×$Ò$¥Zµ¡]¤]Ñ3Ô3€Jå�w 
× 2Ò 2Ñ 4Ô 4Ñ5Ô5Ð5Ý�w 
× 2Ò 2Ñ 4Ô 4Ñ5Ô5Ð5õ �FŠF‰HŒH€EØ€Eˆ$�KØ
-€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�Š�eÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÆG Ç GÇGÚmethod)rS   r)   r*   rG   é   c                 óÚ   — t          |¬¦  «        } t          || ¦  «        t          ¦  «         d}t          ||¬¦  «        } t          || ¦  «        t          ¦  «         |j        |k     dS )zsCheck that the input sample step doesn't raise an error
    and that sample interval doesn't change after fit.
    rF   g      à?)rG   Úsample_intervalN)r   Úgetattrr'   r_   )r\   rG   Útransformerr_   s       r7   Ú'test_additive_chi2_sampler_sample_stepsrb      s}   € õ &°<Ð@Ñ@Ô@€KØ …GˆK˜Ñ Ô ¥Ñ#Ô#Ð#à€OÝ%Ø!Ø'ðñ ô €Kð !…GˆK˜Ñ Ô ¥Ñ#Ô#Ð#ØÔ ?Ò2Ð2Ð2Ð2r9   c                  óú   — t          ¦   «         } |                      t          ¦  «         t          j        d¦  «        }t          j        t          |¬¦  «        5  | j        €J ‚	 ddd¦  «         dS # 1 swxY w Y   dS )zICheck that we raise a FutureWarning when accessing to `sample_interval_`.zYThe ``sample_interval_`` attribute was deprecated in version 1.3 and will be removed 1.5.rJ   N)	r   rS   r'   ÚreÚescaperP   ÚwarnsÚFutureWarningÚsample_interval_)ra   rZ   s     r7   Ú*test_additive_chi2_sampler_future_warningsri   ’   sÂ   € å%Ñ'Ô'€KØ‡O‚O•AÑÔÐÝ
Œ)ð	ñô €Cõ 
Œ•m¨3Ð	/Ñ	/Ô	/ð 8ð 8ØÔ+Ð7Ð7Ð7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s   Á
A0Á0A4Á7A4c                 óò   — t          d¬¦  «        }t          j        d¦  «        }t          j        t
          |¬¦  «        5   t          || ¦  «        t          ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z8Check that we raise a ValueError on invalid sample_stepsr]   rF   zHIf sample_steps is not in [1, 2, 3], you need to provide sample_intervalrJ   N)r   rd   re   rP   rQ   rR   r`   r'   )r\   ra   rZ   s      r7   Ú-test_additive_chi2_sampler_wrong_sample_stepsrk   ž   s½   € õ &°1Ð5Ñ5Ô5€KÝ
Œ)ØRñô €Cõ 
Œ•z¨Ð	-Ñ	-Ô	-ð (ð (Ø$��˜VÑ$Ô$¥QÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   Á A,Á,A0Á3A0c                  ó.  — d} |  dz  t           d<   t          | z   d d …t          j        d d …f         }t           | z   t          j        d d …d d …f         }t          j        |¦  «        dz  t          j        |¦  «        dz  z   t          j        d¦  «        z   t          j        ||z   ¦  «        z
  }t          j        |                     d¬¦  «        ¦  «        }t          | dd¬¦  «        }|                     t          ¦  «        }| 	                    t           ¦  «        }t          j
        ||j        ¦  «        }t          ||d	¦  «         t          j        |¦  «                             ¦   «         s
J d
¦   «         ‚t          j        |¦  «                             ¦   «         s
J d¦   «         ‚t                                ¦   «         }	|  dz  |	d<   d}
t!          j        t$          |
¬¦  «        5  | 	                    |	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Ng¸…ëQ¸ž?g       @rI   r   r   éè  r!   )Ú
skewednessr"   r#   r   zNaNs found in the Gram matrixz)NaNs found in the approximate Gram matrixz2X may not contain entries smaller than -skewednessrJ   )r(   r'   r+   rL   ÚlogÚexprM   r	   r)   r*   r,   r-   r   ÚisfiniteÚallrO   rP   rQ   rR   )ÚcÚX_cÚY_cÚ
log_kernelr1   r*   r3   r4   r5   rY   rZ   s              r7   Útest_skewed_chi2_samplerrw   ©   s*  € ð 	€Að ˆb�3‰h…A€d�Gõ ˆq‰5�!�!�!•R”Z   Ð"Ô
#€CÝˆq‰5•"”*˜a˜a˜a   Ð"Ô
#€Cõ
 
Œ�‰Œ�sÑ	�rœv c™{œ{¨SÑ0Ñ1µB´F¸3±K´KÑ?Å"Ä&ÈÈsÉÑBSÔBSÑSð õ ŒV�J—N’N¨�NÑ*Ô*Ñ+Ô+€Fõ "¨Q¸TÐPRÐSÑSÔS€IØ×%Ò%¥aÑ(Ô(€GØ×!Ò!¥!Ñ$Ô$€Gå”F˜7 G¤IÑ.Ô.€MÝ˜f m°QÑ7Ô7Ð7ÝŒ;�vÑÔ×"Ò"Ñ$Ô$ÐEÐEÐ&EÑEÔEÐEÝŒ;�}Ñ%Ô%×)Ò)Ñ+Ô+ÐXÐXÐ-XÑXÔXÐXõ �FŠF‰HŒH€EØ�"�s‘(€Eˆ$�KØ
>€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð #ð #Ø×Ò˜EÑ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   Ç'H
È
HÈHc                  ó´  — t          ¦   «         } t                               ¦   «         }d|d<   t          j        t
          d¬¦  «        5  |                      |¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5  |                      t          ¦  «         |                      |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zEnsures correct error messagerH   rI   zX in AdditiveChi2Sampler.fitrJ   Nz"X in AdditiveChi2Sampler.transform)r   r'   rO   rP   rQ   rR   rS   r*   )ra   ÚX_negs     r7   Ú%test_additive_chi2_sampler_exceptionsrz   Ñ   s@  € å%Ñ'Ô'€KÝ�FŠF‰HŒH€EØ€Eˆ$�KÝ	Œ•zÐ)GÐ	HÑ	HÔ	Hð ð Ø�Š˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•zÐ)MÐ	NÑ	NÔ	Nð %ð %Ø�Š�ÑÔÐØ×Ò˜eÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s$   ÁA*Á*A.Á1A.Â0CÃCÃCc                  óø  — d} t          t          t          | ¬¦  «        }t          | dd¬¦  «        }|                     t          ¦  «        }|                     t          ¦  «        }t          j        ||j        ¦  «        }||z
  }t          j	        t          j
        |¦  «        ¦  «        dk    sJ ‚t          j	        ||¬¦  «         t          j        |¦  «        dk    sJ ‚t          j
        |¦  «        d	k    sJ ‚d S )
Ng      $@©r   rm   r!   )r   r"   r#   g{®Gáz„?r%   r   r$   )r   r'   r(   r   r)   r*   r+   r,   r-   r.   r/   r0   )r   r1   Úrbf_transformr3   r4   r5   r6   s          r7   Útest_rbf_samplerr~   Ý   sæ   € ð €EÝ��1 EÐ*Ñ*Ô*€Fõ  U¸ÈBÐOÑOÔO€MØ×)Ò)­!Ñ,Ô,€GØ×%Ò%¥aÑ(Ô(€GÝ”F˜7 G¤IÑ.Ô.€Mà�]Ñ"€EÝŒ6•"”'˜%‘.”.Ñ!Ô! TÒ)Ð)Ð)Ð)Ý„Fˆ5�eÐÑÔÐÝŒ6�%‰=Œ=˜CÒÐÐÐÝŒ7�5‰>Œ>˜TÒ!Ð!Ð!Ð!Ð!Ð!r9   c                 óÒ   — t          ¦   «         }t          j        ddgddgddgg| ¬¦  «        }|                     |¦  «         |j        j        | k    sJ ‚|j        j        | k    sJ ‚dS ©	zRCheck that the fitted attributes are stored accordingly to the
    data type of X.r   r   r   r]   é   é   ©ÚdtypeN)r   r+   ÚarrayrS   Úrandom_offset_r„   Úrandom_weights_)Úglobal_dtypeÚrbfr'   s      r7   Ú(test_rbf_sampler_fitted_attributes_dtyperŠ   ð   sw   € õ ‰,Œ,€Cå
Œ�1�a�&˜1˜a˜& 1 a &Ð)°Ð>Ñ>Ô>€Aà‡G‚GˆA�J„J€JàÔÔ# |Ò3Ð3Ð3Ð3ØÔÔ$¨Ò4Ð4Ð4Ð4Ð4Ð4r9   c                  ó¦  — t          d¬¦  «        } t          j        ddgddgddggt          j        ¬	¦  «        }|                      |¦  «         t          d¬¦  «        }t          j        ddgddgddggt          j        ¬	¦  «        }|                     |¦  «         t          | j        |j        ¦  «         t          | j        |j        ¦  «         d
S ©z?Check the equivalence of the results with 32 and 64 bits input.r!   )r#   r   r   r   r]   r�   r‚   rƒ   N)	r   r+   r…   Úfloat32rS   Úfloat64r   r†   r‡   )Úrbf32ÚX32Úrbf64ÚX64s       r7   Ú"test_rbf_sampler_dtype_equivalencer“   ý   sÄ   € å BÐ'Ñ'Ô'€EÝ
Œ(�Q˜�F˜Q ˜F Q¨ FÐ+µ2´:Ð
>Ñ
>Ô
>€CØ	‡I‚Iˆc�N„N€Nå BÐ'Ñ'Ô'€EÝ
Œ(�Q˜�F˜Q ˜F Q¨ FÐ+µ2´:Ð
>Ñ
>Ô
>€CØ	‡I‚Iˆc�N„N€Nå�EÔ(¨%Ô*>Ñ?Ô?Ð?Ý�EÔ)¨5Ô+@ÑAÔAÐAÐAÐAr9   c                  ó¤   — dgdggddg}} t          d¬¦  «        }|                     | |¦  «         |j        t          j        d¦  «        k    sJ ‚dS )	z4Check the inner value computed when `gamma='scale'`.g        r:   r   r   Úscaler|   r]   N)r   rS   Ú_gammarP   Úapprox)r'   Úyr‰   s      r7   Útest_rbf_sampler_gamma_scaler™     s[   € àˆE�C�5ˆ>˜A˜q˜6€q€AÝ
˜7Ð
#Ñ
#Ô
#€CØ‡G‚GˆAˆq�M„M€MØŒ:�œ qÑ)Ô)Ò)Ð)Ð)Ð)Ð)Ð)r9   c                 óÒ   — t          ¦   «         }t          j        ddgddgddgg| ¬¦  «        }|                     |¦  «         |j        j        | k    sJ ‚|j        j        | k    sJ ‚dS r€   )r	   r+   r…   rS   r†   r„   r‡   )rˆ   Úskewed_chi2_samplerr'   s      r7   Ú0test_skewed_chi2_sampler_fitted_attributes_dtyperœ     s   € õ ,Ñ-Ô-Ðå
Œ�1�a�&˜1˜a˜& 1 a &Ð)°Ð>Ñ>Ô>€Aà×Ò˜AÑÔÐàÔ-Ô3°|ÒCÐCÐCÐCØÔ.Ô4¸ÒDÐDÐDÐDÐDÐDr9   c                  ó¦  — t          d¬¦  «        } t          j        ddgddgddggt          j        ¬	¦  «        }|                      |¦  «         t          d¬¦  «        }t          j        ddgddgddggt          j        ¬	¦  «        }|                     |¦  «         t          | j        |j        ¦  «         t          | j        |j        ¦  «         d
S rŒ   )	r	   r+   r…   r�   rS   rŽ   r   r†   r‡   )Úskewed_chi2_sampler_32ÚX_32Úskewed_chi2_sampler_64ÚX_64s       r7   Ú*test_skewed_chi2_sampler_dtype_equivalencer¢      sæ   € å.¸BÐ?Ñ?Ô?ÐÝŒ8�a˜�V˜a ˜V a¨ VÐ,µB´JÐ?Ñ?Ô?€DØ×Ò˜tÑ$Ô$Ð$å.¸BÐ?Ñ?Ô?ÐÝŒ8�a˜�V˜a ˜V a¨ VÐ,µB´JÐ?Ñ?Ô?€DØ×Ò˜tÑ$Ô$Ð$åØÔ-Ð/EÔ/Tñô ð õ ØÔ.Ð0FÔ0Vñô ð ð ð r9   c                  óÚ  — ddgddgddgg} t          ¦   «                              | ¦  «                             | ¦  «         t          ¦   «                              | ¦  «                             | ¦  «         t	          ¦   «                              | ¦  «                             | ¦  «         t          | ¦  «        } t	          ¦   «                              | ¦  «                             | ¦  «         d S )Nr   r   r   r]   r�   r‚   )r   rS   r*   r	   r   r   )r'   s    r7   Útest_input_validationr¤   2  sÉ   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÝÑÔ×Ò˜aÑ Ô ×*Ò*¨1Ñ-Ô-Ð-ÝÑÔ×Ò˜AÑÔ×(Ò(¨Ñ+Ô+Ð+Ý�L„L×Ò�QÑÔ×!Ò! !Ñ$Ô$Ð$å�1‰Œ€AÝ�L„L×Ò�QÑÔ×!Ò! !Ñ$Ô$Ð$Ð$Ð$r9   c                  ó`  — t           j                             d¦  «        } |                      d¬¦  «        }t	          |j        d         ¬¦  «                             |¦  «        }t          |¦  «        }t          t          j	        ||j
        ¦  «        |¦  «         t	          d| ¬¦  «        }|                     |¦  «                             |¦  «        }|j        |j        d         dfk    sJ ‚t	          dt          | ¬¦  «        }|                     |¦  «                             |¦  «        }|j        |j        d         dfk    sJ ‚t          ¦   «         }|D ]V}t	          d|| ¬¦  «        }|                     |¦  «                             |¦  «        }|j        |j        d         dfk    sJ ‚ŒWd S )Nr   ©é
   r]   r   ©r"   r   ©r"   r#   )r"   r1   r#   )r+   ÚrandomÚRandomStateÚuniformr   Úshaper)   r   r   r,   r-   rS   r*   rD   r   )Úrndr'   ÚX_transformedÚKÚtransÚkernels_availableÚkerns          r7   Útest_nystroem_approximationr´   >  s�  € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š˜ˆÑ!Ô!€Aõ ¨!¬'°!¬*Ð5Ñ5Ô5×CÒCÀAÑFÔF€MÝ�1‰Œ€AÝ�bœf ]°M´OÑDÔDÀaÑHÔHÐHå !°#Ð6Ñ6Ô6€EØ—I’I˜a‘L”L×*Ò*¨1Ñ-Ô-€MØÔ 1¤7¨1¤:¨q /Ò1Ð1Ð1Ð1õ  !­NÈÐMÑMÔM€EØ—I’I˜a‘L”L×*Ò*¨1Ñ-Ô-€MØÔ 1¤7¨1¤:¨q /Ò1Ð1Ð1Ð1õ 'Ñ(Ô(ÐØ!ð 6ð 6ˆÝ a°À3ÐGÑGÔGˆØŸ	š	 !™œ×.Ò.¨qÑ1Ô1ˆØÔ" q¤w¨q¤z°1 oÒ5Ð5Ð5Ð5Ð5ð6ð 6r9   c                  óò  — t           j                             d¦  «        } |                      d¬¦  «        }t	          d¬¦  «        }|                     |¦  «        }t          |d ¬¦  «        }t          j        ||j        ¦  «        }t          ||¦  «         t	          dd¬¦  «        }|                     |¦  «        }t          |d	¬¦  «        }t          j        ||j        ¦  «        }t          ||¦  «         d S )
Nr!   r¦   r   r§   r¨   r|   Úchi2©r1   r"   r   )r+   rª   r«   r¬   r   r)   r   r,   r-   r   r
   )r®   r'   Únystroemr¯   r°   ÚK2s         r7   Ú test_nystroem_default_parametersrº   Y  sæ   € Ý
Œ)×
Ò
 Ñ
#Ô
#€CØ�Š˜ˆÑ!Ô!€Aõ  RÐ(Ñ(Ô(€HØ×*Ò*¨1Ñ-Ô-€MÝ�1˜DÐ!Ñ!Ô!€AÝ	Œ�˜}œÑ	/Ô	/€BÝ˜a Ñ$Ô$Ð$õ ˜v°BÐ7Ñ7Ô7€HØ×*Ò*¨1Ñ-Ô-€MÝ�A˜QÐÑÔ€AÝ	Œ�˜}œÑ	/Ô	/€BÝ˜a Ñ$Ô$Ð$Ð$Ð$r9   c                  óø  — t           j                             d¦  «        } |                      dd¦  «        }t          j        |gdz  ¦  «        }d}t          ||j        d         ¬¦  «                             |¦  «        }|                     |¦  «        }t          ||¬¦  «        }t          |t          j        ||j        ¦  «        ¦  «         t          j        t          j        t          ¦  «        ¦  «        sJ ‚d S )Nr   r§   é   r   éd   )r   r"   r|   )r+   rª   r«   ÚrandÚvstackr   r­   rS   r*   r   r   r,   r-   rr   rq   r(   )Úrngr'   r   ÚNr¯   r°   s         r7   Útest_nystroem_singular_kernelrÂ   m  sÍ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š��RÑÔ€AÝ
Œ	�1�#˜‘'ÑÔ€Aà€EÝ�u¨1¬7°1¬:Ð6Ñ6Ô6×:Ò:¸1Ñ=Ô=€AØ—K’K ‘N”N€Må�1˜EÐ"Ñ"Ô"€Aå˜a¥¤¨°}´Ñ!GÔ!GÑHÔHÐHÝŒ6•"”+�a‘.”.Ñ!Ô!Ð!Ð!Ð!Ð!Ð!r9   c                  óJ  — t           j                             d¦  «        } |                      d¬¦  «        }t	          |dd¬¦  «        }t          d|j        d         dd¬	¦  «        }|                     |¦  «        }t          t          j	        ||j
        ¦  «        |¦  «         d S )
Né%   r¦   r   gÍÌÌÌÌÌ@r   ©r    r   Ú
polynomialr   )r1   r"   r    r   )r+   rª   r«   r¬   r   r   r­   r)   r   r,   r-   )r®   r'   r°   r¸   r¯   s        r7   Ú test_nystroem_poly_kernel_paramsrÇ   }  sš   € å
Œ)×
Ò
 Ñ
#Ô
#€CØ�Š˜ˆÑ!Ô!€Aå˜! C¨sÐ3Ñ3Ô3€AÝØ¨!¬'°!¬*¸SÈðñ ô €Hð ×*Ò*¨1Ñ-Ô-€MÝ�bœf ]°M´OÑDÔDÀaÑHÔHÐHÐHÐHr9   c                  ó  — t           j                             d¦  «        } d}|                      |df¬¦  «        }d„ }g }t	          |¦  «        }t          ||dz
  d|i¬¦  «                             |¦  «         t          |¦  «        ||dz
  z  d	z  k    sJ ‚d
}ddiddidd	if}|D ]a}t          dt          |dz
  dœ|¤Ž}t          j
        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   Œbd S )Nr!   r§   r]   r   c                 óz   — |                      d¦  «         t          j        | |¦  «                             ¦   «         S )z&Histogram kernel that writes to a log.r   )Úappendr+   ÚminimumrM   )Úxr˜   ro   s      r7   Úlogging_histogram_kernelz8test_nystroem_callable.<locals>.logging_histogram_kernel�  s/   € à�
Š
�1‰ŒˆÝŒz˜!˜QÑÔ×#Ò#Ñ%Ô%Ð%r9   r   ro   )r1   r"   Úkernel_paramsr   ú-Don't pass gamma, coef0 or degree to Nystroemr   r   r    r·   rJ   © )r+   rª   r«   r¬   Úlistr   rS   ÚlenrD   rP   rQ   rR   )	r®   Ú	n_samplesr'   rÍ   Ú
kernel_logrZ   ÚparamsÚparamÚnys	            r7   Útest_nystroem_callablerØ   Š  s|  € å
Œ)×
Ò
 Ñ
#Ô
#€CØ€IØ�Š˜) Q˜ˆÑ(Ô(€Að&ð &ð &ð
 €JÝˆQ‰Œ€AÝØ'Ø !‘mØ˜jÐ)ðñ ô ÷ 
‚cˆ!�f„f€fÝˆz‰?Œ?˜i¨9°q©=Ñ9¸AÑ=Ò=Ð=Ð=Ð=ð :€CØ˜ˆl˜W a˜L¨8°Q¨-Ð8€FØð ð ˆÝÐS�^¸9Àq¹=ÐSÐSÈUÐSÐSˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	ð 	Ø�FŠF�1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øðð s   ÃC;Ã;C?	ÄC?	c                  ó.  — t           j                             d¦  «        } |                      d¬¦  «        }t	          |dd¬¦  «        }t          d|j        d         ¬	¦  «        }|                     |¦  «        }t          t          j	        ||j
        ¦  «        |¦  «         d
}ddiddiddif}|D ]d}t          dd|j        d         d	œ|¤Ž}t          j        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   Œed S )Né   r¦   r   r   r   rÅ   Úprecomputedr   r·   rÏ   r   r   r   r    rJ   rÐ   )r+   rª   r«   r¬   r   r   r­   r)   r   r,   r-   rP   rQ   rR   rS   )	r®   r'   r°   r¸   r¯   rZ   rÕ   rÖ   r×   s	            r7   Ú test_nystroem_precomputed_kernelrÜ   §  s[  € õ Œ)×
Ò
 Ñ
#Ô
#€CØ�Š˜ˆÑ!Ô!€Aå˜! A¨SÐ1Ñ1Ô1€AÝ˜}¸1¼7À1¼:ÐFÑFÔF€HØ×*Ò*¨1Ñ-Ô-€MÝ�bœf ]°M´OÑDÔDÀaÑHÔHÐHð :€CØ˜ˆl˜W a˜L¨8°Q¨-Ð8€FØð ð ˆÝÐM˜]¸¼À¼ÐMÐMÀuÐMÐMˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	ð 	Ø�FŠF�1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øðð s   Ã'D	Ä	D	ÄD	c                  óž   — t          dd¬¦  «        \  } }t          dd¬¦  «        }|                     | ¦  «         |j        j        dk    sJ ‚dS )	zÓCheck that `component_indices_` corresponds to the subset of
    training points used to construct the feature map.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20474
    r½   r¼   )rÓ   Ú
n_featuresr§   r   r©   )r§   N)r   r   rS   Úcomponent_indices_r­   )r'   Ú_Úfeature_map_nystroems      r7   Útest_nystroem_component_indicesrâ   »  sh   € õ ¨¸Ð<Ñ<Ô<�D€A€qÝ#ØØðñ ô Ðð ×Ò˜QÑÔÐØÔ2Ô8¸EÒAÐAÐAÐAÐAÐAr9   Ú	Estimatorc                 óF  ‡—  | ¦   «                               t          ¦  «        }|                     t          ¦  «        }|                     ¦   «         }| j                             ¦   «         Šˆfd„t          |j        d         ¦  «        D ¦   «         }t          ||¦  «         dS )zCheck get_feature_names_outc                 ó   •— g | ]}‰› |› �‘Œ	S rÐ   rÐ   )Ú.0ÚiÚ
class_names     €r7   ú
<listcomp>z.test_get_feature_names_out.<locals>.<listcomp>Ô  s$   ø€ ÐJÐJÐJ¨Q˜Ð( QÐ(Ð(ÐJÐJÐJr9   r   N)	rS   r'   r*   Úget_feature_names_outÚ__name__ÚlowerÚranger­   r   )rã   Úestr3   Ú	names_outÚexpected_namesrè   s        @r7   Útest_get_feature_names_outrñ   Ê  s�   ø€ ð
 ˆ)‰+Œ+�/Š/�!Ñ
Ô
€CØ�mŠm�AÑÔ€Gà×)Ò)Ñ+Ô+€IØÔ#×)Ò)Ñ+Ô+€JØJÐJÐJÐJµ%¸¼ÀaÔ8HÑ2IÔ2IÐJÑJÔJ€NÝ�y .Ñ1Ô1Ð1Ð1Ð1r9   c                  ó*  — t           j                             d¦  «        } |                      d¬¦  «        }t	          d¬¦  «                             |¦  «        }g d¢}g d¢}|                     |¬¦  «        }d	„ |D ¦   «         }t          ||¦  «         d
S )z4Check get_feature_names_out for AdditiveChi2Sampler.r   )r   r   r   r   rF   )Úf0Úf1Úf2)Úf0_sqrtÚf1_sqrtÚf2_sqrtÚf0_cos1Úf1_cos1Úf2_cos1Úf0_sin1Úf1_sin1Úf2_sin1Úf0_cos2Úf1_cos2Úf2_cos2Úf0_sin2Úf1_sin2Úf2_sin2)Úinput_featuresc                 ó   — g | ]}d |› �‘ŒS )Úadditivechi2sampler_rÐ   )ræ   Úsuffixs     r7   ré   zBtest_additivechi2sampler_get_feature_names_out.<locals>.<listcomp>ò  s!   € ÐMÐMÐM¸&Ð5¨VÐ5Ð5ÐMÐMÐMr9   N)r+   rª   r«   Úrandom_sampler   rS   rê   r   )rÀ   r'   Úchi2_samplerÚinput_namesÚsuffixesrï   rð   s          r7   Ú.test_additivechi2sampler_get_feature_names_outr  Ø  s¨   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜xÐÑ(Ô(€Aå&°AÐ6Ñ6Ô6×:Ò:¸1Ñ=Ô=€LØ$Ð$Ð$€Kðð ð €Hð$ ×2Ò2À+Ð2ÑNÔN€IØMÐMÀHÐMÑMÔM€NÝ�y .Ñ1Ô1Ð1Ð1Ð1r9   );rd   Únumpyr+   rP   Úscipy.sparser   Úsklearn.datasetsr   Úsklearn.kernel_approximationr   r   r   r   r	   Úsklearn.metrics.pairwiser
   r   r   r   Úsklearn.utils._testingr   r   r   rª   r«   rÀ   r	  r'   r(   rM   rL   ÚmarkÚparametrizer8   rB   rD   r[   rí   rb   ri   rk   rw   rz   r~   rŠ   r“   r™   rœ   r¢   r¤   r´   rº   rÂ   rÇ   rØ   rÜ   râ   rñ   r  rÐ   r9   r7   ú<module>r     sŒ  ðØ 	€	€	€	à Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð 	„i×Ò˜AÑÔ€Ø×Ò˜9ÐÑ%Ô%€Ø×Ò˜9ÐÑ%Ô%€Ø €Q‡U‚U�€U�]„]�1�1�1�b”j�=Ô!Ñ !€Ø €Q‡U‚U�€U�]„]�1�1�1�b”j�=Ô!Ñ !€ð „×Ò˜ - - -Ñ0Ô0Ø„×ÒÐ/Ð1PÐ1PÐ1PÑQÔQØ„×Ò˜ 1 c (Ñ+Ô+ð"ð "ñ ,Ô+ñ RÔQñ 1Ô0ð"ð4 „×Ò˜ 3¨ *Ñ-Ô-Ø„×Ò˜ 9 9 9Ñ-Ô-Ø„×Ò˜ 1 c (Ñ+Ô+ð)ð )ñ ,Ô+ñ .Ô-ñ .Ô-ð)ð(ð ð ð!ð !ð !ðH „×Ò˜Ð#HÐ#HÐ#HÑIÔIØ„×Ò˜¨¨¨q°!©¬Ñ5Ô5ð3ð 3ñ 6Ô5ñ JÔIð3ð"	8ð 	8ð 	8ð „×Ò˜Ð#HÐ#HÐ#HÑIÔIð(ð (ñ JÔIð(ð%#ð %#ð %#ðP	%ð 	%ð 	%ð"ð "ð "ð&
5ð 
5ð 
5ðBð Bð Bð*ð *ð *ð
Eð 
Eð 
Eðð ð ð$	%ð 	%ð 	%ð6ð 6ð 6ð6%ð %ð %ð("ð "ð "ð 
Ið 
Ið 
Iðð ð ð:ð ð ð(Bð Bð Bð „×ÒØÐ'¨Ð5FÈÐQñô ð2ð 2ñô ð2ð2ð 2ð 2ð 2ð 2r9   