§
    ¨éUgÑE  ã            
       ó  — 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	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 d dlmZ d dlmZ e
eeeee	egZd„ Zd„ Z d	„ Z!d
„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d1d„Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d2d„Z0d„ Z1d„ Z2ej3         4                    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#„ ¦   «         Z5d$„ Z6d%„ Z7d&„ Z8d'„ Z9ej3         4                    d( e: e;d)¦  «        ¦  «         e: e;d)¦  «        ¦  «        f ej<        d*¦  «         ej<        d*¦  «        fg¦  «        d+„ ¦   «         Z=d,„ Z>d-„ Z?ej3         4                    d.g d/¢¦  «        d0„ ¦   «         Z@dS )3é    N)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)Úadjusted_mutual_info_scoreÚadjusted_rand_scoreÚcompleteness_scoreÚcontingency_matrixÚentropyÚ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)Ú_generalized_averageÚcheck_clusterings)Úassert_all_finite)Úassert_almost_equalc                  óÈ  — t           D ]Ù} 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 ¦  «         n# 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   )Úscore_funcsÚpytestÚraisesÚ
ValueError)Ú
score_funcÚexpecteds     úl/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyÚ"test_error_messages_on_wrong_inputr$   &   sÒ  € Ý!ð 4ð 4ˆ
àWð 	õ Œ]�:¨XÐ6Ñ6Ô6ð 	*ð 	*ØˆJ˜˜1�v˜y˜y˜yÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ;ˆÝŒ]�:¨XÐ6Ñ6Ô6ð 	4ð 	4ØˆJ˜˜A˜  A Ð'¨¨¨Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð ;ˆÝŒ]�:¨XÐ6Ñ6Ô6ð 	4ð 	4ØˆJ�y�y�y A q 6¨A¨q¨6Ð"2Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4øð4ð 4s5   §AÁA	ÁA	Á,BÂB	ÂB	Â5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&   é   )é   r7   c                 ó2   •— g | ]}t          ‰‰|¦  «        ‘ŒS r-   r.   )r/   r0   ÚcÚds     €€r#   r3   z,test_generalized_average.<locals>.<listcomp>=   r4   r5   r-   )ÚmethodsÚmeansr1   r2   r9   r:   s     @@@@r#   Útest_generalized_averager=   7   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Ð7r5   c                  óÂ  — t           D �]}  | 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 ‚�Œt          t          g}h d£}|D �]*} |D �]#} | 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   )é*   é   r@   )ç        r?   rB   )ç      E@ç      @rC   )rB   r?   ç       @)rC   rD   rE   )r   r   r&   )r@   rA   r&   >   r+   r(   r)   r*   ©Úaverage_method)r   r   Úapproxr   r   )r!   Úscore_funcs_with_changing_meansr<   Úmeans       r#   Útest_perfect_matchesrK   A   sd  € Ý!ð Gñ Gˆ
Øˆz˜"˜bÑ!Ô!¥V¤]°3Ñ%7Ô%7Ò7Ð7Ð7Ð7Øˆz˜1˜# ˜sÑ#Ô#¥v¤}°SÑ'9Ô'9Ò9Ð9Ð9Ð9Øˆz˜)˜)˜) Y Y YÑ/Ô/µ6´=ÀÑ3EÔ3EÒEÐEÐEÐEØˆz˜)˜)˜) [ [ [Ñ1Ô1µV´]À3Ñ5GÔ5GÒGÐGÐGÐGØˆz˜/˜/˜/Ð+<Ð+<Ð+<Ñ=Ô=ÅÄÈsÑASÔASÒSÐSÐSÐSØˆz˜/˜/˜/Ð+;Ð+;Ð+;Ñ<Ô<ÅÄÈcÑ@RÔ@RÒRÐRÐRÐRØˆz˜)˜)˜) Z Z ZÑ0Ô0µF´MÀ#Ñ4FÔ4FÒFÐFÐFÐFÑFå$Ý"ð'Ð#ð 6Ð5Ð5€EØ5ð $ñ $ˆ
Øð 	$ñ 	$ˆDØ�:˜b "°TÐ:Ñ:Ô:½f¼mÈCÑ>PÔ>PÒPÐPÐPÐPØ�:˜q˜c A 3°tÐ<Ñ<Ô<ÅÄÈcÑ@RÔ@RÒRÐRÐRÐRØ�:Ø�	�	˜9˜9˜9°Tðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ð �:Ø�	�	˜;˜;˜;°tðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ð �:Ø��Ð!2Ð!2Ð!2À4ðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ð �:Ø��Ð!1Ð!1Ð!1À$ðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ð �:Ø�	�	˜:˜:˜:°dðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ñ $ñ	$ð$ð $r5   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&   r?   r&   g®Gázæ?gìQ¸…ëé?©r   r   ©Úhr9   Úvs      r#   Ú*test_homogeneous_but_not_complete_labelingrR   d   óa   € å0Ð1CÐ1CÐ1CÐEWÐEWÐEWÑXÔX�G€A€qˆ!Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#Ý˜˜4 Ñ#Ô#Ð#Ð#Ð#r5   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&   r?   g\�Âõ(\ç?rN   rO   s      r#   Ú*test_complete_but_not_homogeneous_labelingrV   l   rS   r5   c                  óœ   — t          g d¢g d¢¦  «        \  } }}t          | dd¦  «         t          |dd¦  «         t          |dd¦  «         d S )NrM   ©r   r   r   r   r&   r&   çq=
×£på?r&   çáz®GáÚ?ç¤p=
×£à?rN   rO   s      r#   Ú.test_not_complete_and_not_homogeneous_labelingr\   t   rS   r5   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š™™™™™É?rY   rZ   r   rM   rX   )Úbetar&   )r   r   r   )Ú	beta_testÚh_testÚc_testÚv_testrP   r9   rQ   s          r#   Útest_beta_parameterrc   |   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Ñ%Ô%Ð%Ð%Ð%r5   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&   rX   rY   r&   rZ   r[   rM   )r   é   r   re   r&   r&   g¸…ëQ¸Î?g…ëQ¸å?)r   r   r   r   )rP   r9   rQ   Úari_1Úari_2Úri_1Úri_2s          r#   Útest_non_consecutive_labelsrj   �   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Ñ&Ô&Ð&Ð&Ð&r5   é
   r@   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ð	:ð €Mr5   c                  óº   — g d¢} d}d}t          t          || |¦  «        }t          j        |¦  «                             d¬¦  «        }t          |g d¢d¦  «         d S )N)r&   rk   é2   éZ   éd   rk   r   )Úaxis)ç{®Gáz”?ç¸…ëQ¸ž?rŠ   r‰   r&   )rƒ   r   rp   Úabsr+   r   )Ún_clusters_rangerx   rz   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ÐJr5   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&   r6   r6   r6   r6   r6   ©r   r   r   r   r&   r   r&   r&   r&   r&   r6   r   r6   r6   r6   r&   r&   gS‘
cAÚ?é   T©Úsparse)ÚcontingencygpUjö@Ã?gçãÚP1ÎÑ?)r   r   r&   r&   )r&   r&   r6   r6   r?   én   gR¸…ëQØ?r&   )rp   Úarrayr   r   r	   Úsumr   r   r   rH   ÚlistÚflatten)	r�   r‚   ÚmiÚCrx   Ú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Ñ%Ô%Ð%Ð%Ð%r5   c                  óZ   — t          t          j        dgg¦  «        d¦  «        dk    sJ ‚d S )Nip r   )r   rp   r—   r-   r5   r#   Ú"test_expected_mutual_info_overflowr£   à   s3   € õ '¥r¤x°%°°	Ñ':Ô':¸EÑBÔBÀaÒGÐGÐGÐGÐGÐGr5   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]<  r6   i“  re   iU  r’   iP  r   i˜Í  iá	  iD9  i  iÇ  éÌ   i.  é'   i<  é   )rp   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Ð2r5   c                  ó²   — t          g d¢¦  «        } t          | dd¦  «         t          t          g ¦  «        d¦  «         t          g d¢¦  «        dk    sJ ‚d S )N)r   r   rC   g,^ÑR^ä?r’   r   )r   r   r   r   r   )r
   r   )Úents    r#   Útest_entropyr­      s^   € Ý
�,�,�,Ñ
Ô
€CÝ˜˜Y¨Ñ*Ô*Ð*Ý� ™œ QÑ'Ô'Ð'Ý�<�<�<Ñ Ô  AÒ%Ð%Ð%Ð%Ð%Ð%r5   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)rp   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¡Ñ*Ô*Ð*Ð*Ð*r5   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”   )rp   r—   r	   Útoarrayr   r   r   r    )r�   r‚   rœ   ÚC_sparses       r#   Útest_contingency_matrix_sparser¸     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 �]2} t          j        | t          ¬¦  «        t          j        | t          ¬¦  «        }}t          ||¦  «        t          j        d¦  «        k    sJ ‚t          ||¦  «        t          j        d¦  «        k    sJ ‚t          ||¦  «        t          j        d¦  «        k    sJ ‚t          ||¦  «        t          j        d¦  «        k    sJ ‚dD ]V}t          |||¬¦  «        t          j        d¦  «        k    sJ ‚t          |||¬¦  «        t          j        d¦  «        k    sJ ‚ŒW�Œ4d S )Nr   re   ©ÚdtyperB   r'   rF   )rp   ÚlogspaceÚastypeÚintÚonesr²   r   r   rH   r   r   )r~   r�   r‚   r0   s       r#   Útest_exactly_zero_info_scorerÀ     sƒ  € åŒ[˜˜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Ñ=Ô=ÅÄÈsÑASÔASÒSÐSÐSÐSÝ+¨H°hÑ?Ô?Å6Ä=ÐQTÑCUÔCUÒUÐUÐUÐUØ?ð 	$ð 	$ˆFÝ-Ø˜(°6ðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $õ 0Ø˜(°6ðñ ô å”˜sÑ#Ô#ò$ð $ð $ð $ð $ñ		$ð$ð $r5   é$   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   re   r   rk   rE   r*   rF   )rp   r¼   r½   r¾   rq   rr   rs   r   r   r   r
   r   )r{   r~   Úrandom_stater�   r‚   Úavgs         r#   Ú%test_v_measure_and_mutual_informationrÅ   ,  s  € åŒ[˜˜A˜qÑ!Ô!×(Ò(­Ñ-Ô-ð 
ð 
ˆÝ”y×,Ò,¨TÑ2Ô2ˆà× Ò   B¨Ñ*Ô*Ø× Ò   B¨Ñ*Ô*ð ˆõ 	Ý˜H hÑ/Ô/ØÝ ¨(Ñ3Ô3ñ4å�xÑ Ô ¥7¨8Ñ#4Ô#4Ñ4ñ6ð ñ	
ô 	
ð 	
ð ˆÝÝ˜H hÑ/Ô/Ý(¨°8ÈCÐPÑPÔPñ	
ô 	
ð 	
ð 	
ð
ð 
r5   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 )
NrM   rU   g      @g      R@)r   r   r   r   r   r   r?   )r   r   r   r   r   r   )r   r   r&   r6   re   r’   rB   )r   r   rp   Úsqrt)ÚscoreÚperfect_scoreÚworst_scores      r#   Útest_fowlkes_mallows_scorerË   B  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Ñ)Ô)Ð)Ð)Ð)r5   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   r?   g      (@r   r6   r&   )rp   r—   rÇ   r   r   )r�   r‚   r"   Úscore_originalÚscore_symmetricÚscore_permutedÚ
score_boths          r#   Ú%test_fowlkes_mallows_score_propertiesrÑ   P  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Ñ-Ô-Ð-Ð-Ð-r5   zlabels_true, labels_predr1   é   )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Ö   g  s%   € õ ˜[¨+Ñ6Ô6¸!Ò;Ð;Ð;Ð;Ð;Ð;r5   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 )Nr@   iô  g{®Gáz„?r   g�íµ ÷Æ°>zuClustering metrics expects discrete values but received continuous values for label, and continuous values for targetr   )	rp   rq   rr   ÚrandÚlinspacer   ÚwarnsÚUserWarningr   )ÚrngÚnoiseÚ
wavelengthÚmsgs       r#   Útest_check_clustering_errorrà   w  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™   rw   rp   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ÐQr5   c                  ó´   — d} t          j        | f¦  «        }|}t          j        ddgd| | dz
  z  gg¦  «        }t          t	          ||¦  «        |¦  «         d S )Nr‡   r   r   )rp   rt   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ÐQr5   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 )Nrk   r&   c                 ó"   •— g | ]}|d z   g‰z  ‘ŒS ©r   r-   ©r/   r~   Úns     €r#   r3   z.test_pair_confusion_matrix.<locals>.<listcomp>œ  s#   ø€ Ð;Ð;Ð;¨Q˜a !™e˜W q™[Ð;Ð;Ð;r5   c                 ó(   •— g | ]}|d z   g‰d z   z  ‘ŒS rë   r-   rì   s     €r#   r3   z.test_pair_confusion_matrix.<locals>.<listcomp>�  s(   ø€ ÐAÐAÐA°1˜a !™e˜W¨¨A©Ñ.ÐAÐAÐAr5   )r&   r&   )Úshaper»   r   )	rp   Úhstackrw   rt   Úint64ru   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ÐQr5   zclustering1, clustering2r‡   )r‡   c                 óB   — t          t          | |¦  «        d¦  «         d S )Nr?   ©r   r   )rä   rå   s     r#   Útest_rand_score_edge_casesr÷   ©  s$   € õ •J˜{¨KÑ8Ô8¸#Ñ>Ô>Ð>Ð>Ð>r5   c                  óž   — g d¢} g d¢}d}d}d}d|z
  |z
  |z
  }||z   }||z   |z   |z   }||z  }t          t          | |¦  «        |¦  «         d S )NrM   rX   re   é   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ÐCr5   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)
rp   rq   rr   rs   Ú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rG   )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&   rF   )r   )rG   Ú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Š<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<r5   )rk   r@   )rÁ   )Ar  Únumpyrp   r   Únumpy.testingr   r   r   Úsklearn.metrics.clusterr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ú#sklearn.metrics.cluster._supervisedr   r   Úsklearn.utilsr   Úsklearn.utils._testingr   r   r$   r=   rK   rR   rV   r\   rc   rj   rƒ   rŽ   r¡   r£   rª   r­   r´   r¸   rÀ   rÅ   rË   rÑ   ÚmarkÚparametrizerÖ   rà   ræ   rè   rô   r™   rw   rt   r÷   r  r  r  r-   r5   r#   ú<module>r     sD  ðØ €€€à Ð Ð Ð Ø €€€Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  XÐ WÐ WÐ WÐ WÐ WÐ WÐ WØ +Ð +Ð +Ð +Ð +Ð +Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð ØØØØØØ ð€ð4ð 4ð 4ð"8ð 8ð 8ð $ð  $ð  $ðF$ð $ð $ð$ð $ð $ð$ð $ð $ð&ð &ð &ð('ð 'ð 'ð.	ð 	ð 	ð 	ðKð Kð Kð&ð &ð &ð>Hð Hð Hð3ð 3ð 3ð4&ð &ð &ð+ð +ð +ð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ðð ð r5   