Ë
    ÷Q(h}&  ã                   ót  — d dl Zd dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zej2                  j5                  de«      d„ «       Zej2                  j5                  dddg«      d„ «       Zd„ Zej2                  j5                  deefeefg«      d„ «       Zy)é    N)Úmake_classificationÚmake_regression)Úmutual_info_classifÚmutual_info_regression)Ú_compute_mi)Úcheck_random_state)Úassert_allcloseÚassert_array_equal)ÚCSR_CONTAINERSc                  óœ  — t        j                  g d¢«      } t        j                  g d¢«      }dt        j                  d«      z  dt        j                  d«      z  z
  x}}dt        j                  d«      z  dt        j                  d«      z  z
  dt        j                  d«      z  z
  }||z   |z
  }t        t	        | |dd¬	«      |«       y )
N)r   é   r   r   r   )r   r   r   r   r   g333333ã¿g333333ã?gš™™™™™Ù?gš™™™™™É¿gš™™™™™É?T©Ú
x_discreteÚ
y_discrete)ÚnpÚarrayÚlogr	   r   )ÚxÚyÚH_xÚH_yÚH_xyÚI_xys         ún/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/feature_selection/tests/test_mutual_info.pyÚtest_compute_mi_ddr      s¢   € ô 	�‰’Ó!€AÜ
�‰’Ó!€Aàœ2Ÿ6™6 %›=Ñ(¨E´R·V±V¸E³]Ñ+BÑBÐB€Cˆ#Ø”B—F‘F˜5“MÑ! E¬B¯F©F°5«MÑ$9Ñ9¸EÄBÇFÁFÈ5ÃMÑ<QÑQ€DØ�‰9�tÑ€Dä”K  1°À$ÔGÈÕNó    c                 ó$  — t        j                  d«      }d}d}d}t        j                  |dz  ||z  |z  g||z  |z  |dz  gg«      }t        j                  |«      t        j                  |«      z   dt        j                  t         j                  j                  |«      «      z  z
  }t        d«      }|j                  ||d¬«      j                  | d¬	«      }|d d …df   |d d …df   }
}	d
D ]   }t        |	|
dd|¬«      }t        ||d¬«       Œ" y )Né   r   é
   ç      à?r   éè  ©ÚsizeF©Úcopy©é   é   é   ©r   r   Ún_neighborsçš™™™™™¹?©Úrtol)r   Úzerosr   r   ÚlinalgÚdetr   Úmultivariate_normalÚastyper   r	   )Úglobal_dtypeÚmeanÚsigma_1Úsigma_2ÚcorrÚcovÚI_theoryÚrngÚZr   r   r+   Ú
I_computeds                r   Útest_compute_mi_ccr>      s  € ô
 �8‰8�A‹;€Dð €GØ€GØ€DÜ
�(‰(à�a‰Z˜ ™¨'Ñ1Ð2Ø�G‰^˜gÑ% w°¡zÐ2ð	
ó€Cô �v‰v�g‹¤§¡¨£Ñ0°3¼¿¹ÄÇ	Á	ÇÁÈcÓ@RÓ9SÑ3SÑS€Hä
˜QÓ
€CØ×Ñ  c°ÐÓ5×<Ñ<¸\ÐPUÐ<ÓV€AàŠQ�ˆT‰7�A’a˜�d‘G€q€Að !ò 9ˆÜ Øˆq˜U¨uÀ+ô
ˆ
ô 	˜
 H°4Ö8ñ	9r   c           	      ó^  — d}t        d«      }dD �]  }|j                  |¬«      |kD  }t        j                  || «      }|dk(  }|j                  ddt        j                  |«      ¬«      ||<   |j                  ddt        j                  | «      ¬«      || <   dd|z
  t        j
                  d	d|z
  z  «      z  |t        j
                  d	|z  «      z  z   t        j
                  d	«      z   z  t        j
                  d«      z
  }d
D ]   }t        ||dd|¬«      }	t        |	|d¬«       Œ" �Œ y )Nr!   r   )g333333Ó?r    gffffffæ?r"   éÿÿÿÿr   r   g      à¿r    r&   TFr*   r,   r-   )r   Úuniformr   ÚemptyÚsumr   r   r	   )
r4   Ú	n_samplesr;   Úpr   r   Úmaskr:   r+   r=   s
             r   Útest_compute_mi_cdrG   ?   s"  € ð  €IÜ
˜QÓ
€Càó =ˆØ�K‰K˜YˆKÓ'¨!Ñ+ˆä�H‰H�Y Ó-ˆØ�A‰vˆØ—+‘+˜b !¬"¯&©&°«,�+Ó7ˆˆ$‰Ø—;‘;˜q !¬"¯&©&°$°«-�;Ó8ˆˆ4ˆ%‰àØ�‰U”b—f‘f˜S A¨¡E™]Ó+Ñ+¨a´"·&±&¸¸q¹³/Ñ.AÑAÄBÇFÁFÈ3ÃKÑOñ
ä�F‰F�1‹Iñˆð
 %ò 	=ˆKÜ$Ø�1 °%À[ôˆJô ˜J¨°tÖ<ò		=ñ=r   c                 ó  — d}t         j                  j                  |¬«      dkD  }t        j                  || «      }|dk(  }t         j                  j                  ddt        j                  |«      ¬«      ||<   t         j                  j                  ddt        j                  | «      ¬«      || <   t        ||dd	¬
«      }t        j                  |df«      }t        j                  |df«      }t        ||dd	¬
«      }t        ||«       y )Néd   r"   r    r   r@   r   r   TFr   r   )r   ÚrandomrA   rB   rC   r   Úhstackr	   )r4   rD   r   r   rF   Úmi_1Úmi_2s          r   Útest_compute_mi_cd_unique_labelrN   f   sÜ   € à€IÜ
�	‰	×Ñ˜yÐÓ)¨CÑ/€Aä
�‰�˜LÓ)€AØ�‰6€DÜ�i‰i×Ñ  A¬B¯F©F°4«LÐÓ9€A€d�GÜ�y‰y× Ñ   A¬B¯F©F°D°5«MÐ Ó:€A€t€e�Hä�q˜!¨¸Ô?€Dä
�	‰	�1�a�&Ó€AÜ
�	‰	�1�b�'Ó€AÜ�q˜!¨¸Ô?€Dä�D˜$Õr   c                 ó  — t        j                  g d¢g d¢g d¢g d¢g d¢g| ¬«      }t        j                  g d¢«      }t        ||d¬«      }t        t        j                  | «      t        j                  g d¢«      «       y )	N©r   r   r   ©r   r   r   ©r   r   r   ©Údtype©r   r   r   r   r   T©Údiscrete_features)r   r   r   )r   r   r   r
   Úargsort)r4   ÚXr   Úmis       r   Ú!test_mutual_info_classif_discreter[   z   s]   € Ü
�‰Ú	’Išyª)²YÐ?À|ô	€Aô 	�‰’Ó!€Aô 
˜Q °TÔ	:€BÜ”r—z‘z 2 #“¬¯©²Ó(;Õ<r   c                 óò  — t        j                  g d¢g d¢g d¢g d¢g«      }|j                  |j                  «      }t        j                  d«      }t        d«      }|j                  ||d¬«      j                  | d	¬
«      }|d d …dd …f   }|d d …df   }t        ||d¬«      }t        t        j                  | «      t        j                  g d¢«      «       |j                  t         j                  k(  sJ ‚y )N)r   r    r   r   )r   r   r,   g        )r   r,   r   r,   )r   r,   r,   r   é   r   r!   r"   Fr$   r   ©Úrandom_state)r   r   r   )r   r   ÚdotÚTr/   r   r2   r3   r   r
   rX   rT   Úfloat64)	r4   ra   r9   r5   r;   r<   rY   r   rZ   s	            r   Útest_mutual_info_regressionrc   †   sÍ   € ô 	�‰’.Ò"2Ò4DÒFVÐWÓX€AØ
�%‰%�—‘‹*€CÜ�8‰8�A‹;€Dä
˜QÓ
€CØ×Ñ  c°ÐÓ5×<Ñ<¸\ÐPUÐ<ÓV€AØ	Š!ˆQ‰Rˆ%‰€AØ	Š!ˆQˆ$‰€Aä	  1°1Ô	5€BÜ”r—z‘z 2 #“¬¯©²Ó(;Ô<ð �8‰8”r—z‘zÒ!Ð!Ñ!r   c                 óò  — t        d«      }|j                  dd«      j                  | d¬«      }|d d …dfxx   |d d …df   z  cc<   d|d d …df   z  |d d …df   z   dkD  j                  t        «      }|d d …df   dkD  |d d …df<   t	        ||dgdd¬	«      }t        t        j                  | «      g d
¢«       dD ]:  }t	        ||dg|d¬	«      }|d   |d   kD  sJ ‚|d   |d   kD  sJ ‚|d   |d   k(  rŒ:J ‚ y )Nr   r!   r'   Fr$   r   r    r   )rW   r+   r_   rR   )r(   r)   é	   )r   Úrandr3   Úintr   r
   r   rX   )r4   r;   rY   r   rZ   r+   Úmi_nns          r   Útest_mutual_info_classif_mixedri   œ   s$  € ô ˜QÓ
€CØ�‰��qÓ× Ñ  °EÐ Ó:€AØ‚aˆ€dƒGˆq’�A�‰wÑƒGØ
�’!�Q�$‘‰-˜!šA˜q˜D™'Ñ
! SÑ	(×0Ñ0´Ó5€AØ’�1�‰g˜‰m€A‚aˆ€d�Gä	˜Q °a°SÀaÐVWÔ	X€BÜ”r—z‘z 2 #“ª	Ô2Ø ò 
!ˆÜ#Øˆq Q C°[Èqô
ˆð
 �Q‰x˜"˜Q™%ÒÐÐØ�Q‰x˜"˜Q™%ÒÐÐð �Q‰x˜2˜a™5Ó Ð Ð ñ
!r   Úcsr_containerc                 ó  — t        j                  g d¢g d¢g d¢g d¢g d¢g| ¬«      }t        j                  g d¢| ¬«      } ||«      }t        t        fD �]r  }t	        j
                  t        «      5   |||d¬«       d d d «       t	        j
                  t        «      5   |||d¬«       d d d «       t	        j
                  t        «      5   |||g d	¢¬«       d d d «       t	        j
                  t        «      5   |||g d
¢¬«       d d d «       t	        j
                  t        «      5   |||ddg¬«       d d d «        |||dd¬«      } |||dd¬«      } |||dd¬«      } |||dd¬«      }	 |||g d	¢d¬«      }
 |||ddgd¬«      }t        ||«       t        ||	«       t        |
|«       t        j                  ||«      s�ŒsJ ‚ y # 1 sw Y   �ŒPxY w# 1 sw Y   �Œ0xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒëxY w# 1 sw Y   ŒÈxY w)NrP   rQ   rR   rS   rU   FrV   Úmanual)TFT)TFTFr   r]   Úautor   ©rW   r_   Tr   )
r   r   r   r   ÚpytestÚraisesÚ
ValueErrorÚ
IndexErrorr	   Úallclose)r4   rj   rY   r   ÚX_csrÚmutual_inforL   rM   Úmi_3Úmi_4Úmi_5Úmi_6s               r   Útest_mutual_info_optionsrz   ´   sÚ  € ä
�‰Ú	’Išyª)²YÐ?À|ô	€Aô 	�‰’¨Ô5€AÙ˜!Ó€Eä.Ô0CÐDó +ˆÜ�]‰]œ:Ó&ñ 	;Ù˜˜q°EÕ:÷	;ä�]‰]œ:Ó&ñ 	:Ù˜˜1°Õ9÷	:ä�]‰]œ:Ó&ñ 	IÙ˜˜qÒ4GÕH÷	Iä�]‰]œ:Ó&ñ 	LÙ˜˜1Ò0JÕK÷	Lä�]‰]œ:Ó&ñ 	8Ù˜˜1°°A°Õ7÷	8ñ ˜1˜a°6ÈÔJˆÙ˜1˜a°5ÀqÔIˆÙ˜5 !°vÈAÔNˆÙ˜5 !°tÈ!ÔLˆÙ˜1˜aÒ3FÐUVÔWˆÙ˜1˜a°A°q°6ÈÔJˆä˜˜dÔ#Ü˜˜dÔ#Ü˜˜dÔ#ä—;‘;˜t TÖ*Ð*Ð*ñ/+÷	;ñ 	;ú÷	:ñ 	:ú÷	Iñ 	Iú÷	Lð 	Lú÷	8ð 	8ús<   Á1GÂGÃG%Ã:G2Ä)G>ÇG	ÇG"	Ç%G/	Ç2G;	Ç>H	Ú
correlatedTFc                 óh  — t         j                  j                  |«      }d}|j                  d|¬«      }| r |j	                  t         j
                  «      }n|j                  dd|¬«      }t        |dd…df   |dg|¬«      }t        |dd…df   |d	g|¬«      }|t        j                  |«      k(  sJ ‚y)
zôCheck that `mutual_info_classif` and `mutual_info_regression` are
    symmetric by switching the target `y` as `feature` in `X` and vice
    versa.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/23720
    rI   r   r"   r   r   NFrn   T)r   rJ   ÚRandomStateÚrandintr3   rb   Únormalr   r   ro   Úapprox)r{   Úglobal_random_seedr;   ÚnÚdÚcÚ
mi_classifÚmi_regressions           r   Ú3test_mutual_information_symmetry_classif_regressionr‡   Ö   s°   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ€AØ�‰�B˜QˆÓ€AáØ�H‰H”R—Z‘ZÓ ‰à�J‰J�q˜! !ˆJÓ$ˆä$Ø	Š!ˆTˆ'‰
�A¨%¨Ð?Qô€Jô +Ø	Š!ˆTˆ'‰
�A¨$¨Ð>Pô€Mð œŸ™ }Ó5Ò5Ð5Ñ5r   c                 ó   — t         j                  j                  | «      }|j                  dd¬«      }|j	                  t         j
                  d¬«      }|j                  dd¬«      }t        ||| ¬«      }t        ||| ¬«      }t        ||«       y)zqCheck that results agree when X is integer dtype and float dtype.

    Non-regression test for Issue #26696.
    rI   )rI   r   r"   Tr$   r^   N)r   rJ   r}   r~   r3   rb   r   r	   )r�   r;   rY   ÚX_floatr   ÚexpectedÚresults          r   Ú'test_mutual_info_regression_X_int_dtyperŒ   ó   s{   € ô
 �)‰)×
Ñ
Ð 2Ó
3€CØ�‰�C˜iˆÓ(€AØ�h‰h”r—z‘z¨ˆhÓ-€GØ�‰�C˜cˆÓ"€Aä% g¨qÐ?QÔR€HÜ# A qÐ7IÔJ€FÜ�F˜HÕ%r   z mutual_info_func, data_generatorc                 ód   —  || ¬«      \  }} |||| d¬«      } |||| d¬«      }t        ||«       y)z:Check that results are consistent with different `n_jobs`.r^   r   )r_   Ún_jobsr   N)r	   )r�   Úmutual_info_funcÚdata_generatorrY   r   Ú
single_jobÚ	multi_jobs          r   Útest_mutual_info_n_jobsr“     s@   € ñ Ð'9Ô:�D€A€qÙ! ! QÐ5GÐPQÔR€JÙ   AÐ4FÈqÔQ€IÜ�J 	Õ*r   )Únumpyr   ro   Úsklearn.datasetsr   r   Úsklearn.feature_selectionr   r   Ú&sklearn.feature_selection._mutual_infor   Úsklearn.utilsr   Úsklearn.utils._testingr	   r
   Úsklearn.utils.fixesr   r   r>   rG   rN   r[   rc   ri   ÚmarkÚparametrizerz   r‡   rŒ   r“   © r   r   ú<module>rž      s×   ðÛ Û ç Aß QÝ >Ý ,÷õ /ò
Oò 9òF$=òN ò(	=ò"ò,!ð0 ‡�×Ñ˜¨.Ó9ñ+ó :ð+ðB ‡�×Ñ˜¨¨e }Ó5ñ6ó 6ð6ò8&ð ‡�×ÑØ&à	 Ð1Ø	Ð1Ð2ðóñ+óñ+r   