Ë
    uwju ã                   ó   — d dl Z d dlZd dlmZ d dlmZmZmZ d dlZ	d dl
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 d	l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)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z? d dl=m@Z@mAZA d dlBmCZC d dlDmEZEmFZFmGZGmHZHmIZImJZJ d dlKmLZL d dlMmNZNmOZO d dlPmQZQ �dd„ZRd„ ZSe
j¨                  j«                  ddd de	j¬                  g«      d„ «       ZWe
j¨                  j«                  dd gdfd dgdfg d ¢dfg«      d!„ «       ZXd"„ ZYd#„ ZZe
j¨                  j·                  d$«      d%„ «       Z\e
j¨                  j·                  d$«      d&„ «       Z]e
j¨                  j·                  d$«      d'„ «       Z^d(„ Z_e
j¨                  j«                  d)g d*¢ e	jÀ                  g d+¢g d,¢g d-¢g d.¢g«      fg d/¢g d0¢fg«      d1„ «       Zae
j¨                  j«                  d)g d2¢ e	jÀ                  g d.¢g d.¢g d3¢g d3¢g d4¢g«      fg d5¢g d6¢fg«      d7„ «       Zbd8„ Zcd9„ Zdd:„ Zed;„ Zfe
j¨                  j«                  d<eN«      e
j¨                  j«                  d=eO«      d>„ «       «       Zgd?„ Zhe
j¨                  j«                  d@g dA¢«      dB„ «       ZidC„ ZjdD„ Zke
j¨                  j«                  dE e	jÀ                  g dF¢«       e	jÀ                  g dF¢«      dGœdHf e	jÀ                  g dF¢«       e	jÀ                  g dI¢«      dGœdJf e	jÀ                  g dF¢«       e	jÀ                  g dK¢«      dGœdLf e	jÀ                  g dI¢«       e	jÀ                  g dF¢«      dGœdMfg«      dN„ «       Zle
j¨                  j«                  dO e	jÀ                  g dP¢«       e	jÀ                  g dQ¢«      dGœdRfg«      dS„ «       ZmdT„ Zne
j¨                  j«                  dUddg«      dV„ «       ZodW„ Zpe
j¨                  j«                  dXdYdZid[dZid\dZd]œd^d_d]œdZdZd]œd^d`d]œg«      da„ «       Zqe
j¨                  j«                  dbd^d^d]œd^fe	jä                  dZd]œe	jä                  fd`dZd]œd`fe	j¬                  e	j¬                  d]œe	j¬                  fe	j¬                  e	j¬                  fg«      dc„ «       Zse
j¨                  j«                  dbd^d^d]œd^fe	jä                  dZd]œdZfe	jä                  ddd]œddfe	j¬                  e	j¬                  d]œe	j¬                  fe	j¬                  e	j¬                  fg«      de„ «       Ztdf„ Zudg„ Zve
j¨                  j«                  dd de	j¬                  g«      e
j¨                  j«                  dhd gd gfg«      e
j¨                  j«                  die% ee&d¬j«      e/e0g«      dk„ «       «       «       Zwe
j¨                  j«                  dhd gd gfg«      e
j¨                  j«                  die% ee&d¬j«      e/e0g«      dl„ «       «       Zxdm„ Zydn„ Zzdo„ Z{dp„ Z|e
j¨                  j«                  dqdrdsg«      dt„ «       Z}du„ Z~e
j¨                  j«                  dvg dw¢«      dx„ «       Zdy„ Z€dz„ Z�d{„ Z‚e
j¨                  j«                  d|g d}fd~dgd€fgd�d‚g¬ƒ«      d„„ «       Zƒd…„ Z„e
j¨                  j«                  d†g d‡¢«      dˆ„ «       Z…d‰„ Z†dŠ„ Z‡d‹„ ZˆdŒ„ Z‰d�„ ZŠdŽ„ Z‹d�„ ZŒd�„ Z�d‘„ ZŽe
j¨                  j·                  d$«      d’„ «       Z�d“„ Z�d”„ Z‘d•„ Z’d–„ Z“d—„ Z”d˜„ Z•d™„ Z–e
j¨                  j«                  dšd›dœg«      d�„ «       Z—e
j¨                  j·                  d$«      dž„ «       Z˜e
j¨                  j·                  d$«      dŸ„ «       Z™e
j¨                  j·                  d$«      e
j¨                  j«                  d d¡d›d¢e	j¬                  e	j¬                  fg«      d£„ «       «       Zše
j¨                  j«                  d¤dg«      e
j¨                  j«                  dvg d¥¢«      e
j¨                  j«                  dd de	j¬                  g«      d¦„ «       «       «       Z›e
j¨                  j«                  dvg d¥¢«      d§„ «       Zœe
j¨                  j«                  dd de	j¬                  g«      d¨„ «       Z�d©„ Zždª„ ZŸe
j¨                  j«                  dd de	j¬                  g«      d«„ «       Z e
j¨                  j«                  ddd de	j¬                  g«      d¬„ «       Z¡e
j¨                  j«                  ddd de	j¬                  g«      d­„ «       Z¢e
j¨                  j«                  ddd de	j¬                  g«      d®„ «       Z£d¯„ Z¤d°„ Z¥d±„ Z¦d²„ Z§e
j¨                  j«                  d³ e�jP                  dgd gdgd gg«      d´f e�jP                  d gdgdµgdgg«      d¶f e�jP                  g d·¢g d¸¢g d¹¢g«      dºfg«      d»„ «       Z©d¼„ Zªd½„ Z«d¾„ Z¬d¿„ Z­dÀ„ Z®dÁ„ Z¯dÂ„ Z°dÃ„ Z±e
j¨                  j«                  d†e	�jd                  e	�jf                  e	�jh                  g«      dÄ„ «       Zµe
j¨                  j«                  d†e	�jd                  e	�jf                  e	�jh                  g«      dÅ„ «       Z¶e
j¨                  j«                  dhg d¸¢g d¸¢fg d¸¢dd gd dgdd ggfg d ¢g dÆ¢g d¸¢g dÇ¢gfg«      dÈ„ «       Z·dÉ„ Z¸dÊ„ Z¹dË„ ZºdÌ„ Z»dÍ„ Z¼dÎ„ Z½dÏ„ Z¾e
j¨                  j«                  dÐg dÑ¢g dÒ¢fg dÓ¢g dÒ¢fg dÒ¢g dÓ¢fg«      dÔ„ «       Z¿e
j¨                  j«                  die)e% ee&dd¬j«      e.e/e0e g«      e
j¨                  j«                  dÕg dÖ¢«      d×„ «       «       ZÀe
j¨                  j«                  dØ e	jÀ                  d dg«       e	jÀ                  dd g«      dZf e	jÀ                  d dg«       e	jÀ                  d dg«      d^f e	jÀ                  d dg«       e	jÀ                  d d g«      dZf e	jÀ                  d d g«       e	jÀ                  d d g«      d^fg«      dÙ„ «       ZÁe
j¨                  �j„                  e
j¨                  j«                  dÚ e+e%e	j¬                  ¬Û«       e+e&dµe	j¬                  ¬Ü«       e+e/e	j¬                  ¬Û«       e+e0e	j¬                  ¬Û«      g«      dÝ„ «       «       ZÃdÞ„ ZÄdß„ ZÅdà„ ZÆdá„ ZÇdâ„ ZÈdã„ ZÉe
j¨                  j«                  däg då¢g dæ¢ddçfg dè¢g dæ¢ddéfg dê¢g dæ¢ddëfg dì¢g dí¢ddîfg dì¢g dï¢ddðfg dñ¢ddddgddddgddddggddòfg dó¢g dô¢gg dõ¢g dö¢gdd÷fg dø¢g dù¢g dù¢g dù¢gd dµgdúfg dû¢g dù¢g dù¢g dù¢gd gdüfg	«      dý„ «       ZÊdþ„ ZËe
j¨                  j«                  dÿ eA«       «      �d „ «       ZÌe
j¨                  j«                  �de e*e4e5g«      e
j¨                  j«                  �dddg«      e
j¨                  j«                  �dddg«      e
j¨                  j«                  �d eA«       «      �d„ «       «       «       «       ZÍe
j¨                  j«                  �de e*e4e5g«      e
j¨                  j«                  �dddg«      e
j¨                  j«                  �d eA«       «      �d„ «       «       «       ZÎy(  é    N)Úpartial)ÚchainÚpermutationsÚproduct)ÚlinalgÚsparse)Úhamming)Ú	bernoulli)ÚdatasetsÚsvm)Úconfig_context)Úmake_multilabel_classification)ÚUndefinedMetricWarning)Úaccuracy_scoreÚaverage_precision_scoreÚbalanced_accuracy_scoreÚbrier_score_lossÚclass_likelihood_ratiosÚclassification_reportÚcohen_kappa_scoreÚconfusion_matrixÚf1_scoreÚfbeta_scoreÚhamming_lossÚ
hinge_lossÚjaccard_scoreÚlog_lossÚmake_scorerÚmatthews_corrcoefÚmultilabel_confusion_matrixÚprecision_recall_fscore_supportÚprecision_scoreÚrecall_scoreÚzero_one_loss)Ú_check_targetsÚd2_brier_scoreÚd2_log_loss_score)Úcross_val_score)ÚLabelBinarizerÚlabel_binarize)ÚDecisionTreeClassifier©Údevice)Úget_namespaceÚ)yield_namespace_device_dtype_combinations)ÚMockDataFrame)Ú_array_api_for_testsÚassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Ú_nanaverage)ÚCSC_CONTAINERSÚCSR_CONTAINERS)Úcheck_random_stateFc                 ó–  — | €t        j                  «       } | j                  }| j                  }|r||dk     ||dk     }}|j                  \  }}t        j                  |«      }t        d«      }|j                  |«       ||   ||   }}t        |dz  «      }t
        j                  j                  d«      }t
        j                  ||j                  |d|z  «      f   }t        j                  ddd¬«      }	|	j!                  |d| |d| «      j#                  ||d «      }
|r	|
dd…d	f   }
|	j%                  ||d «      }||d }|||
fS )
z½Make some classification predictions on a toy dataset using an SVC

    If binary is True restrict to a binary classification problem instead of a
    multiclass classification problem
    Né   é%   r   éÈ   ÚlinearT)ÚkernelÚprobabilityÚrandom_stateé   )r   Ú	load_irisÚdataÚtargetÚshapeÚnpÚaranger:   ÚshuffleÚintÚrandomÚRandomStateÚc_Úrandnr   ÚSVCÚfitÚpredict_probaÚpredict)ÚdatasetÚbinaryÚXÚyÚ	n_samplesÚ
n_featuresÚpÚrngÚhalfÚclfÚy_pred_probaÚy_predÚy_trues                ún/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_classification.pyÚmake_predictionrb   G   sN  € ð €ä×$Ñ$Ó&ˆà�‰€AØ�‰€Aáà��Q‘‰x˜˜1˜q™5™ˆ1ˆàŸG™GÑ€IˆzÜ
�	‰	�)Ó€Aä
˜RÓ
 €CØ‡K�K�„NØˆQ‰4��1‘€q€AÜˆy˜1‰}Ó€Dô �)‰)×
Ñ
 Ó
"€CÜ
�‰ˆa�—‘˜9 c¨JÑ&6Ó7Ð7Ñ8€Aô �'‰'˜¨tÀ!Ô
D€CØ—7‘7˜1˜U˜d˜8 Q u¨ XÓ.×<Ñ<¸Q¸t¸u¸XÓF€Láð $¢A q DÑ)ˆà�[‰[˜˜4˜5˜Ó"€FØˆtˆuˆX€FØ�6˜<Ð'Ð'ó    c            
      ó  — t        j                  «       } t        | d¬«      \  }}}dddddœdd	d
ddœdddddœdddddœddddddœdœ}t        ||t	        j
                  t        | j                  «      «      | j                  d¬«      }|j                  «       |j                  «       k(  sJ ‚|D ]u  }|dk(  r#t        ||   t        «      sJ ‚||   ||   k(  rŒ)J ‚||   j                  «       ||   j                  «       k(  sJ ‚||   D ]  }t        ||   |   ||   |   «       Œ Œw t        |d   d   t        «      sJ ‚t        |d   d   t        «      sJ ‚t        |d   d   t        «      sJ ‚t        |d   d   t        «      sJ ‚y ) NF©rT   rU   g§7½éMoê?gUUUUUUé?gh£¾³Qßé?é   )Ú	precisionÚrecallúf1-scoreÚsupportçUUUUUUÕ?gÆcŒ1Æ¸?g433333Ã?é   g³¦¬)kÊÚ?çÍÌÌÌÌÌì?ç“$I’$Iâ?é   gCÜFÁQà?g�¼cÕà?g¿��Æ¢ã?éK   )ri   rg   rh   rj   gá?gDÖ~WGÞ?g]žè3«pà?)ÚsetosaÚ
versicolorÚ	virginicaú	macro avgÚaccuracyzweighted avgT)ÚlabelsÚtarget_namesÚoutput_dictru   rq   rg   rt   rj   )r   rD   rb   r   rH   rI   Úlenrw   ÚkeysÚ
isinstanceÚfloatr3   rK   )Úirisr`   r_   Ú_Úexpected_reportÚreportÚkeyÚmetrics           ra   Ú,test_classification_report_dictionary_outputrƒ   w   sÝ  € ä×ÑÓ€DÜ'°¸UÔCÑ€FˆF�Að
 -Ø)Ø*Øñ	
ð -Ø*Ø+Øñ	
ð -Ø)Ø+Øñ	
ð +Ø+Ø'Øñ	
ð 'à+Ø+Ø(Øñ	
ñ5 €OôD #ØØÜ�y‰yœ˜T×.Ñ.Ó/Ó0Ø×&Ñ&Øô€Fð �;‰;‹=˜O×0Ñ0Ó2Ò2Ð2Ð2ÛˆØ�*ÒÜ˜f S™k¬5Ô1Ð1Ð1Ø˜#‘; /°#Ñ"6Ó6Ð6Ð6à˜#‘;×#Ñ#Ó%¨¸Ñ)=×)BÑ)BÓ)DÒDÐDÐDØ)¨#Ô.�Ü# O°CÑ$8¸Ñ$@À&ÈÁ+ÈfÑBUÕVñ /ð ô �o hÑ/°Ñ<¼eÔDÐDÐDÜ�o kÑ2°;Ñ?ÄÔGÐGÐGÜ�o hÑ/°	Ñ:¼CÔ@Ð@Ð@Ü�o kÑ2°9Ñ=¼sÔCÐCÑCrc   Úzero_divisionÚwarnrC   c                 ó.  — g d¢g d¢}}t        j                  d¬«      5 }t        j                  dd¬«       t        ||| d¬«       | d	k(  r3t	        |«      d
kD  sJ ‚|D ]  }d}|t        |j                  «      v rŒJ ‚ n|rJ ‚d d d «       y # 1 sw Y   y xY w)N©ÚaÚbÚc)rˆ   r‰   ÚdT©ÚrecordÚalwaysz.+Use `zero_division`)Úmessage)r„   rx   r…   rC   z7Use `zero_division` parameter to control this behavior.)ÚwarningsÚcatch_warningsÚfilterwarningsr   ry   Ústrr�   )r„   r`   r_   r�   ÚitemÚmsgs         ra   Ú0test_classification_report_zero_division_warningr–   ¸   s•   € â$¢oˆF€FÜ	×	 Ñ	 ¨Õ	-°ô 	×Ñ Ð2IÕJÜØ�F¨-ÀTõ	
ð ˜FÒ"Ü�v“; ’?Ð"�?Û�ØO�Øœc $§,¡,Ó/Ò/Ð/Ð/ñ ñ Ð�:÷ 
.×	-Ñ	-ús   ŸABÁ:BÂBzlabels, show_micro_avgT©r   rC   r<   c                 óh   — ddgddg}}t        ||| d¬«      }|rd|v sJ ‚d|vsJ ‚yd|v sJ ‚d|vsJ ‚y)a3  Check the behaviour of passing `labels` as a superset or subset of the labels.
    WHen a superset, we expect to show the "accuracy" in the report while it should be
    the micro-averaging if this is a subset.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27927
    r   rC   T)rv   rx   z	micro avgru   N©r   )rv   Úshow_micro_avgr`   r_   r€   s        ra   Ú1test_classification_report_labels_subset_supersetr›   Ì   s`   € ð ˜�V˜a ˜VˆF€Fä" 6¨6¸&ÈdÔS€FÙØ˜fÑ$Ð$Ð$Ø Ñ'Ð'Ñ'à˜VÑ#Ð#Ð#Ø &Ñ(Ð(Ñ(rc   c                  ó  — t        j                  g d¢g d¢g«      } t        j                  g d¢g d¢g«      }t        | |«      dk(  sJ ‚t        | | «      dk(  sJ ‚t        ||«      dk(  sJ ‚t        |t        j                  |«      «      dk(  sJ ‚t        | t        j                  | «      «      dk(  sJ ‚t        | t        j                  | j
                  «      «      dk(  sJ ‚t        |t        j                  | j
                  «      «      dk(  sJ ‚y )N©r   rC   rC   ©rC   r   rC   ©r   r   rC   ç      à?rC   r   )rH   Úarrayr   Úlogical_notÚzerosrG   ©Úy1Úy2s     ra   Ú.test_multilabel_accuracy_score_subset_accuracyr§   ã   sç   € ä	�‰’9šiÐ(Ó	)€BÜ	�‰’9šiÐ(Ó	)€Bä˜"˜bÓ! SÒ(Ð(Ð(Ü˜"˜bÓ! QÒ&Ð&Ð&Ü˜"˜bÓ! QÒ&Ð&Ð&Ü˜"œbŸn™n¨RÓ0Ó1°QÒ6Ð6Ð6Ü˜"œbŸn™n¨RÓ0Ó1°QÒ6Ð6Ð6Ü˜"œbŸh™h r§x¡xÓ0Ó1°QÒ6Ð6Ð6Ü˜"œbŸh™h r§x¡xÓ0Ó1°QÒ6Ð6Ñ6rc   c            	      ó@  — t        d¬«      \  } }}t        | |d ¬«      \  }}}}t        |ddgd«       t        |ddgd«       t        |d	d
gd«       t        |ddg«       i ddifD ]«  }t	        j
                  «       5  t	        j                  d«       t        | |fi |¤Ž}t        |dd«       t        | |fi |¤Ž}	t        |	dd«       t        | |fi |¤Ž}
t        |
d
d«       t        t        | |fddi|¤Žd|z  |	z  d|z  |	z   z  d«       d d d «       Œ­ y # 1 sw Y   Œ¸xY w)NT©rU   ©Úaverageg\�Âõ(\ç?g333333ë?r<   g)\�Âõ(ì?gÃõ(\�Âå?çš™™™™™é?gR¸…ëQè?é   r«   rU   ÚerrorÚbetaé   é   )rb   r!   r4   r5   r�   r‘   Úsimplefilterr"   r#   r   r3   r   )r`   r_   r~   rZ   ÚrÚfÚsÚkwargsÚpsÚrsÚfss              ra   Ú%test_precision_recall_f1_score_binaryrº   ñ   s7  € ä'¨tÔ4Ñ€FˆF�Aô 1°¸ÈÔN�J€A€qˆ!ˆQÜ˜a $¨ ¨qÔ1Ü˜a $¨ ¨qÔ1Ü˜a $¨ ¨qÔ1Ü�q˜2˜r˜(Ô#ð
 ˜	 8Ð,Ó-ˆÜ×$Ñ$Õ&Ü×!Ñ! 'Ô*ä  ¨Ñ:°6Ñ:ˆBÜ% b¨$°Ô2ä˜f fÑ7°Ñ7ˆBÜ% b¨$°Ô2ä˜& &Ñ3¨FÑ3ˆBÜ% b¨$°Ô2äÜ˜F FÑ=°Ð=°fÑ=Ø˜R‘ "Ñ$¨¨r©	°B©Ñ7Øô÷ 'Ð&ñ .ß&Ð&ús   Á<BDÄD	z1ignore::sklearn.exceptions.UndefinedMetricWarningc                  óô  — dt        ddgddg«      k(  sJ ‚dt        ddgddg«      k(  sJ ‚dt        ddgddg«      k(  sJ ‚dt        ddgddgd¬«      k(  sJ ‚dt        ddgddg«      k(  sJ ‚dt        ddgddg«      k(  sJ ‚dt        ddgddg«      k(  sJ ‚dt        ddgddgt	        d«      ¬«      k(  sJ ‚t        ddgddgt	        d«      ¬«      t        j                  t        ddgddgd¬«      «      k(  sJ ‚y )	Nç      ð?rC   r   ©r¯   ç        éÿÿÿÿÚinfg     jø@)r"   r#   r   r   r|   ÚpytestÚapprox© rc   ra   Ú+test_precision_recall_f_binary_single_classrÄ     s;  € ð
 ”/ 1 a &¨1¨a¨&Ó1Ò1Ð1Ð1Ø”,  1˜v¨¨1 vÓ.Ò.Ð.Ð.Ø”(˜A˜q˜6 A q 6Ó*Ò*Ð*Ð*Ø”+˜q !˜f q¨! f°1Ô5Ò5Ð5Ð5à”/ 2 r (¨R°¨HÓ5Ò5Ð5Ð5Ø”,  B˜x¨"¨b¨Ó2Ò2Ð2Ð2Ø”(˜B ˜8 b¨" XÓ.Ò.Ð.Ð.Ø”+˜r 2˜h¨¨R¨´u¸U³|ÔDÒDÐDÐDÜ˜˜B�x " b ´°e³Ô=ÄÇÁÜ�R˜�H˜r 2˜h¨SÔ1óBò ð ñ rc   c                  ó>  — g d¢} g d¢}t        | t        j                  d«      ¬«      }t        |t        j                  d«      ¬«      }| |f||fg}t        |«      D ]“  \  }\  } }t	        | |g d¢d ¬«      }t        g d¢|«       t	        | |g d¢d¬«      }t        t        j                  g d¢«      |«       d	D ]5  }|d
k(  r|dk(  rŒt        t	        | |g d¢|¬«      t	        | |d |¬«      «       Œ7 Œ• dD ]‹  }t        j                  t        «      5  t	        ||t        j                  d«      |¬«       d d d «       t        j                  t        «      5  t	        ||t        j                  dd«      |¬«       d d d «       Œ� t        j                  g d¢g d¢g«      } t        j                  g d¢g d¢g«      }t        | |d
ddg¬«      \  }}	}
}t        t        j                  ||	|
g«      t        j                  g d¢«      «       y # 1 sw Y   ŒÔxY w# 1 sw Y   �Œ(xY w)N)rC   é   rÆ   r<   )rC   rC   rÆ   r<   r°   ©Úclasses)r   rC   r<   rÆ   r±   ©rv   r«   )r¾   r¼   r¼   r    r¾   Úmacro)ÚmicroÚweightedÚsamplesrÍ   r   )NrÊ   rË   rÍ   é   r¿   r±   r�   ©rC   r   r   ©rC   rC   rC   rž   rC   ©r«   rv   )ç      è?rC   ç«ªªªªªê?)r*   rH   rI   Ú	enumerater#   r4   Úmeanr3   rÁ   ÚraisesÚ
ValueErrorr¡   r!   )r`   r_   Ú
y_true_binÚ
y_pred_binrE   ÚiÚactualr«   rZ   r³   r´   r~   s               ra   Ú$test_precision_recall_f_extra_labelsrÜ   &  sÃ  € ò €FÚ€FÜ ´·	±	¸!³Ô=€JÜ ´·	±	¸!³Ô=€JØ�VÐ˜z¨:Ð6Ð7€Dä(¨žÑˆÑˆF�Fä˜f f²_ÈdÔSˆÜ!Ò";¸VÔDô ˜f f²_ÈgÔVˆÜ!¤"§'¡'Ò*CÓ"DÀfÔMó 8ˆGØ˜)Ò#¨¨QªØÜÜ˜V V²OÈWÔUÜ˜V V°DÀ'ÔJõñ 8ð  /ó( 7ˆÜ�]‰]œ:Õ&Ü˜ Z¼¿	¹	À!»ÈgÕV÷ 'ä�]‰]œ:Õ&ÜØ˜J¬r¯y©y¸¸QÓ/?Èõ÷ 'Ð&ð 7ô �X‰X’y¢)Ð,Ó-€FÜ�X‰X’y¢)Ð,Ó-€FÜ0Ø� 	°1°a°&ô�J€A€qˆ!ˆQô œŸ™ ! Q¨ Ó+¬R¯X©XÒ6GÓ-HÕI÷ 'Ð&úç&Ñ&ús   Ä#HÅ$HÈH	ÈH	c                  óô  — g d¢} g d¢}t        | t        j                  d«      ¬«      }t        |t        j                  d«      ¬«      }| |f||fg}t        |«      D ]š  \  }\  } }t	        t
        | |ddg¬«      }t	        t
        | |d ¬«      }t        dd	g |d ¬
«      «       t        d |d¬
«      «       t        d |d¬
«      «       t        d |d¬
«      «       dD ]  } ||¬
«       ||¬
«      k7  rŒJ ‚ Œœ y )N)rC   rC   r<   rÆ   )rC   rÆ   rÆ   rÆ   r°   rÇ   rC   rÆ   ©rv   r    r¼   rª   rÒ   rÊ   çUUUUUUå?rÌ   rË   )rÊ   rÌ   rË   )r*   rH   rI   rÔ   r   r#   r4   r3   )	r`   r_   rØ   rÙ   rE   rÚ   Ú	recall_13Ú
recall_allr«   s	            ra   Ú&test_precision_recall_f_ignored_labelsrâ   T  së   € ò €FÚ€FÜ ´·	±	¸!³Ô=€JÜ ´·	±	¸!³Ô=€JØ�VÐ˜z¨:Ð6Ð7€Dä(¨žÑˆÑˆF�FÜœL¨&°&À!ÀQÀÔHˆ	Üœ\¨6°6À$ÔGˆ
ä! 3¨ *©iÀÔ.EÔFÜ˜O©Y¸wÔ-GÔHÜÐ3±YÀzÔ5RÔSÜ˜G¡Y°wÔ%?Ô@ó 6ˆGÙ WÔ-±ÀGÔ1LÓLÐLÐLñ 6ñ  /rc   c            	      ó   — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g d	¢g d
¢g d¢g«      }d}t        j                  t        |¬«      5  t        | |d¬«       ddd«       y# 1 sw Y   yxY w)z:Test multiclass-multiouptut for `average_precision_score`.)r<   r<   rC   ©rC   r<   r   r—   ©rC   r<   rC   ©r<   r   rC   ©çffffffæ?çš™™™™™É?çš™™™™™¹?©çš™™™™™Ù?ç333333Ó?rí   ©rê   r¬   rê   ©ré   rí   r    )rì   rì   ré   )rê   ré   rè   z.multiclass-multioutput format is not supported©Úmatchr<   ©Ú	pos_labelN)rH   r¡   rÁ   rÖ   r×   r   )r`   Úy_scoreÚerr_msgs      ra   Ú-test_average_precision_score_non_binary_classrö   k  s{   € ä�X‰XâÚÚÚÚÚð	
ó	€Fô �h‰hâÚÚÚÚÚð	
ó	€Gð ?€GÜ	�‰”z¨Ö	1Ü ¨¸1Õ=÷ 
2×	1Ñ	1ús   Á,BÂBzy_true, y_score©r   r   rC   r<   rç   rë   rî   rï   )r   r   r   r   rC   rC   rC   rC   rC   rC   rC   )r   rê   rê   rì   r    ç333333ã?rø   rm   rm   rC   rC   c                 ó&   — t        | |«      dk(  sJ ‚y)a(  
    Duplicate values with precision-recall require a different
    processing than when computing the AUC of a ROC, because the
    precision-recall curve is a decreasing curve
    The following situation corresponds to a perfect
    test statistic, the average_precision_score should be 1.
    rC   N©r   ©r`   rô   s     ra   Ú-test_average_precision_score_duplicate_valuesrü   †  s   € ô8 # 6¨7Ó3°qÒ8Ð8Ñ8rc   )r<   r<   rC   rC   r   )rì   r    rí   )r¬   r    rí   r�   )r    r    rø   c                 ó&   — t        | |«      dk7  sJ ‚y )Nr¼   rú   rû   s     ra   Ú(test_average_precision_score_tied_valuesrþ   ¥  s   € ô: # 6¨7Ó3°sÒ:Ð:Ñ:rc   c                  óŽ   — d} t        j                  t        | ¬«      5  t        g d¢g d¢dd¬«       d d d «       y # 1 sw Y   y xY w)NzšNote that pos_label \(set to 2\) is ignored when average != 'binary' \(got 'macro'\). You may use labels=\[pos_label\] to specify a single positive class.rð   rå   ©rC   r<   r<   r<   rÊ   ©ró   r«   )rÁ   ÚwarnsÚUserWarningr!   ©r•   s    ra   Ú(test_precision_recall_f_unused_pos_labelr  Å  s9   € ð
	ð ô 
�‰”k¨Ö	-Ü'Ú’y¨A°wõ	
÷ 
.×	-Ñ	-ús	   ž;»Ac            	      ó¾   — t        d¬«      \  } }}d„ } || |«        || D �cg c]  }t        |«      ‘Œ c}|D �cg c]  }t        |«      ‘Œ c}«       y c c}w c c}w )NTr©   c                 ó<  — t        | |«      }t        |ddgddgg«       |j                  «       \  }}}}||z  ||z  z
  }t        j                  ||z   ||z   z  ||z   z  ||z   z  «      }|dk(  rdn||z  }	t        | |«      }
t        |
|	d¬«       t        |
dd¬«       y )	Né   rÆ   é   é   r   r<   ©Údecimalç=
×£p=â?)r   r5   ÚflattenrH   Úsqrtr   r4   )r`   r_   ÚcmÚtpÚfpÚfnÚtnÚnumÚdenÚtrue_mccÚmccs              ra   Útestz*test_confusion_matrix_binary.<locals>.testÙ  s¬   € Ü˜f fÓ-ˆÜ˜2  Q ¨!¨R¨Ð1Ô2àŸ™›‰ˆˆB��BØ�2‰g˜˜R™ÑˆÜ�g‰g�r˜B‘w 2¨¡7Ñ+¨r°B©wÑ7¸2À¹7ÑCÓDˆà˜qš‘1 c¨C¡iˆÜ ¨Ó/ˆÜ! # x¸Õ;Ü! # t°QÖ7rc   ©rb   r“   ©r`   r_   r~   r  rW   s        ra   Útest_confusion_matrix_binaryr  Õ  sZ   € ä'¨tÔ4Ñ€FˆF�Aò8ñ 	ˆ�ÔÙ™&Ó	!™&�QŒ#ˆa�&˜&Ñ	!±FÓ#;±F¨q¤C¨¥F°FÑ#;Õ<ùÒ	!ùÒ#;ó
   £A»A
c            	      ó¾   — t        d¬«      \  } }}d„ } || |«        || D �cg c]  }t        |«      ‘Œ c}|D �cg c]  }t        |«      ‘Œ c}«       y c c}w c c}w )NTr©   c                 óP   — t        | |«      }t        |ddgddggddgddggg«       y )Nr
  r	  rÆ   r  ©r    r5   )r`   r_   r  s      ra   r  z5test_multilabel_confusion_matrix_binary.<locals>.testî  s7   € Ü(¨°Ó8ˆÜ˜2 " a ¨1¨b¨'Ð 2°b¸!°W¸qÀ"¸gÐ4FÐGÕHrc   r  r  s        ra   Ú'test_multilabel_confusion_matrix_binaryr!  ê  s[   € ä'¨tÔ4Ñ€FˆF�AòIñ 	ˆ�ÔÙ™&Ó	!™&�QŒ#ˆa�&˜&Ñ	!±FÓ#;±F¨q¤C¨¥F°FÑ#;Õ<ùÒ	!ùÒ#;r  c            	      óÄ   — t        d¬«      \  } }}dd„} || |«        || D �cg c]  }t        |«      ‘Œ c}|D �cg c]  }t        |«      ‘Œ c}d¬«       y c c}w c c}w )NFr©   c           	      óP  — t        | |«      }t        |ddgddggddgddggd	d
gddggg«       |rg d¢ng d¢}t        | ||¬«      }t        |ddgddggd	d
gddggddgddggg«       |rg d¢ng d¢}t        | ||¬«      }t        |ddgddggd	d
gddggddgddggddgddggg«       y )Né/   r±   r°   é   é&   rÎ   é   rÆ   é   r­   r<   é   )Ú0Ú2Ú1©r   r<   rC   rÞ   )r*  r+  r,  Ú3)r   r<   rC   rÆ   rp   r   r   )r`   r_   Ústring_typer  rv   s        ra   r  z9test_multilabel_confusion_matrix_multiclass.<locals>.testú  s  € ä(¨°Ó8ˆÜØ�2�q�'˜A˜r˜7Ð# r¨1 g°°A¨wÐ%7¸2¸r¸(ÀQÈÀGÐ9LÐMô	
ñ
 %0“²YˆÜ(¨°ÀÔGˆÜØ�2�q�'˜A˜r˜7Ð# r¨2 h°°B°Ð%8¸BÀ¸7ÀRÈÀGÐ:LÐMô	
ñ
 *5Ó%º,ˆÜ(¨°ÀÔGˆÜØà�a�˜1˜b˜'Ð"Ø�b�˜A˜r˜7Ð#Ø�a�˜2˜q˜'Ð"Ø�a�˜1˜a˜&Ð!ð	õ	
rc   T)r/  )Fr  r  s        ra   Ú+test_multilabel_confusion_matrix_multiclassr0  ö  s\   € ä'¨uÔ5Ñ€FˆF�Aó
ñ6 	ˆ�ÔÙ™&Ó	!™&�QŒ#ˆa�&˜&Ñ	!±FÓ#;±F¨q¤C¨¥F°FÑ#;ÈÖNùÒ	!ùÒ#;s
   ¤A¼A
Úcsc_containerÚcsr_containerc                 óî  — t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢g d¢g d¢g«      } ||«      } ||«      } | |«      } | |«      }t        j                  g d¢«      }dd	gddggdd	gddggd	d
gdd	ggg}	|||g}
|||g}|
D ]!  }|D ]  }t        ||«      }t        ||	«       Œ Œ# t        ||d¬«      }t        |dd	gddggddgd	dggd	dgd
d	ggg«       t        ||d
d	g¬«      }t        |d	d
gdd	ggdd	gddggg«       t        ||d
d	gd¬«      }t        |d	d	gddggddgd	d	ggd	dgdd	ggg«       t        |||d¬«      }t        |d
d	gd
d
ggddgd	dggd	dgdd	ggg«       y )Nrž   ©r   rC   r   ©rC   rC   r   rÏ   r�   rŸ   )r<   rC   rÆ   rC   r   r<   T©Ú
samplewiserÞ   )rv   r7  )Úsample_weightr7  rÆ   rÎ   )rH   r¡   r    r5   )r1  r2  r`   r_   Ú
y_true_csrÚ
y_pred_csrÚ
y_true_cscÚ
y_pred_cscr8  Úreal_cmÚtruesÚpredsÚ
y_true_tmpÚ
y_pred_tmpr  s                  ra   Ú+test_multilabel_confusion_matrix_multilabelrB    sý  € ô
 �X‰X’y¢)ªYÐ7Ó8€FÜ�X‰X’y¢)ªYÐ7Ó8€FÙ˜vÓ&€JÙ˜vÓ&€JÙ˜vÓ&€JÙ˜vÓ&€Jô —H‘HšYÓ'€MØ�A�˜˜A˜Ð 1 a &¨1¨a¨&Ð!1°Q¸°F¸QÀ¸FÐ3CÐD€GØ�Z Ð,€EØ�Z Ð,€Eãˆ
ÛˆJÜ,¨Z¸ÓDˆBÜ˜r 7Õ+ñ  ð ô 
% V¨VÀÔ	E€BÜ�r˜a ˜V a¨ VÐ,°°1¨v¸¸1°vÐ.>À!ÀQÀÈ!ÈQÈÐ@PÐQÔRô 
% V¨V¸QÀ¸FÔ	C€BÜ�r˜a ˜V a¨ VÐ,°°1¨v¸¸1°vÐ.>Ð?Ô@ô 
% V¨V¸QÀ¸FÈtÔ	T€BÜ�r˜a ˜V a¨ VÐ,°°1¨v¸¸1°vÐ.>À!ÀQÀÈ!ÈQÈÐ@PÐQÔRô 
%Ø� mÀô
€Bô �r˜a ˜V a¨ VÐ,°°1¨v¸¸1°vÐ.>À!ÀQÀÈ!ÈQÈÐ@PÐQÕRrc   c            	      ó¨  — t        j                  g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g«      }t        j                  t        d¬«      5  t        | |d	d
g¬«       d d d «       t        j                  t        d¬«      5  t        | |g d¢g d¢g d¢g¬«       d d d «       d}t        j                  t        |¬«      5  t        | |dg¬«       d d d «       d}t        j                  t        |¬«      5  t        | |dg¬«       d d d «       t        j                  t        d¬«      5  t        g d¢g d¢d¬«       d d d «       d}t        j                  t        |¬«      5  t        g d¢g d¢gg d¢g d¢g«       d d d «       y # 1 sw Y   �Œ$xY w# 1 sw Y   ŒõxY w# 1 sw Y   ŒÌxY w# 1 sw Y   Œ£xY w# 1 sw Y   ŒyxY w# 1 sw Y   y xY w)Nrž   r4  r5  rÏ   r�   rŸ   úinconsistent numbers of samplesrð   rC   r<   ©r8  z)Sample weights must be 1D array or scalar©rC   r<   rÆ   )r<   rÆ   r±   )rÆ   r±   r°   z%All labels must be in \[0, n labels\)r¿   rÞ   rÆ   zSamplewise metricsr—   rä   Tr6  z'multiclass-multioutput is not supported)r<   rC   r   ©rC   r   r<   )rH   r¡   rÁ   rÖ   r×   r    )r`   r_   rõ   s      ra   Ú'test_multilabel_confusion_matrix_errorsrH  C  sT  € Ü�X‰X’y¢)ªYÐ7Ó8€FÜ�X‰X’y¢)ªYÐ7Ó8€Fô 
�‰”zÐ)JÖ	KÜ# F¨FÀ1ÀaÀ&ÕI÷ 
Lä	�‰”zÐ)TÖ	UÜ#Ø�Fª9²iÂÐ*Kõ	
÷ 
Vð 7€GÜ	�‰”z¨Ö	1Ü# F¨F¸B¸4Õ@÷ 
2à6€GÜ	�‰”z¨Ö	1Ü# F¨F¸A¸3Õ?÷ 
2ô 
�‰”zÐ)=Ö	>Ü#¢IªyÀTÕJ÷ 
?ð 8€GÜ	�‰”z¨Ö	1Ü#¢Y²	Ð$:ºYÊ	Ð<RÔS÷ 
2Ð	1÷+ 
LÑ	Kúç	UÐ	Uú÷ 
2Ð	1ú÷ 
2Ð	1ú÷ 
?Ð	>ú÷
 
2Ð	1úsH   ÁFÂFÃ	F$Ã>F0Ä1F<Å)GÆFÆF!Æ$F-Æ0F9Æ<GÇGz%normalize, cm_dtype, expected_results))Útruer´   çµùTUUÕ?)Úpredr´   rJ  )Úallr´   g��eÇq¼?)NrÚ   r<   c                 ó´   — g d¢dz  }t        t        t        g d¢«      Ž «      }t        ||| ¬«      }t	        ||«       |j
                  j                  |k(  sJ ‚y )Nr—   rÎ   ©Ú	normalize)Úlistr   r   r   r2   ÚdtypeÚkind)rO  Úcm_dtypeÚexpected_resultsÚy_testr_   r  s         ra   Útest_confusion_matrix_normalizerV  a  sP   € ò ˜‰]€FÜ”%œ¢iÓ0Ð1Ó2€FÜ	˜& &°IÔ	>€BÜ�BÐ(Ô)Ø�8‰8�=‰=˜HÒ$Ð$Ñ$rc   c                  ó  — g d¢} g d¢}t        | |d¬«      }|j                  «       t        j                  d«      k(  sJ ‚t	        j
                  «       5  t	        j                  dt        «       t        | |d¬«      }d d d «       j                  «       t        j                  d«      k(  sJ ‚t	        j
                  «       5  t	        j                  dt        «       t        || d¬«       d d d «       y # 1 sw Y   ŒwxY w# 1 sw Y   y xY w)	N)r   r   r   r   rC   rC   rC   rC   )r   r   r   r   r   r   r   r   rI  rN  ç       @r®   rK  r¼   )r   ÚsumrÁ   rÂ   r�   r‘   r²   ÚRuntimeWarning)rU  r_   Úcm_trueÚcm_preds       ra   Ú,test_confusion_matrix_normalize_single_classr]  r  sÉ   € Ú%€FÚ%€Fä˜v v¸Ô@€GØ�;‰;‹=œFŸM™M¨#Ó.Ò.Ð.Ð.ô 
×	 Ñ	 Õ	"Ü×Ñ˜g¤~Ô6Ü" 6¨6¸VÔDˆ÷ 
#ð �;‰;‹=œFŸM™M¨#Ó.Ò.Ð.Ð.ä	×	 Ñ	 Õ	"Ü×Ñ˜g¤~Ô6Ü˜ °6Õ:÷ 
#Ð	"÷ 
#Ð	"ú÷ 
#Ð	"ús   Á)C2Ã )C>Ã2C;Ã>Dc                  óŒ   — g d¢} g d¢}t        j                  t        d¬«      5  t        || «       ddd«       y# 1 sw Y   yxY w)z8Test `confusion_matrix` warns when only one label found.©r   r   r   r   zA single label was found inrð   N)rÁ   r  r  r   )rU  r_   s     ra   Ú"test_confusion_matrix_single_labelr`  …  s2   € â€FÚ€Fä	�‰”kÐ)FÖ	GÜ˜ Ô(÷ 
H×	GÑ	Gús	   ¤:ºAzparams, warn_msg)rC   rC   rC   r   r   r   ©r`   r_   z?`positive_likelihood_ratio` is ill-defined and set to `np.nan`.)r   r   r   r   r   r   zdNo samples were predicted for the positive class and `positive_likelihood_ratio` is set to `np.nan`.©r   r   r   rC   rC   rC   z?`negative_likelihood_ratio` is ill-defined and set to `np.nan`.z9No samples of the positive class are present in `y_true`.c                 óz   — t        j                  t        |¬«      5  t        di | ¤Ž d d d «       y # 1 sw Y   y xY w©Nrð   rÃ   )rÁ   r  r  r   )ÚparamsÚwarn_msgs     ra   Útest_likelihood_ratios_warningsrg  Ž  s*   € ôX 
�‰”k¨Ö	2ÜÑ) &Ò)÷ 
3×	2Ñ	2úó   œ1±:zparams, err_msg)r   rC   r   rC   r   ©rC   rC   r   r   r<   zeclass_likelihood_ratios only supports binary classification problems, got targets of type: multiclassc                 óz   — t        j                  t        |¬«      5  t        di | ¤Ž d d d «       y # 1 sw Y   y xY wrd  )rÁ   rÖ   r×   r   )re  rõ   s     ra   Útest_likelihood_ratios_errorsrk  ¾  s)   € ô$ 
�‰”z¨Ö	1ÜÑ) &Ò)÷ 
2×	1Ñ	1úrh  c                  ó  — t        j                  dgdz  dgdz  z   «      } t        j                  dgdz  dgdz  z   dgdz  z   «      }t        | |«      \  }}t        |d«       t        |d	«       t        | | «      \  }}t	        |t         j
                  dz  «       t        |t        j                  d«      d
¬«       t        j                  dgdz  dgdz  z   «      }t        | ||¬«      \  }}t        |d«       t        |d«       y )NrC   rÆ   r   r
  r<   é
   r	  g«ªªªªªö?g_B{	í%ä?gê-�™—q=)Úrtolr¼   é   r¾   r°   rE  gUUUUUU@gÇqÇqÜ?)rH   r¡   r   r2   r5   Únanr£   )r`   r_   ÚposÚnegr8  s        ra   Útest_likelihood_ratiosrs  Ô  sð   € ô �X‰X�q�c˜A‘g   b¡Ñ(Ó)€FÜ�X‰X�q�c˜A‘g   b¡Ñ(¨A¨3°©7Ñ2Ó3€Fä& v¨vÓ6�H€CˆÜ�C˜Ô!Ü�C˜Ô!ô ' v¨vÓ6�H€CˆÜ�sœBŸF™F Q™JÔ'Ü�CœŸ™ !›¨5Õ1ô
 —H‘H˜c˜U R™Z¨3¨%°!©)Ñ3Ó4€MÜ& v¨vÀ]ÔS�H€CˆÜ�C˜Ô Ü�C˜Õ!rc   Úraise_warningc                 óà   — t        j                  ddg«      }t        j                  ddg«      }d}t        j                  t        |¬«      5  t        ||| ¬«       ddd«       y# 1 sw Y   yxY w)zaTest that class_likelihood_ratios raises a `FutureWarning` when `raise_warning`
    param is set.rC   r   zI`raise_warning` was deprecated in version 1.7 and will be removed in 1.9.rð   )rt  N)rH   r¡   rÁ   r  ÚFutureWarningr   )rt  r`   r_   r•   s       ra   Ú0test_likelihood_ratios_raise_warning_deprecationrw  î  sS   € ô �X‰X�q˜!�fÓ€FÜ�X‰X�q˜!�fÓ€Fà
U€CÜ	�‰”m¨3Ö	/Ü ¨¸mÕL÷ 
0×	/Ñ	/úó   ÁA$Á$A-c                  óh  — t        j                  g d¢«      } t        j                  g d¢«      }t        | |d¬«      \  }}|t        j                  d«      k(  sJ ‚t        j                  g d¢«      } t        j                  g d¢«      }t        | |d¬«      \  }}|t        j                  d«      k(  sJ ‚y)zTest that class_likelihood_ratios returns the worst scores `1.0` for both LR+ and
    LR- when `replace_undefined_by=1` is set.r5  rÏ   rC   ©Úreplace_undefined_byr¼   rÐ   N)rH   r¡   r   rÁ   rÂ   )r`   r_   Úpositive_likelihood_ratior~   Únegative_likelihood_ratios        ra   Ú1test_likelihood_ratios_replace_undefined_by_worstr~  ú  sž   € ô
 �X‰X’iÓ €FÜ�X‰X’iÓ €Fä#:Ø�¨Qô$Ñ Ð˜qð %¬¯©°cÓ(:Ò:Ð:Ð:ô �X‰X’iÓ €FÜ�X‰X’iÓ €Fä#:Ø�¨Qô$Ñ €AÐ ð %¬¯©°cÓ(:Ò:Ð:Ñ:rc   r{  úLR+r¾   úLR-g      À)r  r€  r¼   rp  rX  c                 óà   — t        j                  ddg«      }t        j                  ddg«      }d}t        j                  t        |¬«      5  t        ||| ¬«       ddd«       y# 1 sw Y   yxY w)zžTest that class_likelihood_ratios raises a `ValueError` if the input dict for
    `replace_undefined_by` is in the wrong format or contains impossible values.rC   r   zGThe dictionary passed as `replace_undefined_by` needs to be in the formrð   rz  N)rH   r¡   rÁ   rÖ   r×   r   )r{  r`   r_   r•   s       ra   Ú6test_likelihood_ratios_wrong_dict_replace_undefined_byr‚    sW   € ô �X‰X�q˜!�fÓ€FÜ�X‰X�q˜!�fÓ€Fà
S€CÜ	�‰”z¨Ö	-ÜØ�FÐ1Eõ	
÷ 
.×	-Ñ	-úrx  zreplace_undefined_by, expectedc                 ó  — t        j                  g d¢«      }t        j                  g d¢«      }t        ||| ¬«      \  }}t        j                  |«      rt        j                  |«      sJ ‚y|t	        j
                  |«      k(  sJ ‚y)z€Test that the `replace_undefined_by` param returns the right value for the
    positive_likelihood_ratio as defined by the user.r5  rÏ   rz  N©rH   r¡   r   ÚisnanrÁ   rÂ   )r{  Úexpectedr`   r_   r|  r~   s         ra   Ú0test_likelihood_ratios_replace_undefined_by_0_fpr‡  *  sp   € ô �X‰X’iÓ €FÜ�X‰X’iÓ €Fä#:Ø�Ð-Aô$Ñ Ð˜qô 
‡x�x�ÔÜ�x‰xÐ1Ô2Ð2Ñ2à(¬F¯M©M¸(Ó,CÒCÐCÑCrc   r    c                 ó  — t        j                  g d¢«      }t        j                  g d¢«      }t        ||| ¬«      \  }}t        j                  |«      rt        j                  |«      sJ ‚y|t	        j
                  |«      k(  sJ ‚y)z€Test that the `replace_undefined_by` param returns the right value for the
    negative_likelihood_ratio as defined by the user.rÏ   rÐ   rz  Nr„  )r{  r†  r`   r_   r~   r}  s         ra   Ú0test_likelihood_ratios_replace_undefined_by_0_tnr‰  F  sp   € ô �X‰X’iÓ €FÜ�X‰X’iÓ €Fä#:Ø�Ð-Aô$Ñ €AÐ ô 
‡x�x�ÔÜ�x‰xÐ1Ô2Ð2Ñ2à(¬F¯M©M¸(Ó,CÒCÐCÑCrc   c                  ó´  — t        j                  dgd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   «      }t        | |«      }t        |dd	¬
«       |t        || «      k(  sJ ‚t        j                  | dgdz  «      } t        j                  |dgdz  «      }t        | |ddg¬«      |k(  sJ ‚t        t        | | «      d«       t        j                  dgd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   «      }t        t        | |«      dd¬
«       t        j                  dgd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   «      }t        t        | |«      dd¬
«       t        t        | |d¬«      dd¬
«       t        t        | |d¬«      dd¬
«       y )Nr   é(   rC   é<   ro   rm  é2   gƒÀÊ¡EÖ?rÆ   r  r<   r±   rÞ   r¼   é.   é,   é4   é    é   gÉå?¤é?g+‡ÙÎí?r?   ©Úweightsg®Ø_vOî?Ú	quadraticgœ¢#¹ü‡î?)rH   r¡   r   r3   Úappend)r¥   r¦   Úkappas      ra   Útest_cohen_kappar˜  b  sä  € ô 
�‰�1�#˜‘(˜a˜S 2™XÑ%Ó	&€BÜ	�‰�1�#˜‘(˜a˜S 2™XÑ%¨¨¨b©Ñ0°A°3¸±8Ñ;Ó	<€BÜ˜b "Ó%€EÜ˜˜u¨aÕ0ØÔ% b¨"Ó-Ò-Ð-Ð-ô 
�‰�2˜�s˜Q‘wÓ	€BÜ	�‰�2˜�s˜Q‘wÓ	€BÜ˜R ¨Q°¨FÔ3°uÒ<Ð<Ð<äÔ)¨"¨bÓ1°3Ô7ô 
�‰�1�#˜‘(˜a˜S 2™XÑ%¨¨¨b©Ñ0Ó	1€BÜ	�‰�1�#˜‘(˜a˜S 2™XÑ%¨¨¨b©Ñ0Ó	1€BÜÔ)¨"¨bÓ1°6À1ÕEô 
�‰�1�#˜‘(˜a˜S 2™XÑ%¨¨¨b©Ñ0Ó	1€BÜ	�‰�1�#˜‘(˜a˜S 2™XÑ%¨¨¨b©Ñ0Ó	1€BÜÔ)¨"¨bÓ1°6À1ÕEÜÔ)¨"¨b¸(ÔCÀVÐUVÕWÜÜ˜"˜b¨+Ô6¸Èörc   c                  óú   — ddg} t        j                  dgdz  dgdz  z   «      }t        j                  dgdz  «      }t        j                  t        d¬«      5  t        ||| ¬	«       d
d
d
«       y
# 1 sw Y   y
xY w)zLTest that correct error is raised when users pass labels that are not in y1.rC   r<   rˆ   r°   r‰   rm  z6At least one label in `labels` must be present in `y1`rð   rÞ   N)rH   r¡   rÁ   rÖ   r×   r   )rv   r¥   r¦   s      ra   Ú(test_cohen_kappa_score_error_wrong_labelrš  �  sn   € à�ˆV€FÜ	�‰�3�%˜!‘)˜s˜e a™iÑ'Ó	(€BÜ	�‰�3�%˜"‘*Ó	€BÜ	�‰ÜÐRö
ô 	˜"˜b¨Õ0÷
÷ 
ñ 
ús   ÁA1Á1A:zy_true, y_predr‚   r½   c                 óþ   — t        j                  «       5  t        j                  d«        | |||¬«      }ddd«       t        j                  |«      rt        j                  «      sJ ‚y|k(  sJ ‚y# 1 sw Y   Œ>xY w)zmCheck the behaviour of `zero_division` when setting to 0, 1 or np.nan.
    No warnings should be raised.
    r®   ©r„   N)r�   r‘   r²   rH   r…  )r‚   r`   r_   r„   Úresults        ra   Ú!test_zero_division_nan_no_warningrž  Œ  sh   € ô 
×	 Ñ	 Õ	"Ü×Ñ˜gÔ&Ù˜ °mÔDˆ÷ 
#ô 
‡x�x�ÔÜ�x‰x˜ÔÐÑà˜Ò&Ð&Ñ&÷ 
#Ð	"ús   •!A3Á3A<c                 ó„   — t        j                  t        «      5   | ||d¬«      }ddd«       dk(  sJ ‚y# 1 sw Y   ŒxY w)ztCheck the behaviour of `zero_division` when setting to "warn".
    A `UndefinedMetricWarning` should be raised.
    r…   rœ  Nr¾   )rÁ   r  r   )r‚   r`   r_   r�  s       ra   Útest_zero_division_nan_warningr   ¥  s9   € ô 
�‰Ô,Õ	-Ù˜ °fÔ=ˆ÷ 
.à�SŠ=Ð‰=÷ 
.Ð	-ús   š6¶?c                 óî   — t         j                  j                  | «      }|j                  ddd¬«      }|j                  ddd¬«      }t	        t        ||«      t        j                  ||«      d   d«       y )Nr   r<   ro   ©Úsize©r   rC   rm  )rH   rL   rM   Úrandintr3   r   Úcorrcoef)Úglobal_random_seedr[   r`   r_   s       ra   Ú-test_matthews_corrcoef_against_numpy_corrcoefr¨  ¸  se   € Ü
�)‰)×
Ñ
Ð 2Ó
3€CØ�[‰[˜˜A Bˆ[Ó'€FØ�[‰[˜˜A Bˆ[Ó'€FäÜ˜& &Ó)¬2¯;©;°v¸vÓ+FÀtÑ+LÈbõrc   c                 ó‚  — t         j                  j                  | «      }|j                  ddd¬«      }|j                  ddd¬«      }|j	                  d«      }t        |||¬«      }t        |«      }t        t        |«      D ���	cg c]A  }t        |«      D ]1  }t        |«      D ]!  }	|||f   |||	f   z  ||	|f   |||f   z  z
  ‘Œ# Œ3 ŒC c}	}}«      }
t        t        |«      D ���cg c]c  }|d d …|f   j                  «       t        j                  t        |«      D ��cg c]  }t        |«      D ]  }||k7  sŒ	|||f   ‘Œ Œ! c}}«      z  ‘Œe c}}}«      }t        j                  t        |«      D ���cg c]c  }||d d …f   j                  «       t        j                  t        |«      D ��cg c]  }t        |«      D ]  }||k7  sŒ	|||f   ‘Œ Œ! c}}«      z  ‘Œe c}}}«      }|
t        j                  ||z  «      z  }t        |||¬«      }t        ||d«       y c c}	}}w c c}}w c c}}}w c c}}w c c}}}w )Nr   r<   ro   r¢  rE  rm  )rH   rL   rM   r¥  Úrandr   ry   rY  Úranger  r   r3   )r§  r[   r`   r_   r8  ÚCÚNÚkÚmÚlÚcov_ytypr´   ÚgÚcov_ytytÚcov_ypypÚ
mcc_jurmanÚmcc_ourss                    ra   Ú%test_matthews_corrcoef_against_jurmanr·  Â  s.  € ô �)‰)×
Ñ
Ð 2Ó
3€CØ�[‰[˜˜A Bˆ[Ó'€FØ�[‰[˜˜A Bˆ[Ó'€FØ—H‘H˜R“L€Mä˜ °}ÔE€AÜˆA‹€AÜô ˜1”Xõ	
á�Ü˜1–X�Ü˜1–X�ð ˆa�ˆd‰G�a˜˜1˜‘gÑ  ! Q $¡¨!¨A¨q¨D©'Ñ 1Ó1ð ð 2àð 2Øó	
ó€Hô ô ˜1”Xõ	
ñ �ð Ša�ˆd‰G�K‰K‹MÜ�f‰f¤u¨Q¤xÔL¡x !¼¸q¾°AÀQÈ!ÃV�a˜˜1˜“g¸�g xÒLÓMóNàó	
ó€Hô �v‰vô ˜1”Xõ	
ñ �ð ˆa’ˆd‰G�K‰K‹MÜ�f‰f¤u¨Q¤xÔL¡x !¼¸q¾°AÀQÈ!ÃV�a˜˜1˜“g¸�g xÒLÓMóNàó	
ó€Hð œBŸG™G H¨xÑ$7Ó8Ñ8€JÜ  ¨¸}ÔM€Hä˜ *¨bÕ1ùô1	
ùó Mùô	
ùó Mùô	
sC   ÂAH Ã)8H-Ä!H'Ä:H'ÅH-Å88H:Æ0H4Ç	H4ÇH:È'H-È4H:c           	      óþ  — t         j                  j                  | «      }|j                  ddd¬«      D �cg c]  }|dk(  rdnd‘Œ }}t	        t        ||«      d«       |D �cg c]  }|dk(  rdnd‘Œ }}t	        t        ||«      d«       t        |ddg¬	«      }t        j                  |dd«      }t	        t        ||«      d«       t	        t        g d
¢g d
¢«      d«       t	        t        |dgt        |«      z  «      d«       g d¢}g d¢}t	        t        ||«      d«       dgdz  dgdz  z   }t        j                  t        «      5  t	        t        |||¬«      d«       d d d «       y c c}w c c}w # 1 sw Y   y xY w)Nr   r<   ro   r¢  rˆ   r‰   r¼   r¿   rÇ   r_  r¾   )rC   r   rC   rC   r   rC   rC   rC   r   rC   rC   rC   rC   rC   rC   rC   r   rC   rC   rC   )rC   rC   rC   r   r   rC   rC   rC   rC   r   rC   rC   rC   r   rC   rC   rC   r   rC   rC   rC   rm  rE  )rH   rL   rM   r¥  r3   r   r*   Úwherery   rÁ   rÖ   ÚAssertionError)	r§  r[   rÚ   r`   Ú
y_true_invÚy_true_inv2Úy_1Úy_2Úmasks	            ra   Útest_matthews_corrcoefrÀ  é  sj  € Ü
�)‰)×
Ñ
Ð 2Ó
3€CØ.1¯k©k¸!¸QÀR¨kÔ.HÓIÑ.H¨�Q˜!’V‰c Ñ$Ð.H€FÐIô Ô)¨&°&Ó9¸3Ô?ñ 5;Ó;±F¨q˜˜cš‘# sÑ*°F€JÐ;ÜÔ)¨&°*Ó=¸rÔBä  °#°s°Ô<€KÜ—(‘(˜;¨¨SÓ1€KÜÔ)¨&°+Ó>ÀÔCô Ô)ª,ºÓEÀsÔKô Ô)¨&°3°%¼#¸f»+Ñ2EÓFÈÔLò G€CÚ
F€CÜÔ)¨#¨sÓ3°SÔ9ð ˆ3�‰8�q�c˜B‘hÑ€Dô 
�‰”~Õ	&ÜÔ-¨c°3ÀdÔKÈSÔQ÷ 
'Ð	&ùò; Jùò <÷. 
'Ð	&ús   ¶E)Á"E.ÅE3Å3E<c                 óÔ  — t         j                  j                  | «      }t        d«      }d}|j	                  d|d¬«      D �cg c]  }t        ||z   «      ‘Œ }}t        t        ||«      d«       g d¢}g d¢}t        t        ||«      d	«       g d¢}g d
¢}t        t        ||«      dt        j                  d«      z  «       g d¢}g d¢}t        t        ||«      d«       g d¢}g d¢}t        t        ||«      d«       g d¢}	g d¢}
t        t        |	|
«      d«       g d¢}g d¢}g d¢}t        t        |||¬«      d«       g d¢}g d¢}g d¢}t        t        |||¬«      d«       y c c}w )Nrˆ   r±   r   ro   r¢  r¼   )r   r   rC   rC   r<   r<   )r<   r<   r   r   rC   rC   g      à¿)rC   rC   r   r   r   r   iôÿÿÿi€  r—   )rÆ   rÆ   rÆ   r¾   ©	r   rC   r<   r   rC   r<   r   rC   r<   )	rC   rC   rC   r<   r<   r<   r   r   r   )r   r   rC   rC   r<   ri  ©rC   rC   rC   rC   r   rE  r¿   r÷   ©rC   rC   r   r   )	rH   rL   rM   Úordr¥  Úchrr3   r   r  )r§  r[   Úord_aÚ	n_classesrÚ   r`   Ú
y_pred_badÚ
y_pred_minr_   r½  r¾  r8  s               ra   Ú!test_matthews_corrcoef_multiclassrË    s_  € Ü
�)‰)×
Ñ
Ð 2Ó
3€CÜ�‹H€EØ€IØ&)§k¡k°!°YÀR kÔ&HÓIÑ&H Œc�%˜!‘)�nÐ&H€FÐIô Ô)¨&°&Ó9¸3Ô?ò  €FÚ#€JÜÔ)¨&°*Ó=¸tÔDò  €FÚ#€JÜÔ)¨&°*Ó=¸sÄRÇWÁWÈWÓEUÑ?UÔVò €FÚ€FÜÔ)¨&°&Ó9¸3Ô?ò €FÚ€FÜÔ)¨&°&Ó9¸3Ô?ò &€CÚ
%€CÜÔ)¨#¨sÓ3°SÔ9ò €FÚ€FÚ#€MÜÜ˜& &¸ÔFÈôò €FÚ€FÚ €MÜÜ˜& &¸ÔFÈõùò_ Js   ÁE%Ún_pointséd   i'  c                 óˆ  ‡— t         j                  j                  |«      Šd„ }ˆfd„}t        j                  ddg| «      }t	        t        ||«      d«       t        j                  g d¢| «      }t	        t        ||«      d«        || «      \  }}t	        t        ||«      d«       t	        t        ||«       |||«      «       y )Nc                 óÖ   — t        | |«      }|d   }|d   }|d   }t        | «      }||z   |z  }||z   |z  }||z  ||z  z
  }	||z  d|z
  z  d|z
  z  }
|	t        j                  |
«      z  S )N©rC   rC   )rC   r   r¤  rC   )r   ry   rH   r  )r`   r_   Úconf_matrixÚtrue_posÚ	false_posÚ	false_negrÌ  Úpos_rateÚactivityÚmcc_numeratorÚmcc_denominators              ra   Úmcc_safez1test_matthews_corrcoef_overflow.<locals>.mcc_safeI  s—   € Ü& v¨vÓ6ˆØ˜tÑ$ˆØ Ñ%ˆ	Ø Ñ%ˆ	Ü�v“;ˆØ˜yÑ(¨HÑ4ˆØ˜yÑ(¨HÑ4ˆØ  8Ñ+¨h¸Ñ.AÑAˆØ" XÑ-°°X±Ñ>À!ÀhÁ,ÑOˆØœrŸw™w Ó7Ñ7Ð7rc   c                 óv   •— ‰j                  | «      }|d‰j                  | «      dz
  z  z   }|dkD  }|dkD  }||fS )Nré   r    )Úrandom_sample)rÌ  Úx_trueÚx_predr`   r_   r[   s        €ra   Ú	random_ysz2test_matthews_corrcoef_overflow.<locals>.random_ysU  sN   ø€ Ø×"Ñ" 8Ó,ˆØ˜# ×!2Ñ!2°8Ó!<¸sÑ!BÑCÑCˆØ˜#‘ˆØ˜#‘ˆØ�vˆ~Ðrc   r¾   r¼   )r¾   r¼   rX  )rH   rL   rM   Úrepeatr3   r   )rÌ  r§  rÙ  rÞ  Úarrr`   r_   r[   s          @ra   Útest_matthews_corrcoef_overflowrá  D  s§   ø€ ô �)‰)×
Ñ
Ð 2Ó
3€Cò
8ôô �)‰)�S˜#�J Ó
)€CÜÔ)¨#¨sÓ3°SÔ9Ü
�)‰)’O XÓ
.€CÜÔ)¨#¨sÓ3°SÔ9á˜xÓ(�N€FˆFÜÔ)¨&°&Ó9¸3Ô?ÜÔ)¨&°&Ó9¹8ÀFÈFÓ;SÕTrc   c                  ó,  — t        d¬«      \  } }}t        | |d ¬«      \  }}}}t        |g d¢d«       t        |g d¢d«       t        |g d¢d«       t        |g d¢«       t	        | |d	d
¬«      }t        |dd«       t        | |d
¬«      }t        |dd«       t        | |d
¬«      }	t        |	dd«       t	        | |d¬«      }t        |dd«       t        | |d¬«      }t        |dd«       t        | |d¬«      }	t        |	dd«       t	        | |d¬«      }t        |dd«       t        | |d¬«      }t        |dd«       t        | |d¬«      }	t        |	dd«       t        j                  t        «      5  t	        | |d¬«       d d d «       t        j                  t        «      5  t        | |d¬«       d d d «       t        j                  t        «      5  t        | |d¬«       d d d «       t        j                  t        «      5  t        | |dd¬«       d d d «       t        | |g d¢d ¬«      \  }}}}t        |g d¢d«       t        |g d¢d«       t        |g d¢d«       t        |g d¢«       y # 1 sw Y   ŒìxY w# 1 sw Y   ŒÈxY w# 1 sw Y   Œ¤xY w# 1 sw Y   ŒxY w)NFr©   rª   )ç�Âõ(\�ê?ç…ëQ¸Õ?gáz®GáÚ?r<   )çHáz®Gé?g
×£p=
·?rm   )çìQ¸…ëé?ç333333Ã?r  )rf   rl   ro   rC   rË   r  gö(\�Âõà?rÊ   rø   gR¸…ëQà?rÌ   g®GázÞ?rÍ   r    ©r«   r¯   r-  rÉ   )rã  g=
×£p=Ú?rä  )rå  rm   rê   )ræ  r  rç  )rf   ro   rl   )rb   r!   r4   r5   r"   r#   r   rÁ   rÖ   r×   r   )
r`   r_   r~   rZ   r³   r´   rµ   r·   r¸   r¹   s
             ra   Ú)test_precision_recall_f1_score_multiclassré  f  s.  € ä'¨uÔ5Ñ€FˆF�Aô 1°¸ÈÔN�J€A€qˆ!ˆQÜ˜aÒ!3°QÔ7Ü˜aÒ!3°QÔ7Ü˜aÒ!3°QÔ7Ü�qš,Ô'ô 
˜ °1¸gÔ	F€BÜ˜b $¨Ô*ä	�f˜f¨gÔ	6€BÜ˜b $¨Ô*ä	�&˜&¨'Ô	2€BÜ˜b $¨Ô*ä	˜ °Ô	9€BÜ˜b $¨Ô*ä	�f˜f¨gÔ	6€BÜ˜b $¨Ô*ä	�&˜&¨'Ô	2€BÜ˜b $¨Ô*ä	˜ °Ô	<€BÜ˜b $¨Ô*ä	�f˜f¨jÔ	9€BÜ˜b $¨Ô*ä	�&˜&¨*Ô	5€BÜ˜b $¨Ô*ä	�‰”zÕ	"Ü˜ °	Õ:÷ 
#ä	�‰”zÕ	"Ü�V˜V¨YÕ7÷ 
#ä	�‰”zÕ	"Ü�˜¨Õ3÷ 
#ä	�‰”zÕ	"Ü�F˜F¨I¸CÕ@÷ 
#ô 1Ø�šy°$ô�J€A€qˆ!ˆQô ˜aÒ!3°QÔ7Ü˜aÒ!3°QÔ7Ü˜aÒ!3°QÔ7Ü�qš,Õ'÷! 
#Ð	"úç	"Ð	"úç	"Ð	"úç	"Ð	"ús0   Å,I&ÆI2ÇI>Ç<J
É&I/É2I;É>JÊ
Jr«   )rÍ   rË   rÊ   rÌ   Nc                 óü   — t        j                  g d¢g«      }t        j                  g d¢g«      }t        ||g d¢g | ¬«      \  }}}}t        |d«       t        |d«       t        |d«       | €t        |g d¢«       y y )NrÄ  ©r   r   rC   rC   )rÆ   r   rC   r<   )rv   Úwarn_forr«   r   ©r   rC   rC   r   )rH   r¡   r!   r5   )r«   r`   r_   rZ   r³   r´   rµ   s          ra   Ú;test_precision_refcall_f1_score_multilabel_unordered_labelsrî     su   € ô �X‰X’|�nÓ%€FÜ�X‰X’|�nÓ%€FÜ0Ø�š|°bÀ'ô�J€A€qˆ!ˆQô �q˜!ÔÜ�q˜!ÔÜ�q˜!ÔØ€Ü˜1šlÕ+ð rc   c                  ó@  — t        j                  g d¢«      } t        j                  g d¢«      }t        | |d ¬«      \  }}}}t        | |d¬«      \  }}}}|t        j                  |«      k(  sJ ‚|t        j                  |«      k(  sJ ‚|t        j                  |«      k(  sJ ‚t        | |d¬«      \  }}}}t        j                  | «      }	|t        j
                  ||	¬«      k(  sJ ‚|t        j
                  ||	¬«      k(  sJ ‚|t        j
                  ||	¬«      k(  sJ ‚y )N)r   rC   r   r   rC   rC   r   rC   r   r   rC   r   rC   r   rC   )rC   rC   r   rC   r   rC   rC   rC   rC   r   rC   r   rC   r   rC   rª   rÊ   rÌ   r“  )rH   r¡   r!   rÕ   Úbincountr«   )
r`   r_   r·   r¸   r¹   r~   rZ   r³   r´   rj   s
             ra   Ú.test_precision_recall_f1_score_binary_averagedrñ  ¯  sÿ   € Ü�X‰XÒCÓD€FÜ�X‰XÒCÓD€Fô 4°F¸FÈDÔQ�M€BˆˆB�Ü0°¸ÈÔQ�J€A€qˆ!ˆQØ”—‘˜“ÒÐÐØ”—‘˜“ÒÐÐØ”—‘˜“ÒÐÐÜ0°¸ÈÔT�J€A€qˆ!ˆQÜ�k‰k˜&Ó!€GØ”—
‘
˜2 wÔ/Ò/Ð/Ð/Ø”—
‘
˜2 wÔ/Ò/Ð/Ð/Ø”—
‘
˜2 wÔ/Ò/Ð/Ñ/rc   c                  ó‚  — t        j                  d¬«      } 	 t        j                  g d¢«      }t        j                  g d¢«      }t        t	        ||d¬«      dd«       t        t        ||d¬«      dd«       t        t        ||d¬«      dd«       t        j                  d	i | ¤Ž y # t        j                  d	i | ¤Ž w xY w)
NÚraise)rL  )r   rC   r<   r   rC   r<   )r<   r   rC   rC   r<   r   rÊ   rª   r¾   r<   rÃ   )rH   Úseterrr¡   r3   r"   r#   r   )Úold_error_settingsr`   r_   s      ra   Útest_zero_precision_recallrö  À  sš   € ô Ÿ™ wÔ/Ðð	(Ü—‘Ò,Ó-ˆÜ—‘Ò,Ó-ˆäœO¨F°FÀGÔLÈcÐSTÔUÜœL¨°ÀÔIÈ3ÐPQÔRÜœH V¨V¸WÔEÀsÈAÔNô 	�	‰	Ñ'Ð&Ó'øŒ�	‰	Ñ'Ð&Ó'ús   ˜A9B' Â'B>c                  ó   — t        d¬«      \  } }}t        | |ddg¬«      }t        |ddgddgg«       t        | |d	dg¬«      }t        |d
d	gddgg«       t        j                  | «      dz   }t        | |d	|g¬«      }t        |d
dgddgg«       y )NFr©   r   rC   rÞ   r%  r±   rÆ   r<   r)  rf   )rb   r   r5   rH   Úmax)r`   r_   r~   r  Úextra_labels        ra   Ú.test_confusion_matrix_multiclass_subset_labelsrú  Ñ  s§   € ä'¨uÔ5Ñ€FˆF�Aô 
˜& &°!°Q°Ô	8€BÜ�r˜R ˜G a¨ VÐ,Ô-ô 
˜& &°!°Q°Ô	8€BÜ�r˜R ˜G b¨! WÐ-Ô.ô —&‘&˜“. 1Ñ$€KÜ	˜& &°!°[Ð1AÔ	B€BÜ�r˜R ˜G a¨ VÐ,Õ-rc   zlabels, err_msgz+'labels' should contain at least one label.rÆ   r±   z.At least one label specified must be in y_truez
empty listzunknown labels)Úidsc                 ó    — t        d¬«      \  }}}t        j                  t        |¬«      5  t	        ||| ¬«       d d d «       y # 1 sw Y   y xY w)NFr©   rð   rÞ   )rb   rÁ   rÖ   r×   r   )rv   rõ   r`   r_   r~   s        ra   Útest_confusion_matrix_errorrý  ä  s;   € ô (¨uÔ5Ñ€FˆF�AÜ	�‰”z¨Ö	1Ü˜ °Õ7÷ 
2×	1Ñ	1ús   ¬AÁAc            	      ó˜  — g d¢} t        j                  t        | «      «      }t        | | «      }|j                  t         j
                  k(  sJ ‚t         j                  t         j                  t         j                  fD ]@  }t        | | |j                  |d¬«      ¬«      }|j                  t         j
                  k(  rŒ@J ‚ t         j                  t         j                  d t        fD ]@  }t        | | |j                  |d¬«      ¬«      }|j                  t         j                  k(  rŒ@J ‚ t        j                  t        | «      dt         j                  ¬«      }t        | | |¬«      }|d   dk(  sJ ‚|d   d	k(  sJ ‚t        j                  t        | «      d
t         j
                  ¬«      }t        | | |¬«      }|d   d
k(  sJ ‚|d   dk(  sJ ‚y )Nr�   F)ÚcopyrE  l   ÿÿ ©rQ  ©r   r   rÐ  l   þÿ l   ÿÿÿÿ éþÿÿÿ)rH   Úonesry   r   rQ  Úint64Úbool_Úint32Úuint64ÚastypeÚfloat32Úfloat64ÚobjectÚfullÚuint32)rW   Úweightr  rQ  s       ra   Útest_confusion_matrix_dtyper  ò  sr  € Ú€AÜ�W‰W”S˜“V‹_€Fä	˜!˜QÓ	€BØ�8‰8”r—x‘xÒÐÐä—(‘(œBŸH™H¤b§i¡iÓ0ˆÜ˜a °&·-±-ÀÈE°-Ó2RÔSˆØ�x‰xœ2Ÿ8™8Ó#Ð#Ð#ð 1ô —*‘*œbŸj™j¨$´Ó7ˆÜ˜a °&·-±-ÀÈE°-Ó2RÔSˆØ�x‰xœ2Ÿ:™:Ó%Ð%Ð%ð 8ô
 �W‰W”S˜“V˜Z¬r¯y©yÔ9€FÜ	˜!˜Q¨fÔ	5€BØˆd‰8�zÒ!Ð!Ð!Øˆd‰8�zÒ!Ð!Ð!ô �W‰W”S˜“VÐ0¼¿¹ÔA€FÜ	˜!˜Q¨fÔ	5€BØˆd‰8Ð*Ò*Ð*Ð*Øˆd‰8�rŠ>Ð‰>rc   rQ  )ÚInt64ÚFloat64Úbooleanc                 óô   — t        j                  d«      }t        j                  g d¢«      }|j	                  || ¬«      }|j	                  g d¢d¬«      }t        ||«      }t        ||«      }t        ||«       y)zkChecks that confusion_matrix works with pandas nullable dtypes.

    Non-regression test for gh-25635.
    Úpandas)	rC   r   r   rC   r   rC   rC   r   rC   r   )	r   r   rC   rC   r   rC   rC   rC   rC   r  N)rÁ   ÚimportorskiprH   r¡   ÚSeriesr   r5   )rQ  ÚpdÚ	y_ndarrayr`   Úy_predictedÚoutputÚexpected_outputs          ra   Ú%test_confusion_matrix_pandas_nullabler    sj   € ô 
×	Ñ	˜XÓ	&€Bä—‘Ò4Ó5€IØ�Y‰Y�y¨ˆYÓ.€FØ—)‘)Ò7¸w�)ÓG€Kä˜f kÓ2€FÜ& y°+Ó>€Oä�v˜Õ/rc   c            	      óÞ   — t        j                  «       } t        | d¬«      \  }}}d}t        ||t	        j
                  t        | j                  «      «      | j                  ¬«      }||k(  sJ ‚y )NFre   a|                precision    recall  f1-score   support

      setosa       0.83      0.79      0.81        24
  versicolor       0.33      0.10      0.15        31
   virginica       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
©rv   rw   ©r   rD   rb   r   rH   rI   ry   rw   ©r}   r`   r_   r~   r   r€   s         ra   Ú%test_classification_report_multiclassr!    sl   € ä×ÑÓ€DÜ'°¸UÔCÑ€FˆF�Að
€Oô #ØØÜ�y‰yœ˜T×.Ñ.Ó/Ó0Ø×&Ñ&ô	€Fð �_Ò$Ð$Ñ$rc   c                  ó>   — g d¢g d¢}} d}t        | |«      }||k(  sJ ‚y )N)	r   r   r   rC   rC   rC   r<   r<   r<   rÂ  a|                precision    recall  f1-score   support

           0       0.33      0.33      0.33         3
           1       0.33      0.33      0.33         3
           2       0.33      0.33      0.33         3

    accuracy                           0.33         9
   macro avg       0.33      0.33      0.33         9
weighted avg       0.33      0.33      0.33         9
r™   )r`   r_   r   r€   s       ra   Ú.test_classification_report_multiclass_balancedr#  9  s/   € Ú0Ò2MˆF€Fð
€Oô # 6¨6Ó2€FØ�_Ò$Ð$Ñ$rc   c                  óx   — t        j                  «       } t        | d¬«      \  }}}d}t        ||«      }||k(  sJ ‚y )NFre   a|                precision    recall  f1-score   support

           0       0.83      0.79      0.81        24
           1       0.33      0.10      0.15        31
           2       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
)r   rD   rb   r   r   s         ra   Ú:test_classification_report_multiclass_with_label_detectionr%  K  sF   € Ü×ÑÓ€DÜ'°¸UÔCÑ€FˆF�Að
€Oô # 6¨6Ó2€FØ�_Ò$Ð$Ñ$rc   c            	      óà   — t        j                  «       } t        | d¬«      \  }}}d}t        ||t	        j
                  t        | j                  «      «      | j                  d¬«      }||k(  sJ ‚y )NFre   a|                precision    recall  f1-score   support

      setosa    0.82609   0.79167   0.80851        24
  versicolor    0.33333   0.09677   0.15000        31
   virginica    0.41860   0.90000   0.57143        20

    accuracy                        0.53333        75
   macro avg    0.52601   0.59615   0.50998        75
weighted avg    0.51375   0.53333   0.47310        75
r°   )rv   rw   Údigitsr  r   s         ra   Ú1test_classification_report_multiclass_with_digitsr(  _  so   € ä×ÑÓ€DÜ'°¸UÔCÑ€FˆF�Að
€Oô #ØØÜ�y‰yœ˜T×.Ñ.Ó/Ó0Ø×&Ñ&Øô€Fð �_Ò$Ð$Ñ$rc   c                  óè   — t        d¬«      \  } }}t        j                  g d¢«      |    } t        j                  g d¢«      |   }d}t        | |«      }||k(  sJ ‚d}t        | |g d¢¬«      }||k(  sJ ‚y )NFr©   )ÚblueÚgreenÚreda|                precision    recall  f1-score   support

        blue       0.83      0.79      0.81        24
       green       0.33      0.10      0.15        31
         red       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
a|                precision    recall  f1-score   support

           a       0.83      0.79      0.81        24
           b       0.33      0.10      0.15        31
           c       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
r‡   ©rw   ©rb   rH   r¡   r   )r`   r_   r~   r   r€   s        ra   Ú7test_classification_report_multiclass_with_string_labelr/  z  sƒ   € Ü'¨uÔ5Ñ€FˆF�Aä�X‰XÒ.Ó/°Ñ7€FÜ�X‰XÒ.Ó/°Ñ7€Fð
€Oô # 6¨6Ó2€FØ�_Ò$Ð$Ð$ð
€Oô # 6¨6ÂÔP€FØ�_Ò$Ð$Ñ$rc   c                  ó�   — t        d¬«      \  } }}t        j                  g d¢«      }||    } ||   }d}t        | |«      }||k(  sJ ‚y )NFr©   )u   blueÂ¢u   greenÂ¢u   redÂ¢u                precision    recall  f1-score   support

       blueÂ¢       0.83      0.79      0.81        24
      greenÂ¢       0.33      0.10      0.15        31
        redÂ¢       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
r.  ©r`   r_   r~   rv   r   r€   s         ra   Ú8test_classification_report_multiclass_with_unicode_labelr2  �  sW   € Ü'¨uÔ5Ñ€FˆF�Aä�X‰XÒ:Ó;€FØ�F‰^€FØ�F‰^€Fð
€Oô # 6¨6Ó2€FØ�_Ò$Ð$Ñ$rc   c                  ó�   — t        d¬«      \  } }}t        j                  g d¢«      }||    } ||   }d}t        | |«      }||k(  sJ ‚y )NFr©   )r*  Úgreengreengreengreengreenr,  a×                             precision    recall  f1-score   support

                     blue       0.83      0.79      0.81        24
greengreengreengreengreen       0.33      0.10      0.15        31
                      red       0.42      0.90      0.57        20

                 accuracy                           0.53        75
                macro avg       0.53      0.60      0.51        75
             weighted avg       0.51      0.53      0.47        75
r.  r1  s         ra   Ú<test_classification_report_multiclass_with_long_string_labelr5  ³  sW   € Ü'¨uÔ5Ñ€FˆF�Aä�X‰XÒ2Ó3€FØ�F‰^€FØ�F‰^€Fð
€Oô # 6¨6Ó2€FØ�_Ò$Ð$Ñ$rc   c                  ó¢   — g d¢} g d¢}g d¢}d}t        j                  t        |¬«      5  t        | |ddg|¬«       d d d «       y # 1 sw Y   y xY w)	N©r   r   r<   r   r   ©r   r<   r<   r   r   ©zclass 0zclass 1zclass 2z6labels size, 2, does not match size of target_names, 3rð   r   r<   r  )rÁ   r  r  r   )r`   r_   rw   r•   s       ra   Ú=test_classification_report_labels_target_names_unequal_lengthr:  Ê  sB   € Ú€FÚ€FÚ4€Là
B€CÜ	�‰”k¨Ö	-Ü˜f f°a¸°VÈ,ÕW÷ 
.×	-Ñ	-ús   ªAÁAc                  óœ   — g d¢} g d¢}g d¢}d}t        j                  t        |¬«      5  t        | ||¬«       d d d «       y # 1 sw Y   y xY w)Nr7  r8  r9  zaNumber of classes, 2, does not match size of target_names, 3. Try specifying the labels parameterrð   r-  )rÁ   rÖ   r×   r   )r`   r_   rw   rõ   s       ra   Ú@test_classification_report_no_labels_target_names_unequal_lengthr<  Ô  sC   € Ú€FÚ€FÚ4€Lð	.ð ô
 
�‰”z¨Ö	1Ü˜f f¸<ÕH÷ 
2×	1Ñ	1ús   ªAÁAc                  ó~   — d} d}t        d|| d¬«      \  }}t        d|| d¬«      \  }}d}t        ||«      }||k(  sJ ‚y )Nr±   r�  rC   r   )rY   rX   rÈ  rB   aè                precision    recall  f1-score   support

           0       0.50      0.67      0.57        24
           1       0.51      0.74      0.61        27
           2       0.29      0.08      0.12        26
           3       0.52      0.56      0.54        27

   micro avg       0.50      0.51      0.50       104
   macro avg       0.45      0.51      0.46       104
weighted avg       0.45      0.51      0.46       104
 samples avg       0.46      0.42      0.40       104
)r   r   )rÈ  rX   r~   r`   r_   r   r€   s          ra   Ú%test_multilabel_classification_reportr>  â  s_   € à€IØ€Iä.Ø 	°YÈQô�I€A€vô /Ø 	°YÈQô�I€A€vð€Oô # 6¨6Ó2€FØ�_Ò$Ð$Ñ$rc   c                  ó  — t        j                  g d¢g d¢g«      } t        j                  g d¢g d¢g«      }t        | |«      dk(  sJ ‚t        | | «      dk(  sJ ‚t        ||«      dk(  sJ ‚t        |t        j                  |«      «      dk(  sJ ‚t        | t        j                  | «      «      dk(  sJ ‚t        | t        j                  | j
                  «      «      dk(  sJ ‚t        |t        j                  | j
                  «      «      dk(  sJ ‚y )Nr�   rž   rŸ   r    r   rC   )rH   r¡   r$   r¢   r£   rG   r¤   s     ra   Ú$test_multilabel_zero_one_loss_subsetr@    sç   € ä	�‰’9šiÐ(Ó	)€BÜ	�‰’9šiÐ(Ó	)€Bä˜˜RÓ  CÒ'Ð'Ð'Ü˜˜RÓ  AÒ%Ð%Ð%Ü˜˜RÓ  AÒ%Ð%Ð%Ü˜œRŸ^™^¨BÓ/Ó0°AÒ5Ð5Ð5Ü˜œRŸ^™^¨BÓ/Ó0°AÒ5Ð5Ð5Ü˜œRŸX™X b§h¡hÓ/Ó0°AÒ5Ð5Ð5Ü˜œRŸX™X b§h¡hÓ/Ó0°AÒ5Ð5Ñ5rc   c                  óø  — t        j                  g d¢g d¢g«      } t        j                  g d¢g d¢g«      }t        j                  ddg«      }t        | |«      dk(  sJ ‚t        | | «      dk(  sJ ‚t        ||«      dk(  sJ ‚t        |d|z
  «      dk(  sJ ‚t        | d| z
  «      dk(  sJ ‚t        | t        j                  | j                  «      «      dk(  sJ ‚t        |t        j                  | j                  «      «      d	k(  sJ ‚t        | ||¬
«      dk(  sJ ‚t        | d|z
  |¬
«      dk(  sJ ‚t        | t        j
                  | «      |¬
«      dk(  sJ ‚t        | d   |d   «      t        | d   |d   «      k(  sJ ‚y )Nr�   rž   rŸ   rC   rÆ   çUUUUUUÅ?r   rß   r    rE  gUUUUUUµ?gUUUUUUí?)rH   r¡   r   r£   rG   Ú
zeros_likeÚ
sp_hamming)r¥   r¦   Úws      ra   Útest_multilabel_hamming_lossrF    sm  € ä	�‰’9šiÐ(Ó	)€BÜ	�‰’9šiÐ(Ó	)€BÜ
�‰�!�Q�Ó€Aä˜˜BÓ 5Ò(Ð(Ð(Ü˜˜BÓ 1Ò$Ð$Ð$Ü˜˜BÓ 1Ò$Ð$Ð$Ü˜˜A ™FÓ# qÒ(Ð(Ð(Ü˜˜A ™FÓ# qÒ(Ð(Ð(Ü˜œBŸH™H R§X¡XÓ.Ó/°5Ò8Ð8Ð8Ü˜œBŸH™H R§X¡XÓ.Ó/°3Ò6Ð6Ð6Ü˜˜B¨aÔ0°HÒ<Ð<Ð<Ü˜˜A ™F°!Ô4¸	ÒAÐAÐAÜ˜œBŸM™M¨"Ó-¸QÔ?À7ÒJÐJÐJä˜˜1™˜r !™uÓ%¬°B°q±E¸2¸a¹5Ó)AÒAÐAÑArc   c                  ó°  — t        j                  g d¢«      } t        j                  g d¢«      }d}t        j                  t        |¬«      5  t        | |dd¬«       d d d «       t        j                  g d¢g d¢g«      } t        j                  g d	¢g d
¢g«      }d}t        j                  t        |¬«      5  t        | |dd¬«       d d d «       t        j                  g d¢«      } t        j                  g d¢«      }d}t        j                  t        |¬«      5  t        | |d¬«       d d d «       d}t        j                  t        |¬«      5  t        | |d¬«       d d d «       d}t        j                  t        |¬«      5  t        | |dd¬«       d d d «       y # 1 sw Y   �ŒAxY w# 1 sw Y   ŒâxY w# 1 sw Y   ŒŒxY w# 1 sw Y   ŒdxY w# 1 sw Y   y xY w)N)r   rC   r   rC   rC   z>pos_label=2 is not a valid label. It should be one of \[0, 1\]rð   rU   r<   ©r«   ró   r�   rÏ   rÐ   rž   ú•Target is multilabel-indicator but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted', 'samples'\].r¿   )r   rC   rC   r   r<   rÃ  ú€Target is multiclass but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted'\].rª   zJSamplewise metrics are not available outside of multilabel classification.rÍ   zšNote that pos_label \(set to 3\) is ignored when average != 'binary' \(got 'micro'\). You may use labels=\[pos_label\] to specify a single positive class.rË   rÆ   )rH   r¡   rÁ   rÖ   r×   r   r  r  )r`   r_   rõ   Úmsg1Úmsg2Úmsg3r•   s          ra   Útest_jaccard_score_validationrN  #  sd  € Ü�X‰X’oÓ&€FÜ�X‰X’oÓ&€FØO€GÜ	�‰”z¨Ö	1Ü�f˜f¨hÀ!ÕD÷ 
2ô �X‰X’y¢)Ð,Ó-€FÜ�X‰X’y¢)Ð,Ó-€Fð	6ð 	ô
 
�‰”z¨Ö	.Ü�f˜f¨hÀ"ÕE÷ 
/ô �X‰X’oÓ&€FÜ�X‰X’oÓ&€Fð	ð 	ô
 
�‰”z¨Ö	.Ü�f˜f¨hÕ7÷ 
/àW€DÜ	�‰”z¨Ö	.Ü�f˜f¨iÕ8÷ 
/ð	ð ô 
�‰”k¨Ö	-Ü�f˜f¨gÀÕC÷ 
.Ð	-÷A 
2Ñ	1ú÷ 
/Ð	.ú÷ 
/Ð	.ú÷ 
/Ð	.ú÷ 
.Ð	-ús<   ÁFÂ7F(ÄF4ÅG ÆGÆF%Æ(F1Æ4F=Ç G	ÇGc           	      óÀ  — t        j                  g d¢g d¢g«      }t        j                  g d¢g d¢g«      }t        ||d¬«      dk(  sJ ‚t        ||d¬«      dk(  sJ ‚t        ||d¬«      dk(  sJ ‚t        |t        j                  |«      d¬«      dk(  sJ ‚t        |t        j                  |«      d¬«      dk(  sJ ‚t        |t        j                  |j
                  «      d¬«      dk(  sJ ‚t        |t        j                  |j
                  «      d¬«      dk(  sJ ‚t        j                  g d¢g d	¢g«      }t        j                  g d
¢g d¢g«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||dddg¬«      d«       t        t        ||dddg¬«      d«       t        t        ||d ¬«      t        j                  g d¢«      «       t        j                  g d¢g d¢g«      }t        j                  g d
¢g d¢g«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       d}t        j                  t        |¬«      5  t        ||dgd¬«       d d d «       d}t        j                  t        |¬«      5  t        ||dgd¬«       d d d «       d}t        j                  t        |¬«      5  t        t        j                  ddgg«      t        j                  ddgg«      d¬«      dk(  sJ ‚	 d d d «       d}t        j                  t        |¬«      5  t        t        j                  ddgddgg«      t        j                  ddgddgg«      d¬«      dk(  sJ ‚	 d d d «       t        | «      rJ ‚y # 1 sw Y   �Œ xY w# 1 sw Y   ŒöxY w# 1 sw Y   ŒœxY w# 1 sw Y   Œ<xY w)Nr�   rž   rŸ   rÍ   rª   rÒ   rC   r   rÏ   rÐ   rÊ   rß   rË   rø   g«ªªªªªâ?r<   rÑ   r    )r    r¼   r    rÓ   rÌ   g      ì?z	Got 4 > 2rð   r±   rÉ   z
Got -1 < 0r¿   zXJaccard is ill-defined and being set to 0.0 in labels with no true or predicted samples.zXJaccard is ill-defined and being set to 0.0 in samples with no true or predicted labels.)rH   r¡   r   r¢   r£   rG   r3   r5   rÁ   rÖ   r×   r  r   rP  )Úrecwarnr¥   r¦   r`   r_   rL  rM  r•   s           ra   Útest_multilabel_jaccard_scorerQ  K  sS  € ä	�‰’9šiÐ(Ó	)€BÜ	�‰’9šiÐ(Ó	)€Bô
 ˜˜R¨Ô3°tÒ;Ð;Ð;Ü˜˜R¨Ô3°qÒ8Ð8Ð8Ü˜˜R¨Ô3°qÒ8Ð8Ð8Ü˜œRŸ^™^¨BÓ/¸ÔCÀqÒHÐHÐHÜ˜œRŸ^™^¨BÓ/¸ÔCÀqÒHÐHÐHÜ˜œRŸX™X b§h¡hÓ/¸ÔCÀqÒHÐHÐHÜ˜œRŸX™X b§h¡hÓ/¸ÔCÀqÒHÐHÐHä�X‰X’y¢)Ð,Ó-€FÜ�X‰X’y¢)Ð,Ó-€Fäœ f¨f¸gÔFÈÔPäœ f¨f¸gÔFÈÔPäœ f¨f¸iÔHÈ(ÔSÜÜ�f˜f¨iÀÀAÀÔGÈôô Ü�f˜f¨iÀÀAÀÔGÈôô Ü�f˜f¨dÔ3´R·X±XÒ>UÓ5Vôô �X‰X’y¢)Ð,Ó-€FÜ�X‰X’y¢)Ð,Ó-€FÜœ f¨f¸gÔFÈÔPäœ f¨f¸jÔIÈ7ÔSà€DÜ	�‰”z¨Ö	.Ü�f˜f¨a¨S¸'ÕB÷ 
/à€DÜ	�‰”z¨Ö	.Ü�f˜f¨b¨T¸7ÕC÷ 
/ð	-ð ô
 
�‰Ô,°CÖ	8äœ"Ÿ(™( Q¨ F 8Ó,¬b¯h©h¸¸A¸°xÓ.@È'ÔRØòð	
ñ÷ 
9ð	,ð ô
 
�‰Ô,°CÖ	8äÜ—‘˜1˜a˜& 1 a &Ð)Ó*Ü—‘˜1˜a˜& 1 a &Ð)Ó*Ø!ôð
 òð	
ñ÷ 
9ô �GŒ}ÐÐˆ}÷A 
/Ñ	.ú÷ 
/Ð	.ú÷ 
9Ð	8ú÷ 
9Ð	8ús2   Ê N/Ê6N<Ë,A OÍAOÎ/N9Î<OÏOÏOc           	      óˆ  — g d¢}g d¢}g d¢}t        «       }|j                  |«       |j                  |«      }|j                  |«      }t        t        ||«      }t        t        ||«      }ddgddgddgdgdgdgd g}	ddgdd	gd	dgdgdgd	gd g}
d
D ]2  }t        |	|
«      D ]!  \  }}t         |||¬«       |||¬«      «       Œ# Œ4 t        j                  ddgddgddgg«      }t        j                  ddgddgddgg«      }t        «       5  t	        ||d¬«      dk(  sJ ‚	 d d d «       t        | «      rJ ‚y # 1 sw Y   ŒxY w)N)ÚantrS  ÚcatrT  rS  rT  ÚbirdrU  )rT  rS  rT  rT  rS  rU  rU  rT  )rS  rU  rT  rS  rU  rT  r   rC   r<   )rÊ   rÌ   rË   NrÑ   rÌ   rª   )r)   rQ   Ú	transformr   r   Úzipr3   rH   r¡   r6   rP  )rP  r`   r_   rv   ÚlbrØ   rÙ   Úmulti_jaccard_scoreÚbin_jaccard_scoreÚmulti_labels_listÚbin_labels_listr«   Úm_labelÚb_labels                 ra   Útest_multiclass_jaccard_scorer_  ˜  su  € ÚG€FÚG€FÚ#€FÜ	Ó	€BØ‡F�Fˆ6„NØ—‘˜fÓ%€JØ—‘˜fÓ%€JÜ!¤-°¸Ó@ÐÜ¤¨z¸:ÓFÐà	�ˆØ	�ˆØ	�ˆØ	ˆØ	ˆØ	ˆØðÐð ˜1�v  1˜v¨¨1 v°¨s°Q°C¸!¸¸dÐC€Oó 8ˆÜ #Ð$5°Ö GÑˆG�WÜÙ#¨G¸GÔDÙ!¨'¸'ÔBõñ !Hð 8ô �X‰X˜˜1�v  1˜v¨¨1 vÐ.Ó/€FÜ�X‰X˜˜1�v  1˜v¨¨1 vÐ.Ó/€FÜ	Õ	Ü˜V V°ZÔ@ÀAÒEÐEÑE÷ 
ô �GŒ}ÐÐˆ}÷ 
Ð	ús   ÄD8Ä8Ec                 óÆ  — t        dgdgd¬«      dk(  sJ ‚d}t        j                  t        |¬«      5  t        ddgddgd¬«      dk(  sJ ‚	 d d d «       t        dgdgdd¬«      d	k(  sJ ‚t	        j
                  g d
¢«      }t	        j
                  g d¢«      }t        t        ||d¬«      d«       t        t        ||dd¬«      d«       t        | «      rJ ‚y # 1 sw Y   ŒŒxY w)NrC   r   rU   rª   r¾   zOJaccard is ill-defined and being set to 0.0 due to no true or predicted samplesrð   r  r¼   )rC   r   rC   rC   r   )rC   r   rC   rC   rC   rÒ   rH  r    )r   rÁ   r  r   rH   r¡   r3   rP  )rP  r•   r`   r_   s       ra   Ú!test_average_binary_jaccard_scorera  ½  sÜ   € ä˜!˜˜q˜c¨8Ô4¸Ò;Ð;Ð;ð	'ð ô 
�‰Ô,°CÖ	8Ü˜a ˜V a¨ V°XÔ>À#ÒEÐEÑE÷ 
9ô ˜!˜˜q˜c¨Q¸ÔAÀSÒHÐHÐHÜ�X‰X’oÓ&€FÜ�X‰X’oÓ&€FÜœ f¨f¸hÔGÈÔQÜÜ�f˜f¨hÀ!ÔDÀgôô �GŒ}ÐÐˆ}÷ 
9Ð	8ús   ³CÃC c                  ó(  — t        j                  g d¢g d¢g«      } t        j                  g d¢g d¢g«      }d}t        j                  t        |¬«      5  t        | |dd¬«      }|t        j                  d«      k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)	Nrž   ©r   r   r   z�Jaccard is ill-defined and being set to 0.0 in samples with no true or predicted labels. Use `zero_division` parameter to control this behavior.rð   rÍ   r…   ©r«   r„   r¾   )rH   r¡   rÁ   r  r   r   rÂ   )r`   r_   r•   Úscores       ra   Ú(test_jaccard_score_zero_division_warningrf  Ô  sy   € ô �X‰X’y¢)Ð,Ó-€FÜ�X‰X’y¢)Ð,Ó-€Fð	Cð ô
 
�‰Ô,°CÖ	8Ü˜f f°iÈvÔVˆØœŸ™ cÓ*Ò*Ð*Ñ*÷ 
9×	8Ñ	8ús   Á*BÂBzzero_division, expected_scorer  )rC   r    c                 óH  — t        j                  g d¢g d¢g«      }t        j                  g d¢g d¢g«      }t        j                  «       5  t        j                  dt
        «       t        ||d| ¬«      }d d d «       t        j                  |«      k(  sJ ‚y # 1 sw Y   Œ$xY w)Nrž   rc  r®   rÍ   rd  )	rH   r¡   r�   r‘   r²   r   r   rÁ   rÂ   )r„   Úexpected_scorer`   r_   re  s        ra   Ú*test_jaccard_score_zero_division_set_valueri  ã  s�   € ô �X‰X’y¢)Ð,Ó-€FÜ�X‰X’y¢)Ð,Ó-€FÜ	×	 Ñ	 Õ	"Ü×Ñ˜gÔ'=Ô>ÜØ�F I¸]ô
ˆ÷ 
#ð
 ”F—M‘M .Ó1Ò1Ð1Ñ1÷ 
#Ð	"ús   Á*BÂB!c                  óh  — t        j                  g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g«      }t        | |d ¬«      \  }}}}t        |g d¢d«       t        |g d¢d«       t        |g d	¢d«       t        |g d
¢d«       t	        | |dd ¬«      }|}t        |g d¢d«       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      t        j                  |«      «       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      d|z  |z  d|z  |z   z  «       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      t        j                  ||¬«      «       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      d«       y )N©rC   r   r   r   ©r   rC   r   r   rë  ©rC   r   rC   r   rª   )r¾   r    r¼   r¾   r<   )r¾   r¼   r¼   r¾   )r¾   rß   rC   r¾   )rC   rC   rC   rC   ©r¯   r«   )r   rã  rC   r   rÊ   g      Ø?r    g«ªªªªªÚ?rË   r°   r±   rÌ   r“  rÍ   ©rH   r¡   r!   r4   r   r3   rÕ   r«   ©r`   r_   rZ   r³   r´   rµ   Úf2rj   s           ra   Ú+test_precision_recall_f1_score_multilabel_1rr  ð  s$  € ô
 �X‰X’|¢\²<Ð@ÓA€FÜ�X‰X’|¢\²<Ð@ÓA€Fä0°¸ÈÔN�J€A€qˆ!ˆQô ˜aÒ!5°qÔ9Ü˜aÒ!5°qÔ9Ü˜aÒ!7¸Ô;Ü˜a¢¨qÔ1ä	�V˜V¨!°TÔ	:€BØ€GÜ˜b¢/°1Ô5ô 1°¸ÈÔQ�J€A€qˆ!ˆQÜ˜˜7Ô#Ü˜˜3ÔÜ˜Ð+Ô,Øˆ9Ðˆ9ÜÜ�F˜F¨°GÔ<¼b¿g¹gÀb»kôô
 1°¸ÈÔQ�J€A€qˆ!ˆQÜ˜˜3ÔÜ˜˜3ÔÜ˜˜3ÔØˆ9Ðˆ9ÜÜ�F˜F¨°GÔ<Ø	�!‰�a‰˜1˜q™5 1™9Ñ%ôô 1°¸ÈÔT�J€A€qˆ!ˆQÜ˜˜7Ô#Ü˜˜3ÔÜ˜Ð+Ô,Øˆ9Ðˆ9ÜÜ�F˜F¨°JÔ?Ü
�
‰
�2˜wÔ'ôô 1°¸ÈÔS�J€A€qˆ!ˆQÜ˜˜3ÔÜ˜˜3ÔÜ˜˜3ÔØˆ9Ðˆ9Üœ F¨F¸ÀIÔNÐPSÕTrc   c                  ój  — t        j                  g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g«      }t        | |d ¬«      \  }}}}t        |g d¢d«       t        |g d	¢d«       t        |g d
¢d«       t        |g d¢d«       t	        | |dd ¬«      }|}t        |g d¢d«       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      d|z  |z  d|z  |z   z  «       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      t        j                  |«      «       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      t        j                  ||¬«      «       t        | |d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚t        t	        | |dd¬«      dd«       y )Nrk  rl  rí  ©r   r   r   rC   rÄ  rª   )r¾   r¼   r¾   r¾   r<   )r¾   r    r¾   r¾   )r¾   g…ëQ¸å?r¾   r¾   ©rC   r<   rC   r   rn  )r   çš™™™™™á?r   r   rË   ç      Ð?r°   r±   rÊ   g      À?rB  rÌ   r    rk   r“  rÍ   g¥½Á&SÅ?ro  rp  s           ra   Ú+test_precision_recall_f1_score_multilabel_2rx  3  s'  € ô �X‰X’|¢\²<Ð@ÓA€FÜ�X‰X’|¢\²<Ð@ÓA€Fô 1°¸ÈÔN�J€A€qˆ!ˆQÜ˜aÒ!5°qÔ9Ü˜aÒ!5°qÔ9Ü˜aÒ!6¸Ô:Ü˜a¢¨qÔ1ä	�V˜V¨!°TÔ	:€BØ€GÜ˜b¢/°1Ô5ä0°¸ÈÔQ�J€A€qˆ!ˆQÜ˜˜4Ô Ü˜˜4Ô Ü˜Ð0Ô1Øˆ9Ðˆ9ÜÜ�F˜F¨°GÔ<Ø	�!‰�a‰˜1˜q™5 1™9Ñ%ôô
 1°¸ÈÔQ�J€A€qˆ!ˆQÜ˜˜4Ô Ü˜˜5Ô!Ü˜˜6Ô"Øˆ9Ðˆ9ÜÜ�F˜F¨°GÔ<¼b¿g¹gÀb»kôô 1°¸ÈÔT�J€A€qˆ!ˆQÜ˜˜5Ô!Ü˜˜5Ô!Ü˜˜=Ô)Øˆ9Ðˆ9ÜÜ�F˜F¨°JÔ?Ü
�
‰
�2˜wÔ'ôô
 1°¸ÈÔS�J€A€qˆ!ˆQô ˜˜5Ô!Ü˜˜5Ô!Ü˜˜=Ô)Øˆ9Ðˆ9ÜÜ�F˜F¨°IÔ>ÀÈõrc   z%zero_division, zero_division_expected)r…   r   rÐ  c           	      ó  — t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢g d¢g d¢g«      }t        ||d | ¬«      \  }}}}t        ||dddgd	«       t        |dd
d|gd	«       d}t        ||dd|gd	«       t        |g d¢d	«       t	        ||d	d | ¬«      }	|}
t        |	|dd|gd	«       t        ||d| ¬«      \  }}}}t        j
                  |«      rdn|}dt        j
                  |«       z   }t        |d	|z   |z  «       t        |d|z   |z  «       d}t        ||«       |�J ‚t        t	        ||d	d| ¬«      t        |	d ¬«      «       t        ||d| ¬«      \  }}}}t        |d«       t        |d
«       t        |d«       |�J ‚t        t	        ||d	d| ¬«      d|z  |z  d|z  |z   z  «       t        ||d| ¬«      \  }}}}t        ||dk(  rdnd«       t        |d
«       d}t        |d|z  «       |�J ‚t        t	        ||d	d| ¬«      t        |	|
¬«      «       t        ||d¬«      \  }}}}t        |d«       t        |d«       t        |d«       |�J ‚d }t        t	        ||d	d| ¬«      |d	«       y )!Nrl  rk  rí  r_  rt  rd  r¼   r¾   r<   r    r   rß   rC   ru  ©r¯   r«   r„   rv  rÊ   rÆ   ç      ø?gªªªªªªÚ?r“  rË   rn   r°   r±   rÌ   rÒ   gªªªªªª@rÍ   rª   rk   gZd;ßOÕ?)rH   r¡   r!   r4   r   r…  r3   r7   )r„   Úzero_division_expectedr`   r_   rZ   r³   r´   rµ   Ú
expected_frq  rj   Úvalue_to_sumÚvalues_to_averageÚexpected_results                 ra   Ú7test_precision_recall_f1_score_with_an_empty_predictionr�  t  sí  € ô �X‰X’|¢\²<Ð@ÓA€FÜ�X‰X’|¢\²<Ð@ÓA€Fô 1Ø� °Mô�J€A€qˆ!ˆQô ˜aÐ"8¸#¸sÀCÐ!HÈ!ÔLÜ˜a # s¨CÐ1GÐ!HÈ!ÔLØ€JÜ˜a *¨g°q¸*Ð!EÀqÔIÜ˜a¢¨qÔ1ä	�V˜V¨!°TÈÔ	W€BØ€GÜ˜b :¨t°Q¸
Ð"CÀQÔGä0Ø� °}ô�J€A€qˆ!ˆQô Ÿ™Ð!7Ô8‘1Ð>T€LØ¤§¡Ð*@Ó!AÐAÑBÐä˜˜A Ñ,Ð0AÑAÔBÜ˜˜C ,Ñ.Ð2CÑCÔDØ €JÜ˜˜:Ô&Øˆ9Ðˆ9ÜÜØØØØØ'ô	
ô 	�B Ô%ô	ô 1Ø� °}ô�J€A€qˆ!ˆQô ˜˜5Ô!Ü˜˜3ÔÜ˜Ð0Ô1Øˆ9Ðˆ9ÜÜØ�F ¨GÀ=ô	
ð 
�!‰�a‰˜1˜q™5 1™9Ñ%ô	ô 1Ø� 
¸-ô�J€A€qˆ!ˆQô ˜Ð$:¸aÒ$?™5ÀSÔIÜ˜˜3ÔØÐÜ˜˜MÐ->Ñ>Ô?Øˆ9Ðˆ9ÜÜØ�F ¨JÀmô	
ô 	�B Ô(ô	ô 1°¸ÈÔS�J€A€qˆ!ˆQô ˜˜5Ô!Ü˜˜5Ô!Ü˜˜5Ô!Øˆ9Ðˆ9Ø€OÜÜØ�F ¨IÀ]ô	
ð 	Ø	õrc   r¯   )rÊ   rË   rÌ   rÍ   c                 ó  — t        j                  d«      }t        j                  |«      }t        j                  «       5  t        j
                  d«       t        |||| |¬«      \  }}}}t        ||| ||¬«      }	d d d «       �J ‚t        j                  |«      r#	fD ]  }
t        j                  |
«      rŒJ ‚ y t        |«      }t        |«       t        |«       t        |«       t        	t        |«      «       y # 1 sw Y   ŒŠxY w)N©ro   rÆ   r®   ©r«   r¯   r„   rz  )rH   r£   rC  r�   r‘   r²   r!   r   r…  r|   r3   )r¯   r«   r„   r`   r_   rZ   r³   r´   rµ   Úfbetar‚   s              ra   Ú"test_precision_recall_f1_no_labelsr†  ×  sý   € ô �X‰X�gÓ€FÜ�]‰]˜6Ó"€Fä	×	 Ñ	 Õ	"Ü×Ñ˜gÔ&ä4ØØØØØ'ô
‰
ˆˆ1ˆa�ô ØØØØØ'ô
ˆ÷ 
#ð" ˆ9Ðˆ9ô 
‡x�x�ÔØ˜!˜Q Ó&ˆFÜ—8‘8˜FÕ#Ð#Ð#ð 'àä˜-Ó(€MÜ˜˜=Ô)Ü˜˜=Ô)Ü˜˜=Ô)ä˜œu ]Ó3Õ4÷= 
#Ð	"ús   ¿;DÄDc                 óÄ  — t        j                  d«      }t        j                  |«      }t        }t	        j
                  t        «      5   |||| d¬«      \  }}}}d d d «       t        d«       t        d«       t        d«       �J ‚t	        j
                  t        «      5  t        ||| d¬«      }d d d «       t        d«       y # 1 sw Y   ŒoxY w# 1 sw Y   Œ"xY w)Nrƒ  r¼   rè  r   )	rH   r£   rC  r!   rÁ   r  r   r3   r   )	r«   r`   r_   ÚfuncrZ   r³   r´   rµ   r…  s	            ra   Ú1test_precision_recall_f1_no_labels_check_warningsr‰  ÿ  s·   € ä�X‰X�gÓ€FÜ�]‰]˜6Ó"€Fä*€DÜ	�‰Ô,Õ	-Ù˜& &°'ÀÔD‰
ˆˆ1ˆa�÷ 
.ô ˜˜1ÔÜ˜˜1ÔÜ˜˜1ÔØˆ9Ðˆ9ä	�‰Ô,Õ	-Ü˜F F°GÀ#ÔFˆ÷ 
.ô ˜˜qÕ!÷ 
.Ð	-ú÷ 
.Ð	-ús   Á
C
Â%CÃ
CÃCc                 óæ  — t        j                  d«      }t        j                  |«      }t        j                  «       5  t        j
                  d«       t        ||d d| ¬«      \  }}}}t        ||dd | ¬«      }d d d «       t        j                  | «      } t        | | | gd«       t        | | | gd«       t        | | | gd«       t        g d¢d«       t        | | | gd«       y # 1 sw Y   ŒnxY w)Nrƒ  r®   r¼   r„  rz  r<   rc  )
rH   r£   rC  r�   r‘   r²   r!   r   r
  r4   )r„   r`   r_   rZ   r³   r´   rµ   r…  s           ra   Ú/test_precision_recall_f1_no_labels_average_noner‹    sì   € ä�X‰X�gÓ€FÜ�]‰]˜6Ó"€Fô 
×	 Ñ	 Õ	"Ü×Ñ˜gÔ&ä4ØØØØØ'ô
‰
ˆˆ1ˆa�ô Ø�F ¨dÀ-ô
ˆ÷ 
#ô —J‘J˜}Ó-€MÜ˜a -°ÀÐ!NÐPQÔRÜ˜a -°ÀÐ!NÐPQÔRÜ˜a -°ÀÐ!NÐPQÔRÜ˜a¢¨AÔ.ä˜e m°]ÀMÐ%RÐTUÕV÷) 
#Ð	"ús   ¿;C'Ã'C0c                  óì  — t        j                  d«      } t        j                  | «      }t        j                  t
        «      5  t        | |d d¬«      \  }}}}d d d «       t        g d¢d«       t        g d¢d«       t        g d¢d«       t        g d¢d«       t        j                  t
        «      5  t        | |dd ¬«      }d d d «       t        g d¢d«       y # 1 sw Y   Œ†xY w# 1 sw Y   Œ%xY w)Nrƒ  rC   rè  rc  r<   rn  )	rH   r£   rC  rÁ   r  r   r!   r4   r   )r`   r_   rZ   r³   r´   rµ   r…  s          ra   Ú4test_precision_recall_f1_no_labels_average_none_warnr�  7  sÁ   € Ü�X‰X�gÓ€FÜ�]‰]˜6Ó"€Fô 
�‰Ô,Õ	-Ü4Ø�F D¨qô
‰
ˆˆ1ˆa�÷ 
.ô
 ˜a¢¨AÔ.Ü˜a¢¨AÔ.Ü˜a¢¨AÔ.Ü˜a¢¨AÔ.ä	�‰Ô,Õ	-Ü˜F F°¸DÔAˆ÷ 
.ô ˜e¢Y°Õ2÷ 
.Ð	-ú÷ 
.Ð	-ús   ÁCÂ6C*ÃC'Ã*C3c            	      ó  — t         t        }} dD ]d  }d}t        j                  ||¬«      5   | g d¢g d¢|¬«       d d d «       d}t        j                  ||¬«      5   | g d¢g d¢|¬«       d d d «       Œf d}t        j                  ||¬«      5   | t	        j
                  d	d
gd	d
gg«      t	        j
                  d	d
gd
d
gg«      d¬«       d d d «       d}t        j                  ||¬«      5   | t	        j
                  d	d
gd
d
gg«      t	        j
                  d	d
gd	d
gg«      d¬«       d d d «       d}t        j                  ||¬«      5   | t	        j
                  d	d	gd	d	gg«      t	        j
                  d
d
gd
d
gg«      d¬«       d d d «       d}t        j                  ||¬«      5   | t	        j
                  d
d
gd
d
gg«      t	        j
                  d	d	gd	d	gg«      d¬«       d d d «       d}t        j                  ||¬«      5   | d	d	gddgd¬«       d d d «       d}t        j                  ||¬«      5   | ddgd	d	gd¬«       d d d «       t        j                  d¬«      5 }t        j                  d«       t        d
d
gd
d
gd¬«       d}t        |j                  «       j                  «      |k(  sJ ‚d}t        |j                  «       j                  «      |k(  sJ ‚d}t        |j                  «       j                  «      |k(  sJ ‚	 d d d «       y # 1 sw Y   �ŒáxY w# 1 sw Y   �Œ"xY w# 1 sw Y   �ŒixY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÅxY w# 1 sw Y   �ŒsxY w# 1 sw Y   �ŒOxY w# 1 sw Y   �Œ+xY w# 1 sw Y   y xY w)N©NrÌ   rÊ   zŠPrecision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.rð   r—   ©rC   rC   r<   rª   z‚Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.zŠPrecision is ill-defined and being set to 0.0 in samples with no predicted labels. Use `zero_division` parameter to control this behavior.rC   r   rÍ   z‚Recall is ill-defined and being set to 0.0 in samples with no true labels. Use `zero_division` parameter to control this behavior.ú‚Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.rË   úzRecall is ill-defined and being set to 0.0 due to no true samples. Use `zero_division` parameter to control this behavior.r¿   rU   TrŒ   rŽ   ú‰F-score is ill-defined and being set to 0.0 due to no true nor predicted samples. Use `zero_division` parameter to control this behavior.)r!   r   rÁ   r  rH   r¡   r�   r‘   r²   r“   Úpopr�   )r´   rE  r«   r•   r�   s        ra   Útest_prf_warningsr•  S  s@  € ä*Ô,B€q€AÛ.ˆðð 	ô �\‰\˜! 3Ö'ÙŠiš¨GÕ4÷ (ðð 	ô �\‰\˜! 3Ö'ÙŠiš¨GÕ4÷ (Ð'ð! /ð*	ð ô 
�‰�a˜sÖ	#Ù	Œ"�(‰(�Q˜�F˜Q ˜FÐ#Ó
$¤b§h¡h°°A°¸¸A¸Ð/?Ó&@È)ÕT÷ 
$ð	ð ô 
�‰�a˜sÖ	#Ù	Œ"�(‰(�Q˜�F˜Q ˜FÐ#Ó
$¤b§h¡h°°A°¸¸A¸Ð/?Ó&@È)ÕT÷ 
$ð
	ð ô 
�‰�a˜sÖ	#Ù	Œ"�(‰(�Q˜�F˜Q ˜FÐ#Ó
$¤b§h¡h°°A°¸¸A¸Ð/?Ó&@È'ÕR÷ 
$ð	ð ô 
�‰�a˜sÖ	#Ù	Œ"�(‰(�Q˜�F˜Q ˜FÐ#Ó
$¤b§h¡h°°A°¸¸A¸Ð/?Ó&@È'ÕR÷ 
$ð
	ð ô 
�‰�a˜sÖ	#Ù	ˆ1ˆaˆ&�2�r�( HÕ-÷ 
$ð	ð ô 
�‰�a˜sÖ	#Ù	ˆ2ˆrˆ(�Q˜�F HÕ-÷ 
$ô 
×	 Ñ	 ¨Õ	-°Ü×Ñ˜hÔ'Ü'¨¨A¨°°A°ÀÕIðð 	ô
 �6—:‘:“<×'Ñ'Ó(¨CÒ/Ð/Ð/ðð 	ô �6—:‘:“<×'Ñ'Ó(¨CÒ/Ð/Ð/ðð 	ô �6—:‘:“<×'Ñ'Ó(¨CÒ/Ð/Ñ/÷- 
.Ð	-÷K (Ñ'ú÷ (Ñ'ú÷ 
$Ñ	#ú÷ 
$Ñ	#ú÷ 
$Ñ	#ú÷ 
$Ñ	#ú÷ 
$Ñ	#ú÷ 
$Ñ	#ú÷ 
.Ð	-úsl   «LÁL'Â>L4Ã.>MÅ>MÆ,>MÈM(È<M5É*B&NÌL$	Ì'L1	Ì4L>ÍMÍMÍM%Í(M2Í5M?ÎNc           	      óö  — t        j                  «       5  t        j                  d«       dD ](  }t        g d¢g d¢|| ¬«       t        g d¢g d¢|| ¬«       Œ* t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d| ¬«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d| ¬«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d	| ¬«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d	| ¬«       t        ddgd
d
gd| ¬«       t        d
d
gddgd| ¬«       d d d «       t        j                  d¬«      5 }t        j                  d«       t        ddgddgd| ¬«       t        |«      dk(  sJ ‚	 d d d «       y # 1 sw Y   ŒbxY w# 1 sw Y   y xY w)Nr®   r�  r—   r�  rd  rC   r   rÍ   rË   r¿   rU   TrŒ   rŽ   )r�   r‘   r²   r!   rH   r¡   ry   )r„   r«   r�   s      ra   Ú)test_prf_no_warnings_if_zero_division_setr—  »  sú  € ä	×	 Ñ	 Õ	"Ü×Ñ˜gÔ&ó 3ˆGÜ+Úš9¨gÀ]õô ,Úš9¨gÀ]öð 3ô 	(Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
ô 	(Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
ô 	(Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
ô 	(Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
ô 	(Ø�ˆF�R˜�H h¸mõ	
ô 	(Ø�ˆH�q˜!�f h¸mõ	
÷a 
#ôh 
×	 Ñ	 ¨Õ	-°Ü×Ñ˜hÔ'Ü'Ø�ˆF�Q˜�F H¸Mõ	
ô �6‹{˜aÒÐÑ÷ 
.Ð	-÷i 
#Ð	"ú÷h 
.Ð	-ús   •E-G#Æ 9G/Ç#G,Ç/G8c           	      óø  — t        j                  «       5  t        j                  d«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d| ¬«       d d d «       t        j                  d¬«      5 }t        j                  d«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d| ¬«       | d	k(  r(t        |j                  «       j                  «      d
k(  sJ ‚t        |«      dk(  sJ ‚t        ddgddg«       | d	k(  r(t        |j                  «       j                  «      d
k(  sJ ‚d d d «       y # 1 sw Y   ŒùxY w# 1 sw Y   y xY w)Nr®   rC   r   rË   rd  TrŒ   rŽ   r…   r’  )
r�   r‘   r²   r#   rH   r¡   r“   r”  r�   ry   ©r„   r�   s     ra   Útest_recall_warningsrš  ù  sc  € ä	×	 Ñ	 Õ	"Ü×Ñ˜gÔ&äÜ�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
÷ 
#ô 
×	 Ñ	 ¨Õ	-°Ü×Ñ˜hÔ'ÜÜ�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
ð ˜FÒ"ä�F—J‘J“L×(Ñ(Ó)ð ."ò "ðð"ô �v“; !Ò#Ð#Ð#ä�a˜�V˜a ˜VÔ$Ø˜FÒ"ä�F—J‘J“L×(Ñ(Ó)ð ."ò "ðð"÷+ 
.Ð	-÷ 
#Ð	"ú÷ 
.Ð	-ús   •AE$Â
CE0Å$E-Å0E9c           	      óø  — t        j                  d¬«      5 }t        j                  d«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d| ¬«       | dk(  r(t        |j                  «       j                  «      d	k(  sJ ‚t        |«      dk(  sJ ‚t        ddgddg«       | dk(  r(t        |j                  «       j                  «      d	k(  sJ ‚d d d «       t        j                  «       5  t        j                  d
«       t        t	        j
                  ddgddgg«      t	        j
                  ddgddgg«      d| ¬«       d d d «       y # 1 sw Y   Œ}xY w# 1 sw Y   y xY w)NTrŒ   rŽ   rC   r   rË   rd  r…   r‘  r®   )
r�   r‘   r²   r"   rH   r¡   r“   r”  r�   ry   r™  s     ra   Útest_precision_warningsrœ  !	  sc  € ä	×	 Ñ	 ¨Õ	-°Ü×Ñ˜hÔ'ÜÜ�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
ð ˜FÒ"ä�F—J‘J“L×(Ñ(Ó)ð ."ò "ðð"ô �v“; !Ò#Ð#Ð#ä˜˜A˜  A Ô'Ø˜FÒ"ä�F—J‘J“L×(Ñ(Ó)ð ."ò "ðð"÷+ 
.ô6 
×	 Ñ	 Õ	"Ü×Ñ˜gÔ&äÜ�H‰H�q˜!�f˜q !˜fÐ%Ó&Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ØØ'õ		
÷ 
#Ð	"÷7 
.Ð	-ú÷6 
#Ð	"ús   —CE$ÄAE0Å$E-Å0E9c           
      óô  — t        j                  d¬«      5 }t        j                  d«       t        t	        t
        d¬«      fD �]  } |t        j                  ddgddgg«      t        j                  ddgddgg«      d| ¬	«       t        |«      dk(  sJ ‚ |t        j                  ddgddgg«      t        j                  ddgddgg«      d| ¬	«       t        |«      dk(  sJ ‚ |t        j                  ddgddgg«      t        j                  ddgddgg«      d| ¬	«       | d
k(  r*t        |j                  «       j                  «      dk(  r�ŒJ ‚t        |«      dk(  r�ŒJ ‚ 	 d d d «       y # 1 sw Y   y xY w)NTrŒ   rŽ   r<   r½   rC   r   rË   rd  r…   r“  )r�   r‘   r²   r   r   r   rH   r¡   ry   r“   r”  r�   )r„   r�   re  s      ra   Útest_fscore_warningsrž  I	  sp  € ä	×	 Ñ	 ¨Õ	-°Ü×Ñ˜hÔ'ä¤¬¸!Ô <Ô=ˆEÙÜ—‘˜1˜a˜& 1 a &Ð)Ó*Ü—‘˜1˜a˜& 1 a &Ð)Ó*ØØ+õ	ô �v“; !Ò#Ð#Ð#áÜ—‘˜1˜a˜& 1 a &Ð)Ó*Ü—‘˜1˜a˜& 1 a &Ð)Ó*ØØ+õ	ô �v“; !Ò#Ð#Ð#áÜ—‘˜1˜a˜& 1 a &Ð)Ó*Ü—‘˜1˜a˜& 1 a &Ð)Ó*ØØ+õ	ð  Ò&ä˜Ÿ
™
›×,Ñ,Ó-ð 2-ô -ðð-ô ˜6“{ aÔ'Ð'Ð'ñ? >÷ 
.×	-Ñ	-ús   —D6E.ÅE.Å!E.Å.E7c                  óx  — g d¢} g d¢}d}t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢g d¢g d¢g«      }d}| ||f|||ffD ]Y  \  }}}t        t        t        t        t        d	¬
«      fD ]/  }	t        j                  t        |¬«      5   |	||«       d d d «       Œ1 Œ[ y # 1 sw Y   Œ>xY w)N)rC   r<   rÆ   rÆ   ©rC   r<   rÆ   rC   rJ  r�   rÏ   rŸ   r4  rI  r<   r½   rð   )
rH   r¡   r"   r#   r   r   r   rÁ   rÖ   r×   )
Ú	y_true_mcÚ	y_pred_mcÚmsg_mcÚ
y_true_indÚ
y_pred_indÚmsg_indr`   r_   r•   r‚   s
             ra   Ú'test_prf_average_binary_data_non_binaryr§  p	  sÁ   € â€IÚ€Ið	1ð ô
 —‘š9¢i²Ð;Ó<€JÜ—‘š9¢i²Ð;Ó<€Jð	<ð ð 
�I˜vÐ&Ø	�Z Ð)ó Ñˆ�˜ô
 ÜÜÜ”K aÔ(ó	
ˆFô —‘œz°Ö5Ù�v˜vÔ&÷ 6Ð5ñ
ñ	 ÷ 6Ð5ús   Â
B0Â0B9c                  ó  — d} d}d}d}d}d}| t        j                  g d¢g d¢g d	¢g«      f| t        j                  d
dgdd
gddgg«      f|g d¢f|g d¢f|g d¢f|t        j                  dgdgdgg«      f|t        j                  d
gdgdgg«      f|t        j                  dgdgdgg«      f|t        j                  d
dgddgddgg«      f|t        j                  ddgddgddgg«      fg
}i | | f| “||f|“||f|“|| fd “|| fd “||f|“||fd “||fd “||fd “| |fd “||fd “||fd “||fd “||fd “| |fd “||fd “||fd “||fd | |fd ||fd ||fd i¥}t        |d¬«      D �]�  \  \  }}	\  }
}	 |||
f   }|€Àt	        j
                  t        «      5  t        |	|«       d d d «       ||
k7  rCdj                  ||
«      }t	        j
                  t        |¬«      5  t        |	|«       d d d «       Œ�|||| fvsŒ•dj                  |«      }t	        j
                  t        |¬«      5  t        |	|«       d d d «       Œ×t        |	|«      \  }}}}||k(  sJ ‚|j                  d«      r"|j                  dk(  sJ ‚|j                  dk(  s@J ‚t        |t        j                  |	«      «       t        |t        j                  |«      «       t	        j
                  t        «      5  t        |	d d |«       d d d «       �Œ“ ddg}	d d!g}d"}t	        j
                  t        |¬«      5  t        |	|«       d d d «       y # t        $ r ||
|f   }Y �ŒÍw xY w# 1 sw Y   �Œ«xY w# 1 sw Y   �ŒýxY w# 1 sw Y   �Œ
xY w# 1 sw Y   �ŒxY w# 1 sw Y   y xY w)#Númultilabel-indicatorÚ
multiclassrU   Ú
continuouszmulticlass-multioutputzcontinuous-multioutputr�   rÏ   rŸ   r   rC   )r<   rÆ   rC   )r¾   r{  r¼   r<   rÆ   r¾   r{  r¼   r    rX  gš™™™™™ñ?g      @)rß  z@Classification metrics can't handle a mix of {0} and {1} targetsrð   z{0} is not supportedÚ
multilabelÚcsrr¿   )rC   r<   )r   r<   rÆ   )r<   )r   r<   zÝYou appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead - the MultiLabelBinarizer transformer can convert to this format.)rH   r¡   r   ÚKeyErrorrÁ   rÖ   r×   r%   ÚformatÚ
startswithr5   Úsqueeze)ÚINDÚMCÚBINÚCNTÚMMCÚMCNÚEXAMPLESÚEXPECTEDÚtype1r¥   Útype2r¦   r†  rõ   Úmerged_typeÚy1outÚy2outr~   r•   s                      ra   Útest__check_targetsr¿  �	  sh  € ð !€CØ	€BØ
€CØ
€CØ
"€CØ
"€Cð 
Œb�h‰hš	¢9ªiÐ8Ó9Ð:à	Œb�h‰h˜˜A˜  A ¨¨A¨Ð/Ó0Ð1Ø	ŠYˆØ	ŠiÐØ	ŠoÐØ	ŒR�X‰X˜�s˜Q˜C ! �oÓ&Ð'Ø	Œb�h‰h˜˜˜a˜S 1 #�Ó'Ð(Ø	Œb�h‰h˜˜ ˜u s eÐ,Ó-Ð.Ø	Œb�h‰h˜˜A˜  A ¨¨A¨Ð/Ó0Ð1Ø	Œb�h‰h˜˜c˜
 S¨# J°°c°
Ð;Ó<Ð=ð€HðØ	ˆcˆ
�Cðà	ˆRˆ�"ðð 
ˆcˆ
�Cðð 
ˆSˆ	�4ð	ð
 
ˆcˆ
�Dðð 
ˆbˆ	�2ðð 
ˆcˆ
�Dðð 
ˆcˆ
�Dðð 
ˆcˆ
�Dðð 
ˆcˆ
�Dðð 
ˆSˆ	�4ðð 
ˆcˆ
�Dðð 
ˆcˆ
�Dðð 
ˆcˆ
�Dðð  
ˆcˆ
�Dð!ð" 
ˆSˆ	�4ð#ð$ 
ˆcˆ
�Dð%ð& 
ˆcˆ
�DØ	ˆcˆ
�DØ	ˆSˆ	�4Ø	ˆcˆ
�Dñ-€Hô2 %,¨H¸Q×$?Ð$?Ñ ‰ˆ�‘[�e˜Rð	.Ø  u Ñ-ˆHð ÐÜ—‘œzÕ*Ü˜r 2Ô&÷ +ð ˜Š~ð-ß-3©V°E¸5Ó-Að ô —]‘]¤:°WÖ=Ü" 2 rÔ*÷ >Ð=ð   b¨# Ò.Ø4×;Ñ;¸EÓB�GÜŸ™¤z¸ÖAÜ& r¨2Ô.÷ BÐAô ,:¸"¸bÓ+AÑ(ˆK˜  qØ (Ò*Ð*Ð*Ø×%Ñ% lÔ3Ø—|‘| uÒ,Ð,Ð,Ø—|‘| uÒ,Ð,Ð,ä" 5¬"¯*©*°R«.Ô9Ü" 5¬"¯*©*°R«.Ô9Ü—‘œzÕ*Ü˜r # 2˜w¨Ô+÷ +Ñ*ðA %@ðH �)Ð	€BØ
�ˆ€Bð	3ð ô 
�‰”z¨Ö	-Ü�r˜2Ô÷ 
.Ð	-øôS ò 	.Ø  u Ñ-‹Hð	.ú÷ +Ñ*ú÷ >Ñ=ú÷ BÑAú÷ +Ñ*ú÷ 
.Ð	-úsN   Å2L3ÆM
ÇMÈ%M$ËM1ÌM>Ì3MÍMÍ
M	ÍM!	Í$M.	Í1M;	Í>Nc                  óò   — d} t        j                  t        t        j                  | «      ¬«      5  t        t        j                  g «      t        j                  g «      «       d d d «       y # 1 sw Y   y xY w)NzIFound empty input array (e.g., `y_true` or `y_pred`) while a minimum of 1rð   )rÁ   rÖ   r×   ÚreÚescaper%   rH   r¡   r  s    ra   Ú*test__check_targets_raises_on_empty_inputsrÃ  ñ	  sC   € Ø
U€CÜ	�‰”z¬¯©°3«Ö	8Ü”r—x‘x “|¤R§X¡X¨b£\Ô2÷ 
9×	8Ñ	8ús   ±3A-Á-A6c                  ó<   — ddg} ddg}t        | |«      d   dk(  sJ ‚y )Nr   rC   r¿   rª  )r%   ra  s     ra   ÚAtest__check_targets_multiclass_with_both_y_true_and_y_pred_binaryrÅ  ÷	  s.   € à�ˆV€FØ�ˆW€FÜ˜& &Ó)¨!Ñ,°Ò<Ð<Ñ<rc   zy, target_typerU   r<   rª  rž   r4  r5  r¬  c                 óú   — |dv r1t        j                  t        d¬«      5  t        | | «       ddd«       yt        | | «      \  }}}}|dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y# 1 sw Y   yxY w)z?Check correct behaviour when different target types are sparse.)rU   rª  z+Sparse input is only supported when targetsrð   Nr©  r­  )rÁ   rÖ   Ú	TypeErrorr%   r¯  )rW   Útarget_typeÚy_typeÚ
y_true_outÚ
y_pred_outr~   s         ra   Ú!test__check_targets_sparse_inputsrÌ  þ	  sŽ   € ð Ð.Ñ.Ü�]‰]ÜÐJö
ô ˜1˜aÔ ÷
ð 
ô -;¸1¸aÓ,@Ñ)ˆ�
˜J¨àÐ/Ò/Ð/Ð/Ø× Ñ  EÒ)Ð)Ð)Ø× Ñ  EÒ)Ð)Ñ)÷
ð 
ús    A1Á1A:c                  ó   — t        j                  g d¢«      } t        j                  g d¢«      }t        | |«      dk(  sJ ‚t        j                  g d¢«      } t        j                  g d¢«      }t        | |«      dk(  sJ ‚y )N)r¿   rC   rC   r¿   )g      !Àr    r{  g333333Ó¿rí   )r   r<   r<   r   )rH   r¡   r   ©r`   Úpred_decisions     ra   Útest_hinge_loss_binaryrÐ  
  sf   € Ü�X‰X’nÓ%€FÜ—H‘HÒ3Ó4€MÜ�f˜mÓ,°Ò7Ð7Ð7ä�X‰X’lÓ#€FÜ—H‘HÒ3Ó4€MÜ�f˜mÓ,°Ò7Ð7Ñ7rc   c            
      ó  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      } t        j                  g d¢«      }t        j                  d| d   d   z
  | d   d   z   d| d   d   z
  | d   d	   z   d| d	   d	   z
  | d	   d
   z   d| d
   d   z
  | d
   d	   z   d| d   d
   z
  | d   d	   z   d| d   d	   z
  | d   d
   z   g«      }t        j                  |dd |¬«       t        j                  |«      }t	        || «      |k(  sJ ‚y )N©ç
×£p=
×?çÃõ(\�ÂÅ¿ç�Âõ(\�â¿g®Gáz®ï¿)çHáz®Gá¿g®Gáz®×¿ç¸…ëQ¸Þ¿rÕ  ©ç333333÷¿rÕ  çR¸…ëQØ¿rÔ  )rÖ  rÚ  r×  rÕ  ©gáz®GáÀgHáz®Gé¿gHáz®GÑ¿g¸…ëQ¸Î?)r   rC   r<   rC   rÆ   r<   rC   r   r<   rÆ   r±   r°   ©Úout©rH   r¡   ÚcliprÕ   r   )rÏ  r`   Údummy_lossesÚdummy_hinge_losss       ra   Útest_hinge_loss_multiclassrâ   
  sJ  € Ü—H‘Hâ(Ú(Ú(Ú(Ú(Ú(ð	
ó	€Mô �X‰XÒ(Ó)€FÜ—8‘8à�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9ð	
ó	€Lô ‡G�GˆL˜!˜T |Õ4Ü—w‘w˜|Ó,ÐÜ�f˜mÓ,Ð0@Ò@Ð@Ñ@rc   c                  óð   — t        j                  g d¢«      } t        j                  g d¢g d¢g d¢g d¢g«      }d}t        j                  t        |¬«      5  t        | |«       d d d «       y # 1 sw Y   y xY w)N)r   rC   r<   r<   )gR¸…ëQô?gœÄ °rh¡?gÃõ(\�Âå¿gffffffö¿rØ  rÛ  zDPlease include all labels in y_true or pass labels as third argumentrð   )rH   r¡   rÁ   rÖ   r×   r   )r`   rÏ  Úerror_messages      ra   Ú:test_hinge_loss_multiclass_missing_labels_with_labels_nonerå  ;
  s`   € Ü�X‰X’lÓ#€FÜ—H‘Hâ(Ú(Ú(Ú(ð		
ó€Mð 	Oð ô 
�‰”z¨Ö	7Ü�6˜=Ô)÷ 
8×	7Ñ	7úó   ÁA,Á,A5c            
      ó  — t        j                  g d¢«      } t        j                  g d¢«      }d}t        j                  t        t        j                  |«      ¬«      5  t        | |¬«       d d d «       t        j                  ddgddgddgddgddgddgddgg«      }g d	¢}d
}t        j                  t        t        j                  |«      ¬«      5  t        | ||¬«       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)N)r<   rC   r   rC   r   rC   rC   )r   rC   r<   rC   r   r<   rC   z”The shape of pred_decision cannot be 1d arraywith a multiclass target. pred_decision shape must be (n_samples, n_classes), that is (7, 3). Got: (7,)rð   rÎ  r   rC   r<   r—   z²The shape of pred_decision is not consistent with the number of classes. With a multiclass target, pred_decision shape must be (n_samples, n_classes), that is (7, 3). Got: (7, 2))r`   rÏ  rv   )rH   r¡   rÁ   rÖ   r×   rÁ  rÂ  r   )r`   rÏ  rä  rv   s       ra   Ú<test_hinge_loss_multiclass_no_consistent_pred_decision_shaperè  L
  sâ   € ô �X‰XÒ+Ó,€FÜ—H‘HÒ2Ó3€Mð	ð ô 
�‰”z¬¯©°=Ó)AÖ	BÜ˜&°Õ>÷ 
Cô —H‘H˜q !˜f q¨! f¨q°!¨f°q¸!°f¸qÀ!¸fÀqÈ!ÀfÈqÐRSÈfÐUÓV€MÚ€Fð	ð ô 
�‰”z¬¯©°=Ó)AÖ	BÜ˜&°ÀfÕM÷ 
CÐ	B÷ 
CÐ	Bú÷ 
CÐ	Bús   ÁC+ÃC7Ã+C4Ã7D c            	      ó  — t        j                  g d¢g d¢g d¢g d¢g d¢g«      } t        j                  g d¢«      }t        j                  g d¢«      }t        j                  d| d   d   z
  | d   d   z   d| d   d   z
  | d   d   z   d| d   d   z
  | d   d	   z   d| d	   d   z
  | d	   d   z   d| d
   d   z
  | d
   d	   z   g«      }t        j                  |dd |¬«       t        j                  |«      }t	        || |¬«      |k(  sJ ‚y )NrÒ  ©çš™™™™™á¿rÚ  r×  rÕ  rØ  )r   rC   r<   rC   r<   ©r   rC   r<   rÆ   rC   r   r<   rÆ   r±   rÜ  rÞ   rÞ  ©rÏ  r`   rv   rà  rá  s        ra   Ú.test_hinge_loss_multiclass_with_missing_labelsrî  h
  s5  € Ü—H‘Hâ(Ú(Ú(Ú(Ú(ð	
ó€Mô �X‰X’oÓ&€FÜ�X‰X’lÓ#€FÜ—8‘8à�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9ð	
ó€Lô ‡G�GˆL˜!˜T |Õ4Ü—w‘w˜|Ó,ÐÜ�f˜m°FÔ;Ð?OÒOÐOÑOrc   c            	      ó  — t        j                  g d¢g d¢g d¢g d¢g d¢g«      } t        j                  g d¢«      }t        j                  g d¢«      }t        j                  d| d   d   z
  | d   d   z   d| d   d	   z
  | d   d   z   d| d	   d	   z
  | d	   d   z   d| d
   d   z
  | d
   d	   z   d| d   d	   z
  | d   d   z   g«      }t        j                  |dd |¬«       t        j                  |«      }t	        t        || |¬«      |«       y )N)rÓ  rÔ  rÕ  )g333333Ã¿rÕ  r×  )rÙ  rÕ  rÚ  )rë  gö(\�Âõè¿gáz®GáÚ¿)r   r<   r<   r   r<   r—   rC   r   r<   rÆ   r±   rÜ  rÞ   )rH   r¡   rß  rÕ   r3   r   rí  s        ra   Ú@test_hinge_loss_multiclass_missing_labels_only_two_unq_in_y_truerð  ‚
  s6  € ô
 —H‘Hâ!Ú!Ú!Ú!Ú!ð	
ó€Mô �X‰X’oÓ&€FÜ�X‰X’iÓ €FÜ—8‘8à�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9ð	
ó€Lô ‡G�GˆL˜!˜T |Õ4Ü—w‘w˜|Ó,ÐÜÜ�6˜=°Ô8Ð:Jõrc   c            
      óÀ  — g d¢} g d¢g d¢g d¢g d¢g d¢g d¢g}t        j                  d|d   d   z
  |d   d   z   d|d   d   z
  |d   d   z   d|d   d   z
  |d   d	   z   d|d	   d   z
  |d	   d   z   d|d
   d	   z
  |d
   d   z   d|d   d   z
  |d   d	   z   g«      }t        j                  |dd |¬«       t        j                  |«      }t	        | |«      |k(  sJ ‚y )N)r*  r+  r,  r+  Úwhiter,  rÒ  rê  rØ  rÛ  rC   r   r<   rÆ   r±   r°   rÜ  rÞ  )r`   rÏ  rà  rá  s       ra   Ú+test_hinge_loss_multiclass_invariance_listsró  ¢
  s6  € ò ?€Fâ$Ú$Ú$Ú$Ú$Ú$ð€Mô —8‘8à�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9Ø�˜aÑ  Ñ#Ñ# m°AÑ&6°qÑ&9Ñ9ð	
ó	€Lô ‡G�GˆL˜!˜T |Õ4Ü—w‘w˜|Ó,ÐÜ�f˜mÓ,Ð0@Ò@Ð@Ñ@rc   c            	      ó&  — g d¢} t        j                  ddgddgddgddgddgd	d
gg«      }t        | |«      }t        j                  t	        j
                  t        j                  | «      dk(  |d d …df   «      «       }t        ||«       g d¢} g d¢g d¢g d¢g}t        | |d¬«      }t        |d«       | dz  } |dz  }t        | |d¬«      }t        |d«       g d¢} ddgddgddgg}t        j                  t        «      5  t        | |«       d d d «       g d¢} g d¢g d¢g d¢g}g d¢}d }t        j                  t        t        j                  |«      ¬!«      5  t        | ||¬"«       d d d «       g d#¢} ddgddgddgddgg}t        | |«      }t        |d$«       ddg} d%d&gddgg}t        j                  ddgddgg«      }d'}t        j                  t        t        j                  |«      ¬!«      5  t        | |«       d d d «       d%d&gddgddgg}d(}t        j                  t        t        j                  |«      ¬!«      5  t        | |«       d d d «       t        j                  t        j                  |d d …df   «      «       }t        | |ddg¬"«      }t        ||«       g d)¢} g d*¢g d¢g d+¢g}	t        | |	g d,¢¬"«      }t        |t        j                  d«       «       y # 1 sw Y   �ŒÖxY w# 1 sw Y   �Œ‰xY w# 1 sw Y   ŒÿxY w# 1 sw Y   Œ»xY w)-N©Únorö  rö  Úyesr÷  r÷  r    rê   rm   ç{®Gáz„?ç®Gáz®ï?rÒ   rw  gü©ñÒMbP?g+‡ÙÎ÷ï?r÷  rC   rG  ©ré   rè   rê   ©rø   ré   ré   ©rø   rê   rí   TrN  gèº•Ê€æ?r<   Fg.Lð—`’@rí   rè   rø   rì   r‡   )rm   rê   r¾   )rê   rm   r¾   ©rê   rê   r¬   )rˆ   rŠ   r‹   zPy_true contains values {'b'} not belonging to the passed labels ['a', 'c', 'd'].rð   rÞ   ©ÚhamÚspamr   rÿ  çCTáÏðæç?ré   r¬   z€y_true contains only one label (2). Please provide the list of all expected class labels explicitly through the labels argument.zBFound input variables with inconsistent numbers of samples: [3, 2]r   )rè   rê   ré   ©rê   rè   ré   rF  )rH   r¡   r   rÕ   r
   Úlogpmfr2   rÁ   rÖ   r×   rÁ  rÂ  Úlog)
r`   r_   ÚlossÚ	loss_truerv   Ú	error_strrô   Útrue_log_lossÚcalculated_log_lossÚy_score2s
             ra   Útest_log_lossr  ¾
  sî  € â4€FÜ�X‰XØ
ˆsˆ�c˜3�Z $¨ °°S¨z¸DÀ$¸<È%ÐQVÈÐXó€Fô �F˜FÓ#€DÜ—‘œ×)Ñ)¬"¯(©(°6Ó*:¸eÑ*CÀVÊAÈqÈDÁ\ÓRÓSÐS€IÜ�D˜)Ô$ò €FÚš²Ð@€FÜ�F˜F¨dÔ3€DÜ�D˜)Ô$ð ˆa�K€FØ
ˆa�K€FÜ�F˜F¨eÔ4€DÜ�D˜-Ô(ò €FØ�Cˆj˜3 ˜* s¨C jÐ1€FÜ	�‰”zÕ	"Ü�˜Ô ÷ 
#ò €FÚš²Ð@€FÚ€Fð	"ð ô 
�‰”z¬¯©°9Ó)=Ö	>Ü�˜¨Õ/÷ 
?ò ,€FØ�Cˆj˜3 ˜* s¨C j°3¸°*Ð=€FÜ�F˜FÓ#€DÜ�D˜)Ô$ð �ˆV€FØ�Cˆj˜3 ˜*Ð%€FÜ�h‰h˜˜c˜
 S¨# JÐ/Ó0€Gð	Hð ô 
�‰”z¬¯©°9Ó)=Ö	>Ü�˜Ô ÷ 
?ð �Cˆj˜3 ˜* s¨C jÐ1€FØT€IÜ	�‰”z¬¯©°9Ó)=Ö	>Ü�˜Ô ÷ 
?ô
 —W‘WœRŸV™V GªA¨q¨D¡MÓ2Ó3Ð3€MÜ" 6¨7¸A¸q¸6ÔBÐÜÐ'¨Ô7ò €FÚ¢²/ÐB€HÜ�F˜HªYÔ7€DÜ�Dœ2Ÿ6™6 #›;˜,Õ'÷_ 
#Ñ	"ú÷ 
?Ñ	>ú÷$ 
?Ð	>ú÷
 
?Ð	>ús0   Ä K!ÅK.Ç0K;É LË!K+Ë.K8Ë;LÌLc                 ó®   — t        j                  ddg| ¬«      }t        j                  ddg| ¬«      }t        ||«      }t        j                  |«      sJ ‚y)z¬Check the behaviour internal eps that changes depending on the input dtype.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/24315
    r   rC   r   N)rH   r¡   r   Úisfinite)rQ  r`   r_   r  s       ra   Útest_log_loss_epsr  
  sJ   € ô �X‰X�q˜!�f EÔ*€FÜ�X‰X�q˜!�f EÔ*€Fä�F˜FÓ#€DÜ�;‰;�tÔÐÑrc   c                 óð   — t        j                  g d¢«      }t        j                  ddgddgddgddgg| ¬«      }t        j                  t        d	¬
«      5  t        ||«       ddd«       y# 1 sw Y   yxY w)zGCheck that log_loss raises a warning when y_pred values don't sum to 1.rí  ré   rè   rø   rí   rì   r¬   r   z$The y_prob values do not sum to one.rð   N)rH   r¡   rÁ   r  r  r   )rQ  r`   r_   s      ra   Ú'test_log_loss_not_probabilities_warningr    sa   € ô �X‰X’lÓ#€FÜ�X‰X˜˜S�z C¨ :°°S¨z¸CÀ¸:ÐFÈeÔT€Fä	�‰”kÐ)OÖ	PÜ�˜Ô ÷ 
Q×	PÑ	Púræ  rÏ   rŸ   c                 óL   — t        | |«      t        j                  d«      k(  sJ ‚y)z6Check that log_loss returns 0 for perfect predictions.r   N)r   rÁ   rÂ   ra  s     ra   Ú!test_log_loss_perfect_predictionsr  "  s"   € ô �F˜FÓ#¤v§}¡}°QÓ'7Ò7Ð7Ñ7rc   c                  óH  — t        j                  g d¢«      } t        j                  ddgddgddgddgg«      }t        t        fg}	 ddlm}m} |j                  ||f«       |D ]-  \  }} || «       ||«      }}t        ||«      }	t        |	d«       Œ/ y # t        $ r Y Œ>w xY w)	Nrþ  rí   rè   rø   rì   r   )Ú	DataFramer  r  )
rH   r¡   r0   r  r  r  r–  ÚImportErrorr   r2   )
Úy_trÚy_prÚtypesr  r  ÚTrueInputTypeÚPredInputTyper`   r_   r  s
             ra   Útest_log_loss_pandas_inputr  0  s¬   € ä�8‰8Ò2Ó3€DÜ�8‰8�c˜3�Z # s ¨c°3¨Z¸#¸s¸ÐDÓE€DÜœ]Ð+Ð,€Eðß,à�‰�f˜iÐ(Ô)ó ).Ñ$ˆ�}á& tÓ,©m¸DÓ.A�ˆÜ˜ Ó'ˆÜ˜˜iÕ(ñ	 ).øô ò Ùðús   ÁB Â	B!Â B!c                  óÄ   — t        j                  d«      } t        j                  t        | ¬«      5  t        g d¢g d¢g d¢g d¢gg d¢¬«       d d d «       y # 1 sw Y   y xY w©	NzÞLabels passed were ['spam', 'eggs', 'ham']. But this function assumes labels are ordered lexicographically. Pass the ordered labels=['eggs', 'ham', 'spam'] and ensure that the columns of y_prob correspond to this ordering.rð   ©Úeggsr   rÿ  rÏ   r4  rŸ   )r   r  rÿ  rÞ   )rÁ  rÂ  rÁ   r  r  r   ©Úexpected_messages    ra   Útest_log_loss_warningsr"  B  sK   € Ü—y‘yð	=óÐô 
�‰”kÐ)9Ö	:ÜÚ#Úš	¢9Ð-Ú*õ	
÷ 
;×	:Ñ	:úó   ±AÁAc                  ó¾  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  | |z
  «      dz  t	        | «      z  }t        t        | | «      d«       t        t        | |«      |«       t        t        d| z   |«      |«       t        t        d| z  dz
  |«      |«       t        j                  d|z
  |f«      }t        j                  d| z
  | f«      }t        t        | |«      |«       t        t        ||«      |«       t        t        | |d¬«      |«       t        t        | |d	¬«      |«       t        t        | |d
¬«      d|z  «       t        t        dgdg«      d«       t        t        dgdg«      d«       t        t        dgdg«      d«       t        t        dgdgd¬«      d«       t        t        dgdgd¬«      d«       y )N©r   rC   rC   r   rC   rC   ©rê   r¬   rm   rí   r¼   gffffffî?r<   r¾   r¼   rC   Úauto)Úscale_by_halfTFr¿   rì   g|®GázÄ?r   rÓ  ÚfooÚbarrò   )rH   r¡   r   Únormry   r3   r   Úcolumn_stack)r`   Úy_probÚ
true_scoreÚy_prob_reshapedÚy_true_reshapeds        ra   Útest_brier_score_loss_binaryr1  Q  s«  € ä�X‰XÒ(Ó)€FÜ�X‰XÒ5Ó6€FÜ—‘˜V f™_Ó-°Ñ2´S¸³[Ñ@€JäÔ(¨°Ó8¸#Ô>ÜÔ(¨°Ó8¸*ÔEÜÔ(¨¨v©°vÓ>À
ÔKÜÔ(¨¨V©°a©¸Ó@À*ÔMô —o‘o q¨6¡z°6Ð&:Ó;€OÜ—o‘o q¨6¡z°6Ð&:Ó;€OÜÔ(¨°ÓAÀ:ÔNÜÔ(¨¸/ÓJÈJÔWô Ü˜ °vÔ>À
ôô Ü˜ °tÔ<¸jôô Ü˜ °uÔ=¸qÀ:¹~ôô
 Ô(¨"¨°¨uÓ5°vÔ>ÜÔ(¨!¨¨s¨eÓ4°fÔ=ÜÔ(¨!¨¨s¨eÓ4°nÔEÜÔ(¨%¨°3°%À5ÔIÈ6ÔRÜÜ˜%˜ 3 %°5Ô9Øõrc   c            	      ó  — t        t        g d¢g d¢g d¢g d¢gg d¢¬«      d«       t        t        g d¢g d¢g d	¢g d
¢g«      d«       t        t        g d¢g d¢g d¢g d¢g«      d«       t        t        g d¢g d¢g d¢g d¢g«      d«       y )Nr  rk  rl  )r  rÿ  r   ÚyamsrÞ   rß   rG  rú  rû  rü  gù—¬£tÚ?r—   )r¼   r¾   r¾   )r¾   r¼   r¾   )r¾   r¾   r¼   r   r<   )r3   r   rÃ   rc   ra   Ú test_brier_score_loss_multiclassr4  x  s�   € äÜÚ#Úš<ªÐ6Ú2ô	
ð
 	ôô ÜÚšªº/ÐJó	
ð 	ô	ô ÜÚšªº/ÐJó	
ð 	
ô	ô ÜÚšªº/ÐJó	
ð 	
õ	rc   c                  ó&  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  t        «      5  t        | |dd  «       d d d «       t        j                  t        «      5  t        | |dz   «       d d d «       t        j                  t        «      5  t        | |dz
  «       d d d «       t        j                  g d¢«      } t        j                  g d¢g d¢g d¢g«      }t        j                  t        «      5  t        | |dd  «       d d d «       t        j                  t        «      5  t        | |dz   «       d d d «       t        j                  t        «      5  t        | |dz
  «       d d d «       t        j                  g d	¢«      } t        j                  g d
¢«      }t        j                  d«      }t        j                  t        |¬«      5  t        | |«       d d d «       g d¢} ddgddgddgg}d}t        j                  t        t        j                  |«      ¬«      5  t        | |«       d d d «       g d¢} g d¢g d¢g d¢g}g d¢}d}t        j                  t        t        j                  |«      ¬«      5  t        | ||¬«       d d d «       dg} ddgg}d}t        j                  t        t        j                  |«      ¬«      5  t        | |«       d d d «       t        t        | |ddg¬«      d«       y # 1 sw Y   �Œ½xY w# 1 sw Y   �Œ™xY w# 1 sw Y   �ŒuxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒøxY w# 1 sw Y   �ŒÔxY w# 1 sw Y   �ŒnxY w# 1 sw Y   �Œ'xY w# 1 sw Y   ŒÙxY w# 1 sw Y   Œ˜xY w)Nr%  r&  rC   r¼   rG  rú  rû  rü  )r   rC   r<   r   ©r¬   rø   rì   ré   zpThe type of the target inferred from y_true is multiclass but should be binary according to the shape of y_prob.rð   r—   r   z¦y_true and y_prob contain different number of classes: 3 vs 2. Please provide the true labels explicitly through the labels argument. Classes found in y_true: [0 1 2]r  rÏ   r4  )r  r   rÿ  r3  zwThe number of classes in labels is different from that in y_prob. Classes found in labels: ['eggs' 'ham' 'spam' 'yams']rÞ   r  rm   rê   zƒy_true contains only one label (eggs). Please provide the list of all expected class labels explicitly through the labels argument.rÿ  rø  )	rH   r¡   rÁ   rÖ   r×   r   rÁ  rÂ  r3   )r`   r-  rä  rv   s       ra   Ú$test_brier_score_loss_invalid_inputsr7  ›  s¼  € ä�X‰XÒ(Ó)€FÜ�X‰XÒ5Ó6€FÜ	�‰”zÕ	"ä˜ ¨¨ Ô,÷ 
#ô 
�‰”zÕ	"ä˜ ¨#¡Ô.÷ 
#ô 
�‰”zÕ	"ä˜ ¨#¡Ô.÷ 
#ô
 �X‰X’iÓ €FÜ�X‰X’ªºÐIÓJ€FÜ	�‰”zÕ	"ä˜ ¨¨ Ô,÷ 
#ô 
�‰”zÕ	"ä˜ ¨#¡Ô.÷ 
#ô 
�‰”zÕ	"ä˜ ¨#¡Ô.÷ 
#ô
 �X‰X’lÓ#€FÜ�X‰XÒ*Ó+€FÜ—I‘Ið	Aó€Mô 
�‰”z¨Ö	7Ü˜ Ô(÷ 
8ò €FØ�!ˆf�q˜!�f˜q !˜fÐ%€Fð	ð ô 
�‰”z¬¯©°=Ó)AÖ	BÜ˜ Ô(÷ 
Cò %€FÚš¢IÐ.€FÚ,€Fð	/ð ô
 
�‰”z¬¯©°=Ó)AÖ	BÜ˜ °Õ7÷ 
Cð ˆX€FØ�Cˆjˆ\€Fð	ð ô
 
�‰”z¬¯©°=Ó)AÖ	BÜ˜ Ô(÷ 
Cô Ô(¨°ÀÈÀÔPÐRVÕW÷K 
#Ñ	"ú÷ 
#Ñ	"ú÷ 
#Ñ	"ú÷ 
#Ñ	"ú÷ 
#Ñ	"ú÷ 
#Ñ	"ú÷ 
8Ñ	7ú÷ 
CÑ	Bú÷ 
CÐ	Bú÷ 
CÐ	Búsx   ÁLÁ9L Â*L-ÄL:ÅMÅ2MÇ(M!È<M.ÊM;Ë#NÌLÌ L*Ì-L7Ì:MÍMÍMÍ!M+Í.M8Í;NÎNc                  óÄ   — t        j                  d«      } t        j                  t        | ¬«      5  t        g d¢g d¢g d¢g d¢gg d¢¬«       d d d «       y # 1 sw Y   y xY wr  )rÁ  rÂ  rÁ   r  r  r   r   s    ra   Útest_brier_score_loss_warningsr9  ç  sQ   € Ü—y‘yð	=óÐô 
�‰”kÐ)9Ö	:ÜÚ#âÚÚðò
 +õ	
÷ 
;×	:Ñ	:úr#  c                  óˆ   — d} t        j                  t        | ¬«      5  t        g d¢g d¢«       d d d «       y # 1 sw Y   y xY w)Nz%y_pred contains classes not in y_truerð   rc  rŸ   )rÁ   r  r  r   r  s    ra   Ú#test_balanced_accuracy_score_unseenr;  ú  s+   € Ø
1€CÜ	�‰”k¨Ö	-Ü¢	ª9Ô5÷ 
.×	-Ñ	-ús	   ž8¸Azy_true,y_pred)rˆ   r‰   rˆ   r‰   )rˆ   rˆ   rˆ   r‰   )rˆ   r‰   rŠ   r‰   c                 óT  — t        | |dt        j                  | «      ¬«      }t        «       5  t	        | |«      }d d d «       t        j                  |«      k(  sJ ‚t	        | |d¬«      }t	        | t        j                  | | d   «      «      }|||z
  d|z
  z  k(  sJ ‚y # 1 sw Y   ŒexY w)NrÊ   rÑ   T)Úadjustedr   rC   )r#   rH   Úuniquer6   r   rÁ   rÂ   Ú	full_like)r`   r_   Úmacro_recallÚbalancedr=  Úchances         ra   Útest_balanced_accuracy_scorerC     s    € ô  Ø� ´·	±	¸&Ó0Aô€Lô 
Õ	ä*¨6°6Ó:ˆ÷ 
ð ”v—}‘} \Ó2Ò2Ð2Ð2Ü& v¨vÀÔE€HÜ$ V¬R¯\©\¸&À&ÈÁ)Ó-LÓM€FØ˜ 6Ñ)¨a°&©jÑ9Ò9Ð9Ñ9÷ 
Ð	ús   ­BÂB'rÈ   ))FTr¤  )r¾   r¼   )ÚzeroÚonec                 ó8  — t         j                  j                  d«      }d|d   }}|j                  ||d¬«      }| t        u r|j                  |¬«      }n|j                  «       } | |||¬«      }t        j                  t        j                  |«      «      rJ ‚y)	zÀCheck that the metric works with different types of `pos_label`.

    We can expect `pos_label` to be a bool, an integer, a float, a string.
    No error should be raised for those types.
    é*   rm  r¿   T)r£  Úreplacer¢  rò   N)	rH   rL   rM   Úchoicer   Úuniformrÿ  Úanyr…  )r‚   rÈ   r[   rX   ró   r`   r_   r�  s           ra   Ú*test_classification_metric_pos_label_typesrL    s‰   € ô* �)‰)×
Ñ
 Ó
#€CØ˜w r™{ˆy€IØ�Z‰Z˜ i¸ˆZÓ>€FØÔ!Ñ!à—‘ )�Ó,‰à—‘“ˆÙ�F˜F¨iÔ8€FÜ�v‰v”b—h‘h˜vÓ&Ô'Ð'Ð'Ð'rc   zy_true, y_pred, expected_scorec                 óP   — t        | |d¬«      t        j                  |«      k(  sJ ‚y)z•Check the behaviour of `zero_division` for f1-score.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26965
    r¼   rœ  N)r   rÁ   rÂ   )r`   r_   rh  s      ra   Ú2test_f1_for_small_binary_inputs_with_zero_divisionrN  6  s$   € ô �F˜F°#Ô6¼&¿-¹-ÈÓ:WÒWÐWÑWrc   Úscoringrœ  )r¯   r„   c                 ó’   — t        j                  d¬«      \  }}t        dd¬«      j                  ||«      }t	        |||| dd¬«       y)	aZ  Check that we validate `np.nan` properly for classification metrics.

    With `n_jobs=2` in cross-validation, the `np.nan` used for the singleton will be
    different in the sub-process and we should not use the `is` operator but
    `math.isnan`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27563
    r   )rB   rÆ   )Ú	max_depthrB   r<   ró  )rO  Ún_jobsÚerror_scoreN)r   Úmake_classificationr+   rQ   r(   )rO  rV   rW   Ú
classifiers       ra   Ú9test_classification_metric_division_by_zero_nan_validatonrV  J  sC   € ô( ×'Ñ'°QÔ7�D€A€qÜ'°!À!ÔD×HÑHÈÈAÓN€JÜ�J  1¨g¸aÈWÖUrc   c            	      ó  — g d¢} g d¢}t        j                  ddgddgddgddgdd	gd
dgg«      }t        j                  ddgddgddgddgddgddgg«      }t        | |¬«      }t        | |d¬«      }t        | |d¬«      }d||z  z
  }|t	        j
                  |«      k(  sJ ‚t        j                  g d¢«      }|d d j                  «       |j                  «       z  |d d …df<   |dd  j                  «       |j                  «       z  |d d …df<   t        | ||¬«      }t        | ||d¬«      }t        | ||d¬«      }d||z  z
  }|t	        j
                  |«      k(  sJ ‚t        j                  ddgddgddgddgddgddgg«      }t        | |«      }d|cxk  rdk  sJ ‚ J ‚t        ||«      }	|	t	        j
                  |«      k(  sJ ‚t        j                  ddgddgddgddgddgddgg«      }t        | |«      }|dk  sJ ‚t        ||«      }	|	t	        j
                  |«      k(  sJ ‚g d¢} t        j                  ddgddgddgddgddgddgg«      }t        | |«      }|dk(  sJ ‚t        ||«      }	|	dk(  sJ ‚g d¢} g d¢}t        j                  ddgddgddgddgg«      }t        | |«      }|dk(  sJ ‚t        ||«      }	|	dk(  sJ ‚g d¢}t        | ||¬«      }
|
dk(  sJ ‚g d¢} g d¢}t        j                  g d ¢g d ¢g d!¢g d"¢g«      }t        | |«      }d|cxk  rdk  sJ ‚ J ‚t        | ||¬«      }d|cxk  rdk  sJ ‚ J ‚t        j                  g d#¢g d$¢g d"¢g d%¢g«      }t        | |«      }|dk  sJ ‚t        | ||¬«      }|dk  sJ ‚y )&Nrb  rõ  r    rm   rê   rì   rø   gffffffÖ?gÍÌÌÌÌÌä?rø  rù  ra  F)r`   r_   rO  rC   )r<   rC   rÆ   r±   rÆ   rC   rÆ   r   )r`   r_   r8  )r`   r_   r8  rO  r¬   ré   r¼   rÒ   rw  )r   rC   rC   rC   )rö  r÷  r÷  r÷  )r<   r<   r<   r<   rE  )ÚhighrX  ÚlowÚneutral)çffffffö?rø   r¬   ré   )r¬   rê   rê   rî   rý  )ré   r    rí   r  rú  )rH   r¡   r'   r   rÁ   rÂ   rY  )r`   Úy_true_stringr_   Úy_pred_nullÚd2_scoreÚlog_likelihoodÚlog_likelihood_nullÚd2_score_truer8  Úd2_score_stringÚd2_score_with_sample_weights              ra   Útest_d2_log_loss_scorerd  c  s„  € Ú€FÚ;€MÜ�X‰Xà�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�4ˆLØ�4ˆLð	
ó	€Fô —(‘(à�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJð	
ó	€Kô !¨°vÔ>€HÜ V°FÀeÔL€NÜ"¨&¸ÐPUÔVÐØ˜Ð)<Ñ<Ñ<€MØ”v—}‘} ]Ó3Ò3Ð3Ð3ô —H‘HÒ/Ó0€MØ% b qÐ)×-Ñ-Ó/°-×2CÑ2CÓ2EÑE€K’�1�ÑØ% a bÐ)×-Ñ-Ó/°-×2CÑ2CÓ2EÑE€K’�1�ÑÜ Ø˜f°Mô€Hô ØØØ#Øô	€Nô #ØØØ#Øô	Ðð ˜Ð)<Ñ<Ñ<€MØ”v—}‘} ]Ó3Ò3Ð3Ð3ô �X‰Xà�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJð	
ó	€Fô ! ¨Ó0€HØ�Ô˜CÒÐÑÐÐä'¨°vÓ>€OØœfŸm™m¨HÓ5Ò5Ð5Ð5ô �X‰Xà�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�4ˆLØ�#ˆJð	
ó	€Fô ! ¨Ó0€HØ�aŠ<Ðˆ<ä'¨°vÓ>€OØœfŸm™m¨HÓ5Ò5Ð5Ð5ò  €FÜ�X‰Xà�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJØ�#ˆJð	
ó	€Fô ! ¨Ó0€HØ�qŠ=Ðˆ=Ü'¨°vÓ>€OØ˜aÒÐÐò €FÚ/€MÜ�X‰X˜˜d�| d¨D \°D¸$°<À$ÈÀÐNÓO€FÜ  ¨Ó0€HØ�qŠ=Ðˆ=Ü'¨°vÓ>€OØ˜aÒÐÐÚ €MÜ"3Ø� mô#Ðð '¨!Ò+Ð+Ð+ò 0€FÚ(€Mä�X‰XâÚÚÚð		
ó€Fô ! ¨Ó0€HØ�Ô˜CÒÐÑÐÐÜ  ¨¸}ÔM€HØ�Ô˜CÒÐÑÐÐä�X‰XâÚÚÚð		
ó€Fô ! ¨Ó0€HØ�aŠ<Ðˆ<Ü  ¨¸}ÔM€HØ�aŠ<Ð‰<rc   c                  óþ   — g d¢} g d¢}g d¢}t        j                  g d¢d«      }t        | |||¬«      }t        j                  g d¢d«      }t        | |||¬«      }d||z  z
  }t        | |||¬«      }t	        ||«       y	)
z¨Check that d2_log_loss_score works when not all labels are present in y_true

    non-regression test for https://github.com/scikit-learn/scikit-learn/issues/30713
    ©r<   r   r<   r   r—   )r[  rø   rè   rí   rÏ   ©r±   rC   )r8  rv   )rí   r   rè   rC   N)rH   Útiler   r'   r2   )	r`   rv   r8  r_   Úlog_loss_obsr]  Úlog_loss_nullÚexpected_d2_scorer^  s	            ra   Ú%test_d2_log_loss_score_missing_labelsrl  ù  s‹   € ò
 €FÚ€FÚ(€MÜ�W‰W’Y Ó'€Fä˜F F¸-ÐPVÔW€Lô —'‘'š-¨Ó0€KÜØ�¨=Àô€Mð ˜L¨=Ñ8Ñ8ÐÜ Ø� m¸Fô€Hô �HÐ/Õ0rc   c                  ó”   — g d¢} t        j                  g d¢d«      }t        | |g d¢¬«      }t        | |g d¢¬«      }t        ||«       y)zGCheck that d2_log_loss_score doesn't depend on the order of the labels.rf  rÏ   rg  r—   rÞ   r-  N)rH   rh  r'   r2   )r`   r_   r^  Úd2_score_others       ra   Ú"test_d2_log_loss_score_label_orderro    s=   € â€FÜ�W‰W’Y Ó'€Fä  ¨º	ÔB€HÜ& v¨vºiÔH€Nä�H˜nÕ-rc   c                  ó¦  — g d¢} ddgddgddgg}d}t        j                  t        |¬«      5  t        | |«       d	d	d	«       g d¢} ddgddgddgg}g d¢}d
}t        j                  t        |¬«      5  t        | ||¬«       d	d	d	«       g d¢} g d¢g d¢g}d}t        j                  t        |¬«      5  t        | |«       d	d	d	«       dg} ddgg}d}t        j                  t
        |¬«      5  t        | |«       d	d	d	«       g d¢} ddgddgddgg}d}t        j                  t        |¬«      5  t        | |«       d	d	d	«       g d¢} dg}ddgddgddgg}d}t        j                  t        |¬«      5  t        | ||¬«       d	d	d	«       y	# 1 sw Y   �ŒQxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒåxY w# 1 sw Y   Œ·xY w# 1 sw Y   Œ‚xY w# 1 sw Y   y	xY w)zPTest that d2_log_loss_score raises the appropriate errors on
    invalid inputs.r—   ré   r¬   r    rì   rø   z#contain different number of classesrð   Nz(number of classes in labels is differentrÞ   )r    r    r    )rø   rí   rê   rD  rC   zscore is not well-definedrÐ   úy_true contains only one labelz.The labels array needs to contain at least two)rÁ   rÖ   r×   r'   r  r   )r`   r_   Úerrrv   s       ra   Útest_d2_log_loss_score_raisesrs  !  sº  € ò €FØ�Cˆj˜3 ˜* s¨C jÐ1€FØ
/€CÜ	�‰”z¨Ö	-Ü˜& &Ô)÷ 
.ò
 €FØ�Cˆj˜3 ˜* s¨C jÐ1€FÚ€FØ
4€CÜ	�‰”z¨Ö	-Ü˜& &°Õ8÷ 
.ò €FÚšÐ/€FØ
+€CÜ	�‰”z¨Ö	-Ü˜& &Ô)÷ 
.ð ˆS€FØ�Cˆjˆ\€FØ
%€CÜ	�‰Ô,°CÖ	8Ü˜& &Ô)÷ 
9ò €FØ�Cˆj˜3 ˜* s¨C jÐ1€FØ
*€CÜ	�‰”z¨Ö	-Ü˜& &Ô)÷ 
.ò
 €FØˆS€FØ�Cˆj˜3 ˜* s¨C jÐ1€FØ
:€CÜ	�‰”z¨Ö	-Ü˜& &°Õ8÷ 
.Ð	-÷O 
.Ñ	-ú÷ 
.Ñ	-ú÷ 
.Ð	-ú÷ 
9Ð	8ú÷ 
.Ð	-ú÷ 
.Ð	-úsG   ­F	Á2FÂ2F#Ã,F/Ä-F;Å1GÆ	FÆF Æ#F,Æ/F8Æ;GÇGc                  ó¶  — g d¢} g d¢}g d¢}g d¢}g d¢}t        ||¬«      }t        ||¬«      }t        ||¬«      }d||z  z
  }t        j                  |«      |k(  sJ ‚g d¢}t        ||¬«      }|dk(  sJ ‚t        ||d	¬
«      }|dk(  sJ ‚g d¢}t        ||| ¬«      }|dk(  sJ ‚t        ||| d	¬«      }|dk(  sJ ‚g d¢} g d¢}g d¢}g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
}t        ||| ¬«      }|dk(  sJ ‚t        ||| ¬«      }|dk(  sJ ‚g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
}t        ||| ¬«      }|dkD  sJ ‚t        ||| ¬«      }|dkD  sJ ‚y)zeTest that d2_brier_score gives expected outcomes in both the binary and
    multiclass settings.
    )r<   r<   rÆ   rC   rC   rC   )r   rC   rC   r   r   rC   )rö  r÷  r÷  rö  rö  r÷  )rí   r    rø   rè   rm   r¬   )r    r    r    r    r    r    )r`   Úy_probarC   r   r÷  )r`   ru  ró   )rø   rø   rø   rø   rø   rø   )r`   ru  r8  )r`   ru  r8  ró   )
r<   rC   rÆ   rC   rC   r<   rC   r±   rC   r±   )
rÆ   rÆ   r<   r<   r<   rC   rC   rC   rC   r   )
Úddrv  Úccrw  rw  Úbbrx  rx  rx  Úaa)ré   rì   rw  rç  )rê   ré   ré   r    )rê   ré   r    ré   )ré   r    ré   rê   ©r    ré   ré   rê   r    N)r&   r   rÁ   rÂ   )	r8  r`   r\  ru  Úy_proba_refr^  Úbrier_score_modelÚbrier_score_refÚd2_score_expecteds	            ra   Útest_d2_brier_scorer  R  sÓ  € ò
 '€MÚ€FÚ;€Mò -€GÚ0€KÜ V°WÔ=€HÜ(°ÀÔHÐÜ&¨f¸kÔJ€OØÐ-°Ñ?Ñ?ÐÜ�=‰=˜Ó"Ð&7Ò7Ð7Ð7ò -€GÜ V°WÔ=€HØ�qŠ=Ðˆ=Ü ]¸GÈuÔU€HØ�qŠ=Ðˆ=ò
 -€GÜØ˜w°mô€Hð �qŠ=Ðˆ=ÜØØØ#Øô	€Hð �qŠ=Ðˆ=ò 3€MÚ+€FÚP€Mò 	ÚÚÚÚÚÚÚÚÚð€Gô Ø˜w°mô€Hð �qŠ=Ðˆ=ÜØØØ#ô€Hð
 �qŠ=Ðˆ=ò
 	ÚÚÚÚÚÚÚÚÚð€Gô Ø˜w°mô€Hð �cŠ>Ðˆ>ÜØØØ#ô€Hð
 �cŠ>Ð‰>rc   c                  ó  — g d¢} g d¢}g d¢g d¢g d¢g d¢g}t        | ||¬«      }|dk(  sJ ‚g d¢}t        | ||¬«      }|t        j                  |«      k(  sJ ‚g d¢g d¢g d¢g d¢g}t        | ||¬«      }t        j                  |«      d	k(  sJ ‚y
)zGTest that d2_brier_score gives expected outcomes when labels are passed)r   r<   r   r<   r—   )r    r   r    )r`   ru  rv   r   ræ   rŸ   rÏ   éýÿÿÿN)r&   rÁ   rÂ   )r`   rv   ru  r^  Únew_d2_scoreÚneg_d2_scores         ra   Útest_d2_brier_score_with_labelsr„  µ  s¥   € ò
 €FÚ€FâÚÚÚð	€Gô  V°WÀVÔL€HØ�qŠ=Ðˆ=ò €FÜ!¨¸ÈÔP€LØœ6Ÿ=™=¨Ó2Ò2Ð2Ð2ò 	ÚÚÚð	€Gô "¨¸ÈÔP€LÜ�=‰=˜Ó&¨"Ò,Ð,Ñ,rc   z!y_true, y_pred, labels, error_msg)rC   r<   rC   rÆ   r6  z7inferred from y_true is multiclass but should be binary©r÷  rö  r÷  rö  zpos_label is not specified)r   rC   r   r   rC   rC   r   z.variables with inconsistent numbers of samples)r   rC   r   rC   )gÍÌÌÌÌÌü?rø   rì   ré   z%y_prob contains values greater than 1)gš™™™™™é¿rø   rì   ré   z"y_prob contains values less than 0rÐ   rq  rm  )r<   rÆ   rÆ   r<   )rí   rí   ré   ré   )rì   rê   rí   ré   z(Multioutput target data is not supportedrä   )r    rí   ré   z"not belonging to the passed labelsrc  z*labels array needs to contain at least twoc                 óÔ   — t        j                  | «      } t        j                  |«      }t        j                  t        |¬«      5  t        | ||¬«       ddd«       y# 1 sw Y   yxY w)zMTest that d2_brier_score raises the appropriate errors
    on invalid inputs.rð   rÞ   N)rH   ÚasarrayrÁ   rÖ   r×   r&   )r`   r_   rv   Ú	error_msgs       ra   Útest_d2_brier_score_raisesr‰  Õ  sG   € ô| �Z‰Z˜Ó€FÜ�Z‰Z˜Ó€FÜ	�‰”z¨Ö	3Ü�v˜v¨fÕ5÷ 
4×	3Ñ	3ús   ÁAÁA'c                  óØ   — t        j                  dg«      } t        j                  dg«      }d}t        j                  t        |¬«      5  t        | |«       ddd«       y# 1 sw Y   yxY w)zQTest that d2_brier_score emits a warning when there are less than
    two samplesrC   r¬   z+not well-defined with less than two samplesrð   N)rH   r¡   rÁ   r  r   r&   )r`   r_   Úwarning_messages      ra   Ú4test_d2_brier_score_warning_on_less_than_two_samplesrŒ    sM   € ô �X‰X�q�c‹]€FÜ�X‰X�s�e‹_€FØC€OÜ	�‰Ô,°OÖ	DÜ�v˜vÔ&÷ 
E×	DÑ	Dús   Á
A Á A)zarray_namespace, device, _c                 ój  — t        | |«      }|j                  g d¢|¬«      }|j                  g d¢|¬«      }|j                  g d¢|¬«      }t        d¬«      5  t        |||¬«      }t	        |«      d   t	        |«      d   k(  sJ ‚t        |«      t        |«      k(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)	zœTest that `confusion_matrix` works for all array types when `labels` are passed
    such that the inner boolean `need_index_conversion` evaluates to `True`.rF  r,   )r±   r°   rÎ   T©Úarray_api_dispatchrÞ   r   N)r1   r‡  r   r   r.   Úarray_api_device)Úarray_namespacer-   r~   Úxpr`   r_   rv   r�  s           ra   Útest_confusion_matrix_array_apir“  #  s£   € ô 
˜o¨vÓ	6€Bà�Z‰Zš	¨&ˆZÓ1€FØ�Z‰Zš	¨&ˆZÓ1€FØ�Z‰Zš	¨&ˆZÓ1€Fä	¨4Ö	0Ü! &¨&¸Ô@ˆÜ˜VÓ$ QÑ'¬=¸Ó+@ÀÑ+CÒCÐCÐCÜ Ó'Ô+;¸FÓ+CÒCÐCÑC÷ 
1×	0Ñ	0ús   ÁAB)Â)B2Úprob_metricÚ
str_y_trueÚuse_sample_weightz$array_namespace, device_, dtype_namec                 óä  — t        ||«      }|rt        j                  g d¢«      nd}i }|r@t        j                  g d¢«      }	t        j                  |	«      }
d| j                  v r0d|d<   n*t        j                  g d¢«      }	|j                  |	|¬«      }
t        j                  g d	¢|¬
«      }|j                  ||¬«      } | |	|fd|i|¤Ž}t        d¬«      5   | |
|fd|i|¤Ž}ddd«       t        j                  |«      k(  sJ ‚|r-t        j                  g d¢«      }	t        j                  |	«      }
n*t        j                  g d¢«      }	|j                  |	|¬«      }
t        j                  g d¢g d¢g d¢g d¢g|¬
«      }|j                  ||¬«      } | |	|«      }t        d¬«      5   | |
|«      }ddd«       |t        j                  |«      k(  sJ ‚y# 1 sw Y   ŒôxY w# 1 sw Y   Œ0xY w)z»Test that :func:`brier_score_loss`, :func:`log_loss`, func:`d2_brier_score`
    and :func:`d2_log_loss_score` work correctly with the array API for binary
    and mutli-class inputs.
    r   Nr…  Úbrierr÷  ró   rm  r,   )r    ré   rè   rø   r   r8  TrŽ  )rˆ   r‰   rŠ   r‹   rì  rz  )rì   rì   rê   rê   )rê   rê   rè   rê   )rê   ré   rø   rê   )r1   rH   r¡   r‡  Ú__name__r   rÁ   rÂ   )r”  r•  r–  r‘  Údevice_Ú
dtype_namer’  r8  Úextra_kwargsÚ	y_true_npÚy_true_xp_or_npÚ	y_prob_npÚ	y_prob_xpÚmetric_score_npÚmetric_score_xps                  ra   Ú$test_probabilistic_metrics_array_apir£  5  sÖ  € ô 
˜o¨wÓ	7€BÙ.?”B—H‘Hš\Ô*ÀT€Mð €LÙÜ—H‘HÒ7Ó8ˆ	ÜŸ*™* YÓ/ˆØ�k×*Ñ*Ñ*ð ).ˆL˜Ò%ä—H‘Hš\Ó*ˆ	ØŸ*™* Y°w˜*Ó?ˆä—‘Ò-°ZÔ@€IØ—
‘
˜9¨W�
Ó5€IÙ!Ø�9ñØ,9ðØ=Iñ€Oô 
¨4Ö	0Ù%Ø˜Yñ
Ø6Cð
ØGSñ
ˆ÷ 
1ð
 œfŸm™m¨OÓ<Ò<Ð<Ð<ñ Ü—H‘HÒ1Ó2ˆ	ÜŸ*™* YÓ/‰ä—H‘Hš\Ó*ˆ	ØŸ*™* Y°w˜*Ó?ˆä—‘â Ú Ú Ú ð		
ð ô€Ið —
‘
˜9¨W�
Ó5€IÙ! )¨YÓ7€OÜ	¨4Ö	0Ù% o°yÓAˆ÷ 
1ð œfŸm™m¨OÓ<Ò<Ð<Ñ<÷; 
1Ð	0ú÷4 
1Ð	0ús   ÃGÆ-
G&ÇG#Ç&G/c                 óÌ  — t        ||«      }|rt        j                  g d¢«      nd}t        j                  g d¢g d¢g d¢g d¢g|¬«      }|j                  ||¬«      }t        j                  g d	¢g d
¢g d¢g d¢g|¬«      }	|j                  |	|¬«      }
 | ||	|¬«      }t	        d¬«      5   | ||
|¬«      }ddd«       t        j                  |«      k(  sJ ‚y# 1 sw Y   Œ$xY w)z°Test that :func:`brier_score_loss`, :func:`log_loss`, func:`d2_brier_score`
    and :func:`d2_log_loss_score` work correctly with the array API for
    multi-label inputs.
    r   Nrë  rm  rl  )rC   rC   r   rC   r   r,   )rç  gHáz®GÑ?gq=
×£pÝ?g¸…ëQ¸¾?)rä  gR¸…ëQØ?ç¸…ëQ¸®?gq=
×£pÍ?)r¥  gìQ¸…ëÑ?g¸…ëQ¸ž?g)\�Âõ(ä?)gìQ¸…ëÁ?g×£p=
×Ó?g¤p=
×£Ð?g�Âõ(\�Ò?rE  TrŽ  )r1   rH   r¡   r‡  r   rÁ   rÂ   )r”  r–  r‘  rš  r›  r’  r8  r�  Ú	y_true_xprŸ  r   r¡  r¢  s                ra   Ú/test_probabilistic_metrics_multilabel_array_apir§  y  sÝ   € ô 
˜o¨wÓ	7€BÙ.?”B—H‘Hš\Ô*ÀT€MÜ—‘âÚÚÚð		
ð ô€Ið —
‘
˜9¨W�
Ó5€IÜ—‘â$Ú$Ú$Ú$ð		
ð ô€Ið —
‘
˜9¨W�
Ó5€IÙ! )¨YÀmÔT€OÜ	¨4Ö	0Ù% i°È-ÔXˆ÷ 
1ð œfŸm™m¨OÓ<Ò<Ð<Ñ<÷ 
1Ð	0ús   Â+CÃC#)NF)ÏrÁ  r�   Ú	functoolsr   Ú	itertoolsr   r   r   ÚnumpyrH   rÁ   Úscipyr   r   Úscipy.spatial.distancer	   rD  Úscipy.statsr
   Úsklearnr   r   Úsklearn.baser   Úsklearn.datasetsr   Úsklearn.exceptionsr   Úsklearn.metricsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   Úsklearn.metrics._classificationr%   r&   r'   Úsklearn.model_selectionr(   Úsklearn.preprocessingr)   r*   Úsklearn.treer+   Úsklearn.utils._array_apir-   r�  r.   r/   Úsklearn.utils._mockingr0   Úsklearn.utils._testingr1   r2   r3   r4   r5   r6   Úsklearn.utils.extmathr7   Úsklearn.utils.fixesr8   r9   Úsklearn.utils.validationr:   rb   rƒ   ÚmarkÚparametrizerp  r–   r›   r§   rº   r’   rÄ   rÜ   râ   rö   r¡   rü   rþ   r  r  r!  r0  rB  rH  rV  r]  r`  rg  rk  rs  rw  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/  r2  r5  r:  r<  r>  r@  rF  rN  rQ  r_  ra  rf  ri  rr  rx  r�  r†  r‰  r‹  r�  r•  r—  rš  rœ  rž  r§  r¿  rÃ  rÅ  Ú
csr_matrixrÌ  rÐ  râ  rå  rè  rî  rð  ró  r  r
  r	  Úfloat16r  r  r  r  r"  r1  r4  r7  r9  r;  rC  rL  rN  Úthread_unsaferV  rd  rl  ro  rs  r  r„  r‰  rŒ  r“  r£  r§  rÃ   rc   ra   Ú<module>rÂ     sÁ  ðÛ 	Û Ý ß 2Ñ 2ã Û ß  Ý 8Ý !ç !Ý 'Ý ;Ý 5÷÷ ÷ ÷ ÷ õ ÷.ñ õ
 4ß @Ý /õ÷õ 1÷÷ õ .ß >Ý 7ô)(ò`>DðB ‡�×Ñ˜¨6°1°a¸¿¹Ð*@ÓAñó Bðð& ‡�×ÑØ   T˜{¨a°¨V°U¨OºiÈÐ=OÐPóñ)óð)ò(7òðD ‡�×ÑÐPÓQñó Rðð$ ‡�×ÑÐPÓQñ*Jó Rð*JðZ ‡�×ÑÐPÓQñMó RðMò,>ð6 ‡�×ÑØò ØˆB�H‰Hâ#Ú#Ú#Ú#ð	óð
	
ò .Ú=ð	
ðóñ(9ó)ð(9ð ‡�×ÑØò ØˆB�H‰Hâ#Ú#Ú#Ú#Ú#ðóð	
ò Úð	
ðóñ*;ó+ð*;ò
ò =ò*	=ò OðF ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñ%Só :ó :ð%SòPTð< ‡�×ÑØ+òóñ%óð%ò;ò&)ð ‡�×ÑØð
 #˜"Ÿ(™(Ò#5Ó6Ø"˜"Ÿ(™(Ò#5Ó6ñð Nð	
ð #˜"Ÿ(™(Ò#5Ó6Ø"˜"Ÿ(™(Ò#5Ó6ñð
Bð		
ð #˜"Ÿ(™(Ò#5Ó6Ø"˜"Ÿ(™(Ò#5Ó6ñð Nð	
ð #˜"Ÿ(™(Ò#5Ó6Ø"˜"Ÿ(™(Ò#5Ó6ñð Hð	
ð;$ó'ñP*óQ'ðP*ð ‡�×ÑØð #˜"Ÿ(™(¢?Ó3Ø"˜"Ÿ(™(¢?Ó3ñð
<ð		
ðóñ*óð*ò"ð4 ‡�×Ñ˜¨4°¨-Ó8ñMó 9ðMò;ð0 ‡�×ÑØà	�ˆØ	�ˆØ˜SÑ!Ø˜EÑ"Ø˜CÑ Ø˜CÑ ðó
ñ

ó
ð

ð ‡�×ÑØ$à˜SÑ	! 3Ð'Ø—‘ Ñ	$ b§f¡fÐ-Ø˜SÑ	! 3Ð'Ø—‘ §¡Ñ	'¨¯©Ð0Ø	�‰�—‘Ððó	ñDó	ðDð$ ‡�×ÑØ$à˜SÑ	! 3Ð'Ø—‘ Ñ	$ cÐ*Ø—‘ Ñ	$ cÐ*Ø—‘ §¡Ñ	'¨¯©Ð0Ø	�‰�—‘Ððó	ñDó	ðDò$ò>1ð ‡�×Ñ˜¨1¨a°·±¨.Ó9Ø‡�×ÑÐ)¨a¨S°1°#¨J¨<Ó8Ø‡�×ÑØàÙ� !Ô$ØØð	óñ'óó 9ó :ð'ð ‡�×ÑÐ)¨a¨S°1°#¨J¨<Ó8Ø‡�×ÑØàÙ� !Ô$ØØð	óñóó 9ðòò$2òN RòF5ðp ‡�×Ñ˜ c¨5 \Ó2ñUó 3ðUòB7(ðt ‡�×Ñ˜Ò$SÓTñ,ó Uð,ò0ò"(ò".ð& ‡�×ÑØà	Ð:Ð;Ø
ˆQˆÐAÐBðð 
Ð'Ð(ð ó ñ8óð8òð6 ‡�×Ñ˜Ò"AÓBñ0ó Cð0ò"%ò4%ò$%ò(%ò6 %òF%ò,%ò.XòIð ‡�×ÑÐPÓQñ%ó Rð%ò<6òBò(%DòPJòZ"òJò.+ð ‡�×ÑÐ8¸6À8Ð:LÓMñ	2ó Nð	2ð ‡�×ÑÐPÓQñ?Uó Rð?UðD ‡�×ÑÐPÓQñ=ó Rð=ð@ ‡�×ÑÐPÓQØ‡�×ÑØ+Ø�&˜& 2§6¡6¨2¯6©6Ð"2Ð3óñ[ó	ó Rð
[ð| ‡�×Ñ˜ ! Ó%Ø‡�×Ñ˜Ò$MÓNØ‡�×Ñ˜¨1¨a°·±¨.Ó9ñ"5ó :ó Oó &ð"5ðJ ‡�×Ñ˜Ò$MÓNñ"ó Oð"ð& ‡�×Ñ˜¨1¨a°·±¨.Ó9ñ Wó :ð WòF3ò8e0ðP ‡�×Ñ˜¨1¨a°·±¨.Ó9ñ: ó :ð: ðz ‡�×Ñ˜¨6°1°a¸¿¹Ð*@ÓAñ$ó Bð$ðN ‡�×Ñ˜¨6°1°a¸¿¹Ð*@ÓAñ$
ó Bð$
ðN ‡�×Ñ˜¨6°1°a¸¿¹Ð*@ÓAñ#(ó Bð#(òL'ò>_òD3ò=ð ‡�×ÑØà	ˆ×	Ò	˜Q˜C !  q c¨A¨3Ð/Ó	0°(Ð;Ø	ˆ×	Ò	˜Q˜C !  q c¨A¨3Ð/Ó	0°,Ð?Ø	ˆ×	Ò	šI¢y²)Ð<Ó	=¸|ÐLðóñ*óð*ò 8òAò6*ò"Nò8Pò4ò@Aò8I(ðX ‡�×Ñ˜ 2§:¢:¨r¯zªz¸2¿:º:Ð"FÓGñ
ó Hð
ð ‡�×Ñ˜ 2§:¢:¨r¯zªz¸2¿:º:Ð"FÓGñ!ó Hð!ð ‡�×ÑØâ	’IÐÚ	�a˜�V˜a ˜V a¨ VÐ,Ð-Ú	’Y¢	ª9Ð5Ð6ðóñ8óð8ò)ò$
ò$òN òFIXòX
ò&6ð ‡�×ÑØâ	Ò3Ð4Ú	Ò3Ð4Ú	Ò3Ð4ðóñ
:óð
:ð ‡�×ÑØàØÙ� #Ô&Ø'ØØØðóð ‡�×ÑØÒCóñ(óóð(ð$ ‡�×ÑØ$à	ˆ�‰�1�a�&Ó	˜8˜2Ÿ8™8 Q¨ FÓ+¨SÐ1Ø	ˆ�‰�1�a�&Ó	˜8˜2Ÿ8™8 Q¨ FÓ+¨SÐ1Ø	ˆ�‰�1�a�&Ó	˜8˜2Ÿ8™8 Q¨ FÓ+¨SÐ1Ø	ˆ�‰�1�a�&Ó	˜8˜2Ÿ8™8 Q¨ FÓ+¨SÐ1ð	óñXóðXð ‡�×ÒØ‡�×ÑØá�H¨B¯F©FÔ3Ù�K a°r·v±vÔ>Ù�O°2·6±6Ô:Ù�L°·±Ô7ð	óñVóó ðVòSòl1ò:.ò.9òb`òF-ð@ ‡�×ÑØ'ò Ú ØØEð		
ò 'Ú ØØ(ð		
ò "Ú ØØ<ð		
ò Ú ØØ3ð		
ò Ú!ØØ0ð		
ò Ø�3ˆZ˜#˜s˜ c¨3 ZÐ0ØØ,ð		
ò š<Ð(Ú!Ò#7Ð8ØØ6ð		
ò ÚšoªÐ?Ø�ˆFØ0ð		
ò ÚšoªÐ?ØˆCØ8ð		
ðc7ó:ñv6ów:ðv6ò'ð ‡�×ÑØ Ñ"KÓ"MóòDóðDð ‡�×ÑÙÐ$ h°Ð@QÐRóð ‡�×Ñ™¨¨t }Ó5Ø‡�×ÑÑ,¨u°d¨mÓ<Ø‡�×ÑÙ*Ñ,UÓ,Wóò9=óó =ó 6óð9=ðx ‡�×ÑÙÐ$ h°Ð@QÐRóð ‡�×ÑÑ,¨u°d¨mÓ<Ø‡�×ÑÙ*Ñ,UÓ,Wóò!=óó =óñ!=rc   