Ë
    ÜÍ:j÷G  ã                   óä  — 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mZ d dlmZ d dlmZmZmZmZ d d	lm Z  ejB                  jE                  d «      Z#e#jI                  d
¬«      Z%e#jI                  d
¬«      Z&e%e%jO                  d¬«      dd…ejP                  f   z  Z%e&e&jO                  d¬«      dd…ejP                  f   z  Z&de%jR                  _*        de&jR                  _*        ejV                  jY                  dg d¢«      ejV                  jY                  dg d¢«      ejV                  jY                  dd dg«      d„ «       «       «       Z-ejV                  jY                  de «      ejV                  jY                  dddg«      ejV                  jY                  dg d¢«      ejV                  jY                  dd dg«      d„ «       «       «       «       Z.d„ Z/ejV                  jY                  de «      d„ «       Z0ejV                  jY                  dg d¢«      ejV                  jY                  d  e1dd!«      «      d"„ «       «       Z2ejV                  jY                  dg d¢«      d#„ «       Z3d$„ Z4d%„ Z5d&„ Z6d'„ Z7d(„ Z8d)„ Z9d*„ Z:d+„ Z;ejV                  jY                  de «      d,„ «       Z<d-„ Z=ejV                  jY                  d. e«       «      ejV                  jY                  d/ e> e«       «      e/d0gz   «      ejV                  jY                  d1d2d3g«      d4„ «       «       «       Z?d5„ Z@d6„ ZAd7„ ZBd8„ ZCd9„ ZDd:„ ZEejV                  jY                  d;eeee
g«      d<„ «       ZFd=„ ZGy)>é    N)Úconfig_context)Úmake_classification)ÚAdditiveChi2SamplerÚNystroemÚPolynomialCountSketchÚ
RBFSamplerÚSkewedChi2Sampler)Úchi2_kernelÚkernel_metricsÚpolynomial_kernelÚ
rbf_kernel)Ú_atol_for_typeÚget_namespace_and_deviceÚmove_toÚ)yield_namespace_device_dtype_combinations©Údevice)Ú_array_api_for_testsÚassert_allcloseÚassert_array_almost_equalÚassert_array_equal)ÚCSR_CONTAINERS)é,  é2   ©Úsizeé   ©ÚaxisFÚgamma)çš™™™™™¹?r   ç      @zdegree, n_components))r   éô  )é   r#   )é   iˆ  Úcoef0r"   c                 óâ  — t        t        t        | ||¬«      }t        || ||d¬«      }|j	                  t        «      }|j                  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 ‚y )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
             ú|/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/tests/test_kernel_approximation.pyÚtest_polynomial_count_sketchr@   3   sÊ   € ô œq¤!¨5¸ÀuÔM€Fô )Ø!ØØØØô€Lð ×(Ñ(¬Ó+€GØ×$Ñ$¤QÓ'€GÜ—F‘F˜7 G§I¡IÓ.€Mà�]Ñ"€EÜ�6‰6”"—'‘'˜%“.Ó! TÒ)Ð)Ð)Ü‡F�Fˆ5�eÕÜ�6‰6�%‹=˜CÒÐÐÜ�7‰7�5‹>˜TÒ!Ð!Ñ!ó    Úcsr_containerr!   ç      ð?r(   )r   r$   r%   c                 ó4  — t        d| ||d¬«      }|j                  t        «      }|j                  t        «      }t        d| ||d¬«      }|j                   |t        «      «      }|j                   |t        «      «      }	t        ||«       t        ||	«       y)zZCheck that PolynomialCountSketch results are the same for dense and sparse
    input.
    r#   r)   )r*   r    r(   r&   r+   N)r   r1   r/   r2   r0   r   )
r    r(   r&   rB   Úps_denseÚXt_denseÚYt_denseÚ	ps_sparseÚ	Xt_sparseÚ	Yt_sparses
             r?   Ú)test_polynomial_count_sketch_dense_sparserK   P   s’   € ô %Ø ¨f¸EÐPRô€Hð ×%Ñ%¤aÓ(€HØ×!Ñ!¤!Ó$€Hä%Ø ¨f¸EÐPRô€Ið ×'Ñ'©´aÓ(8Ó9€IØ×#Ñ#¡M´!Ó$4Ó5€Iä�H˜iÔ(Ü�H˜iÕ(rA   c                 ó   — | |z  S )N© )ÚxÚys     r?   Ú_linear_kernelrP   h   s   € Øˆq‰5€LrA   c                 óF  — t         d d …t        j                  d d …f   j                  «       }t        t        j                  d d …d d …f   j                  «       }d|z  |z  ||z   z  }|j                  d¬«      }t        d¬«      }|j                  t         «      }|j                  t        «      }t        j                  ||j                  «      }t        ||d«       |j                   | t         «      «      }	|j                   | t        «      «      }
t        ||	j                  «       «       t        ||
j                  «       «       t        j                  «       }d|d<   d}t        j                  t         |¬	«      5  |j#                  |«       d d d «       y # 1 sw Y   y xY w)
Nr$   r   r%   ©Úsample_stepsr   éÿÿÿÿ©r   r   z!Negative values in data passed to©Úmatch)r/   r3   ÚnewaxisÚcopyr0   Úsumr   r1   r2   r4   r5   r   r   ÚtoarrayÚpytestÚraisesÚ
ValueErrorÚfit)rB   ÚX_ÚY_Úlarge_kernelr9   r2   r;   r<   r=   Ú
X_sp_transÚ
Y_sp_transÚY_negÚmsgs                r?   Útest_additive_chi2_samplerrg   l   sQ  € ô 
Š1Œb�j‰jš!ÐÑ	×	!Ñ	!Ó	#€BÜ	
Œ2�:‰:’qš!ÐÑ	×	!Ñ	!Ó	#€Bà�r‘6˜B‘; " r¡'Ñ*€Lð ×Ñ 1ÐÓ%€Fô $°Ô3€IØ×%Ñ%¤aÓ(€GØ×!Ñ!¤!Ó$€Gä—F‘F˜7 G§I¡IÓ.€Mä˜f m°QÔ7à×(Ñ(©´qÓ)9Ó:€JØ×$Ñ$¡]´1Ó%5Ó6€Jä�w 
× 2Ñ 2Ó 4Ô5Ü�w 
× 2Ñ 2Ó 4Ô5ô �F‰F‹H€EØ€Eˆ$�KØ
-€CÜ	�‰”z¨Ô	-ñ Ø�‰�eÔ÷÷ ñ ús   Å<FÆF Úmethod)r_   r1   r2   rS   é   c                 ó´   — t        |¬«      } t        || «      t        «       d}t        ||¬«      } t        || «      t        «       |j                  |k(  sJ ‚y)zsCheck that the input sample step doesn't raise an error
    and that sample interval doesn't change after fit.
    rR   g      à?)rS   Úsample_intervalN)r   Úgetattrr/   rk   )rh   rS   Útransformerrk   s       r?   Ú'test_additive_chi2_sampler_sample_stepsrn   ‘   s[   € ô &°<Ô@€KØ „GˆK˜Ó ¤Ô#à€OÜ%Ø!Ø'ô€Kð !„GˆK˜Ó ¤Ô#Ø×&Ñ&¨/Ò9Ð9Ñ9rA   c                 óÒ   — t        d¬«      }t        j                  d«      }t        j                  t
        |¬«      5   t        || «      t        «       ddd«       y# 1 sw Y   yxY w)z8Check that we raise a ValueError on invalid sample_stepsri   rR   zHIf sample_steps is not in [1, 2, 3], you need to provide sample_intervalrV   N)r   ÚreÚescaper\   r]   r^   rl   r/   )rh   rm   rf   s      r?   Ú-test_additive_chi2_sampler_wrong_sample_stepsrr   £   sU   € ô &°1Ô5€KÜ
�)‰)ØRó€Cô 
�‰”z¨Ô	-ñ (Ø$Œ�˜VÓ$¤QÔ'÷(÷ (ñ (ús   ½AÁA&c                  óê  — d} t         j                  «       }|  dz  |d<   t        | z   d d …t        j                  d d …f   }|| 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                  |j                  d¬«      «      }t        | dd¬«      }|j                  t        «      }|j                  |«      }t        j                  ||j                  «      }	t        ||	d	«       t        j                  |«      j                  «       sJ d
«       ‚t        j                  |	«      j                  «       sJ d«       ‚|j                  «       }
|  dz  |
d<   d}t!        j"                  t$        |¬«      5  |j                  |
«       d d d «       y # 1 sw Y   y xY w)Ng¸…ëQ¸ž?g       @rU   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 -skewednessrV   )r0   rY   r/   r3   rX   ÚlogÚexprZ   r	   r1   r2   r4   r5   r   ÚisfiniteÚallr\   r]   r^   )Úcra   ÚX_cÚY_cÚ
log_kernelr9   r2   r;   r<   r=   re   rf   s               r?   Útest_skewed_chi2_samplerr~   ®   s¡  € ð 	€Aô 
�‰‹€BØˆr�C‰x€B€t�Hô ˆq‰5’!”R—Z‘Z¢Ð"Ñ
#€CØ�‰6”2—:‘:šq¢!Ð#Ñ
$€Cô
 
�‰�‹�sÑ	œrŸv™v c›{¨SÑ0Ñ1´B·F±F¸3³KÑ?Ä"Ç&Á&ÈÈsÉÓBSÑSð ô �V‰V�J—N‘N¨�NÓ*Ó+€Fô "¨Q¸TÐPRÔS€IØ×%Ñ%¤aÓ(€GØ×!Ñ! "Ó%€Gä—F‘F˜7 G§I¡IÓ.€MÜ˜f m°QÔ7Ü�;‰;�vÓ×"Ñ"Ô$ÐEÐ&EÓEÐ$Ü�;‰;�}Ó%×)Ñ)Ô+ÐXÐ-XÓXÐ+ð �G‰G‹I€EØ�"�s‘(€Eˆ$�KØ
>€CÜ	�‰”z¨Ô	-ñ #Ø×Ñ˜EÔ"÷#÷ #ñ #ús   ÇG)Ç)G2c                  óx  — t        «       } t        j                  «       }d|d<   t        j                  t
        d¬«      5  | j                  |«       ddd«       t        j                  t
        d¬«      5  | j                  t        «       | j                  |«       ddd«       y# 1 sw Y   ŒTxY w# 1 sw Y   yxY w)zEnsures correct error messagerT   rU   zX in AdditiveChi2SamplerrV   N)r   r/   rY   r\   r]   r^   r_   r2   )rm   ÚX_negs     r?   Ú%test_additive_chi2_sampler_exceptionsr�   ×   s‘   € ä%Ó'€KÜ�F‰F‹H€EØ€Eˆ$�KÜ	�‰”zÐ)CÔ	Dñ Ø�‰˜Ô÷ä	�‰”zÐ)CÔ	Dñ %Ø�‰œÔØ×Ñ˜eÔ$÷%ð %÷ð ú÷%ð %ús   ¿B$Á4'B0Â$B-Â0B9c                  óÞ  — d} t        t        t        | ¬«      }t        | dd¬«      }|j	                  t        «      }|j                  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 ‚y )
Ng      $@©r    rt   r)   )r    r*   r+   g{®Gáz„?r-   r!   r,   )r   r/   r0   r   r1   r2   r3   r4   r5   r6   r7   r8   )r    r9   Úrbf_transformr;   r<   r=   r>   s          r?   Útest_rbf_samplerr…   ã   s¾   € ð €EÜœœ1 EÔ*€Fô  U¸ÈBÔO€MØ×)Ñ)¬!Ó,€GØ×%Ñ%¤aÓ(€GÜ—F‘F˜7 G§I¡IÓ.€Mà�]Ñ"€EÜ�6‰6”"—'‘'˜%“.Ó! TÒ)Ð)Ð)Ü‡F�Fˆ5�eÕÜ�6‰6�%‹=˜CÒÐÐÜ�7‰7�5‹>˜TÒ!Ð!Ñ!rA   c                 óæ   — t        «       }t        j                  ddgddgddgg| ¬«      }|j                  |«       |j                  j
                  | k(  sJ ‚|j                  j
                  | k(  sJ ‚y©	zRCheck that the fitted attributes are stored accordingly to the
    data type of X.r   r$   r%   ri   é   é   ©ÚdtypeN)r   r3   Úarrayr_   Úrandom_offset_r‹   Úrandom_weights_)Úglobal_dtypeÚrbfr/   s      r?   Ú(test_rbf_sampler_fitted_attributes_dtyper‘   ö   sm   € ô ‹,€Cä
�‰�1�a�&˜1˜a˜& 1 a &Ð)°Ô>€Aà‡G�GˆA„Jà×Ñ×#Ñ# |Ò3Ð3Ð3Ø×Ñ×$Ñ$¨Ò4Ð4Ñ4rA   c                  ó°  — t        d¬«      } t        j                  ddgddgddggt        j                  ¬	«      }| j	                  |«       t        d¬«      }t        j                  ddgddgddggt        j
                  ¬	«      }|j	                  |«       t        | j                  |j                  «       t        | j                  |j                  «       y
©z?Check the equivalence of the results with 32 and 64 bits input.r)   )r+   r   r$   r%   ri   rˆ   r‰   rŠ   N)	r   r3   rŒ   Úfloat32r_   Úfloat64r   r�   rŽ   )Úrbf32ÚX32Úrbf64ÚX64s       r?   Ú"test_rbf_sampler_dtype_equivalencerš     s¦   € ä BÔ'€EÜ
�(‰(�Q˜�F˜Q ˜F Q¨ FÐ+´2·:±:Ô
>€CØ	‡I�Iˆc„Nä BÔ'€EÜ
�(‰(�Q˜�F˜Q ˜F Q¨ FÐ+´2·:±:Ô
>€CØ	‡I�Iˆc„Nä�E×(Ñ(¨%×*>Ñ*>Ô?Ü�E×)Ñ)¨5×+@Ñ+@ÕArA   c                  óœ   — dgdggddg}} t        d¬«      }|j                  | |«       |j                  t        j                  d«      k(  sJ ‚y)	z4Check the inner value computed when `gamma='scale'`.g        rC   r   r   Úscalerƒ   ri   N)r   r_   Ú_gammar\   Úapprox)r/   rO   r�   s      r?   Útest_rbf_sampler_gamma_scalerŸ     sI   € àˆE�C�5ˆ>˜A˜q˜6€q€AÜ
˜7Ô
#€CØ‡G�GˆAˆq„MØ�:‰:œŸ™ qÓ)Ò)Ð)Ñ)rA   c                 óæ   — t        «       }t        j                  ddgddgddgg| ¬«      }|j                  |«       |j                  j
                  | k(  sJ ‚|j                  j
                  | k(  sJ ‚yr‡   )r	   r3   rŒ   r_   r�   r‹   rŽ   )r�   Úskewed_chi2_samplerr/   s      r?   Ú0test_skewed_chi2_sampler_fitted_attributes_dtyper¢     sr   € ô ,Ó-Ðä
�‰�1�a�&˜1˜a˜& 1 a &Ð)°Ô>€Aà×Ñ˜AÔà×-Ñ-×3Ñ3°|ÒCÐCÐCØ×.Ñ.×4Ñ4¸ÒDÐDÑDrA   c                  ó°  — t        d¬«      } t        j                  ddgddgddggt        j                  ¬	«      }| j	                  |«       t        d¬«      }t        j                  ddgddgddggt        j
                  ¬	«      }|j	                  |«       t        | j                  |j                  «       t        | j                  |j                  «       y
r“   )	r	   r3   rŒ   r”   r_   r•   r   r�   rŽ   )Úskewed_chi2_sampler_32ÚX_32Úskewed_chi2_sampler_64ÚX_64s       r?   Ú*test_skewed_chi2_sampler_dtype_equivalencer¨   &  s¸   € ä.¸BÔ?ÐÜ�8‰8�a˜�V˜a ˜V a¨ VÐ,´B·J±JÔ?€DØ×Ñ˜tÔ$ä.¸BÔ?ÐÜ�8‰8�a˜�V˜a ˜V a¨ VÐ,´B·J±JÔ?€DØ×Ñ˜tÔ$äØ×-Ñ-Ð/E×/TÑ/Tôô Ø×.Ñ.Ð0F×0VÑ0VõrA   c                 ój  — ddgddgddgg}t        «       j                  |«      j                  |«       t        «       j                  |«      j                  |«       t	        «       j                  |«      j                  |«        | |«      }t	        «       j                  |«      j                  |«       y )Nr   r$   r%   ri   rˆ   r‰   )r   r_   r2   r	   r   )rB   r/   s     r?   Útest_input_validationrª   8  s”   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÜÓ×Ñ˜aÓ ×*Ñ*¨1Ô-ÜÓ×Ñ˜AÓ×(Ñ(¨Ô+ÜƒL×Ñ�QÓ×!Ñ! !Ô$á�aÓ€AÜƒL×Ñ�QÓ×!Ñ! !Õ$rA   c                  ó  — t         j                  j                  d«      } | j                  d¬«      }t	        |j
                  d   ¬«      j                  |«      }t        |«      }t        t        j                  ||j                  «      |«       t	        d| ¬«      }|j                  |«      j                  |«      }|j
                  |j
                  d   dfk(  sJ ‚t	        dt        | ¬«      }|j                  |«      j                  |«      }|j
                  |j
                  d   dfk(  sJ ‚t        «       }|D ]P  }t	        d|| ¬«      }|j                  |«      j                  |«      }|j
                  |j
                  d   dfk(  rŒPJ ‚ y )Nr   ©é
   ri   r   ©r*   r$   ©r*   r+   ©r*   r9   r+   )r3   ÚrandomÚRandomStateÚuniformr   Úshaper1   r   r   r4   r5   r_   r2   rP   r   )Úrndr/   ÚX_transformedÚKÚtransÚkernels_availableÚkerns          r?   Útest_nystroem_approximationr»   E  sS  € ä
�)‰)×
Ñ
 Ó
"€CØ�‰˜ˆÓ!€Aô ¨!¯'©'°!©*Ô5×CÑCÀAÓF€MÜ�1‹€AÜœbŸf™f ]°M·O±OÓDÀaÔHä !°#Ô6€EØ—I‘I˜a“L×*Ñ*¨1Ó-€MØ×Ñ 1§7¡7¨1¡:¨q /Ò1Ð1Ð1ô  !¬NÈÔM€EØ—I‘I˜a“L×*Ñ*¨1Ó-€MØ×Ñ 1§7¡7¨1¡:¨q /Ò1Ð1Ð1ô 'Ó(ÐØ!ò 6ˆÜ a°À3ÔGˆØŸ	™	 !›×.Ñ.¨qÓ1ˆØ×"Ñ" q§w¡w¨q¡z°1 oÓ5Ð5Ð5ñ6rA   z(array_namespace, device_name, dtype_namer9   Úprecomputedr*   r$   éd   c                 óh  — t        | ||«      \  }}t        j                  j                  d«      }d}d|z  }	|j	                  ||	f¬«      j                  |«      }
|dk(  rt        |
d | «      }
|j                  |
|¬«      }t        ||d¬«      }|j                  |
«      }t        d¬	«      5  |j                  |«      }t        |t        d
¬«      }dD ]1  }t        t        ||«      «      \  }}}||u sJ ‚|t        |«      k(  rŒ1J ‚ 	 d d d «       t        |«      }t!        ||¬«       y # 1 sw Y   Œ#xY w)Nr   r­   r$   r   r¼   r   r°   T)Úarray_api_dispatchÚcpu)Úxpr   )Úcomponents_Únormalization_)Úatol)r   r3   r±   r²   r³   Úastyper   Úasarrayr   r1   r   r   r   rl   Úarray_devicer   r   )Úarray_namespaceÚdevice_nameÚ
dtype_namer9   r*   rÁ   r   rµ   Ú	n_samplesÚ
n_featuresÚX_npÚX_xpÚnystroemÚX_np_transformedÚX_xp_transformedÚX_xp_transformed_npÚattribute_nameÚxp_attrÚ_Údevice_attrrÄ   s                        r?   Ú%test_nystroem_approximation_array_apir×   `  sG  € ô & o°{ÀJÓO�J€BˆÜ
�)‰)×
Ñ
 Ó
"€CØ€Ið �Y‘€JØ�;‰;˜Y¨
Ð3ˆ;Ó4×;Ñ;¸JÓG€DØ�ÒÜ˜$˜} Ð-Ó.ˆà�:‰:�d 6ˆ:Ó*€Dä \¸&ÈqÔQ€HØ×-Ñ-¨dÓ3Ðä	¨4Ô	0ñ 	5Ø#×1Ñ1°$Ó7ÐÜ%Ð&6¼2ÀeÔLÐà?ò 	5ˆNÜ&>Ü˜ .Ó1ó'Ñ#ˆG�Q˜ð ˜b‘=Ð �=Ø¤,¨tÓ"4Ó4Ð4Ð4ñ	5÷		5ô ˜*Ó%€DÜÐ$Ð&9ÀÖE÷	5ð 	5ús   Â+AD(ÄD(Ä(D1c                  óÀ  — t         j                  j                  d«      } | j                  d¬«      }t	        d¬«      }|j                  |«      }t        |d ¬«      }t        j                  ||j                  «      }t        ||«       t	        dd¬«      }|j                  |«      }t        |d	¬«      }t        j                  ||j                  «      }t        ||«       y )
Nr)   r¬   r   r­   r®   rƒ   Úchi2©r9   r*   r   )r3   r±   r²   r³   r   r1   r   r4   r5   r   r
   )rµ   r/   rÏ   r¶   r·   ÚK2s         r?   Ú test_nystroem_default_parametersrÜ   ‰  s´   € Ü
�)‰)×
Ñ
 Ó
#€CØ�‰˜ˆÓ!€Aô  RÔ(€HØ×*Ñ*¨1Ó-€MÜ�1˜DÔ!€AÜ	�‰�˜}Ÿ™Ó	/€BÜ˜a Ô$ô ˜v°BÔ7€HØ×*Ñ*¨1Ó-€MÜ�A˜QÔ€AÜ	�‰�˜}Ÿ™Ó	/€BÜ˜a Õ$rA   c                  óÚ  — t         j                  j                  d«      } | j                  dd«      }t        j                  |gdz  «      }d}t        ||j                  d   ¬«      j                  |«      }|j                  |«      }t        ||¬«      }t        |t        j                  ||j                  «      «       t        j                  t        j                  t        «      «      sJ ‚y )Nr   r­   é   r$   r½   )r    r*   rƒ   )r3   r±   r²   ÚrandÚvstackr   r´   r_   r2   r   r   r4   r5   ry   rx   r0   )Úrngr/   r    ÚNr¶   r·   s         r?   Útest_nystroem_singular_kernelrã   �  sª   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��RÓ€AÜ
�	‰	�1�#˜‘'Ó€Aà€EÜ�u¨1¯7©7°1©:Ô6×:Ñ:¸1Ó=€AØ—K‘K “N€Mä�1˜EÔ"€Aä˜a¤§¡¨°}·±Ó!GÔHÜ�6‰6”"—+‘+œa“.Ô!Ð!Ñ!rA   c                  ó0  — t         j                  j                  d«      } | j                  d¬«      }t	        |dd¬«      }t        d|j                  d   dd¬	«      }|j                  |«      }t        t        j                  ||j                  «      |«       y )
Né%   r¬   r   gÍÌÌÌÌÌ@r!   ©r(   r&   Ú
polynomialr   )r9   r*   r(   r&   )r3   r±   r²   r³   r   r   r´   r1   r   r4   r5   )rµ   r/   r·   rÏ   r¶   s        r?   Ú test_nystroem_poly_kernel_paramsrè   ­  sz   € ä
�)‰)×
Ñ
 Ó
#€CØ�‰˜ˆÓ!€Aä˜! C¨sÔ3€AÜØ¨!¯'©'°!©*¸SÈô€Hð ×*Ñ*¨1Ó-€MÜœbŸf™f ]°M·O±OÓDÀaÕHrA   c                  óØ  — t         j                  j                  d«      } d}| j                  |df¬«      }d„ }g }t	        |«      }t        ||dz
  d|i¬«      j                  |«       t        |«      ||dz
  z  d	z  k(  sJ ‚d
}ddiddidd	if}|D ]L  }t        dt        |dz
  dœ|¤Ž}t        j                  t        |¬«      5  |j                  |«       d d d «       ŒN y # 1 sw Y   ŒYxY w)Nr)   r­   ri   r   c                 ól   — |j                  d«       t        j                  | |«      j                  «       S )z&Histogram kernel that writes to a log.r   )Úappendr3   ÚminimumrZ   )rN   rO   rv   s      r?   Úlogging_histogram_kernelz8test_nystroem_callable.<locals>.logging_histogram_kernelÀ  s'   € à�
‰
�1ŒÜ�z‰z˜!˜QÓ×#Ñ#Ó%Ð%rA   r   rv   )r9   r*   Úkernel_paramsr$   ú-Don't pass gamma, coef0 or degree to Nystroemr    r&   r(   rÚ   rV   rM   )r3   r±   r²   r³   Úlistr   r_   ÚlenrP   r\   r]   r^   )	rµ   rË   r/   rí   Ú
kernel_logrf   ÚparamsÚparamÚnys	            r?   Útest_nystroem_callablerö   º  s  € ä
�)‰)×
Ñ
 Ó
#€CØ€IØ�‰˜) Q˜ˆÓ(€Aò&ð
 €JÜˆQ‹€AÜØ'Ø !‘mØ˜jÐ)ô÷ 
�cˆ!„fÜˆz‹?˜i¨9°q©=Ñ9¸AÑ=Ò=Ð=Ð=ð :€CØ˜ˆl˜W a˜L¨8°Q¨-Ð8€FØò ˆÜÐSœ^¸9Àq¹=ÑSÈUÑSˆÜ�]‰]œ:¨SÔ1ñ 	Ø�F‰F�1ŒI÷	ð 	ñ÷	ð 	ús   ÃC Ã C)	c                  ó  — t         j                  j                  d«      } | j                  d¬«      }t	        |dd¬«      }t        d|j                  d   ¬	«      }|j                  |«      }t        t        j                  ||j                  «      |«       d
}ddiddiddif}|D ]R  }t        dd|j                  d   d	œ|¤Ž}t        j                  t        |¬«      5  |j                  |«       d d d «       ŒT y # 1 sw Y   Œ_xY w)Né   r¬   r   r$   r!   ræ   r¼   r   rÚ   rï   r    r   r&   r(   rV   rM   )r3   r±   r²   r³   r   r   r´   r1   r   r4   r5   r\   r]   r^   r_   )	rµ   r/   r·   rÏ   r¶   rf   ró   rô   rõ   s	            r?   Ú test_nystroem_precomputed_kernelrù   ×  sð   € ô �)‰)×
Ñ
 Ó
#€CØ�‰˜ˆÓ!€Aä˜! A¨SÔ1€AÜ˜}¸1¿7¹7À1¹:ÔF€HØ×*Ñ*¨1Ó-€MÜœbŸf™f ]°M·O±OÓDÀaÔHð :€CØ˜ˆl˜W a˜L¨8°Q¨-Ð8€FØò ˆÜÐM˜]¸¿¹À¹ÑMÀuÑMˆÜ�]‰]œ:¨SÔ1ñ 	Ø�F‰F�1ŒI÷	ð 	ñ÷	ð 	ús   ÃC:Ã:D	c                  ó–   — t        dd¬«      \  } }t        dd¬«      }|j                  | «       |j                  j                  dk(  sJ ‚y)	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Ë   rÌ   r­   r   r¯   )r­   N)r   r   r_   Úcomponent_indices_r´   )r/   rÕ   Úfeature_map_nystroems      r?   Útest_nystroem_component_indicesrý   ë  sO   € ô ¨¸Ô<�D€A€qÜ#ØØôÐð ×Ñ˜QÔØ×2Ñ2×8Ñ8¸EÒAÐAÑArA   Ú	Estimatorc                 ó*  —  | «       j                  t        «      }|j                  t        «      }|j                  «       }| j                  j                  «       }t        |j                  d   «      D �cg c]  }|› |› �‘Œ
 }}t        ||«       yc c}w )zCheck get_feature_names_outr   N)	r_   r/   r2   Úget_feature_names_outÚ__name__ÚlowerÚranger´   r   )rþ   Úestr;   Ú	names_outÚ
class_nameÚiÚexpected_namess          r?   Útest_get_feature_names_outr	  ú  s~   € ñ
 ‹+�/‰/œ!Ó
€CØ�m‰mœAÓ€Gà×)Ñ)Ó+€IØ×#Ñ#×)Ñ)Ó+€JÜ27¸¿¹ÀaÑ8HÓ2IÖJ¨Q˜˜ Q CÒ(ÐJ€NÐJÜ�y .Õ1ùò Ks   Á4Bc                  ó  — t         j                  j                  d«      } | j                  d¬«      }t	        d¬«      j                  |«      }g d¢}g d¢}|j                  |¬«      }|D �cg c]  }d	|› �‘Œ	 }}t        ||«       y
c c}w )z4Check get_feature_names_out for AdditiveChi2Sampler.r   )r   r%   r   r%   rR   )Ú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_featuresÚadditivechi2sampler_N)r3   r±   r²   Úrandom_sampler   r_   r   r   )rá   r/   Úchi2_samplerÚinput_namesÚsuffixesr  Úsuffixr  s           r?   Ú.test_additivechi2sampler_get_feature_names_outr$    sŠ   € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜xÐÓ(€Aä&°AÔ6×:Ñ:¸1Ó=€LÚ$€Kò€Hð$ ×2Ñ2À+Ð2ÓN€IØDLÖM¸&Ð,¨V¨HÒ5ÐM€NÐMÜ�y .Õ1ùò Ns   Á+B)Hrp   Únumpyr3   r\   Úsklearn._configr   Úsklearn.datasetsr   Úsklearn.kernel_approximationr   r   r   r   r	   Úsklearn.metrics.pairwiser
   r   r   r   Úsklearn.utils._array_apir   r   r   r   r   rÇ   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.fixesr   r±   r²   rá   r  r/   r0   rZ   rX   ÚflagsÚ	writeableÚmarkÚparametrizer@   rK   rP   rg   r  rn   rr   r~   r�   r…   r‘   rš   rŸ   r¢   r¨   rª   r»   rð   r×   rÜ   rã   rè   rö   rù   rý   r	  r$  rM   rA   r?   ú<module>r1     sw  ðÛ 	ã Û å *Ý 0÷õ ÷ó ÷ó õ÷ó õ /ð 	‡i�i×Ñ˜AÓ€Ø×Ñ˜9ÐÓ%€Ø×Ñ˜9ÐÓ%€Ø €Q‡U�U�€Uƒ]’1�b—j‘j�=Ñ!Ñ !€Ø €Q‡U�U�€Uƒ]’1�b—j‘j�=Ñ!Ñ !€ð €‡�Ô Ø€‡�Ô ð ‡�×Ñ˜¢-Ó0Ø‡�×ÑÐ/Ò1PÓQØ‡�×Ñ˜ 1 c (Ó+ñ"ó ,ó Ró 1ð"ð4 ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜ 3¨ *Ó-Ø‡�×Ñ˜¢9Ó-Ø‡�×Ñ˜ 1 c (Ó+ñ)ó ,ó .ó .ó :ð)ò(ð ‡�×Ñ˜¨.Ó9ñ!ó :ð!ðH ‡�×Ñ˜Ò#HÓIØ‡�×Ñ˜©¨q°!«Ó5ñ:ó 6ó Jð:ð  ‡�×Ñ˜Ò#HÓIñ(ó Jð(ò&#òR	%ò"ò&
5òBò*ò
Eòð$ ‡�×Ñ˜¨.Ó9ñ	%ó :ð	%ò6ð6 ‡�×ÑØ.Ù-Ó/óð ‡�×ÑØ‰d‘>Ó#Ó$¨¸Ð'FÑFóð ‡�×Ñ˜¨!¨S¨Ó2ñFó 3óó	ðFòB%ò("ò 
Iòò:ò(Bð ‡�×ÑØÐ'¨Ð5FÈÐQóñ2óð2ó2rA   