Ë
    8Ò^jÔJ  ã            
       ón  — 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jJ                  jM                  d	e$«      d
„ «       Z'd„ Z(ejJ                  jM                  d	e$«      d„ «       Z)ejJ                  jM                  d	eeg«      ejJ                  jM                  dg d¢«      d„ «       «       Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d6d„Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6ejJ                  jM                  d e «       «      d„ «       Z7d„ Z8d„ Z9d „ Z:d7d!„Z;d"„ Z<d#„ Z=ejJ                  jM                  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,„ ZAd-„ ZBejJ                  jM                  d. eC eDd/«      «       eC eDd/«      «      f ejŠ                  d0«       ejŠ                  d0«      fg«      d1„ «       ZFd2„ ZGd3„ ZHejJ                  jM                  dg d4¢«      d5„ «       ZIy)8é    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 «       d}t        j                  t        |¬«      5   | ddgddggg d¢«       d d d «       d}t        j                  t        |¬«      5   | g d¢ddgddgg«       d d d «       y # 1 sw Y   ŒxxY w# 1 sw Y   ŒMxY w# 1 sw Y   y xY w)	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     úx/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyÚ"test_error_messages_on_wrong_inputr'   .   s¿   € àV€HÜ	�‰”z¨Ô	2ñ &Ù�A�q�6š9Ô%÷&ð 7€HÜ	�‰”z¨Ô	2ñ 0Ù�Q˜�F˜Q ˜FÐ#¢YÔ/÷0ð 7€HÜ	�‰”z¨Ô	2ñ 0Ù’9  1˜v¨¨1 vÐ.Ô/÷0ð 0÷&ð &ú÷0ð 0ú÷0ð 0ús#   žB#ÁB/ÂB;Â#B,Â/B8Â;Cc                  ó$  — d\  } }g d¢}|D �cg c]  }t        | ||«      ‘Œ }}|d   |d   cxk  r|d   cxk  r	|d   k  sJ ‚ J ‚d\  }}|D �cg c]  }t        |||«      ‘Œ }}|d   |d   cxk(  r|d   cxk(  r	|d   k(  sJ ‚ J ‚y c c}w c c}w )N)r    é   ©ÚminÚ	geometricÚ
arithmeticÚmaxr   r    r)   é   )é   r0   )r   )ÚaÚbÚmethodsÚmethodÚmeansÚcÚds          r&   Útest_generalized_averager8   =   s»   € Ø�D€A€qÚ7€GØ>EÖF°FÔ! ! Q¨Õ/ÐF€EÐFØ�‰8�u˜Q‘xÔ7 5¨¡8Ô7¨u°Q©xÒ7Ð7Ñ7Ð7Ð7Ø�D€A€qØ>EÖF°FÔ! ! Q¨Õ/ÐF€EÐFØ�‰8�u˜Q‘xÔ7 5¨¡8Ô7¨u°Q©xÒ7Ð7Ñ7Ð7Ñ7ùò	 Gùò Gs   ŽBÁB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 ‚y )Nç      ð?r   r    ©r   r   r   r!   ©é*   é   r=   ©ç        r:   r@   ©ç      E@ç      @rB   ©r@   r:   ç       @©rB   rC   rE   ©r   r    r)   ©r=   r>   r)   ©r"   Úapprox)r   s    r&   Útest_perfect_matchesrK   G   sÚ   € á�b˜"Ó¤§¡¨sÓ!3Ò3Ð3Ð3Ù�q�c˜A˜3Ó¤6§=¡=°Ó#5Ò5Ð5Ð5Ù’i¢Ó+¬v¯}©}¸SÓ/AÒAÐAÐAÙ’i¢Ó-´·±¸sÓ1CÒCÐCÐCÙ’oÒ'8Ó9¼V¿]¹]È3Ó=OÒOÐOÐOÙ’oÒ'7Ó8¼F¿M¹MÈ#Ó<NÒNÐNÐNÙ’i¢Ó,´·±¸cÓ0BÒBÐBÑBó    Ú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 ‚y )N©rM   r:   r   r    r;   r!   r<   r?   rA   rD   rF   rG   rH   )r   r    r)   r/   rI   )r   rM   s     r&   Ú(test_perfect_matches_with_changing_meansrP   R   s…  € ñ �b˜"¨^Ô<ÄÇÁÈcÓ@RÒRÐRÐRÙ�q�c˜A˜3¨~Ô>Ä&Ç-Á-ÐPSÓBTÒTÐTÐTÙÚ’9¨^ôä	�‰�sÓ	òð ð ñ Ú’;¨~ôä	�‰�sÓ	òð ð ñ ÚÒ*¸>ôä	�‰�sÓ	òð ð ñ ÚÒ)¸.ôä	�‰�sÓ	òð ð ñ Ú’:¨nôä	�‰�sÓ	òð ð ñ �q˜!�f˜q !˜f°^ÔDÌÏÉØóIò ð ð ñ Ú’l°>ôä	�‰�sÓ	òð ñ rL   c                  óz   — t        g d¢g d¢«      \  } }}t        | dd«       t        |dd«       t        |dd«       y )N©r   r   r   r    r    r    )r   r   r   r    r)   r)   r:   r)   g®Gázæ?gìQ¸…ëé?©r   r   ©Úhr6   Úvs      r&   Ú*test_homogeneous_but_not_complete_labelingrW   u   ó:   € ä0Ò1CÒEWÓX�G€A€qˆ!Ü˜˜4 Ô#Ü˜˜4 Ô#Ü˜˜4 Õ#rL   c                  óz   — t        g d¢g d¢«      \  } }}t        | dd«       t        |dd«       t        |dd«       y )N©r   r   r    r    r)   r)   )r   r   r    r    r    r    g�Âõ(\�â?r)   r:   g\�Âõ(\ç?rS   rT   s      r&   Ú*test_complete_but_not_homogeneous_labelingr[   }   rX   rL   c                  óz   — t        g d¢g d¢«      \  } }}t        | dd«       t        |dd«       t        |dd«       y )NrR   ©r   r    r   r    r)   r)   çq=
×£på?r)   çáz®GáÚ?ç¤p=
×£à?rS   rT   s      r&   Ú.test_not_complete_and_not_homogeneous_labelingra   …   rX   rL   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«       y )	Ngš™™™™™É?r^   r_   r    rR   r]   )Úbetar)   )r   r   r   )Ú	beta_testÚh_testÚc_testÚv_testrU   r6   rV   s          r&   Útest_beta_parameterrh   �   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€AÜ˜˜6 1Õ%rL   c                  óØ  — 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«       y )N)r   r   r   r)   r)   r)   r]   r^   r)   r_   r`   rR   )r   é   r   rj   r)   r)   g¸…ëQ¸Î?g…ëQ¸å?)r   r   r   r   )rU   r6   rV   Úari_1Úari_2Úri_1Úri_2s          r&   Útest_non_consecutive_labelsro   ¡   sÚ   € ä0Ò1CÒEWÓX�G€A€qˆ!Ü˜˜4 Ô#Ü˜˜4 Ô#Ü˜˜4 Ô#ä0Ò1CÒEWÓX�G€A€qˆ!Ü˜˜4 Ô#Ü˜˜4 Ô#Ü˜˜4 Ô#äÒ 2Ò4FÓG€EÜÒ 2Ò4FÓG€EÜ˜˜t QÔ'Ü˜˜t QÔ'äÒ(Ò*<Ó=€DÜÒ(Ò*<Ó=€DÜ˜˜d AÔ&Ü˜˜d AÕ&rL   c                 ó&  — t         j                  j                  |«      j                  }t        j                  t        |«      |f«      }t        |«      D ]9  \  }}t        |«      D ]&  }	 |d||¬«      }
 |d||¬«      } | |
|«      |||	f<   Œ( Œ; |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‘I×)Ñ)¨$Ó/×7Ñ7€MÜ�X‰X”s˜7“| VÐ,Ó-€FÜ˜'Ó"ò :‰ˆˆ1Ü�v“ò 	:ˆAÙ$¨°¸ÔCˆHÙ$¨°¸ÔCˆHÙ% h°Ó9ˆF�1�a�4ŠLñ	:ð:ð
 €MrL   c                  ó    — g d¢} d}d}t        t        || |«      }t        j                  |«      j	                  d¬«      }t        |g d¢d«       y )N)r)   é
   é2   éZ   éd   r‰   r    )Úaxis)ç{®Gáz”?ç¸…ëQ¸ž?r�   rŽ   r)   )r‡   r   rt   Úabsr.   r   )Ún_clusters_ranger|   r~   r�   Úmax_abs_scoress        r&   Útest_adjustment_for_chancer“   Ä   sP   € â&ÐØ€IØ€Fä%Ü˜YÐ(8¸&ó€Fô —V‘V˜F“^×'Ñ'¨QÐ'Ó/€NÜ˜nÒ.FÈÕJrL   c                  óü  — t        j                  g d¢«      } t        j                  g d¢«      }t        | |«      }t        |dd«       t	        | |d¬«      }t        | ||¬«      }t        |dd«       t	        | |«      }t        | ||¬«      }t        |dd«       |j                  «       }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«      j                  «       }t        j                  t        |«      dz  g«      j                  «       }t        ||«      }t        |dd«       y )N©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)   r)   r/   r    r/   r/   r/   r)   r)   gS‘
cAÚ?é   T©Úsparse)ÚcontingencygpUjö@Ã?gçãÚP1ÎÑ?)r    r    r)   r)   )r)   r)   r/   r/   r:   én   gR¸…ëQØ?r)   )rt   Úarrayr   r   r
   Úsumr   r   r"   rJ   ÚlistÚflatten)	r…   r†   ÚmiÚCr|   ÚemiÚamiÚa110Úb110s	            r&   Útest_adjusted_mutual_info_scorer¦   Ò   sB  € ä�x‰xÒKÓL€HÜ�x‰xÒKÓ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€CÜ˜˜W aÔ(ä
$ X¨xÓ
8€CÜ˜˜W aÔ(Ü
$¢\²<Ó
@€CØ”&—-‘- Ó$Ò$Ð$Ð$ä�8‰8”T˜(“^ cÑ)Ð*Ó+×3Ñ3Ó5€DÜ�8‰8”T˜(“^ cÑ)Ð*Ó+×3Ñ3Ó5€DÜ
$ T¨4Ó
0€CÜ˜˜T 1Õ%rL   c                  óP   — t        t        j                  dgg«      d«      dk  sJ ‚y )Nip r    )r   rt   rœ   © rL   r&   Ú"test_expected_mutual_info_overflowr©   ñ   s&   € ô '¤r§x¡x°%°°	Ó':¸EÓBÀaÒGÐGÑGrL   c                  ór  — 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	        | |«      «       y )Nr    iy×  r)   i]<  r/   i“  rj   iU  r—   iP  r   i˜Í  iá	  iD9  i  iÇ  éÌ   i.  é'   i<  é   )rt   rœ   r   r   r   )ÚxÚys     r&   Ú3test_int_overflow_mutual_info_fowlkes_mallows_scorer°   ÷   s!  € ä
�‰Ø	
ˆˆ|ÑØˆ#�Ñ
ñ	àˆ#�Ñ
ñ	ð ˆ#�Ñ
ñ	ð ˆ#�Ñ
ñ		ó	€Aô 	�‰Ø	
ˆˆe‰Øˆ#�‰*ñ	àˆ#�‰+ñ	ð ˆ#�‰)ñ	ð ˆ#�‰*ñ		ð
 ˆ#�‰)ñ	ð ˆ#�‰)ñ	ð ˆ#�‰(ñ	ð ˆ#�‰)ñ	ð ˆ#�‰(ñ		ó	€Aô Ô'¨¨1Ó-Ô.ÜÔ+¨A¨qÓ1Õ2rL   c                  ó~   — t        j                  t        d¬«      5  t        g d¢«       d d d «       y # 1 sw Y   y xY w)NzFunction entropy is deprecatedr   ©r   r   rB   )r"   ÚwarnsÚFutureWarningr   r¨   rL   r&   Útest_public_entropy_deprecationrµ     s.   € Ü	�‰”mÐ+KÔ	Lñ Ü’Ô÷÷ ñ ús   œ3³<c                  ó‚   — t        t        g d¢«      dd«       t        t        g «      d«       t        g d¢«      dk(  sJ ‚y )Nr²   ç,^ÑR^ä?r—   r    ©r    r    r    r    r   )r   r   r¨   rL   r&   Útest_entropyr¹     s4   € Üœ¢Ó.°	¸1Ô=Üœ › aÔ(Ü’LÓ! QÒ&Ð&Ñ&rL   z(array_namespace, device_name, dtype_namec                 ó¬  — t        | ||«      \  }}|j                  t        j                  g d¢|¬«      |¬«      }|j                  g |j                  |¬«      }|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 «       y # 1 sw Y   y xY w)Nr²   ©Údtype)Údevice)r¼   r½   r¸   T)Úarray_api_dispatchr·   gñhãˆµøä>)r�   r    r   )r   Úasarrayrt   Úint32r   r   r"   rJ   )Úarray_namespaceÚdevice_nameÚ
dtype_nameÚxpr½   Úfloat_labelsÚempty_int32_labelsÚ
int_labelss           r&   Útest_entropy_array_apirÈ     sÁ   € ô
 & o°{ÀJÓO�J€BˆØ—:‘:œbŸj™jª¸ZÔHÐQW�:ÓX€LØŸ™ B¨b¯h©h¸v˜ÓFÐØ—‘šL°�Ó8€JÜ	¨4Ô	0ñ )Ü˜Ó%¬¯©°yÀdÔ)KÒKÐKÐKÜÐ*Ó+¨qÒ0Ð0Ð0Ü˜
Ó# qÒ(Ð(Ñ(÷)÷ )ñ )ús   Á:AC
Ã
Cc            	      óT  — 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   «       y )	Nr•   r–   r    r—   )Úbinsr   gš™™™™™¹?)Úeps)rt   rœ   r
   Úhistogram2dÚaranger   )r…   r†   r¡   ÚC2s       r&   Útest_contingency_matrixrÏ   ,  s„   € Ü�x‰xÒKÓL€HÜ�x‰xÒKÓL€HÜ˜8 XÓ.€AÜ	�‰˜ (´"·)±)¸A¸q³/Ä2Ç9Á9ÈQÐPQÃ?Ð1SÔ	TÐUVÑ	W€BÜ˜a Ô$Ü˜8 X°3Ô7€AÜ˜a  c¡Õ*rL   c                  óF  — t        j                  g d¢«      } t        j                  g d¢«      }t        | |«      }t        | |d¬«      j                  «       }t	        ||«       t        j                  t        d¬«      5  t        | |dd¬«       d d d «       y # 1 sw Y   y xY w)	Nr•   r–   Tr˜   z!Cannot set 'eps' when sparse=Truer   g»½×Ùß|Û=)rË   r™   )rt   rœ   r
   Útoarrayr   r"   r#   r$   )r…   r†   r¡   ÚC_sparses       r&   Útest_contingency_matrix_sparserÓ   6  sƒ   € Ü�x‰xÒKÓL€HÜ�x‰xÒKÓL€HÜ˜8 XÓ.€AÜ! (¨H¸TÔB×JÑJÓL€HÜ˜a Ô*Ü	�‰”zÐ)LÔ	Mñ GÜ˜8 X°5ÀÕF÷G÷ Gñ Gús   Á>BÂB c                  óH  — t        j                  ddd«      j                  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 ];  }t        |||¬«      dk(  sJ ‚t        |||¬«      t        j                  d«      k(  rŒ;J ‚ Œ÷ y )Nr    rj   r»   r@   r*   rO   )rt   ÚlogspaceÚastypeÚintÚonesrÍ   r   r"   rJ   r   r   )r‚   r…   r†   r4   s       r&   Útest_exactly_zero_info_scorerÙ   @  s  € ä�[‰[˜˜A˜qÓ!×(Ñ(¬Ó-ò $ˆÜ Ÿg™g a¬sÔ3´R·Y±Y¸qÌÔ5L�(ˆÜ+¨H°hÓ?Ä6Ç=Á=ÐQTÓCUÒUÐUÐUÜ˜x¨Ó2´f·m±mÀCÓ6HÒHÐHÐHÜ)¨(°HÓ=ÀÒDÐDÐDÜ+¨H°hÓ?Ä6Ç=Á=ÐQTÓCUÒUÐUÐUØ?ò 	$ˆFä*¨8°XÈfÔUØòððô 0Ø˜(°6ôä—‘˜sÓ#ó$ð $ð $ñ	$ñ$rL   c           	      ó¬  — t        j                  ddd«      j                  t        «      D ]§  }t         j                  j                  | «      }|j                  dd|«      |j                  dd|«      }}t        t        ||«      dt        ||«      z  t        |«      t        |«      z   z  d«       d}t        t        ||«      t        |||¬«      «       Œ© y )Nr    rj   r   r‰   rE   r-   rO   )rt   rÕ   rÖ   r×   ru   rv   rw   r   r   r   r   r   )r   r‚   Úrandom_stater…   r†   Úavgs         r&   Ú%test_v_measure_and_mutual_informationrÝ   R  sÏ   € ä�[‰[˜˜A˜qÓ!×(Ñ(¬Ó-ò 
ˆÜ—y‘y×,Ñ,¨TÓ2ˆà× Ñ   B¨Ó*Ø× Ñ   B¨Ó*ð ˆô 	Ü˜H hÓ/ØÜ ¨(Ó3ñ4ä˜Ó!¤H¨XÓ$6Ñ6ñ8ð ô	
ð ˆÜÜ˜H hÓ/Ü(¨°8ÈCÔPõ	
ñ
rL   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	«       y )
NrR   rZ   g      @g      R@)r    r    r    r   r   r   r:   )r   r   r   r   r   r   )r   r    r)   r/   rj   r—   r@   )r   r   rt   Úsqrt)ÚscoreÚperfect_scoreÚworst_scores      r&   Útest_fowlkes_mallows_scorerã   h  s\   € ä!Ò"4Ò6HÓI€EÜ˜˜s¤R§W¡W¨ZÓ%8Ñ8Ô9ô *Ò*<Ò>PÓQ€MÜ˜ sÔ+ô (Ò(:Ò<NÓO€KÜ˜ SÕ)rL   c                  óh  — 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	        ||«       y )N)r   r   r   r    r    r)   )r    r    r)   r)   r   r   r:   g      (@r    r/   r)   )rt   rœ   rß   r   r   )r…   r†   r%   Úscore_originalÚscore_symmetricÚscore_permutedÚ
score_boths          r&   Ú%test_fowlkes_mallows_score_propertiesré   v  s¦   € ä�x‰xÒ*Ó+€HÜ�x‰xÒ*Ó+€HØ”R—W‘WÐ6Ó7Ñ7€Hô +¨8°XÓ>€NÜ˜¨Ô1ô ,¨H°hÓ?€OÜ˜¨Ô2ô +¨H°q©L¸AÑ+=¸xÓH€NÜ˜¨Ô1ô ' x°(¸Q±,À!Ñ1CÓD€JÜ˜
 HÕ-rL   zlabels_true, labels_predr1   é   )r    r    r   r   r    r    r    c                 ó&   — t        | |«      dk(  sJ ‚y )Nr   )r   )Úlabels_trueÚlabels_preds     r&   Ú.test_mutual_info_score_positive_constant_labelrî   �  s   € ô ˜[¨+Ó6¸!Ò;Ð;Ñ;rL   c                  ó  — t         j                  j                  d«      } | j                  d«      }t        j                  ddd«      dz  }d}t        j                  t        |¬«      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr=   iô  g{®Gáz„?r    g�íµ ÷Æ°>zuClustering metrics expects discrete values but received continuous values for label, and continuous values for targetr   )	rt   ru   rv   ÚrandÚlinspacer"   r³   ÚUserWarningr   )ÚrngÚnoiseÚ
wavelengthÚmsgs       r&   Útest_check_clustering_errorr÷   �  ss   € ä
�)‰)×
Ñ
 Ó
#€CØ�H‰H�S‹M€EÜ—‘˜T 1 cÓ*¨TÑ1€Jð	ð ô 
�‰”k¨Ô	-ñ -Ü˜* eÔ,÷-÷ -ñ -ús   Á(A>Á>Bc                  ó¢   — d} t        t        | «      «      }|}t        j                  | | dz
  z  dgddgg«      }t	        t        ||«      |«       y )NrŒ   r    r   )rž   r{   rt   rœ   r   r   ©ÚNÚclustering1Úclustering2r%   s       r&   Ú*test_pair_confusion_matrix_fully_dispersedrý   ¬  sO   € à€AÜ”u˜Q“x“.€KØ€KÜ�x‰x˜!˜q 1™u™+ qÐ)¨A¨q¨6Ð2Ó3€HÜÔ,¨[¸+ÓFÈÕQrL   c                  ó¦   — d} t        j                  | f«      }|}t        j                  ddgd| | dz
  z  gg«      }t        t	        ||«      |«       y )NrŒ   r   r    )rt   rx   rœ   r   r   rù   s       r&   Ú)test_pair_confusion_matrix_single_clusterrÿ   µ  sQ   € à€AÜ—(‘(˜A˜4“.€KØ€KÜ�x‰x˜!˜Q˜ ! Q¨!¨a©%¡[Ð!1Ð2Ó3€HÜÔ,¨[¸+ÓFÈÕQrL   c                  óR  — d} | dz  }t        j                  t        | «      D �cg c]  }|dz   g| z  ‘Œ c}«      }t        j                  t        | «      D �cg c]  }|dz   g| dz   z  ‘Œ c}«      d | }t        j                  dt         j                  ¬«      }t        t        |«      «      D ]X  }t        t        |«      «      D ]?  }||k7  sŒ	t        ||   ||   k(  «      }t        ||   ||   k(  «      }|||fxx   dz  cc<   ŒA ŒZ t        t        ||«      |«       y c c}w c c}w )Nr‰   r)   r    )r)   r)   )Úshaper¼   )	rt   Úhstackr{   rx   Úint64ry   r×   r   r   )	Únrú   r‚   rû   rü   r%   r„   Úsame_cluster_1Úsame_cluster_2s	            r&   Útest_pair_confusion_matrixr  ¾  s  € à
€AØ	ˆ1‰€AÜ—)‘)´%¸³(Ö;¨Q˜a !™e˜W q›[Ò;Ó<€KÜ—)‘)¼¸a»ÖA°1˜a !™e˜W¨¨A©Ó.ÒAÓBÀ2ÀAÐF€Kä�x‰x˜f¬B¯H©HÔ5€HÜ”3�{Ó#Ó$ò >ˆÜ”s˜;Ó'Ó(ò 	>ˆAØ�A‹vÜ!$ [°¡^°{À1±~Ñ%EÓ!F�Ü!$ [°¡^°{À1±~Ñ%EÓ!F�Ø˜¨Ð7Ó8¸AÑ=Ô8ñ		>ð>ô Ô,¨[¸+ÓFÈÕQùò <ùÚAs   ¤DÁD$zclustering1, clustering2rŒ   )rŒ   c                 ó0   — t        t        | |«      d«       y )Nr:   ©r   r   )rû   rü   s     r&   Útest_rand_score_edge_casesr
  Ï  s   € ô ”J˜{¨KÓ8¸#Õ>rL   c                  óŒ   — g d¢} g d¢}d}d}d}d|z
  |z
  |z
  }||z   }||z   |z   |z   }||z  }t        t        | |«      |«       y )NrR   r]   rj   é   r)   é   r	  )	rû   rü   ÚD11ÚD10ÚD01ÚD00Úexpected_numeratorÚexpected_denominatorr%   s	            r&   Útest_rand_scorer  Ù  sg   € â$€KÚ$€Kà
€CØ
€CØ
€CØ
�#‰+˜Ñ
˜cÑ
!€Cà˜s™ÐØ ™9 s™?¨SÑ0ÐØ!Ð$8Ñ8€HÜ”J˜{¨KÓ8¸(ÕCrL   c                  ól  — t         j                  j                  d«      } | j                  dddt         j                  ¬«      }| j                  dddt         j                  ¬«      }t        j                  «       5  t        j                  dt        «       t        ||«       ddd«       y# 1 sw Y   yxY w)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)
rt   ru   rv   rw   Úint8ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   )ró   Úy_trueÚy_preds      r&   Ú!test_adjusted_rand_score_overflowr  é  s‡   € ô �)‰)×
Ñ
 Ó
"€CØ�[‰[˜˜A˜w¬b¯g©gˆ[Ó6€FØ�[‰[˜˜A˜w¬b¯g©gˆ[Ó6€FÜ	×	 Ñ	 Ó	"ñ ,Ü×Ñ˜g¤~Ô6Ü˜F FÔ+÷,÷ ,ñ ,ús   Á:'B*Â*B3)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J ‚ J ‚y)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)   rO   )r   )rM   Úlabels1Úlabels2Úlabels3Únmis        r&   Ú)test_normalized_mutual_info_score_boundedr$  ÷  su   € ð ˆc�C‰i€GØˆc�G˜A˜B�KÑ€GØ�!ˆf�w˜q˜r�{Ñ"€Gô ' w°ÈÔ
W€CØ�!Š8€Oˆ8ô ' w°ÈÔ
W€CØ�Œ<�aŠ<Ð‰<Ð‰<rL   )r‰   r=   )é$   )Jr  Únumpyrt   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'   r8   rK   rP   rW   r[   ra   rh   ro   r‡   r“   r¦   r©   r°   rµ   r¹   rÈ   rÏ   rÓ   rÙ   rÝ   rã   ré   rî   r÷   rý   rÿ   r  rž   r{   rx   r
  r  r  r$  r¨   rL   r&   ú<module>r1     s¯  ðÛ ã Û ß XÑ Xå '÷÷ ÷ õ ÷ó õ ,õ÷ Mð ØØØØØØ ð€ð ‡�×Ñ˜ {Ó3ñ0ó 4ð0ò8ð ‡�×Ñ˜ {Ó3ñCó 4ðCð ‡�×ÑØà$Ø"ðóð ‡�×ÑÐ)Ò+TÓUñó Vóðò6$ò$ò$ò&ò('ó.	òKò&ò>Hò3ò6ò
'ð ‡�×ÑØ.Ù-Ó/óñ)ó	ð)ò+òGò$ó$
ò,*ò.ð. ‡�×ÑØà
ˆ�‰Ò&Ð'Ø
ˆˆq‰Ò$Ð%Ú	˜c˜U Q™YÐ'Ú	˜a˜S 1™WÐ%Ø
ˆ�‰�S�E˜A‘IÐðó	ñ<ó	ð<ò-òRòRòRð" ‡�×ÑØÙ
‰5�‹:Ó™™U 3›ZÓ(Ð)¨H¨B¯H©H°VÓ,<¸h¸b¿h¹hÀvÓ>NÐ+OÐPóñ?ó	ð?òDò ,ð ‡�×ÑÐ)Ò+TÓUñó VñrL   