§
    rŠtjÔJ  ã            
       ó¦  — d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZ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 d dlm Z  d dl!m"Z"m#Z# eeeeeeegZ$ej%         &                    d	e$¦  «        d
„ ¦   «         Z'd„ Z(ej%         &                    d	e$¦  «        d„ ¦   «         Z)ej%         &                    d	eeg¦  «        ej%         &                    dg d¢¦  «        d„ ¦   «         ¦   «         Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d9d„Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6ej%         &                    d e ¦   «         ¦  «        d„ ¦   «         Z7d „ Z8d!„ Z9d"„ Z:d:d$„Z;d%„ Z<d&„ Z=ej%         &                    d'd(gd)z  g d*¢fd+gd)z  g d*¢fg d*¢d(gd)z  fg d*¢d+gd)z  fd(gd)z  d(gd)z  fg¦  «        d,„ ¦   «         Z>d-„ Z?d.„ Z@d/„ ZAd0„ ZBej%         &                    d1 eC eDd2¦  «        ¦  «         eC eDd2¦  «        ¦  «        f ejE        d3¦  «         ejE        d3¦  «        fg¦  «        d4„ ¦   «         ZFd5„ ZGd6„ ZHej%         &                    dg d7¢¦  «        d8„ ¦   «         ZIdS );é    N)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)Úconfig_context)Úadjusted_mutual_info_scoreÚadjusted_rand_scoreÚcompleteness_scoreÚcontingency_matrixÚexpected_mutual_informationÚfowlkes_mallows_scoreÚ"homogeneity_completeness_v_measureÚhomogeneity_scoreÚmutual_info_scoreÚnormalized_mutual_info_scoreÚpair_confusion_matrixÚ
rand_scoreÚv_measure_score)Ú_entropyÚ_generalized_averageÚcheck_clusteringsÚentropy)Úassert_all_finite)Ú)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsÚassert_almost_equalÚ
score_funcc                 ó¶  — d}t          j        t          |¬¦  «        5   | ddgg d¢¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5   | ddgddggg d¢¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5   | g d¢ddgddgg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	NzDFound input variables with inconsistent numbers of samples: \[2, 3\]©Úmatchr   é   )r    r    r    z$labels_true must be 1D: shape is \(2z$labels_pred must be 1D: shape is \(2©r   r    r   )ÚpytestÚraisesÚ
ValueError)r   Úexpecteds     úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyÚ"test_error_messages_on_wrong_inputr'   .   sÂ  € àV€HÝ	Œ•z¨Ð	2Ñ	2Ô	2ð &ð &Øˆ
�A�q�6˜9˜9˜9Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð 7€HÝ	Œ•z¨Ð	2Ñ	2Ô	2ð 0ð 0Øˆ
�Q˜�F˜Q ˜FÐ# Y Y YÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 7€HÝ	Œ•z¨Ð	2Ñ	2Ô	2ð 0ð 0Øˆ
�9�9�9  1˜v¨¨1 vÐ.Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s1   ž;»?Á?Á#BÂBÂBÂ,CÃCÃCc                  ó&  ‡‡‡‡— d\  ŠŠg d¢} ˆˆfd„| D ¦   «         }|d         |d         cxk    r|d         cxk    r|d         k    sn J ‚d\  ŠŠˆˆfd	„| D ¦   «         }|d         |d         cxk    r|d         cxk    r|d         k    sn J ‚d S )
N)r    é   ©ÚminÚ	geometricÚ
arithmeticÚmaxc                 ó2   •— g | ]}t          ‰‰|¦  «        ‘ŒS © ©r   )Ú.0ÚmethodÚaÚbs     €€r&   ú
<listcomp>z,test_generalized_average.<locals>.<listcomp>@   ó&   ø€ ÐFÐFÐF°FÕ! ! Q¨Ñ/Ô/ÐFÐFÐFó    r   r    r)   é   )é   r:   c                 ó2   •— g | ]}t          ‰‰|¦  «        ‘ŒS r0   r1   )r2   r3   ÚcÚds     €€r&   r6   z,test_generalized_average.<locals>.<listcomp>C   r7   r8   r0   )ÚmethodsÚmeansr4   r5   r<   r=   s     @@@@r&   Útest_generalized_averager@   =   sç   øøøø€ Ø�D€A€qØ7Ð7Ð7€GØFÐFÐFÐFÐF¸gÐFÑFÔF€EØ�Œ8�u˜Q”xÐ7Ð7Ò7Ð7 5¨¤8Ð7Ð7Ò7Ð7¨u°Q¬xÒ7Ð7Ð7Ð7Ð7Ð7Ø�D€A€qØFÐFÐFÐFÐF¸gÐFÑFÔF€EØ�Œ8�u˜Q”xÐ7Ð7Ò7Ð7 5¨¤8Ð7Ð7Ò7Ð7¨u°Q¬xÒ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r8   c                 ó*  —  | g g ¦  «        t          j        d¦  «        k    sJ ‚ | dgdg¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢¦  «        t          j        d¦  «        k    sJ ‚ | g d	¢g d
¢¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢¦  «        t          j        d¦  «        k    sJ ‚d S )Nç      ð?r   r    ©r   r   r   r!   ©é*   é   rE   ©ç        rB   rH   ©ç      E@ç      @rJ   ©rH   rB   ç       @©rJ   rK   rM   ©r   r    r)   ©rE   rF   r)   ©r"   Úapprox)r   s    r&   Útest_perfect_matchesrS   G   sK  € àˆ:�b˜"ÑÔ¥¤¨sÑ!3Ô!3Ò3Ð3Ð3Ð3Øˆ:�q�c˜A˜3ÑÔ¥6¤=°Ñ#5Ô#5Ò5Ð5Ð5Ð5Øˆ:�i�i�i   Ñ+Ô+­v¬}¸SÑ/AÔ/AÒAÐAÐAÐAØˆ:�i�i�i   Ñ-Ô-µ´¸sÑ1CÔ1CÒCÐCÐCÐCØˆ:�o�o�oÐ'8Ð'8Ð'8Ñ9Ô9½V¼]È3Ñ=OÔ=OÒOÐOÐOÐOØˆ:�o�o�oÐ'7Ð'7Ð'7Ñ8Ô8½F¼MÈ#Ñ<NÔ<NÒNÐNÐNÐNØˆ:�i�i�i   Ñ,Ô,µ´¸cÑ0BÔ0BÒBÐBÐBÐBÐBÐBr8   Úaverage_methodr*   c                 óî  —  | g g |¬¦  «        t          j        d¦  «        k    sJ ‚ | dgdg|¬¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢|¬¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢|¬¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d	¢|¬¦  «        t          j        d¦  «        k    sJ ‚ | g d
¢g d¢|¬¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢|¬¦  «        t          j        d¦  «        k    sJ ‚ | ddgddg|¬¦  «        t          j        d¦  «        k    sJ ‚ | g d¢g d¢|¬¦  «        t          j        d¦  «        k    sJ ‚d S )N©rT   rB   r   r    rC   r!   rD   rG   rI   rL   rN   rO   rP   )r   r    r)   r9   rQ   )r   rT   s     r&   Ú(test_perfect_matches_with_changing_meansrW   R   sX  € ð ˆ:�b˜"¨^Ð<Ñ<Ô<ÅÄÈcÑ@RÔ@RÒRÐRÐRÐRØˆ:�q�c˜A˜3¨~Ð>Ñ>Ô>Å&Ä-ÐPSÑBTÔBTÒTÐTÐTÐTØˆ:Øˆ	ˆ	�9�9�9¨^ðñ ô å	Œ�sÑ	Ô	òð ð ð ð ˆ:Øˆ	ˆ	�;�;�;¨~ðñ ô å	Œ�sÑ	Ô	òð ð ð ð ˆ:ØˆˆÐ*Ð*Ð*¸>ðñ ô å	Œ�sÑ	Ô	òð ð ð ð ˆ:ØˆˆÐ)Ð)Ð)¸.ðñ ô å	Œ�sÑ	Ô	òð ð ð ð ˆ:Øˆ	ˆ	�:�:�:¨nðñ ô å	Œ�sÑ	Ô	òð ð ð ð ˆ:�q˜!�f˜q !˜f°^ÐDÑDÔDÍÌØñIô Iò ð ð ð ð ˆ:Øˆˆ�l�l�l°>ðñ ô å	Œ�sÑ	Ô	òð ð ð ð ð r8   c                  óœ   — t          g d¢g d¢¦  «        \  } }}t          | dd¦  «         t          |dd¦  «         t          |dd¦  «         d S )N©r   r   r   r    r    r    )r   r   r   r    r)   r)   rB   r)   g®Gázæ?gìQ¸…ëé?©r   r   ©Úhr<   Úvs      r&   Ú*test_homogeneous_but_not_complete_labelingr^   u   óa   € å0Ð1CÐ1CÐ1CÐEWÐEWÐEWÑXÔX�G€A€qˆ!Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#Ð#Ð#r8   c                  óœ   — t          g d¢g d¢¦  «        \  } }}t          | dd¦  «         t          |dd¦  «         t          |dd¦  «         d S )N©r   r   r    r    r)   r)   )r   r   r    r    r    r    g�Âõ(\�â?r)   rB   g\�Âõ(\ç?rZ   r[   s      r&   Ú*test_complete_but_not_homogeneous_labelingrb   }   r_   r8   c                  óœ   — t          g d¢g d¢¦  «        \  } }}t          | dd¦  «         t          |dd¦  «         t          |dd¦  «         d S )NrY   ©r   r    r   r    r)   r)   çq=
×£på?r)   çáz®GáÚ?ç¤p=
×£à?rZ   r[   s      r&   Ú.test_not_complete_and_not_homogeneous_labelingrh   …   r_   r8   c                  ó"  — d} d}d}d| z   |z  |z  | |z  |z   z  }t          g d¢g d¢| ¬¦  «        \  }}}t          ||d¦  «         t          ||d¦  «         t          ||d¦  «         t          g d¢g d¢| ¬¦  «        }t          ||d¦  «         d S )	Ngš™™™™™É?re   rf   r    rY   rd   )Úbetar)   )r   r   r   )Ú	beta_testÚh_testÚc_testÚv_testr\   r<   r]   s          r&   Útest_beta_parameterro   �   sÕ   € ð €IØ€FØ€FØ�)‰m˜vÑ%¨Ñ.°)¸fÑ2DÀvÑ2MÑN€Få0ØÐÐÐ.Ð.Ð.°Yðñ ô �G€A€qˆ!õ ˜˜6 1Ñ%Ô%Ð%Ý˜˜6 1Ñ%Ô%Ð%Ý˜˜6 1Ñ%Ô%Ð%åÐ*Ð*Ð*Ð,>Ð,>Ð,>ÀYÐOÑOÔO€AÝ˜˜6 1Ñ%Ô%Ð%Ð%Ð%r8   c                  óZ  — t          g d¢g d¢¦  «        \  } }}t          | dd¦  «         t          |dd¦  «         t          |dd¦  «         t          g d¢g d¢¦  «        \  } }}t          | dd¦  «         t          |dd¦  «         t          |dd¦  «         t          g d¢g d¢¦  «        }t          g d¢g d¢¦  «        }t          |d	d¦  «         t          |d	d¦  «         t          g d¢g d¢¦  «        }t          g d¢g d¢¦  «        }t          |d
d¦  «         t          |d
d¦  «         d S )N)r   r   r   r)   r)   r)   rd   re   r)   rf   rg   rY   )r   é   r   rq   r)   r)   g¸…ëQ¸Î?g…ëQ¸å?)r   r   r   r   )r\   r<   r]   Úari_1Úari_2Úri_1Úri_2s          r&   Útest_non_consecutive_labelsrv   ¡   sv  € å0Ð1CÐ1CÐ1CÐEWÐEWÐEWÑXÔX�G€A€qˆ!Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#å0Ð1CÐ1CÐ1CÐEWÐEWÐEWÑXÔX�G€A€qˆ!Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#åÐ 2Ð 2Ð 2Ð4FÐ4FÐ4FÑGÔG€EÝÐ 2Ð 2Ð 2Ð4FÐ4FÐ4FÑGÔG€EÝ˜˜t QÑ'Ô'Ð'Ý˜˜t QÑ'Ô'Ð'åÐ(Ð(Ð(Ð*<Ð*<Ð*<Ñ=Ô=€DÝÐ(Ð(Ð(Ð*<Ð*<Ð*<Ñ=Ô=€DÝ˜˜d AÑ&Ô&Ð&Ý˜˜d AÑ&Ô&Ð&Ð&Ð&r8   é
   rE   c                 ó<  — t           j                             |¦  «        j        }t          j        t          |¦  «        |f¦  «        }t          |¦  «        D ]D\  }}t          |¦  «        D ]/}	 |d||¬¦  «        }
 |d||¬¦  «        } | |
|¦  «        |||	f<   Œ0ŒE|S )Nr   )ÚlowÚhighÚsize)ÚnpÚrandomÚRandomStateÚrandintÚzerosÚlenÚ	enumerateÚrange)r   Ú	n_samplesÚk_rangeÚn_runsÚseedÚrandom_labelsÚscoresÚiÚkÚjÚlabels_aÚlabels_bs               r&   Úuniform_labelings_scoresr�   ¸   s·   € å”I×)Ò)¨$Ñ/Ô/Ô7€MÝŒX•s˜7‘|”| VÐ,Ñ-Ô-€FÝ˜'Ñ"Ô"ð :ð :‰ˆˆ1Ý�v‘”ð 	:ð 	:ˆAØ$�}¨°¸ÐCÑCÔCˆHØ$�}¨°¸ÐCÑCÔCˆHØ%˜: h°Ñ9Ô9ˆF�1�a�4‰LˆLð	:ð €Mr8   c                  óº   — g d¢} d}d}t          t          || |¦  «        }t          j        |¦  «                             d¬¦  «        }t          |g d¢d¦  «         d S )N)r)   rw   é2   éZ   éd   rw   r    )Úaxis)ç{®Gáz”?ç¸…ëQ¸ž?r–   r•   r)   )r�   r   r|   Úabsr.   r   )Ún_clusters_ranger„   r†   r‰   Úmax_abs_scoress        r&   Útest_adjustment_for_chancerš   Ä   sn   € à&��ÐØ€IØ€Få%Ý˜YÐ(8¸&ñô €Fõ ”V˜F‘^”^×'Ò'¨QÐ'Ñ/Ô/€NÝ˜nÐ.FÐ.FÐ.FÈÑJÔJÐJÐJÐJr8   c                  ó–  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          | |¦  «        }t          |dd¦  «         t	          | |d¬¦  «        }t          | ||¬¦  «        }t          |dd¦  «         t	          | |¦  «        }t          | ||¬¦  «        }t          |dd¦  «         |                     ¦   «         }t          ||¦  «        }t          |dd¦  «         t          | |¦  «        }t          |d	d¦  «         t          g d
¢g d¢¦  «        }|t          j	        d¦  «        k    sJ ‚t          j        t          | ¦  «        dz  g¦  «                             ¦   «         }t          j        t          |¦  «        dz  g¦  «                             ¦   «         }t          ||¦  «        }t          |dd¦  «         d S )N©r    r    r    r    r    r    r)   r)   r)   r)   r)   r)   r9   r9   r9   r9   r9   ©r    r    r    r    r)   r    r)   r)   r)   r)   r9   r    r9   r9   r9   r)   r)   gS‘
cAÚ?é   T©Úsparse)ÚcontingencygpUjö@Ã?gçãÚP1ÎÑ?)r    r    r)   r)   )r)   r)   r9   r9   rB   én   gR¸…ëQØ?r)   )r|   Úarrayr   r   r
   Úsumr   r   r"   rR   ÚlistÚflatten)	r�   rŽ   ÚmiÚCr„   ÚemiÚamiÚa110Úb110s	            r&   Útest_adjusted_mutual_info_scorer­   Ò   s¸  € åŒxÐKÐKÐKÑLÔL€HÝŒxÐKÐKÐKÑLÔL€Hå	˜8 XÑ	.Ô	.€BÝ˜˜G QÑ'Ô'Ð'å˜8 X°dÐ;Ñ;Ô;€AÝ	˜8 X¸1Ð	=Ñ	=Ô	=€BÝ˜˜G QÑ'Ô'Ð'å˜8 XÑ.Ô.€AÝ	˜8 X¸1Ð	=Ñ	=Ô	=€BÝ˜˜G QÑ'Ô'Ð'à—’‘”€IÝ
% a¨Ñ
3Ô
3€CÝ˜˜W aÑ(Ô(Ð(å
$ X¨xÑ
8Ô
8€CÝ˜˜W aÑ(Ô(Ð(Ý
$ \ \ \°<°<°<Ñ
@Ô
@€CØ•&”- Ñ$Ô$Ò$Ð$Ð$Ð$åŒ8•T˜(‘^”^ cÑ)Ð*Ñ+Ô+×3Ò3Ñ5Ô5€DÝŒ8•T˜(‘^”^ cÑ)Ð*Ñ+Ô+×3Ò3Ñ5Ô5€DÝ
$ T¨4Ñ
0Ô
0€CÝ˜˜T 1Ñ%Ô%Ð%Ð%Ð%r8   c                  óZ   — t          t          j        dgg¦  «        d¦  «        dk    sJ ‚d S )Nip r    )r   r|   r£   r0   r8   r&   Ú"test_expected_mutual_info_overflowr¯   ñ   s3   € õ '¥r¤x°%°°	Ñ':Ô':¸EÑBÔBÀaÒGÐGÐGÐGÐGÐGr8   c                  ó�  — t          j        dgdz  dgdz  z   dgdz  z   dgdz  z   d	gd
z  z   ¦  «        } t          j        dgdz  dgdz  z   dgdz  z   dgdz  z   dgdz  z   dgdz  z   dgdz  z   dgdz  z   dgdz  z   dgdz  z   ¦  «        }t          t          | |¦  «        ¦  «         t          t	          | |¦  «        ¦  «         d S )Nr    iy×  r)   i]<  r9   i“  rq   iU  rž   iP  r   i˜Í  iá	  iD9  i  iÇ  éÌ   i.  é'   i<  é   )r|   r£   r   r   r   )ÚxÚys     r&   Ú3test_int_overflow_mutual_info_fowlkes_mallows_scorer¶   ÷   s?  € å
ŒØ	
ˆˆ|ÑØˆ#�Ñ
ñ	àˆ#�Ñ
ñ	ð ˆ#�Ñ
ñ	ð ˆ#�Ñ
ñ		ñ	ô 	€Aõ 	ŒØ	
ˆˆe‰Øˆ#�‰*ñ	àˆ#�‰+ñ	ð ˆ#�‰)ñ	ð ˆ#�‰*ñ		ð
 ˆ#�‰)ñ	ð ˆ#�‰)ñ	ð ˆ#�‰(ñ	ð ˆ#�‰)ñ	ð ˆ#�‰(ñ		ñ	ô 	€Aõ Õ'¨¨1Ñ-Ô-Ñ.Ô.Ð.ÝÕ+¨A¨qÑ1Ô1Ñ2Ô2Ð2Ð2Ð2r8   c                  ó�   — t          j        t          d¬¦  «        5  t          g d¢¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzFunction entropy is deprecatedr   ©r   r   rJ   )r"   ÚwarnsÚFutureWarningr   r0   r8   r&   Útest_public_entropy_deprecationr»     sŽ   € Ý	Œ•mÐ+KÐ	LÑ	LÔ	Lð ð Ý���ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   œ;»?Á?c                  ó®   — t          t          g d¢¦  «        dd¦  «         t          t          g ¦  «        d¦  «         t          g d¢¦  «        dk    sJ ‚d S )Nr¸   ç,^ÑR^ä?rž   r    ©r    r    r    r    r   )r   r   r0   r8   r&   Útest_entropyr¿     sY   € Ý�   Ñ.Ô.°	¸1Ñ=Ô=Ð=Ý� ™œ aÑ(Ô(Ð(Ý�L�L�LÑ!Ô! QÒ&Ð&Ð&Ð&Ð&Ð&r8   z(array_namespace, device_name, dtype_namec                 óî  — t          | ||¦  «        \  }}|                     t          j        g d¢|¬¦  «        |¬¦  «        }|                     g |j        |¬¦  «        }|                     g d¢|¬¦  «        }t	          d¬¦  «        5  t          |¦  «        t          j        dd	¬
¦  «        k    sJ ‚t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr¸   ©Údtype)Údevice)rÂ   rÃ   r¾   T)Úarray_api_dispatchr½   gñhãˆµøä>)r—   r    r   )r   Úasarrayr|   Úint32r   r   r"   rR   )Úarray_namespaceÚdevice_nameÚ
dtype_nameÚxprÃ   Úfloat_labelsÚempty_int32_labelsÚ
int_labelss           r&   Útest_entropy_array_apirÎ     sH  € õ
 & o°{ÀJÑOÔO�J€BˆØ—:’:�bœj¨¨¨¸ZÐHÑHÔHÐQW�:ÑXÔX€LØŸš B¨b¬h¸v˜ÑFÔFÐØ—’˜L˜L˜L°�Ñ8Ô8€JÝ	¨4Ð	0Ñ	0Ô	0ð )ð )Ý˜Ñ%Ô%­¬°yÀdÐ)KÑ)KÔ)KÒKÐKÐKÐKÝÐ*Ñ+Ô+¨qÒ0Ð0Ð0Ð0Ý˜
Ñ#Ô# qÒ(Ð(Ð(Ð(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   ÂAC*Ã*C.Ã1C.c            	      ór  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          | |¦  «        }t          j        | |t          j        dd¦  «        t          j        dd¦  «        f¬¦  «        d         }t          ||¦  «         t          | |d¬¦  «        }t          ||dz   ¦  «         d S )	Nrœ   r�   r    rž   )Úbinsr   gš™™™™™¹?)Úeps)r|   r£   r
   Úhistogram2dÚaranger   )r�   rŽ   r¨   ÚC2s       r&   Útest_contingency_matrixrÕ   ,  s±   € ÝŒxÐKÐKÐKÑLÔL€HÝŒxÐKÐKÐKÑLÔL€HÝ˜8 XÑ.Ô.€AÝ	Œ˜ (µ"´)¸A¸q±/´/Å2Ä9ÈQÐPQÁ?Ä?Ð1SÐ	TÑ	TÔ	TÐUVÔ	W€BÝ˜a Ñ$Ô$Ð$Ý˜8 X°3Ð7Ñ7Ô7€AÝ˜a  c¡Ñ*Ô*Ð*Ð*Ð*r8   c                  ót  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          | |¦  «        }t          | |d¬¦  «                             ¦   «         }t	          ||¦  «         t          j        t          d¬¦  «        5  t          | |dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nrœ   r�   TrŸ   z!Cannot set 'eps' when sparse=Truer   g»½×Ùß|Û=)rÑ   r    )r|   r£   r
   Útoarrayr   r"   r#   r$   )r�   rŽ   r¨   ÚC_sparses       r&   Útest_contingency_matrix_sparserÙ   6  s  € ÝŒxÐKÐKÐKÑLÔL€HÝŒxÐKÐKÐKÑLÔL€HÝ˜8 XÑ.Ô.€AÝ! (¨H¸TÐBÑBÔB×JÒJÑLÔL€HÝ˜a Ñ*Ô*Ð*Ý	Œ•zÐ)LÐ	MÑ	MÔ	Mð Gð GÝ˜8 X°5ÀÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs   ÂB-Â-B1Â4B1c                  ó‚  — t          j        ddd¦  «                             t          ¦  «        D �]} t          j        | t          ¬¦  «        t          j        | t          ¬¦  «        }}t          ||¦  «        t          j        d¦  «        k    sJ ‚t          ||¦  «        t          j        d¦  «        k    sJ ‚t          ||¦  «        dk    sJ ‚t          ||¦  «        t          j        d¦  «        k    sJ ‚dD ]D}t          |||¬¦  «        dk    sJ ‚t          |||¬¦  «        t          j        d¦  «        k    sJ ‚ŒE�Œd S )Nr    rq   rÁ   rH   r*   rV   )r|   ÚlogspaceÚastypeÚintÚonesrÓ   r   r"   rR   r   r   )rŠ   r�   rŽ   r3   s       r&   Útest_exactly_zero_info_scorerß   @  sh  € åŒ[˜˜A˜qÑ!Ô!×(Ò(­Ñ-Ô-ð $ñ $ˆÝ œg a­sÐ3Ñ3Ô3µR´Y¸qÍÐ5LÑ5LÔ5L�(ˆÝ+¨H°hÑ?Ô?Å6Ä=ÐQTÑCUÔCUÒUÐUÐUÐUÝ˜x¨Ñ2Ô2µf´mÀCÑ6HÔ6HÒHÐHÐHÐHÝ)¨(°HÑ=Ô=ÀÒDÐDÐDÐDÝ+¨H°hÑ?Ô?Å6Ä=ÐQTÑCUÔCUÒUÐUÐUÐUØ?ð 	$ð 	$ˆFå*¨8°XÈfÐUÑUÔUØòð ð ð õ 0Ø˜(°6ðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ð $ñ	$ð$ð $r8   é$   c           	      ó  — t          j        ddd¦  «                             t          ¦  «        D ]Ï}t           j                             | ¦  «        }|                     dd|¦  «        |                     dd|¦  «        }}t          t          ||¦  «        dt          ||¦  «        z  t          |¦  «        t          |¦  «        z   z  d¦  «         d}t          t          ||¦  «        t          |||¬¦  «        ¦  «         ŒÐd S )Nr    rq   r   rw   rM   r-   rV   )r|   rÛ   rÜ   rÝ   r}   r~   r   r   r   r   r   r   )r‡   rŠ   Úrandom_stater�   rŽ   Úavgs         r&   Ú%test_v_measure_and_mutual_informationrä   R  s  € åŒ[˜˜A˜qÑ!Ô!×(Ò(­Ñ-Ô-ð 
ð 
ˆÝ”y×,Ò,¨TÑ2Ô2ˆà× Ò   B¨Ñ*Ô*Ø× Ò   B¨Ñ*Ô*ð ˆõ 	Ý˜H hÑ/Ô/ØÝ ¨(Ñ3Ô3ñ4å˜Ñ!Ô!¥H¨XÑ$6Ô$6Ñ6ñ8ð ñ	
ô 	
ð 	
ð ˆÝÝ˜H hÑ/Ô/Ý(¨°8ÈCÐPÑPÔPñ	
ô 	
ð 	
ð 	
ð
ð 
r8   c                  ó  — t          g d¢g d¢¦  «        } t          | dt          j        d¦  «        z  ¦  «         t          g d¢g d¢¦  «        }t          |d¦  «         t          g d¢g d¢¦  «        }t          |d	¦  «         d S )
NrY   ra   g      @g      R@)r    r    r    r   r   r   rB   )r   r   r   r   r   r   )r   r    r)   r9   rq   rž   rH   )r   r   r|   Úsqrt)ÚscoreÚperfect_scoreÚworst_scores      r&   Útest_fowlkes_mallows_scorerê   h  s¢   € å!Ð"4Ð"4Ð"4Ð6HÐ6HÐ6HÑIÔI€EÝ˜˜s¥R¤W¨ZÑ%8Ô%8Ñ8Ñ9Ô9Ð9õ *Ð*<Ð*<Ð*<Ð>PÐ>PÐ>PÑQÔQ€MÝ˜ sÑ+Ô+Ð+õ (Ð(:Ð(:Ð(:Ð<NÐ<NÐ<NÑOÔO€KÝ˜ SÑ)Ô)Ð)Ð)Ð)r8   c                  ó¤  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }dt          j        d¦  «        z  }t          | |¦  «        }t	          ||¦  «         t          || ¦  «        }t	          ||¦  «         t          | dz   dz  |¦  «        }t	          ||¦  «         t          || dz   dz  ¦  «        }t	          ||¦  «         d S )N)r   r   r   r    r    r)   )r    r    r)   r)   r   r   rB   g      (@r    r9   r)   )r|   r£   ræ   r   r   )r�   rŽ   r%   Úscore_originalÚscore_symmetricÚscore_permutedÚ
score_boths          r&   Ú%test_fowlkes_mallows_score_propertiesrð   v  sß   € åŒxÐ*Ð*Ð*Ñ+Ô+€HÝŒxÐ*Ð*Ð*Ñ+Ô+€HØ•R”WÐ6Ñ7Ô7Ñ7€Hõ +¨8°XÑ>Ô>€NÝ˜¨Ñ1Ô1Ð1õ ,¨H°hÑ?Ô?€OÝ˜¨Ñ2Ô2Ð2õ +¨H°q©L¸AÑ+=¸xÑHÔH€NÝ˜¨Ñ1Ô1Ð1õ ' x°(¸Q±,À!Ñ1CÑDÔD€JÝ˜
 HÑ-Ô-Ð-Ð-Ð-r8   zlabels_true, labels_predr4   é   )r    r    r   r   r    r    r    c                 ó2   — t          | |¦  «        dk    sJ ‚d S )Nr   )r   )Úlabels_trueÚlabels_preds     r&   Ú.test_mutual_info_score_positive_constant_labelrõ   �  s%   € õ ˜[¨+Ñ6Ô6¸!Ò;Ð;Ð;Ð;Ð;Ð;r8   c                  ó,  — t           j                             d¦  «        } |                      d¦  «        }t          j        ddd¦  «        dz  }d}t          j        t          |¬¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrE   iô  g{®Gáz„?r    g�íµ ÷Æ°>zuClustering metrics expects discrete values but received continuous values for label, and continuous values for targetr   )	r|   r}   r~   ÚrandÚlinspacer"   r¹   ÚUserWarningr   )ÚrngÚnoiseÚ
wavelengthÚmsgs       r&   Útest_check_clustering_errorrþ   �  sÓ   € å
Œ)×
Ò
 Ñ
#Ô
#€CØ�HŠH�S‰MŒM€EÝ”˜T 1 cÑ*Ô*¨TÑ1€Jð	ð õ 
Œ•k¨Ð	-Ñ	-Ô	-ð -ð -Ý˜* eÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   Á+B	Â	BÂBc                  óÂ   — d} t          t          | ¦  «        ¦  «        }|}t          j        | | dz
  z  dgddgg¦  «        }t	          t          ||¦  «        |¦  «         d S )Nr“   r    r   )r¥   rƒ   r|   r£   r   r   ©ÚNÚclustering1Úclustering2r%   s       r&   Ú*test_pair_confusion_matrix_fully_dispersedr  ¬  sc   € à€AÝ•u˜Q‘x”x‘.”.€KØ€KÝŒx˜!˜q 1™u™+ qÐ)¨A¨q¨6Ð2Ñ3Ô3€HÝÕ,¨[¸+ÑFÔFÈÑQÔQÐQÐQÐQr8   c                  ó´   — d} t          j        | f¦  «        }|}t          j        ddgd| | dz
  z  gg¦  «        }t          t	          ||¦  «        |¦  «         d S )Nr“   r   r    )r|   r€   r£   r   r   r   s       r&   Ú)test_pair_confusion_matrix_single_clusterr  µ  sa   € à€AÝ”(˜A˜4‘.”.€KØ€KÝŒx˜!˜Q˜ ! Q¨!¨a©%¡[Ð!1Ð2Ñ3Ô3€HÝÕ,¨[¸+ÑFÔFÈÑQÔQÐQÐQÐQr8   c                  ó~  ‡— dŠ‰dz  } t          j        ˆfd„t          ‰¦  «        D ¦   «         ¦  «        }t          j        ˆfd„t          ‰¦  «        D ¦   «         ¦  «        d | …         }t          j        dt           j        ¬¦  «        }t          t          |¦  «        ¦  «        D ]w}t          t          |¦  «        ¦  «        D ]X}||k    rPt          ||         ||         k    ¦  «        }t          ||         ||         k    ¦  «        }|||fxx         dz  cc<   ŒYŒxt          t          ||¦  «        |¦  «         d S )Nrw   r)   c                 ó"   •— g | ]}|d z   g‰z  ‘ŒS ©r    r0   ©r2   rŠ   Úns     €r&   r6   z.test_pair_confusion_matrix.<locals>.<listcomp>Â  s#   ø€ Ð;Ð;Ð;¨Q˜a !™e˜W q™[Ð;Ð;Ð;r8   c                 ó(   •— g | ]}|d z   g‰d z   z  ‘ŒS r	  r0   r
  s     €r&   r6   z.test_pair_confusion_matrix.<locals>.<listcomp>Ã  s(   ø€ ÐAÐAÐA°1˜a !™e˜W¨¨A©Ñ.ÐAÐAÐAr8   )r)   r)   )ÚshaperÂ   r    )	r|   Úhstackrƒ   r€   Úint64r�   rÝ   r   r   )	r  r  r  r%   rŠ   rŒ   Úsame_cluster_1Úsame_cluster_2r  s	           @r&   Útest_pair_confusion_matrixr  ¾  sI  ø€ à
€AØ	ˆ1‰€AÝ”)Ð;Ð;Ð;Ð;µ%¸±(´(Ð;Ñ;Ô;Ñ<Ô<€KÝ”)ÐAÐAÐAÐA½¸a¹¼ÐAÑAÔAÑBÔBÀ2ÀAÀ2ÔF€KåŒx˜f­B¬HÐ5Ñ5Ô5€HÝ•3�{Ñ#Ô#Ñ$Ô$ð >ð >ˆÝ•s˜;Ñ'Ô'Ñ(Ô(ð 	>ð 	>ˆAØ�AŠvˆvÝ!$ [°¤^°{À1´~Ò%EÑ!FÔ!F�Ý!$ [°¤^°{À1´~Ò%EÑ!FÔ!F�Ø˜¨Ð7Ð8Ð8Ô8¸AÑ=Ð8Ð8Ñ8øð		>õ
 Õ,¨[¸+ÑFÔFÈÑQÔQÐQÐQÐQr8   zclustering1, clustering2r“   )r“   c                 óB   — t          t          | |¦  «        d¦  «         d S )NrB   ©r   r   )r  r  s     r&   Útest_rand_score_edge_casesr  Ï  s$   € õ •J˜{¨KÑ8Ô8¸#Ñ>Ô>Ð>Ð>Ð>r8   c                  óž   — g d¢} g d¢}d}d}d}d|z
  |z
  |z
  }||z   }||z   |z   |z   }||z  }t          t          | |¦  «        |¦  «         d S )NrY   rd   rq   é   r)   é   r  )	r  r  ÚD11ÚD10ÚD01ÚD00Úexpected_numeratorÚexpected_denominatorr%   s	            r&   Útest_rand_scorer  Ù  s‚   € à$Ð$Ð$€KØ$Ð$Ð$€Kà
€CØ
€CØ
€CØ
�#‰+˜Ñ
˜cÑ
!€Cà˜s™ÐØ ™9 s™?¨SÑ0ÐØ!Ð$8Ñ8€HÝ•J˜{¨KÑ8Ô8¸(ÑCÔCÐCÐCÐCr8   c                  ó|  — t           j                             d¦  «        } |                      dddt           j        ¬¦  «        }|                      dddt           j        ¬¦  «        }t          j        ¦   «         5  t          j        dt          ¦  «         t          ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z·Check that large amount of data will not lead to overflow in
    `adjusted_rand_score`.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20305
    r   r)   i † rÁ   ÚerrorN)
r|   r}   r~   r   Úint8ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   )rú   Úy_trueÚy_preds      r&   Ú!test_adjusted_rand_score_overflowr)  é  så   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�[Š[˜˜A˜w­b¬gˆ[Ñ6Ô6€FØ�[Š[˜˜A˜w­b¬gˆ[Ñ6Ô6€FÝ	Ô	 Ñ	"Ô	"ð ,ð ,ÝÔ˜g¥~Ñ6Ô6Ð6Ý˜F FÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   Á9+B1Â1B5Â8B5)r+   r-   r,   r.   c                 óÆ   — dgdz  }dg|dd…         z   }ddg|dd…         z   }t          ||| ¬¦  «        }|dk    sJ ‚t          ||| ¬¦  «        }d|cxk    rdk     sn J ‚dS )z�Check that nmi returns a score between 0 (included) and 1 (excluded
    for non-perfect match)

    Non-regression test for issue #13836
    r   iÕ  r    Nr)   rV   )r   )rT   Úlabels1Úlabels2Úlabels3Únmis        r&   Ú)test_normalized_mutual_info_score_boundedr/  ÷  s‘   € ð ˆc�C‰i€GØˆc�G˜A˜B˜B”KÑ€GØ�!ˆf�w˜q˜r˜r”{Ñ"€Gõ ' w°ÈÐ
WÑ
WÔ
W€CØ�!Š8ˆ8ˆ8ˆ8õ ' w°ÈÐ
WÑ
WÔ
W€CØ�ˆ<ˆ<Š<ˆ<�aŠ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<r8   )rw   rE   )rà   )Jr#  Únumpyr|   r"   Únumpy.testingr   r   r   Úsklearn.baser   Úsklearn.metrics.clusterr   r   r	   r
   r   r   r   r   r   r   r   r   r   Ú#sklearn.metrics.cluster._supervisedr   r   r   r   Úsklearn.utilsr   Úsklearn.utils._array_apir   Úsklearn.utils._testingr   r   Úscore_funcsÚmarkÚparametrizer'   r@   rS   rW   r^   rb   rh   ro   rv   r�   rš   r­   r¯   r¶   r»   r¿   rÎ   rÕ   rÙ   rß   rä   rê   rð   rõ   rþ   r  r  r  r¥   rƒ   r€   r  r  r)  r/  r0   r8   r&   ú<module>r;     sŠ  ðØ €€€à Ð Ð Ð Ø €€€Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xà 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LÐ LÐ Lð ØØØØØØ ð€ð „×Ò˜ {Ñ3Ô3ð0ð 0ñ 4Ô3ð0ð8ð 8ð 8ð „×Ò˜ {Ñ3Ô3ðCð Cñ 4Ô3ðCð „×ÒØà$Ø"ðñô ð „×ÒÐ)Ð+TÐ+TÐ+TÑUÔUðð ñ VÔUñô ðð6$ð $ð $ð$ð $ð $ð$ð $ð $ð&ð &ð &ð('ð 'ð 'ð.	ð 	ð 	ð 	ðKð Kð Kð&ð &ð &ð>Hð Hð Hð3ð 3ð 3ð6ð ð ð
'ð 'ð 'ð „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð)ð )ñ	ô ð)ð+ð +ð +ðGð Gð Gð$ð $ð $ð$
ð 
ð 
ð 
ð,*ð *ð *ð.ð .ð .ð. „×ÒØà
ˆ�‰Ð&Ð&Ð&Ð'Ø
ˆˆq‰Ð$Ð$Ð$Ð%Ø	Ð	Ð	˜c˜U Q™YÐ'Ø	Ð	Ð	˜a˜S 1™WÐ%Ø
ˆ�‰�S�E˜A‘IÐðñ	ô 	ð<ð <ñ	ô 	ð<ð-ð -ð -ðRð Rð RðRð Rð RðRð Rð Rð" „×ÒØØ
€dˆ5ˆ5�‰:Œ:ÑÔ˜˜˜U˜U 3™ZœZÑ(Ô(Ð)¨H¨B¬H°VÑ,<Ô,<¸h¸b¼hÀvÑ>NÔ>NÐ+OÐPñô ð?ð ?ñ	ô ð?ðDð Dð Dð ,ð ,ð ,ð „×ÒÐ)Ð+TÐ+TÐ+TÑUÔUðð ñ VÔUðð ð r8   