Ë
    uwjïJ ã                   óð  — d dl Z d dlZd dlZd dlZd dlmZ d dl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 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, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4 eeeegZ5dîd„Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;ejx                  j{                  dddg«      d„ «       Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd „ ZEd!„ ZFd"„ ZGd#„ ZHd$„ ZIejx                  j{                  d% ej”                  g d&¢«      g d'¢f ej”                  g d&¢«      dfg d(¢g d)¢fg d(¢dfg«      d*„ «       ZKejx                  j{                  d% ej”                  g d+¢«      g d'¢f ej”                  g d,¢«      g d-¢fg«      d.„ «       ZLejx                  j{                  d% ej”                  g d/¢«      dfg d0¢dfg d/¢g d'¢fg d0¢g d)¢fg«      d1„ «       ZMejx                  j{                  d2g d3¢«      d4„ «       ZNd5„ ZOejx                  j{                  d6d7 ej”                  g d/¢«      g d8¢fd7 ej”                  g d0¢«      g d9¢fd: ej”                  g d+¢«      dfd; ej”                  g d0¢«      g d<¢fd= ej”                  g d/¢«      d d>gfd= ej”                  g d0¢«      d?d@gfdA ej”                  g d/¢«      g dB¢fdA ej”                  g d0¢«      g dC¢fdD ej”                  g dE¢«      g d)¢fdD ej”                  g dC¢«      g d)¢fdD ej”                  g dB¢«      g d'¢fg«      ejx                  j{                  dFdGdHg«      dI„ «       «       ZPejx                  j{                  dJdKdLdGdMœfdNdLdHdMœfdOdGg dPœfdQdGdRdSœfdTi fg«      dU„ «       ZQdV„ ZRejx                  j{                  dWe5«      dX„ «       ZSejx                  j{                  dWe5«      dY„ «       ZTejx                  j«                  dZ«      ejx                  j{                  dWeeg«      ejx                  j{                  d[d\d]g«      d^„ «       «       «       ZVejx                  j{                  dWe5«      d_„ «       ZWejx                  j{                  dddg«      d`„ «       ZXda„ ZYejx                  j{                  dddg«      db„ «       ZZdc„ Z[dd„ Z\de„ Z]df„ Z^dg„ Z_dh„ Z`ejx                  j{                  dig dj¢g dk¢d gd gfg dj¢g dl¢d gd gfg dj¢g dm¢d gd gfg dj¢g dn¢d gd gfg do¢g dk¢g dp¢g dq¢fg do¢g dl¢g dp¢g dq¢fg do¢g dm¢g dp¢g dq¢fg do¢g dn¢g dp¢g dq¢fg dq¢g dk¢drgd gfg dq¢g dl¢d gd gfg dq¢g dm¢d gd gfg dq¢g dn¢d gd gfg ds¢g dk¢g dt¢g du¢fg ds¢g dl¢g dt¢g du¢fg ds¢g dm¢g dt¢g du¢fg ds¢g dn¢g dt¢g du¢fg dv¢g dk¢g dw¢g dx¢fg dv¢g dl¢g dw¢g dx¢fg dv¢g dm¢g dw¢g dx¢fg dv¢g dn¢g dw¢g dx¢fg«      dy„ «       Zaejx                  j{                  g dz¢g ds¢g dk¢g d{¢g du¢dfg ds¢g dk¢g d|¢g dq¢dfg ds¢g dl¢g d{¢g du¢dfg ds¢g dl¢g d|¢g dq¢dfg dv¢g dk¢g dw¢g dx¢dfg dv¢g dk¢g dw¢g dx¢dfg dv¢g dl¢g dw¢g dx¢dfg dv¢g dl¢g dw¢g dx¢dfg«      d}„ «       Zbejx                  j{                  did>d gdRdRgd>d gd d>gfd d>gdRdRgd>d gd d>gfg dj¢g d~¢dRd gd d>gfg do¢g d~¢dRd gd d>gfg dq¢g d~¢d gd gfg ds¢g d~¢g dw¢g dq¢fg dv¢g d~¢g dw¢g dk¢fg dw¢g d~¢g dw¢g dk¢fg«      d„ «       Zcd€„ Zdejx                  j{                  d�g d‚¢«      dƒ„ «       Zeejx                  j{                  d„g d…¢g d†¢g d‡¢g dˆ¢g d‰¢g«      dŠ„ «       Zfejx                  j{                  d‹d d>gg dk¢dŒfg dq¢d dRgdŒfg d�¢g dk¢dŽfg d�¢g dk¢dŽfg d�¢g d‘¢d’fg«      d“„ «       Zgd”„ Zhd•„ Zid–„ Zjd—„ Zkd˜„ Zld™„ Zmdš„ Zn	 dïdœ„Zoejx                  j{                  d�eiemelejf«      ejx                  j{                  džeenf«      dŸ„ «       «       Zpd „ Zqejx                  j{                  d¡d¢«      ejx                  j{                  d£d¤«      ejx                  j{                  d¥ erd>«      «      d¦„ «       «       «       Zsd§„ Ztd¨„ Zud©„ Zvejx                  j{                  dªg dv¢g d~¢fg dv¢g d~¢gfg dv¢gg d~¢fg«      d«„ «       Zwd¬„ Zxejx                  j{                  d­e0«      d®„ «       Zyd¯„ Zzd°„ Z{d±„ Z|d²„ Z}d³„ Z~d´„ Zdµ„ Z€d¶„ Z�ejx                  j{                  d·ddg«      d¸„ «       Z‚d¹„ Zƒdº„ Z„d»„ Z…d¼„ Z†ejx                  j{                  d½g dB¢d>d¾fg dB¢d¿dRfg dB¢dÀdÁfg«      dÂ„ «       Z‡ejx                  j{                  dÃ ej”                  g dÄ¢«      d>d>f ej”                  g dÅ¢«      d>dRf ej”                  g dÅ¢«      d¿d>f ej”                  g dÆ¢«      d>d>f ej”                  g dÇ¢«      d>dRf ej”                  g dÇ¢«      d¿d>fg«      dÈ„ «       Zˆejx                  j{                  dÉ ej”                  g dÊ¢«      dÁg dB¢f ej”                  g du¢«      dRg dB¢f ej”                  g dË¢«      dRg dB¢f ej”                  g dÌ¢«      dÁg dÍ¢fg«      ejx                  j{                  dÎddg«      dÏ„ «       «       Z‰dÐ„ ZŠejx                  j{                  d½g dB¢d>d¾fg dB¢d¿dRfg dB¢dÀd>fg«      dÑ„ «       Z‹ejx                  j{                  dÒg dB¢dÓfg dB¢d›fg«      dÔ„ «       ZŒejx                  j{                  dÕg dÖ¢g d×¢g dØ¢g dÙ¢g dÚ¢gddÛfg dB¢g d×¢g dØ¢g dÙ¢g dÚ¢gddÜfg dÝ¢g d×¢g dØ¢g dÙ¢g dÚ¢gg d0¢dÞfg dÝ¢g d×¢g dØ¢g dÙ¢g dÚ¢gg d<¢dßfg dà¢g d×¢g dØ¢g dÙ¢g dÚ¢gg dB¢dáfg dà¢g d×¢g dØ¢g dÙ¢g dÚ¢gg dâ¢dãfd d>gg dä¢g då¢gddæfg«      dç„ «       Z�ejx                  j{                  d­e0«      dè„ «       ZŽejx                  j{                  déeeeeg«      ejx                  j{                  dêg dë¢«      dì„ «       «       Z�dí„ Z�y)ðé    N)Ústats)Údatasets)Úmake_multilabel_classification)ÚUndefinedMetricWarning)ÚLogisticRegression)Úaccuracy_scoreÚaucÚaverage_precision_scoreÚconfusion_matrix_at_thresholdsÚcoverage_errorÚ	dcg_scoreÚ	det_curveÚ%label_ranking_average_precision_scoreÚlabel_ranking_lossÚ
ndcg_scoreÚprecision_recall_curveÚroc_auc_scoreÚ	roc_curveÚtop_k_accuracy_score)Ú_dcg_sample_scoresÚ_ndcg_sample_scores)Útrain_test_split)Úlabel_binarize)Ú_sparse_random_matrix)Ú_convert_containerÚassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)Úsoftmax)ÚCSR_CONTAINERS)Úcheck_arrayÚcheck_consistent_lengthÚ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        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   éÈ   ©Úrandom_stateé   )r   Ú	load_irisÚdataÚtargetÚshapeÚnpÚaranger$   ÚshuffleÚintÚrandomÚRandomStateÚc_Úrandnr   ÚfitÚpredict_probaÚpredict)ÚdatasetÚbinaryÚXÚyÚ	n_samplesÚ
n_featuresÚpÚrngÚhalfÚclfÚy_scoreÚy_predÚy_trues                úg/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_ranking.pyÚmake_predictionrI   :   sE  € ð €ä×$Ñ$Ó&ˆà�‰€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ô ¨!Ô
,€CØ�g‰g�a˜˜�h  % 4 Ó)×7Ñ7¸¸$¸%¸ÓA€Gáð š!˜Q˜$‘-ˆà�[‰[˜˜4˜5˜Ó"€FØˆtˆuˆX€FØ�6˜7Ð"Ð"ó    c                 ó  — t        j                  | «      d   }|| |k(     }|| |k7     }|j                  dd«      |j                  dd«      z
  }t        j                  |dkD  «      }|t	        t        |«      t        |«      z  «      z  S )zKAlternative implementation to check for correctness of
    `roc_auc_score`.r+   éÿÿÿÿr   )r0   ÚuniqueÚreshapeÚsumÚfloatÚlen)rG   rE   Ú	pos_labelÚposÚnegÚdiff_matrixÚ	n_corrects          rH   Ú_aucrW   j   s†   € ô —	‘	˜&Ó! !Ñ$€Ið �&˜IÑ%Ñ
&€CØ
�&˜IÑ%Ñ
&€CØ—+‘+˜a Ó$ s§{¡{°2°qÓ'9Ñ9€KÜ—‘�{ Q‘Ó'€Ià”uœS ›X¬¨C«Ñ0Ó1Ñ1Ð1rJ   c                 ó`  — t        j                  | «      d   }t        j                  | |k(  «      }t        j                  |«      ddd…   }||   }| |   } d}t	        t        |«      «      D ]<  }| |   |k(  sŒd}t	        d|dz   «      D ]  }| |   |k(  sŒ|dz  }Œ ||dz   z  }||z  }Œ> ||z  S )a>  Alternative implementation to check for correctness of
    `average_precision_score`.

    Note that this implementation fails on some edge cases.
    For example, for constant predictions e.g. [0.5, 0.5, 0.5],
    y_true = [1, 0, 0] returns an average precision of 0.33...
    but y_true = [0, 0, 1] returns 1.0.
    r+   NrL   r   ç      ð?)r0   rM   rO   ÚargsortÚrangerQ   )	rG   rE   rR   Ún_posÚorderÚscoreÚiÚprecÚjs	            rH   Ú_average_precisionrb   y   sË   € ô —	‘	˜&Ó! !Ñ$€IÜ�F‰F�6˜YÑ&Ó'€EÜ�J‰J�wÓ¡ " Ñ%€EØ�e‰n€GØ�E‰]€Fà€EÜ”3�w“<Ö ˆØ�!‰9˜	Ó!ð ˆDÜ˜1˜a !™e–_�Ø˜!‘9 	Ó)Ø˜C‘K‘Dð %ð �A˜‘G‰OˆDØ�T‰M‰Eð !ð �5‰=ÐrJ   c                 óÜ   — t        | |«      \  }}}t        t        |«      «      }t        t        |«      «      }d}t        dt	        |«      «      D ]  }|||   ||   ||dz
     z
  z  z  }Œ |S )ao  A second alternative implementation of average precision that closely
    follows the Wikipedia article's definition (see References). This should
    give identical results as `average_precision_score` for all inputs.

    References
    ----------
    .. [1] `Wikipedia entry for the Average precision
       <https://en.wikipedia.org/wiki/Average_precision>`_
    r   r+   )r   ÚlistÚreversedr[   rQ   )rG   rE   Ú	precisionÚrecallÚ	thresholdÚaverage_precisionr_   s          rH   Ú_average_precision_slowrj   —   s{   € ô $:¸&À'Ó#JÑ €Iˆv�yÜ”X˜iÓ(Ó)€IÜ”(˜6Ó"Ó#€FØÐÜ�1”c˜)“nÖ%ˆØ˜Y q™\¨V°A©Y¸ÀÀAÁ¹Ñ-FÑGÑGÑð &àÐrJ   c                 óŠ   — d„ } || ||«      \  }}t        ||«      }d}|}d||z
  z  ||z   z  }	||z
  }
dd||	z
  |
|	z
  z  z   z  S )zcAlternative implementation to check for correctness of `roc_auc_score`
    with `max_fpr` set.
    c                 ó.  — t        | |«      \  }}}|||k     }t        j                  ||«      }|||k     }t        j                  ||kD  «      }|dz
  }	||	   ||   g}
||	   ||   g}t        j                  |t        j                  ||
|«      «      }||fS )Nr+   )r   r0   ÚappendÚargmaxÚinterp)rG   Ú	y_predictÚmax_fprÚfprÚtprÚ_Únew_fprÚnew_tprÚidx_outÚidx_inÚx_interpÚy_interps               rH   Ú_partial_rocz,_partial_roc_auc_score.<locals>._partial_roc¯   s§   € Ü ¨	Ó2‰ˆˆS�!Ø�c˜W‘nÑ%ˆÜ—)‘)˜G WÓ-ˆØ�c˜W‘nÑ%ˆÜ—)‘)˜C '™MÓ*ˆØ˜1‘ˆØ˜‘K  W¡Ð.ˆØ˜‘K  W¡Ð.ˆÜ—)‘)˜G¤R§Y¡Y¨w¸À(Ó%KÓLˆØ˜Ð!Ð!rJ   r   ç      à?r+   )r	   )rG   rp   rq   r{   ru   rv   Úpartial_aucÚfpr1Úfpr2Úmin_areaÚmax_areas              rH   Ú_partial_roc_auc_scorer‚   ª   ss   € ò

"ñ $ F¨I°wÓ?Ñ€GˆWÜ�g˜wÓ'€Kð €DØ€DØ�d˜T‘kÑ" d¨T¡kÑ2€HØ�d‰{€HØ�!�{ XÑ-°(¸XÑ2EÑFÑFÑGÐGrJ   c                 óâ  — t         j                  j                  | «      }d}|j                  ddd¬«      }|j	                  d¬«      }t        j
                  |«      }||z
  }t        ||«      \  }}}	}
}t        |«      t        |«      cxk(  r-t        |	«      cxk(  rt        |
«      cxk(  rt        |«      k(  sJ ‚ J ‚t        |
|	z   |«       t        ||z   |«       t        ||z   |	z   |
z   |«       y)z.Smoke test for confusion_matrix_at_thresholds.éd   r   r&   ©ÚsizeN)	r0   r4   r5   ÚrandintÚuniformrO   r   rQ   r   )Úglobal_random_seedrB   r?   rG   rE   r\   Ún_negÚtnsÚfpsÚfnsÚtpsÚ
thresholdss               rH   Ú#test_confusion_matrix_at_thresholdsr�   Æ   sØ   € ä
�)‰)×
Ñ
Ð 2Ó
3€Cà€IØ�[‰[˜˜A Cˆ[Ó(€FØ�k‰k˜sˆkÓ#€Gä�F‰F�6‹N€EØ˜Ñ€Eä%CÀFÈGÓ%TÑ"€Cˆˆc�3˜
äˆs‹8”s˜3“xÔJ¤3 s£8ÔJ¬s°3«xÔJ¼3¸z»?ÒJÐJÑJÐJÐJÜ�C˜#‘I˜uÔ%Ü�C˜#‘I˜uÔ%Ü�C˜#‘I ‘O cÑ)¨9Õ5rJ   ÚdropTc                 ó,  — t        d¬«      \  }}}t        ||«      }t        ||| ¬«      \  }}}t        ||«      }t	        ||d¬«       t        |t        ||«      «       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )NT©r<   ©Údrop_intermediater&   ©Údecimal)rI   rW   r   r	   r   r   r   r/   )	r‘   rG   rt   rE   Úexpected_aucrr   rs   r�   Úroc_aucs	            rH   Útest_roc_curverš   Ù   sŒ   € ô )°Ô5Ñ€FˆAˆwÜ˜ Ó(€Lä$ V¨WÈÔMÑ€CˆˆjÜ�#�s‹m€GÜ˜g |¸QÕ?Ü˜¤¨v°wÓ!?Ô@Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rJ   c                  ó`  — t         j                  j                  d«      } t        j                  dgdz  dgdz  z   «      }| j	                  dd¬«      }t        ||d¬«      \  }}}|d   dk(  sJ ‚|d	   dk(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )
Nr   é2   r+   é   r„   r…   Tr”   rL   )r0   r4   r5   Úarrayr‡   r   r/   )rB   rG   rF   rr   rs   Úthrs         rH   Útest_roc_curve_end_pointsr    ç   s©   € ô �)‰)×
Ñ
 Ó
"€CÜ�X‰X�q�c˜B‘h !  r¡Ñ)Ó*€FØ�[‰[˜ ˆ[Ó%€FÜ˜f fÀÔE�M€CˆˆcØˆq‰6�QŠ;Ðˆ;Øˆr‰7�aŠ<Ðˆ<Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜Ÿ	™	Ò!Ð!Ñ!rJ   c                  ól  — t        d¬«      \  } }}t        | |«      \  }}}g }|D ]I  }t        j                  ||k\  | z  «      }t        j                  | «      }	|j	                  d|z  |	z  «       ŒK t        ||d¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )NTr“   rY   r&   r–   )rI   r   r0   rO   rm   r   r/   )
rG   rt   rE   rr   rs   r�   Útpr_correctÚtÚtprA   s
             rH   Útest_roc_returns_consistencyr¥   ô   s¯   € ô )°Ô5Ñ€FˆAˆwÜ$ V¨WÓ5Ñ€Cˆˆjð €KÛˆÜ�V‰V�W ‘\ VÑ+Ó,ˆÜ�F‰F�6‹NˆØ×Ñ˜3 ™8 a™<Õ(ð ô ˜c ;¸Õ:Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rJ   c                  ó˜   — t        d¬«      \  } }}t        j                  t        «      5  t	        | |«       d d d «       y # 1 sw Y   y xY w)NFr“   )rI   ÚpytestÚraisesÚ
ValueErrorr   )rG   rt   rE   s      rH   Útest_roc_curve_multirª     s5   € ä(°Ô6Ñ€FˆAˆwä	�‰”zÕ	"Ü�&˜'Ô"÷ 
#×	"Ñ	"ús   ªA Á A	c                  óê   — t        d¬«      \  } }}t        | |dz
  «      \  }}}t        ||«      }t        |dd¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )NTr“   r|   çÍÌÌÌÌÌì?r&   r–   )rI   r   r	   r   r/   )rG   rt   rE   rr   rs   r�   r™   s          rH   Útest_roc_curve_confidencer­     so   € ä(°Ô5Ñ€FˆAˆwä$ V¨W°s©]Ó;Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rJ   c                  óà  — t        d¬«      \  } }}t        j                  | j                  «      }t	        | |«      \  }}}t        ||«      }t        |dd¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚t        j                  | j                  «      }t	        | |«      \  }}}t        ||«      }t        |dd¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚t	        | |«      \  }}}t        ||«      }t        |dd¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )NTr“   r|   r&   r–   gö(\�Âõè?)rI   r0   Úonesr/   r   r	   r   Úzeros)rG   ÚpredrE   Útrivial_predrr   rs   r�   r™   s           rH   Útest_roc_curve_hardr³     sE  € ä+°4Ô8Ñ€FˆD�'ô —7‘7˜6Ÿ<™<Ó(€LÜ$ V¨\Ó:Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ð(ô —8‘8˜FŸL™LÓ)€LÜ$ V¨\Ó:Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ð(ô % V¨TÓ2Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rJ   c                  óþ  — g d¢} g d¢}d}t        j                  t        |¬«      5  t        | |«      \  }}}d d d «       t	        t        j                  t        «      t
        j                  «      «       |j                  j                  k(  sJ ‚|j                  |j                  k(  sJ ‚d}t        j                  t        |¬«      5  t        | D �cg c]  }d|z
  ‘Œ	 c}|«      \  }}}d d d «       t	        |t        j                  t        |«      t
        j                  «      «       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y # 1 sw Y   �Œ,xY wc c}w # 1 sw Y   Œ‰xY w)N)
r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   )
r   r+   r   r+   r   r+   r   r+   r   r+   úINo negative samples in y_true, false positive value should be meaningless©ÚmatchúHNo positive samples in y_true, true positive value should be meaninglessr+   )
r§   Úwarnsr   r   r   r0   ÚfullrQ   Únanr/   )rG   rF   Úexpected_messagerr   rs   r�   Úxs          rH   Útest_roc_curve_one_labelr¾   6  s>  € Ú+€FÚ+€Fð 	Tð ô 
�‰Ô,Ð4DÖ	EÜ(¨°Ó8ÑˆˆS�*÷ 
Fô �sœBŸG™G¤C¨
£O´R·V±VÓ<Ô=Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ð(ð 	Sð ô 
�‰Ô,Ð4DÖ	EÜ(¹Ó)@¹°A¨!¨a«%¸Ñ)@À&ÓIÑˆˆS�*÷ 
Fô �sœBŸG™G¤C¨
£O´R·V±VÓ<Ô=Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(÷# 
FÑ	Eüò *A÷ 
FÐ	Eús)   ¦E!Ã	
E3ÃE.
ÃE3Å!E+Å.E3Å3E<c                  ó„  — ddg} ddg}t        | |«      \  }}}t        | |«      }t        |g d¢«       t        |g d¢«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |g d¢«       t        |g d¢«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |ddg«       t        |ddg«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |g d¢«       t        |g d¢«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |ddg«       t        |ddg«       t        |d«       ddg} dd	g}d
}t	        j
                  t        |¬«      5  t        | |«      \  }}}d d d «       t        |g d¢«       t        |t        j                  t        j                  t        j                  g«       d}t	        j
                  t        |¬«      5  t        | |«      }d d d «       t        j                  «      sJ ‚ddg} dd	g}d}t	        j
                  t        |¬«      5  t        | |«      \  }}}d d d «       t        |t        j                  t        j                  t        j                  g«       t        |g d¢«       d}t	        j
                  t        |¬«      5  t        | |«      }d d d «       t        j                  |«      sJ ‚t        j                  ddgddgg«      } t        j                  ddgddgg«      }t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        j                  ddgddgg«      } t        j                  ddgddgg«      }t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        j                  ddgddgg«      } t        j                  ddgddgg«      }t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        j                  ddgddgg«      } t        j                  ddgddgg«      }t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      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   �ŒrxY w# 1 sw Y   �ŒçxY w# 1 sw Y   �ŒÂxY w)Nr   r+   ©r   r   r+   ©r   r+   r+   rY   ç        r|   ç      Ð?ç      è?r¸   r¶   ©rÂ   r|   rY   úOOnly one class is present in y_true. ROC AUC score is not defined in that case.rµ   Úmacro©ÚaverageÚweightedÚsamplesÚmicro)r   r   r   r   r§   r¹   r   r0   r»   ÚmathÚisnanrž   )rG   rE   rs   rr   rt   r™   r¼   r	   s           rH   Útest_roc_curve_toydatarÏ   Q  s…  € à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c¢9Ô-Ü˜c¢9Ô-Ü˜ Ô%à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c¢9Ô-Ü˜c¢9Ô-Ü˜ Ô%à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c A q 6Ô*Ü˜c A q 6Ô*Ü˜ Ô%à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c¢9Ô-Ü˜c¢9Ô-Ü˜ Ô%à�ˆV€FØ�Cˆj€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c A q 6Ô*Ü˜c A q 6Ô*Ü˜ Ô%ð �ˆV€FØ�Tˆl€Gð 	Sð ô 
�‰Ô,Ð4DÖ	EÜ ¨Ó0‰ˆˆS�!÷ 
Fä˜c¢?Ô3Ü˜c¤B§F¡F¬B¯F©F´B·F±FÐ#;Ô<ð	5ð ô 
�‰Ô,Ð4DÖ	EÜ˜F GÓ,ˆ÷ 
Fä�:‰:�cŒ?Ðˆ?ð �ˆV€FØ�Tˆl€Gð 	Tð ô 
�‰Ô,Ð4DÖ	EÜ ¨Ó0‰ˆˆS�!÷ 
Fä˜c¤B§F¡F¬B¯F©F´B·F±FÐ#;Ô<Ü˜c¢?Ô3ð	5ð ô 
�‰Ô,Ð4DÖ	EÜ˜F GÓ,ˆ÷ 
Fä�:‰:�cŒ?Ðˆ?ô �X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜A˜  A Ð'Ó(€GÜ	�‰Ô,Ð4DÖ	EÜ�f˜g¨wÕ7÷ 
Fä	�‰Ô,Ð4DÖ	EÜ�f˜g¨zÕ:÷ 
Fäœ f¨g¸yÔIÈ3ÔOÜœ f¨g¸wÔGÈÔMä�X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜A˜  A Ð'Ó(€GÜ	�‰Ô,Ð4DÖ	EÜ�f˜g¨wÕ7÷ 
Fä	�‰Ô,Ð4DÖ	EÜ�f˜g¨zÕ:÷ 
Fäœ f¨g¸yÔIÈ3ÔOÜœ f¨g¸wÔGÈÔMä�X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜A˜  A Ð'Ó(€GÜœ f¨g¸wÔGÈÔKÜœ f¨g¸zÔJÈAÔNÜœ f¨g¸yÔIÈ1ÔMÜœ f¨g¸wÔGÈÔKä�X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜c˜
 S¨# JÐ/Ó0€GÜœ f¨g¸wÔGÈÔMÜœ f¨g¸zÔJÈCÔPÜœ f¨g¸yÔIÈ3ÔOÜœ f¨g¸wÔGÈÕM÷} 
FÑ	Eú÷ 
FÑ	Eú÷ 
FÑ	Eú÷ 
FÑ	Eú÷ 
FÑ	Eúç	EÑ	Eú÷ 
FÑ	Eúç	EÑ	Eús`   Æ"WÈW'É0W4Ë-XÍ*XÎXÐ4X(Ñ&X5×W$×'W1×4W>ØXØXØX%Ø(X2Ø5X?c            	      óè   — g d¢} g d¢}t        | |d¬«      \  }}}t        |t        j                  dddg«       g d¢} g d	¢}t        | |d¬«      \  }}}t        |t        j                  dd
dddg«       y )N©r   r   r   r   r+   r+   ©rÂ   çš™™™™™É?r|   ç333333ã?çffffffæ?rY   Tr”   rY   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¬   rY   r¬   rÔ   )r   r   r0   Úinf)rG   rE   rs   rr   r�   s        rH   Ú test_roc_curve_drop_intermediaterÛ   Ã  st   € â€FÚ,€GÜ$ V¨WÈÔMÑ€CˆˆjÜ˜j¬2¯6©6°3¸¸SÐ*AÔBò 5€FÚO€GÜ$ V¨WÈÔMÑ€CˆˆjÜ˜j¬2¯6©6°3¸¸SÀ#ÀsÐ*KÕLrJ   c                  ó  — g d¢} g d¢}t        j                  dd«      }t        | ||¬«      \  }}}t        j                  |«      dk  j	                  «       dk(  sJ ‚t        j                  |«      dk  j	                  «       dk(  sJ ‚y )N©r   r   r+   r+   r+   )rØ   rÕ   ç333333Ó?çš™™™™™Ù?r|   rÓ   é   ©Úsample_weightr   )r0   Úrepeatr   ÚdiffrO   )rG   rE   râ   rr   rs   rt   s         rH   Ú!test_roc_curve_fpr_tpr_increasingrå   Ñ  sz   € ò €FÚ'€GÜ—I‘I˜c 1Ó%€MÜ˜F G¸=ÔI�K€CˆˆaÜ�G‰G�C‹L˜1Ñ×!Ñ!Ó# qÒ(Ð(Ð(Ü�G‰G�C‹L˜1Ñ×!Ñ!Ó# qÒ(Ð(Ñ(rJ   c                  ó0  — ddg} ddg}t        t        | |«      d«       ddg} ddg}t        t        | |«      d«       g d¢} g d¢}t        t        | |«      d«       ddg} ddg}t        t        | |«      d«       g d¢} g d¢}t        t        | |«      d«       y )Nr   r+   r|   ©r+   r   r   rÁ   ©r   r|   r+   )r   r	   )r½   r>   s     rH   Útest_aucré   Ý  sœ   € à	
ˆAˆ€AØ	
ˆAˆ€AÜœc ! Q›i¨Ô-Ø	
ˆAˆ€AØ	
ˆAˆ€AÜœc ! Q›i¨Ô-Ú€AÚ€AÜœc ! Q›i¨Ô-Ø	
ˆAˆ€AØ	
ˆAˆ€AÜœc ! Q›i¨Ô+Ú€AÚ€AÜœc ! Q›i¨Õ-rJ   c                  óî  — t        j                  t        «      5  t        g d¢ddg«       d d d «       t        j                  t        «      5  t        dgdg«       d d d «       g d¢} g d¢}dj	                  t        j                  | «      «      }t        j                  t        t        j                  |«      ¬«      5  t        | |«       d d d «       y # 1 sw Y   Œ©xY w# 1 sw Y   Œ…xY w# 1 sw Y   y xY w)	NrÅ   rØ   rÓ   rÂ   )r&   r+   r�   é   )rà   é   é   é   z+x is neither increasing nor decreasing : {}r¶   )	r§   r¨   r©   r	   Úformatr0   rž   ÚreÚescape)r½   r>   Úerror_messages      rH   Útest_auc_errorsró   ð  s¬   € ä	�‰”zÕ	"ÜŠO˜c 3˜ZÔ(÷ 
#ô 
�‰”zÕ	"ÜˆSˆE�C�5Ô÷ 
#ò 	€AÚ€AØA×HÑHÌÏÉÐRSËÓU€MÜ	�‰”z¬¯©°=Ó)AÖ	BÜˆAˆqŒ	÷ 
CÐ	B÷ 
#Ð	"ú÷ 
#Ð	"ú÷ 
CÐ	Bús#   šCÁCÂ=C+ÃCÃC(Ã+C4zy_true, labels)r   r+   r   r&   ©r   r+   r&   )ÚaÚbrõ   Úc)rõ   rö   r÷   c           	      óv  — t        j                  g d¢g d¢g d¢g d¢g«      }t        g d¢g d¢«      }t        g d¢g d¢«      }||z   d	z  }t        g d
¢g d¢«      }t        g d¢g d¢«      }||z   d	z  }t        ddgddg«      }	t        ddgddg«      }
|	|
z   d	z  }||z   |z   dz  }t        t        | ||d¬«      |«       |||g}g d¢}t        j                  ||¬«      }t        t        | ||dd¬«      |«       d}t        j                  t        |¬«      5  t        | ||dd ¬«       d d d «       y # 1 sw Y   y xY w)N©rØ   rÙ   rØ   ©rÞ   rß   rÞ   ©çffffffÖ?r|   ç333333Ã?©r   rÓ   rÙ   ©r+   r   r+   )rØ   rÞ   rü   ©r   r+   r   )rÙ   rß   r|   r&   ©r+   r+   r   )rØ   rü   r   rÀ   )rØ   rý   rÙ   r+   r   rß   rÓ   rÞ   rÙ   r�   Úovo©ÚlabelsÚmulti_class)rÄ   rÄ   r|   )ÚweightsrÊ   ©r  r  rÉ   z6average=None is not implemented for multi_class='ovo'.r¶   )r0   rž   r   r   rÉ   r§   r¨   ÚNotImplementedError)rG   r  Úy_scoresÚscore_01Úscore_10Úaverage_score_01Úscore_02Úscore_20Úaverage_score_02Úscore_12Úscore_21Úaverage_score_12Úovo_unweighted_scoreÚpair_scoresÚ
prevalenceÚovo_weighted_scorerò   s                    rH   Ú#test_multiclass_ovo_roc_auc_toydatar    s]  € ô �x‰xÚ	š/Ò+<ºmÐLó€Hô šYÒ(8Ó9€HäšYªÓ8€HØ  8Ñ+¨qÑ0Ðô šYªÓ7€HÜšYÒ(8Ó9€HØ  8Ñ+¨qÑ0Ðô ˜a ˜V c¨3 ZÓ0€HÜ˜a ˜V c¨3 ZÓ0€HØ  8Ñ+¨qÑ0Ðð -Ð/?Ñ?ÐBRÑRÐVWÑWÐÜÜ�f˜h¨vÀ5ÔIØôð $Ð%5Ð7GÐH€KÚ#€JÜŸ™ K¸ÔDÐÜÜØ�H V¸È
ô	
ð 	ô	ð M€MÜ	�‰Ô*°-Ö	@Ü�f˜h¨vÀ5ÐRVÕW÷ 
A×	@Ñ	@ús   ÄD/Ä/D8)r   r&   r   r&   )rõ   Údrõ   r  )rõ   rö   r  c           	      óü   — t        j                  g d¢g d¢g d¢g d¢g«      }t        g d¢g d¢«      }t        g d¢g d¢«      }||z   d	z  }t        t        | ||d
¬«      |«       t        t        | ||d
d¬«      |«       y )N)rÓ   rÂ   rÙ   )rÔ   rÂ   rß   )çš™™™™™á?rÂ   çÍÌÌÌÌÌÜ?)rß   rÂ   rÔ   )r+   r   r+   r   )rÓ   rÔ   r  rß   )r   r+   r   r+   )rÙ   rß   r  rÔ   r&   r  r  rÊ   r  ©r0   rž   r   r   )rG   r  r	  r
  r  Ú	ovo_scores         rH   Ú*test_multiclass_ovo_roc_auc_toydata_binaryr  <  s„   € ô �x‰xÚ	š/Ò+<ºoÐNó€Hô š\Ò+@ÓA€Häš\Ò+@ÓA€HØ˜HÑ$¨Ñ)€IäÜ�f˜h¨vÀ5ÔIÈ9ôô
 ÜØ�H V¸È
ô	
ð 	õ	rJ   )r   r+   r&   r&   )rõ   rö   r÷   r÷   c           	      óœ  — t        j                  g d¢g d¢g d¢g d¢g«      }t        g d¢|d d …df   «      }t        g d¢|d d …df   «      }t        g d	¢|d d …d
f   «      }t        t        | |d|d ¬«      |||g«       ||z   |z   dz  }t        t        | |d|¬«      |«       |dz  |dz  z   |dz  z   }t        t        | |d|d¬«      |«       y )N©rY   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&   Úovr)r  r  rÉ   g      @)r  r  rÃ   r|   rÊ   r  )rG   r  r	  Úout_0Úout_1Úout_2Úresult_unweightedÚresult_weighteds           rH   Ú#test_multiclass_ovr_roc_auc_toydatar)  `  së   € ô �x‰xÚ	š/ª?ºOÐLó€Hô
 š,¨²°A°©Ó7€EÜš,¨²°A°©Ó7€EÜš,¨²°A°©Ó7€EÜÜ�f˜h°EÀ&ÐRVÔWØ	��uÐôð  ™¨Ñ.°#Ñ5ÐÜÜ�f˜h°EÀ&ÔIØôð ˜d‘l U¨T¡\Ñ1°E¸C±KÑ?€OÜÜØ�H¨%¸È
ô	
ð 	õ	rJ   zmulti_class, average))r#  rÇ   )r#  rÌ   )r  rÇ   c                 óB  — t        j                  g d¢«      }g d¢g d¢g d¢g d¢g}t        t        ||| |¬«      d«       g d¢g d¢g d¢g d¢g}t        ||| |¬«      dk  sJ ‚dt        j                  d	«      z  }t        ||| |¬«      t        j                  d
«      k(  sJ ‚y )N)r�   r+   r&   r   )rÂ   rÂ   rÂ   rY   )rÂ   rY   rÂ   rÂ   )rÂ   rÂ   rY   rÂ   )rÄ   çš™™™™™©?r+  rý   ©r  rÉ   rY   rÃ   )rë   rë   r|   )r0   rž   r   r   r¯   r§   Úapprox)r  rÉ   rG   Ú	y_perfectÚy_imperfectÚy_chances         rH   Ú0test_perfect_imperfect_chance_multiclass_roc_aucr1  ‹  s¹   € ô �X‰X’lÓ#€Fò 	ÚÚÚ ð	€Iô Ü�f˜i°[È'ÔRØôò 	ÚÚÚð	€Kô 	�f˜k°{ÈGÔTØ
ò	ðð	ð
 ”b—g‘g˜f“oÑ%€HÜØ� k¸7ôä	�‰�sÓ	òð ñ rJ   c           
      óÜ  — | }t         j                  j                  g d¢d|¬«      }t        j                  |D �cg c]2  }t         j
                  j                  d||¬«      j                  «       ‘Œ4 c}«      }t        |g d¢¬«      }t        |j                  «       |j                  «       «      \  }}}t        ||«      }	t        ||dd	¬
«      }
|	t        j                  |
«      k(  sJ ‚y c c}w )N)ç       @rY   r|   éè  )r†   r*   r+   )ÚnrA   r*   rô   )Úclassesr#  rÌ   r,  )r   Ú	dirichletÚrvsr0   ÚasarrayÚmultinomialrn   r   r   Úravelr	   r   r§   r-  )r‰   ÚseedrF   Úy_pred_irG   Úy_onehotrr   rs   rt   Úroc_auc_by_handÚroc_auc_autos              rH   Útest_micro_averaged_ovr_roc_aucrA  µ  sÔ   € Ø€Dô
 �_‰_× Ñ ¢°tÈ$Ð ÓO€FÜ�Z‰Zñ #ó	
á"�ô ×Ñ×!Ñ! A¨ÀÐ!ÓE×LÑLÕNØ"ñ	
ó€Fô ˜fªiÔ8€HÜ˜HŸN™NÓ,¨f¯l©l«nÓ=�K€CˆˆaÜ˜#˜s“m€OÜ  ¨¸UÈGÔT€LØœfŸm™m¨LÓ9Ò9Ð9Ñ9ùò	
s   º7C)zmsg, y_true, labelsz!Parameter 'labels' must be unique©r   r&   r   )rõ   rõ   rö   zKNumber of classes in y_true not equal to the number of columns in 'y_score'z"Parameter 'labels' must be ordered)rõ   r÷   rö   zMNumber of given labels, 2, not equal to the number of columns in 'y_score', 3r+   rõ   rö   zMNumber of given labels, 4, not equal to the number of columns in 'y_score', 3)r   r+   r&   r�   )rõ   rö   r÷   r  z2'y_true' contains labels not in parameter 'labels')rõ   rö   r÷   Úer  r  r#  c                 óÄ   — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  t        | ¬«      5  t        ||||¬«       d d d «       y # 1 sw Y   y xY w)Nrù   rú   rû   rþ   r¶   r  )r0   rž   r§   r¨   r©   r   )ÚmsgrG   r  r  r	  s        rH   Ú*test_roc_auc_score_multiclass_labels_errorrF  É  sJ   € ôR �x‰xÚ	š/Ò+<ºmÐLó€Hô 
�‰”z¨Ö	-Ü�f˜h¨vÀ;ÕO÷ 
.×	-Ñ	-ús   ½AÁAzmsg, kwargszLaverage must be one of \('macro', 'weighted', None\) for multiclass problemsrË   )rÉ   r  zUaverage must be one of \('micro', 'macro', 'weighted', None\) for multiclass problemszksample_weight is not supported for multiclass one-vs-one ROC AUC, 'sample_weight' must be None in this case)r  râ   z|Partial AUC computation not available in multiclass setting, 'max_fpr' must be set to `None`, received `max_fpr=0.5` insteadr|   )r  rq   z'multi_class must be in \('ovo', 'ovr'\)c                 óö   — t        d«      }|j                  dd«      }t        |«      }|j                  ddd¬«      }t	        j
                  t        | ¬«      5  t        ||fi |¤Ž d d d «       y # 1 sw Y   y xY w)Né”  é   r�   r   r…   r¶   )r$   Úrandr    r‡   r§   r¨   r©   r   )rE  ÚkwargsrB   rE   Úy_probrG   s         rH   Ú#test_roc_auc_score_multiclass_errorrM    se   € ôN ˜SÓ
!€CØ�h‰h�r˜1‹o€GÜ�WÓ€FØ�[‰[˜˜A Bˆ[Ó'€FÜ	�‰”z¨Ö	-Ü�f˜fÑ/¨Ò/÷ 
.×	-Ñ	-ús   ÁA/Á/A8c                  ó4  — t        d«      } | j                  d«      }t        j                  dd¬«      }d}t	        j
                  t        |¬«      5  t        ||«       d d d «       t        j                  dd¬«      }t	        j
                  t        |¬«      5  t        ||«       d d d «       t        j                  ddd¬«      }t	        j
                  t        |¬«      5  t        ||«       d d d «       y # 1 sw Y   Œ™xY w# 1 sw Y   Œ^xY w# 1 sw Y   y xY w)NrH  é
   r3   ©ÚdtyperÆ   r¶   rL   )
r$   rJ  r0   r°   r§   r¹   r   r   r¯   rº   )rB   rF   rG   Úwarn_messages       rH   Útest_auc_score_non_binary_classrS  I  s×   € ô ˜SÓ
!€CØ�X‰X�b‹\€Fä�X‰X�b Ô&€Fð	5ð ô 
�‰Ô,°LÖ	AÜ�f˜fÔ%÷ 
Bä�W‰W�R˜uÔ%€FÜ	�‰Ô,°LÖ	AÜ�f˜fÔ%÷ 
Bä�W‰W�R˜ 5Ô)€FÜ	�‰Ô,°LÖ	AÜ�f˜fÔ%÷ 
BÐ	A÷ 
BÐ	Aú÷ 
BÐ	Aú÷ 
BÐ	Aús$   ÁC6ÂDÃ DÃ6C?ÄDÄDÚ
curve_funcc                 óÚ   — t        d«      }|j                  ddd¬«      }|j                  d«      }d}t        j                  t
        |¬«      5   | ||«       d d d «       y # 1 sw Y   y xY w)NrH  r   r�   rO  r…   z"multiclass format is not supportedr¶   )r$   r‡   rJ  r§   r¨   r©   )rT  rB   rG   rF   rE  s        rH   Ú4test_confusion_matrix_at_thresholds_multiclass_errorrV  ^  sV   € ä
˜SÓ
!€CØ�[‰[˜˜A Bˆ[Ó'€FØ�X‰X�b‹\€FØ
.€CÜ	�‰”z¨Ö	-Ù�6˜6Ô"÷ 
.×	-Ñ	-ús   Á
A!Á!A*c                 óô  — d}t        j                  t        |¬«      5   | t        j                  ddgd¬«      ddg«       d d d «       t        j                  t        |¬«      5   | t        j                  ddgt
        ¬«      ddg«       d d d «       g d	¢} | g d
¢|«      } | g d¢|«      }t        ||«      D ]%  \  }}t        j                  j                  ||«       Œ' y # 1 sw Y   Œ¢xY w# 1 sw Y   ŒdxY w)Nz‘y_true takes value in {'a', 'b'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitly.r¶   rõ   rö   z<U1rP  rÂ   rY   )rÂ   rY   rÓ   gáz®GáÚ?)r   r+   r+   r   )rÂ   rY   rY   rÂ   )	r§   r¨   r©   r0   rž   ÚobjectÚzipÚtestingr   )rT  rE  rF   Ú	int_curveÚfloat_curveÚint_curve_partÚfloat_curve_parts          rH   Ú6test_confusion_matrix_at_thresholds_implicit_pos_labelr_  h  sÏ   € ð
	ð ô 
�‰”z¨Ö	-Ù”2—8‘8˜S #˜J¨eÔ4°s¸C°jÔA÷ 
.ô 
�‰”z¨Ö	-Ù”2—8‘8˜S #˜J¬fÔ5¸¸S°zÔB÷ 
.ò
 #€FÙš<¨Ó0€IÙÒ1°6Ó:€KÜ,/°	¸;Ö,GÑ(ˆÐ(Ü
�
‰
×"Ñ" >Ð3CÕDñ -H÷ 
.Ð	-ú÷ 
.Ð	-ús   ž#C"Á$'C.Ã"C+Ã.C7z.ignore:Support for labels represented as bytesÚlabels_typerd   rž   c                 óš   — t        ddg|«      }d}t        j                  t        |¬«      5   | |ddg«       d d d «       y # 1 sw Y   y xY w)Nó   aó   bz8Support for labels represented as bytes is not supportedr¶   rÂ   rY   )r   r§   r¨   Ú	TypeError)rT  r`  r  rE  s       rH   Ú<test_confusion_matrix_at_thresholds_implicit_bytes_pos_labelre  �  sA   € ô    t ¨kÓ:€FØ
D€CÜ	�‰”y¨Ö	,Ù�6˜C ˜:Ô&÷ 
-×	,Ñ	,ús   ¬AÁA
c                 óš   — g d¢}g d¢}g d¢} | |||¬«      } | |d d |d d |d d ¬«      }t        ||«      D ]  \  }}t        ||«       Œ y )NrÝ   )rØ   rÓ   rÞ   rß   r|   )r+   r+   r+   r|   r   rá   rL   )rY  r   )rT  rG   rE   râ   Úresult_1Úresult_2Úarr_1Úarr_2s           rH   Ú6test_confusion_matrix_at_thresholds_zero_sample_weightrk  �  sa   € â€FÚ'€GÚ%€Má˜& '¸ÔG€HÙ˜&  "˜+ w¨s° |À=ÐQTÐRTÐCUÔV€Hä˜H hÖ/‰ˆˆuÜ˜˜uÕ%ñ 0rJ   c                 ó”  — t        d¬«      \  }}}t        ||| «       t        |dd  |dd  | ¬«      \  }}}|d   dk(  sJ ‚|d   |dd  j                  «       k(  sJ ‚d|t	        j
                  |dk(  «      <   |j                  «       }t        ||| «       t        ||«       g d¢}g d	¢}	t        ||	| ¬«      \  }}}| r+t        |g d
¢«       t        |g d¢«       t        |g d¢«       n*t        |g d¢«       t        |g d¢«       t        |g d	¢«       |j                  |j                  k(  sJ ‚|j                  |j                  dz   k(  sJ ‚y )NTr“   r+   r”   r   rY   rL   ©r+   r   r   r+   )r+   r&   r�   rë   )r|   çÚÁQUUÕ?rY   rY   )rY   r|   r|   rÂ   )r+   r&   rë   )r|   rn  r|   rY   rY   )rY   r|   r|   r|   rÂ   )
rI   Ú_test_precision_recall_curver   Úmeanr0   ÚwhereÚcopyr   r   r†   )
r‘   rG   rt   rE   rA   Úrr£   Úy_true_copyr  Úpredict_probass
             rH   Útest_precision_recall_curverv  œ  s<  € ä(°Ô5Ñ€FˆAˆwÜ  ¨°$Ô7ô % V¨A¨B Z°¸¸°ÐPTÔU�G€A€qˆ!ØˆQ‰4�3Š;Ðˆ;ØˆQ‰4�6˜!˜"�:—?‘?Ó$Ò$Ð$Ð$ð %'€FŒ2�8‰8�F˜a‘KÓ Ñ!Ø—+‘+“-€KÜ  ¨°$Ô7Ü�{ FÔ+â€FÚ!€NÜ$ V¨^ÈtÔT�G€A€qˆ!ÙÜ˜Ò6Ô7Ü˜Ò/Ô0Ü˜š9Õ%ä˜Ò;Ô<Ü˜Ò4Ô5Ü˜š<Ô(Ø�6‰6�Q—V‘VÒÐÐØ�6‰6�Q—V‘V˜a‘ZÒÐÑrJ   c                 óä  — t        | ||¬«      \  }}}t        | |«      }t        |dd«       t        |t        | |«      «       t	        t        | |«      |d¬«       |j                  |j                  k(  sJ ‚|j                  |j                  dz   k(  sJ ‚t        | t        j                  |«      |¬«      \  }}}|j                  |j                  k(  sJ ‚|j                  |j                  dz   k(  sJ ‚y )Nr”   g+‡ÙÎë?r�   r&   r–   r+   )	r   rj   r   r
   r   rb   r†   r0   Ú
zeros_like)rG   rE   r‘   rA   rs  r�   Úprecision_recall_aucs          rH   ro  ro  ¼  sç   € ä-¨f°gÐQUÔVÑ€A€qˆ*Ü2°6¸7ÓCÐÜÐ2°E¸1Ô=ÜØÔ5°f¸gÓFôô Ü˜6 7Ó+Ð-AÈ1õð �6‰6�Q—V‘VÒÐÐØ�6‰6�Z—_‘_ qÑ(Ò(Ð(Ð(ä-Ø”—‘˜gÓ&¸$ôÑ€A€qˆ*ð �6‰6�Q—V‘VÒÐÐØ�6‰6�Z—_‘_ qÑ(Ò(Ð(Ñ(rJ   c           	      óh  — t        j                  d¬«      5  ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |g d¢«       t	        |g d¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |g d	¢«       t	        |g d
¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |ddg«       t	        |ddg«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |g d¢«       t	        |g d¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |ddg«       t	        |ddg«       t        |d«       ddg}ddg}t        j                  t        d¬«      5  t        ||| ¬«      \  }}}d d d «       t        j                  t        d¬«      5  t        ||«      }d d d «       t        |g d¢«       t        |g d¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        t        ||«      d«       t	        |g d¢«       t	        |g d¢«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        t        ||d¬«      d«       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       d d d «       t        j                  d¬«      5  t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       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   �ŒxY w# 1 sw Y   �ŒÙxY w# 1 sw Y   �Œ®xY w# 1 sw Y   �ŒgxY w# 1 sw Y   �Œ8x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Úraise)Úallr   r+   r”   )r|   r+   r+   r  rY   )r|   rÂ   rY   r   r|   rÂ   rÃ   rÄ   z!No positive class found in y_truer¶   rÀ   )rY   rY   rY   )r+   r|   rÂ   rÇ   rÈ   rÊ   rË   rÌ   Úignore)r0   Úerrstater   r
   r   r   r§   r¹   ÚUserWarningr   rž   )r‘   rG   rE   rA   rs  rt   Úauc_prcs          rH   Ú#test_precision_recall_curve_toydatar�  Ò  sv  € ä	�‰˜Ö	!à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! !¢[Ô1Ü! !¢YÔ/Ü˜G SÔ)à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! !¢_Ô5Ü! !¢_Ô5ô 	˜G SÔ)à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! ! c¨1 XÔ.Ü! ! c¨1 XÔ.Ü˜G SÔ)à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! !¢[Ô1Ü! !¢YÔ/Ü˜G SÔ)à�Q�ˆØ˜�*ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! ! c¨1 XÔ.Ü! ! a¨ XÔ.Ü˜G SÔ)à�Q�ˆØ˜�,ˆÜ�\‰\œ+Ð-PÖQÜ,¨V°WÐPTÔU‰GˆAˆq�!÷ Rä�\‰\œ+Ð-PÖQÜ-¨f°gÓ>ˆG÷ Rä˜š9Ô%Ü˜š9Ô%Ü˜ Ô#à�Q�ˆØ˜�,ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜÔ3°F¸GÓDÀcÔJÜ! !¢_Ô5Ü! !¢]Ô3ô —‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÖQÜÜ'¨°ÀÔIÈ3ô÷ Rô �\‰\œ+Ð-PÖQÜÜ'¨°ÀÔLÈcô÷ Rô 	Ü# F¨G¸YÔGÈô	
ô 	Ô/°¸ÈÔQÐSVÔWä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÖQÜÜ'¨°ÀÔIÈ3ô÷ Rô �\‰\œ+Ð-PÖQÜÜ'¨°ÀÔLÈcô÷ Rô 	Ü# F¨G¸YÔGÈô	
ô 	Ô/°¸ÈÔQÐSVÔWä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜÜ# F¨G¸WÔEÀsô	
ô 	Ü# F¨G¸ZÔHÈ#ô	
ô 	Ü# F¨G¸YÔGÈô	
ô 	Ü# F¨G¸WÔEÀsô	
ô —‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÖQÜÜ'¨°ÀÔIÈ3ô÷ Rô 	Ü# F¨G¸ZÔHÈ#ô	
ô �\‰\œ+Ð-PÖQÜÜ'¨°ÀÔKÈSô÷ Rô �\‰\œ+Ð-PÖQÜÜ'¨°ÀÔIÈ3ô÷ Rô
 —‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜÔ/°¸ÈÔQÐSVÔWÜÜ# F¨G¸ZÔHÈ#ô	
ô 	Ü# F¨G¸YÔGÈô	
ô 	Ô/°¸ÈÔQÐSVÔWä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜S #˜J¨¨c¨
Ð3Ó4ˆÜÜ# F¨G¸WÔEÀsô	
ô 	Ü# F¨G¸ZÔHÈ#ô	
ô 	Ü# F¨G¸YÔGÈô	
ô 	Ü# F¨G¸WÔEÀsô	
÷i 
"ôp 
�‰˜Ö	"ä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÖQÜÜ'¨°ÀÔLÈaô÷ R÷	 
#Ð	"÷S RÑQúçQÑQú÷  RÑQú÷ RÑQú÷ RÑQú÷ RÑQú÷4 RÑQú÷ RÑQú÷ RÑQú÷s 
"Ñ	!ú÷x RÐQú÷	 
#Ð	"ús  —F*`Ç^Ç#`Ç7^'ÈC`Ë^4Ë*#`Ì_Ì&B	`Î/_Ï#`Ï+_ÐD`Ô#_(Ô<;`Õ7_5Ö#`Ö3`×D4`ÜA`(Ý0`Þ	`(Þ^$	Þ`Þ'^1	Þ,`Þ4^>	Þ9`ß_	ß`ß_	ß`ß_%	ß `ß(_2	ß-`ß5_?	ß:`à`	à`à`à`%	à!`(à(`1c                  óD  — g d¢} g d¢}t        | |d¬«      \  }}}t        |g d¢«       g d¢} g d¢}t        | |d¬«      \  }}}t        |g d¢«       g d	¢} g d
¢}t        | |d¬«      \  }}}t        |ddg«       g d¢} g d
¢}t        | |d¬«      \  }}}t        |g d
¢«       y)z9Check the behaviour of the `drop_intermediate` parameter.rÑ   rÒ   Tr”   )rÂ   rÕ   rY   rÖ   r×   )rÂ   rÔ   rÕ   rÙ   r¬   rY   ©r   r   r   r   )rÂ   rØ   rÓ   rÞ   rÂ   rÞ   ©r+   r+   r+   r+   N)r   r   )rG   rE   rf   rg   r�   s        rH   Ú-test_precision_recall_curve_drop_intermediater…  v  sÆ   € â€FÚ,€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �J¢Ô0ò 5€FÚO€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �JÒ >Ô?ò €FÚ"€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �J  c 
Ô+ò €FÚ"€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �JÒ 4Õ5rJ   c                  ó–   — t        j                  dt        ¬«      } d| d d d…<   t        j                  d«      }t	        | |«      dk(  sJ ‚y )Nr„   rP  r+   rë   rÃ   )r0   r°   r3   r¯   r
   ©rG   rE   s     rH   Ú&test_average_precision_constant_valuesrˆ  ˜  sE   € ô
 �X‰X�c¤Ô%€FØ€F‰3ˆQˆ3�Kä�g‰g�c‹l€Gô # 6¨7Ó3°tÒ;Ð;Ñ;rJ   c                  óà   — t        j                  ddg«      } t        j                  ddg«      }d}t        j                  t        |¬«      5  t        | |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   r+   z>pos_label=2 is not a valid label. It should be one of \[0, 1\]r¶   r&   ©rR   ©r0   rž   r§   r¨   r©   r
   ©rG   rF   Úerr_msgs      rH   Ú4test_average_precision_score_binary_pos_label_errorsrŽ  ¦  sQ   € ä�X‰X�q˜!�fÓ€FÜ�X‰X�q˜!�fÓ€FØO€GÜ	�‰”z¨Ö	1Ü ¨¸!Õ<÷ 
2×	1Ñ	1ús   ÁA$Á$A-c                  ó  — t        j                  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g«      }d}t        j                  t        |¬«      5  t        | |d¬	«       d d d «       y # 1 sw Y   y xY w)
Nr+   r   r¬   rØ   rÙ   rÓ   znParameter pos_label is fixed to 1 for multilabel-indicator y_true. Do not set pos_label or set pos_label to 1.r¶   rŠ  r‹  rŒ  s      rH   Ú8test_average_precision_score_multilabel_pos_label_errorsr�  ¯  s„   € ô �X‰X˜˜1�v  1˜v¨¨1 v°°1¨vÐ6Ó7€FÜ�X‰X˜˜S�z C¨ :°°S¨z¸CÀ¸:ÐFÓG€Fð	6ð ô 
�‰”z¨Ö	1Ü ¨¸!Õ<÷ 
2×	1Ñ	1ús   Á A8Á8Bc            	      ó   — t        j                  g d¢«      } 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)
N)r   r+   r&   r   r+   r&   )r|   rÓ   rØ   )rß   r|   rÞ   )rØ   rÓ   rÔ   )rÓ   rÞ   r|   zdParameter pos_label is fixed to 1 for multiclass y_true. Do not set pos_label or set pos_label to 1.r¶   r�   rŠ  r‹  rŒ  s      rH   Ú8test_average_precision_score_multiclass_pos_label_errorsr’  ¼  sh   € ä�X‰XÒ(Ó)€FÜ�X‰XâÚÚÚÚÚð	
ó	€Fð	6ð ô 
�‰”z¨Ö	1Ü ¨¸!Õ<÷ 
2×	1Ñ	1ús   ÁA4Á4A=c                  ó\  — t        d¬«      \  } }}t        | |«      }t        | d|z  «      }t        | d|z  «      }t        | |dz
  «      }||k(  sJ ‚||k(  sJ ‚||k(  sJ ‚t        | |«      }t        | d|z  «      }t        | d|z  «      }	t        | |dz
  «      }
||k(  sJ ‚||	k(  sJ ‚||
k(  sJ ‚y )NTr“   r„   g�íµ ÷Æ°>rO  )rI   r   r
   )rG   rt   rE   r™   Úroc_auc_scaled_upÚroc_auc_scaled_downÚroc_auc_shiftedÚpr_aucÚpr_auc_scaled_upÚpr_auc_scaled_downÚpr_auc_shifteds              rH   Útest_score_scale_invariancer›  Ñ  sé   € ô )°Ô5Ñ€FˆAˆwä˜F GÓ,€GÜ% f¨c°G©mÓ<ÐÜ'¨°°w±Ó?ÐÜ# F¨G°b©LÓ9€OØÐ'Ò'Ð'Ð'ØÐ)Ò)Ð)Ð)Ø�oÒ%Ð%Ð%ä$ V¨WÓ5€FÜ.¨v°s¸W±}ÓEÐÜ0°¸À¹ÓHÐÜ,¨V°W¸r±\ÓB€NØÐ%Ò%Ð%Ð%ØÐ'Ò'Ð'Ð'Ø�^Ò#Ð#Ñ#rJ   z(y_true,y_score,expected_fpr,expected_fnrrÀ   rè   )r   rÃ   r|   )r|   rÄ   r+   ©rÃ   r|   rÄ   r   )r|   r|   r   rÁ   rÂ   rç   )r+   r+   r|   r   )r   r+   r+   r+   rÿ   r  )r   r|   r|   c                 óT   — t        | |«      \  }}}t        ||«       t        ||«       y ©N©r   r   ©rG   rE   Úexpected_fprÚexpected_fnrrr   Úfnrrt   s          rH   Útest_det_curve_toydatar¤  ê  s*   € ô6 ˜F GÓ,�K€Cˆˆaä�C˜Ô&Ü�C˜Õ&rJ   )rG   rE   r¡  r¢  r•   )r+   r+   r|   rÂ   )r+   r+   rÂ   c                 óX   — t        | ||¬«      \  }}}t        ||«       t        ||«       y )Nr”   rŸ  )rG   rE   r¡  r¢  r•   rr   r£  rt   s           rH   Ú test_det_curve_drop_intermediater¦    s-   € ô& ˜F GÐ?PÔQ�K€Cˆˆaä�C˜Ô&Ü�C˜Õ&rJ   ©rÃ   r|   r|   c                 óT   — t        | |«      \  }}}t        ||«       t        ||«       y rž  rŸ  r   s          rH   Útest_det_curve_tie_handlingr©  $  s*   € ô ˜F GÓ,�K€Cˆˆaä�C˜Ô&Ü�C˜Õ&rJ   c                  óT   — t        t        g d¢g d¢«      t        g d¢g d¢«      «       y )NrÀ   rè   rÑ   )r   r   r|   r|   r+   r+   )r   r   © rJ   rH   Útest_det_curve_sanity_checkr¬  8  s    € äÜ’)š[Ó)ÜÒ$Ò&<Ó=õrJ   rE   )r   rÃ   r|   rÄ   r+   c                 óÂ   — t        g d¢t        j                  d| «      ¬«      \  }}}t        |ddg«       t        |ddg«       t        || t        j                  g«       y )N)r   r+   r   r+   r   r+   rì   r‡  r+   r   )r   r0   rº   r   rÚ   )rE   rr   r£  rh   s       rH   Útest_det_curve_constant_scoresr®  @  sT   € ä#Ú!¬2¯7©7°1°gÓ+>ôÑ€Cˆˆiô �C˜!˜Q˜Ô Ü�C˜!˜Q˜Ô Ü�I ¬¯©Ð0Õ1rJ   rG   )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+   c                 óZ   — t        | | ¬«      \  }}}t        |dg«       t        |dg«       y )Nr‡  r   rŸ  )rG   rr   r£  rt   s       rH   Útest_det_curve_perfect_scoresr°  K  s.   € ô  6°6Ô:�K€Cˆˆaä�C˜!˜ÔÜ�C˜!˜ÕrJ   zy_true, y_pred, err_msgzinconsistent numbers of samples©r   r   r   z#Only one class is present in y_true©r+   r+   r+   )Úcancerr³  ú
not cancer)rÓ   rÞ   rÙ   zpos_label is not specifiedc                 ó|   — t        j                  t        |¬«      5  t        | |«       d d d «       y # 1 sw Y   y xY w)Nr¶   )r§   r¨   r©   r   rŒ  s      rH   Útest_det_curve_bad_inputr¶  \  s(   € ô  
�‰”z¨Ö	1Ü�&˜&Ô!÷ 
2×	1Ñ	1úó   œ2²;c                  óZ  — dgdz  dgdz  z   } t        j                  g d¢«      }d|z
  }t        | |d¬«      \  }}}t        | |d¬«      \  }}}|d   t        j                  d	«      k(  sJ ‚|d   t        j                  d
«      k(  sJ ‚t        ||d d d…   «       t        ||d d d…   «       y )Nr³  r�   r´  rí   )
rØ   rß   rÔ   rÓ   rÞ   rß   r|   rÔ   rÕ   r¬   r+   rŠ  r   rß   rÓ   rL   )r0   rž   r   r§   r-  r   )	rG   Úy_pred_pos_not_cancerÚy_pred_pos_cancerÚfpr_pos_cancerÚfnr_pos_cancerÚth_pos_cancerÚfpr_pos_not_cancerÚfnr_pos_not_cancerÚth_pos_not_cancers	            rH   Útest_det_curve_pos_labelrÁ  p  sÕ   € ØˆZ˜!‰^˜|˜n¨qÑ0Ñ0€FÜŸH™HÒ%WÓXÐØÐ1Ñ1Ðä4=ØØØô5Ñ1€N�N Mô
 AJØØØôAÑ=ÐÐ*Ð,=ð ˜ÑœvŸ}™}¨SÓ1Ò1Ð1Ð1Ø˜QÑ¤6§=¡=°Ó#5Ò5Ð5Ð5ô �NÐ$6±t¸°tÑ$<Ô=Ü�NÐ$6±t¸°tÑ$<Õ=rJ   c                 óÚ  — t         | ddggddgg«      d«       t         | ddggddgg«      d«       t         | ddggddgg«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d	¢gg d¢g«      d«       t         | g d
¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d	¢gg d¢g«      d«       t         | g d
¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d	¢gg d¢g«      d«       t         | g d
¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | ddggddgg«      d«       t         | ddggddgg«      d«       t         | ddggddgg«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d	¢gg d¢g«      d«       t         | g d
¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       t         | g d¢gg d¢g«      d«       y )Nr   r+   rÃ   rÄ   r|   rÀ   rœ  r   rÁ   rç   gUUUUUUÕ?rÿ   gªªªªªªê?r  gªªªªªªâ?©rÄ   r|   rÃ   r²  ©r|   rÄ   rÃ   r§  )r|   r|   r|   çUUUUUUå?)r+   r+   r+   r   )r|   r|   r|   r|   )r   ©Ú
lrap_scores    rH   Úcheck_lrap_toyrÈ  Š  sp  € ä™
 Q¨ F 8¨t°T¨l¨^Ó<¸aÔ@Ü™
 Q¨ F 8¨t°T¨l¨^Ó<¸eÔDÜ™
 Q¨ F 8¨t°T¨l¨^Ó<¸aÔ@ä™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜÙ’I�;Ò!2Ð 3Ó4Ð6Iôô Ù’I�;Ò!2Ð 3Ó4Ð6Iôô ™
¢I ;Ò1BÐ0CÓDÀeÔLÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜÙ’I�;Ò!2Ð 3Ó4Ð6Iôô ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀoÔVÜ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀaÔHä™
¢I ;Ò1BÐ0CÓDÀeÔLÜ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀoÔVÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜÙ’I�;Ò!2Ð 3Ó4Ð6Iôô ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀaÔHô ™
 Q¨ F 8¨s°C¨j¨\Ó:¸CÔ@Ü™
 Q¨ F 8¨s°C¨j¨\Ó:¸CÔ@Ü™
 Q¨ F 8¨s°C¨j¨\Ó:¸AÔ>ä™
¢I ;Ò1AÐ0BÓCÀSÔIÜ™
¢I ;Ò1AÐ0BÓCÀSÔIÜ™
¢I ;Ò1AÐ0BÓCÀQÔGÜ™
¢I ;Ò1AÐ0BÓCÀUÔKÜÙ’I�;Ò!1Ð 2Ó3Ð5Hôô Ù’I�;Ò!1Ð 2Ó3Ð5Hôô ™
¢I ;Ò1AÐ0BÓCÀQÔGä™
¢I ;²Ð0AÓBÀEÔJä™
¢L >Ò4HÐ3IÓJÈEÕRrJ   c           	      ó   — t        d«      }t        dd«      D ]‘  }|j                  d|f¬«      }t        j                  |«      }t        j
                  d|f«      } | ||«      dk(  sJ ‚ | ||«      dk(  sJ ‚t        j                  d|f«      } | ||«      dk(  sJ ‚ | ||«      dk(  rŒ‘J ‚ t         | dgdgdgdggdgdgdgdgg«      d«       y )Nr   r&   rà   r+   r…   rY   r|   )r$   r[   rˆ   r0   rx  r°   r¯   r   )rÇ  r*   Ún_labelsrE   Úy_score_tiesrG   s         rH   Ú!check_zero_or_all_relevant_labelsrÌ  Å  sõ   € Ü% aÓ(€Lä˜!˜Q–KˆØ×&Ñ&¨Q°¨MÐ&Ó:ˆÜ—}‘} WÓ-ˆô —‘˜1˜h˜-Ó(ˆÙ˜& 'Ó*¨cÒ1Ð1Ð1Ù˜& ,Ó/°3Ò6Ð6Ð6ô —‘˜!˜X˜Ó'ˆÙ˜& 'Ó*¨cÒ1Ð1Ð1Ù˜& ,Ó/°3Ó6Ð6Ð6ð  ô Ù�Q�C˜!˜˜q˜c A 3Ð'¨3¨%°#°¸¸À¸uÐ)EÓFÈõrJ   c                 ó�  — t        j                  t        «      5   | g d¢g d¢«       d d d «       t        j                  t        «      5   | g d¢g d¢g d¢g d¢g«       d d d «       t        j                  t        «      5   | g d¢g d¢g d¢g d¢g«       d d d «       t        j                  t        «      5   | ddgddggddg«       d d d «       t        j                  t        «      5   | ddgddggddgg«       d d d «       t        j                  t        «      5   | ddgddggdgdgg«       d d d «       t        j                  t        «      5   | ddggddgddgg«       d d d «       t        j                  t        «      5   | dgdggddgddgg«       d d d «       t        j                  t        «      5   | ddgddggdgdg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   �Œ9x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)	Nr   )rÃ   rÞ   rÓ   rô   )rÃ   rÄ   rÂ   )rÕ   rÞ   rÂ   )rÙ   rÓ   rÂ   r   r+   )r§   r¨   r©   rÆ  s    rH   Úcheck_lrap_error_raisedrÎ  Ü  sÇ  € ä	�‰”zÕ	"Ù’9Ò.Ô/÷ 
#ä	�‰”zÕ	"Ù’9Ò0²/Â?ÐSÔT÷ 
#ä	�‰”zÕ	"ÙÚÒ/²Â/ÐRô	
÷ 
#ô 
�‰”zÕ	"Ù�Q˜�F˜Q ˜FÐ# a¨ VÔ,÷ 
#ä	�‰”zÕ	"Ù�Q˜�F˜Q ˜FÐ# q¨! f XÔ.÷ 
#ä	�‰”zÕ	"Ù�Q˜�F˜Q ˜FÐ# q c¨A¨3 ZÔ0÷ 
#ä	�‰”zÕ	"Ù�Q˜�F�8˜q !˜f q¨! fÐ-Ô.÷ 
#ä	�‰”zÕ	"Ù�Q�C˜!˜�:  A ¨¨A¨Ð/Ô0÷ 
#ä	�‰”zÕ	"Ù�Q˜�F˜Q ˜FÐ# q c¨A¨3 ZÔ0÷ 
#Ð	"÷) 
#Ñ	"úç	"Ñ	"úç	"Ñ	"ú÷ 
#Ñ	"úç	"Ñ	"úç	"Ð	"úç	"Ð	"úç	"Ð	"úç	"Ð	"úsk   šGÁ	G$Á?G1Â5G>Ã(HÄHÅH$ÆH0Æ:H<ÇG!Ç$G.Ç1G;Ç>HÈHÈH!È$H-È0H9È<Ic           	      ó  — t        dd«      D ]v  }t        j                  d|f«      }t        d|«      D ]N  }t        ||z
  «      D ];  }t        j                  d|f«      }d|d|||z   …f<   t	         | ||«      ||z  «       Œ= ŒP Œx y )Nr&   rO  r+   r   )r[   r0   r¯   r°   r   )rÇ  rÊ  rE   Ú
n_relevantrS   rG   s         rH   Úcheck_lrap_only_tiesrÑ  ö  sŽ   € ô ˜!˜R–LˆÜ—'‘'˜1˜h˜-Ó(ˆô    8Ö,ˆJä˜X¨
Ñ2Ö3�ÜŸ™ 1 h -Ó0�Ø45��q˜#  jÑ 0Ð0Ð0Ñ1Ü#¡J¨v°wÓ$?ÀÈhÑAVÕWñ 4ñ -ñ	 !rJ   c                 óè  ‡‡— t        dd«      D ]á  }|t        j                  |«      j                  d|f«      dz   z
  }t        j                  d|f«      }d|d<   d|d<   t         | ||«      d|z  dz   dz  «       t        d|«      D ]g  Št        |‰z
  «      D ]T  Št        j                  d|f«      }d|d‰‰‰z   …f<   t         | ||«      t        ˆˆfd„t        ‰«      D «       «      «       ŒV Œi Œã y )Nr&   rO  r+   )r   r   )r   rL   r   c              3   ó@   •K  — | ]  }|d z   ‰|z   d z   ‰z  z  –— Œ y­w)r+   Nr«  )Ú.0rs  rÐ  rS   s     €€rH   Ú	<genexpr>z>check_lrap_without_tie_and_increasing_score.<locals>.<genexpr>  s/   øè ø€ ð á!2˜Að ˜Q™ C¨!¡G¨a¡K°:Ñ#=Õ>Ù!2ùs   ƒ)r[   r0   r1   rN   r°   r   rO   )rÇ  rÊ  rE   rG   rÐ  rS   s       @@rH   Ú+check_lrap_without_tie_and_increasing_scorerÖ    sÿ   ù€ ô ˜!˜R–LˆØœbŸi™i¨Ó1×9Ñ9¸1¸h¸-ÓHÈ1ÑLÑMˆô —‘˜1˜h˜-Ó(ˆØˆˆt‰Øˆˆu‰Ü™J v¨wÓ7¸!¸h¹,ÈÑ:JÈaÑ9OÔPô    8Ö,ˆJä˜X¨
Ñ2Ö3�ÜŸ™ 1 h -Ó0�Ø45��q˜#  jÑ 0Ð0Ð0Ñ1Ü#Ù˜v wÓ/Üô ä!& zÔ!2óó õñ 4ñ -ñ !rJ   c                 ó”  ‡‡— t        | |«       t        | «      } t        |«      }| j                  \  }}t        j                  |f«      }t        |«      D ]â  }t        j                  ||   d¬«      \  }}|j                  }||z
  Št        j                  ‰|dz   ¬«      j                  «       }	|	‰   Š| |   j                  «       d   }
|
j                  dk(  s|
j                  |k(  rd||<   Œ˜d||<   |
D ]*  Št        ˆˆfd„|
D «       «      }||xx   |‰‰   z  z  cc<   Œ, ||xx   |
j                  z  cc<   Œä |j                  «       S )z8Simple implementation of label ranking average precisionT)Úreturn_inverser+   )Ú	minlengthr   rÂ   c              3   ó4   •K  — | ]  }‰|   ‰‰   k  –— Œ y ­wrž  r«  )rÔ  rs  ÚlabelÚranks     €€rH   rÕ  z_my_lrap.<locals>.<genexpr><  s   øè ø€ Ð JÁ¸A  a¡¨D°©KÕ!7Áùs   ƒ)r#   r"   r/   r0   Úemptyr[   rM   r†   ÚbincountÚcumsumÚnonzerorO   rp  )rG   rE   r?   rÊ  r^   r_   Úunique_rankÚinv_rankÚn_ranksÚ	corr_rankÚrelevantÚn_ranked_aboverÛ  rÜ  s               @@rH   Ú_my_lraprç     s@  ù€ ä˜F GÔ,Ü˜Ó €FÜ˜'Ó"€GØ Ÿ,™,Ñ€IˆxÜ�H‰H�i�\Ó"€EÜ�9Öˆô !#§	¡	¨'°!©*ÀTÔ JÑˆ�XØ×"Ñ"ˆØ˜Ñ!ˆô —K‘K °¸!±Ô<×CÑCÓEˆ	Ø˜‰ˆà˜!‘9×$Ñ$Ó& qÑ)ˆØ�=‰=˜AÒ §¡°(Ò!:ØˆE�!‰HØàˆˆa‰ÛˆEô !Ô JÁÓ JÓJˆNð �!‹H˜¨¨e©Ñ4Ñ4ŒHð ð 	ˆa‹�H—M‘MÑ!Œð5 ð8 �:‰:‹<ÐrJ   rà   c                 ó€  — t        dd|||¬«      \  }}t        |j                  d   |j                  d   |¬«      }t        |d«      r|j	                  «       }t        ||«      }t        ||«      }t        ||«       t        |«      }|j                  ||f¬«      }t        ||«      }t        ||«      }t        ||«       y )Nr+   F)r@   Úallow_unlabeledr*   Ú	n_classesr?   r   )Ún_componentsr@   r*   Útoarrayr…   )
r   r   r/   Úhasattrrì  r   rç  r   r$   rˆ   )	rÇ  rê  r?   r*   rt   rG   rE   Ú
score_lrapÚscore_my_lraps	            rH   Ú%check_alternative_lrap_implementationrð  F  sÆ   € ô /ØØØ!ØØô�I€A€vô $Ø—\‘\ !‘_Ø—<‘< ‘?Ø!ô€Gô ˆw˜	Ô"Ø—/‘/Ó#ˆÜ6°v¸wÓG€JÜ˜V WÓ-€MÜ˜
 MÔ2ô & lÓ3€LØ×"Ñ"¨°IÐ(>Ð"Ó?€GÜ6°v¸wÓG€JÜ˜V WÓ-€MÜ˜
 MÕ2rJ   ÚcheckÚfuncc                 ó   —  | |«       y rž  r«  )rñ  rò  s     rH   Útest_label_ranking_avprô  f  s   € ñ 
ˆ$…KrJ   c                  ó"   — t        t        «       y rž  )rÎ  r   r«  rJ   rH   Útest_lrap_error_raisedrö  t  s   € ÜÔAÕBrJ   r?   )r+   r&   rî   rI  rê  )r&   rà   rO  r*   c                 ó(   — t        t        || |«       y rž  )rð  r   )r?   rê  r*   s      rH   Ú$test_alternative_lrap_implementationrø  x  s   € ô *Ü-¨y¸)À\õrJ   c                  ól  — t        j                  g d¢g d¢g d¢gt        ¬«      } t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢«      }t        j                  g d	¢«      }t        t	        | ||¬
«      t        j
                  ||z  «      t        j
                  |«      z  «       y )Nr!  rm  rƒ  rP  )rÞ   rß   rÓ   rØ   )rØ   rÓ   rÞ   rß   ©rß   rÞ   rÓ   rØ   )r|   rÄ   rY   )rY   rY   rÂ   rá   )r0   rž   Úboolr   r   rO   )rG   rE   Úsamplewise_lrapsrâ   s       rH   Ú&test_lrap_sample_weighting_zero_labelsrý  �  sŽ   € ô �X‰X’|¢\²<Ð@ÌÔM€FÜ�h‰hÚ	Ò3Ò5IÐJó€Gô —x‘xÒ 0Ó1ÐÜ—H‘Hš_Ó-€MäÜ-Ø�G¨=ô	
ô 	�‰ˆ}Ð/Ñ/Ó0´2·6±6¸-Ó3HÑHõ	rJ   c            	      ó  — t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢g d¢gg d¢g d¢g«      d«       t        t        g d	¢g d¢g d
¢gg d¢g d¢g d¢g«      d«       t        t        g d	¢g d¢g d
¢gg d¢g d¢g d¢g«      d«       y )Nr   r+   rÃ   rÄ   r&   r±  rœ  rÀ   r   rÁ   rç   r�   rÿ   r  r²  rÃ  rÄ  ©rØ   g      $@éýÿÿÿ©r   r+   r�   r3  ©rØ   rO  r   rB  g«ªªªªª@©r�   r+   r�   ©r   r   r«  rJ   rH   Útest_coverage_errorr  –  s  € äœ¨¨A¨ x°4¸°,°Ó@À!ÔDÜœ¨¨A¨ x°4¸°,°Ó@À!ÔDÜœ¨¨A¨ x°4¸°,°Ó@À!ÔDÜœ¨¨A¨ x°4¸°,°Ó@À!ÔDäœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLäœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLäœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLô Üš	¢9Ð-²ÂÐ/KÓLØôô
 ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	ô	ô ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	õ	rJ   c                  ó¤  — t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       y )Nr   r|   r+   r&   r±  r§  rÀ   r   rÁ   rç   r�   rÿ   r  r²  r  r«  rJ   rH   Útest_coverage_tie_handlingr  Í  s.  € Üœ¨¨A¨ x°3¸°*°Ó>ÀÔBÜœ¨¨A¨ x°3¸°*°Ó>ÀÔBÜœ¨¨A¨ x°3¸°*°Ó>ÀÔBÜœ¨¨A¨ x°3¸°*°Ó>ÀÔBäœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÕKrJ   zy_true, y_scorec                 ó|   — t        j                  t        d¬«      5  t        | |«       d d d «       y # 1 sw Y   y xY w)Nz'Expected 2D array, got 1D array insteadr¶   )r§   r¨   r©   r   r‡  s     rH   Útest_coverage_1d_error_messager	  Ý  s*   € ô 
�‰”zÐ)SÖ	TÜ�v˜wÔ'÷ 
U×	TÑ	Túr·  c            	      óh  — t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢g d¢gg d¢g d¢g«      d«       t        t        g d¢g d¢g d	¢gg d¢g d¢g d¢g«      d«       t        t        g d¢g d¢g d	¢gg d¢g d¢g d¢g«      d«       y )Nr   r+   rÃ   rÄ   rÀ   rœ  r   r|   rÁ   rç   rY   rÿ   r  r±  rÄ  r²  r§  rÿ  r  r  rB  r  ©r   r   r«  rJ   rH   Útest_label_ranking_lossr  ì  s  € ÜÔ*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHÜÔ*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHäÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTÜÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTô Ô*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHÜÔ*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHÜÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFÜÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFäÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOô ÜšI¢yÐ1²OÂYÐ3OÓPØôô
 ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	"ô	ô ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	"õ	rJ   Úcsr_containerc                 óz   — t        t         | t        j                  g d¢g d¢g«      «      g d¢g d¢g«      d«       y )Nr   r  r  r  r|   )r   r   r0   rž   )r  s    rH   Útest_label_ranking_loss_sparser    s4   € äÜÙœ"Ÿ(™(¢IªyÐ#9Ó:Ó;ºmÊYÐ=Wó	
ð 	õ	rJ   c                  ó.  — t        j                  t        «      5  t        ddgddggddg«       d d d «       t        j                  t        «      5  t        ddgddggddgg«       d d d «       t        j                  t        «      5  t        ddgddggdgdgg«       d d d «       t        j                  t        «      5  t        ddggddgddgg«       d d d «       t        j                  t        «      5  t        dgdggddgddgg«       d d d «       t        j                  t        «      5  t        ddgddggdgdg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   ŒsxY w# 1 sw Y   y xY w)Nr   r+   )r§   r¨   r©   r   r«  rJ   rH   Ú$test_ranking_appropriate_input_shaper  !  sI  € ä	�‰”zÕ	"Ü˜Q ˜F Q¨ FÐ+¨a°¨VÔ4÷ 
#ä	�‰”zÕ	"Ü˜Q ˜F Q¨ FÐ+¨q°!¨f¨XÔ6÷ 
#ä	�‰”zÕ	"Ü˜Q ˜F Q¨ FÐ+¨q¨c°A°3¨ZÔ8÷ 
#ä	�‰”zÕ	"Ü˜Q ˜F˜8 q¨! f¨q°!¨fÐ%5Ô6÷ 
#ä	�‰”zÕ	"Ü˜Q˜C ! ˜:¨¨A¨°°A°Ð'7Ô8÷ 
#ä	�‰”zÕ	"Ü˜Q ˜F Q¨ FÐ+¨q¨c°A°3¨ZÔ8÷ 
#Ð	"÷ 
#Ñ	"úç	"Ð	"úç	"Ð	"úç	"Ð	"úç	"Ð	"úç	"Ð	"úsG   šEÁEÂE'Â?E3Ã6E?Ä.FÅEÅE$Å'E0Å3E<Å?FÆFc                  óÄ  — t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       y )Nr+   r   r|   rÀ   r§  r   rÁ   rç   rÿ   r  r  r«  rJ   rH   Útest_ranking_loss_ties_handlingr  1  sÎ   € äÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFÜÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFÜÔ*ªI¨;Ò9IÐ8JÓKÈUÔSÜÔ*ªI¨;Ò9IÐ8JÓKÈUÔSÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÕOrJ   c                  óÂ   — t        dd¬«      \  } }| dz   }t        ||«       t        j                  j	                  d«      j                  d«      \  }}t        ||«       y ©Nr   rO  )r*   rê  r+   )r&   r„   rO  )r   Ú_test_dcg_score_forr0   r4   r5   Úrandom_sample©rt   rG   rE   s      rH   Útest_dcg_scorer  =  sT   € Ü.¸AÈÔL�I€A€vØˆg˜‰k€GÜ˜ Ô(Ü—i‘i×+Ñ+¨AÓ.×<Ñ<¸\ÓJ�O€FˆGÜ˜ Õ(rJ   c                 ó   — t        j                  t        j                  | j                  d   «      dz   «      }t	        | | «      }t	        | |«      }||k  j                  «       sJ ‚t	        | | d¬«      |k  j                  «       sJ ‚|j                  | j                  d   fk(  sJ ‚|j                  | j                  d   fk(  sJ ‚|t        j                  t        j                  | «      d d …d d d…f   |z  j                  d¬«      «      k(  sJ ‚y )Nr+   r&   rà   ©Úkr   rL   ©Úaxis)
r0   Úlog2r1   r/   r   r|  r§   r-  ÚsortrO   )rG   rE   ÚdiscountÚidealr^   s        rH   r  r  E  sî   € Ü�w‰w”r—y‘y §¡¨a¡Ó1°AÑ5Ó6€HÜ˜v vÓ.€EÜ˜v wÓ/€EØ�U‰N×ÑÔ!Ð!Ð!Ü˜v v°Ô3°uÑ<×AÑAÔCÐCÐCØ�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ð,Ø�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ð,Ø”F—M‘M¤2§7¡7¨6£?²1±d¸°d°7Ñ#;¸hÑ#F×"KÑ"KÐQRÐ"KÓ"SÓTÒTÐTÑTrJ   c            	      ó’  — t        j                  t        j                  d«      g«      } t        j                  | j                  «      }t        | |«      }t        | |d¬«      }dt        j                  t        j                  dd«      «      z  }|t        j                  |j                  «       | j                  «       z  g«      k(  sJ ‚|t        j                  || d d …d d d…f   z  j                  «       g«      k(  sJ ‚d|dd	d …f<   t        | |«      }t        | |d¬«      }|t        j                  || d d …d d d…f   z  j                  «       g«      k(  sJ ‚|t        j                  |d d j                  «       | dd	d …f   j                  «       z  |dd  j                  «       | dd d	…f   j                  «       z  z   g«      k(  sJ ‚y )
Nrà   T©Úignore_tiesr+   r&   rí   rL   r   r�   )r0   r9  r1   r°   r/   r   r  r§   r-  rO   rp  )rG   rE   ÚdcgÚdcg_ignore_tiesÚ	discountss        rH   Útest_dcg_tiesr)  P  sœ  € Ü�Z‰ZœŸ™ 1›˜Ó'€FÜ�h‰h�v—|‘|Ó$€GÜ
˜V WÓ
-€CÜ(¨°ÀdÔK€OØ”B—G‘GœBŸI™I a¨›OÓ,Ñ,€IØ”&—-‘- §¡£°6·;±;³=Ñ!@Ð AÓBÒBÐBÐBØœfŸm™m¨i¸&ÂÁDÀbÀDÀ¹/Ñ.I×-NÑ-NÓ-PÐ,QÓRÒRÐRÐRØ€GˆAˆq‰rˆE�NÜ
˜V WÓ
-€CÜ(¨°ÀdÔK€OØœfŸm™m¨i¸&ÂÁDÀbÀDÀ¹/Ñ.I×-NÑ-NÓ-PÐ,QÓRÒRÐRÐRØ”&—-‘-à�b�qˆM×ÑÓ &¨¨A©B¨¡-×"4Ñ"4Ó"6Ñ6Ø˜˜ˆm×ÑÓ! F¨1¨b¨q¨b¨5¡M×$6Ñ$6Ó$8Ñ8ñ9ð	
óò ð ñ rJ   c            	      ó´   — t        j                  d«      j                  d«      } t        | | dd¬«      t	        j
                  t        | | dd¬«      «      k(  sJ ‚y )Né   )r&   rì   r�   T)r  r%  )r0   r1   rN   r   r§   r-  )rõ   s    rH   Útest_ndcg_ignore_ties_with_kr,  d  sP   € Ü
�	‰	�"‹×Ñ˜fÓ%€AÜ�a˜˜a¨TÔ2´f·m±mÜ�1�a˜1¨$Ô/ó7ò ð ñ rJ   c                  óà   — t        j                  g d¢g«      } t        j                  g d¢g«      }d}t        j                  t        |¬«      5  t        | |«       ddd«       y# 1 sw Y   yxY w)zDCheck `ndcg_score` exception when `y_true` contains negative values.)g{®Gázì¿gö(\�Âõà¿g®GázÞ¿gö(\�ÂõØ?gìQ¸…ëá?)gìQ¸…ë±?g×£p=
×Ó?rÄ   g…ëQ¸Õ?gHáz®GÑ?z7ndcg_score should not be used on negative y_true valuesr¶   N)r0   rž   r§   r¨   r©   r   )rG   rE   r¼   s      rH   Ú test_ndcg_negative_ndarray_errorr.  k  sQ   € ä�X‰XÒ8Ð9Ó:€FÜ�h‰hÒ6Ð7Ó8€GØPÐÜ	�‰”zÐ)9Ö	:Ü�6˜7Ô#÷ 
;×	:Ñ	:ús   ÁA$Á$A-c                  ó¸  — t        j                  d«      j                  dd«      } | t         j                  j	                  d«      j                  dd| j                  ¬«      z   }t        | |«      }t        | |d¬	«      }|t        j                  |«      k(  sJ ‚|t        j                  d
«      k(  sJ ‚|dz  }t        | |«      t        j                  d
«      k(  sJ ‚y )NéF   rí   rO  r   çš™™™™™É¿rÓ   r…   Tr$  rY   r4  )
r0   r1   rN   r4   r5   rˆ   r/   r   r§   r-  )rG   rE   ÚndcgÚndcg_no_tiess       rH   Útest_ndcg_invariantr4  t  sº   € Ü�Y‰Y�r‹]×"Ñ" 1 bÓ)€FØ”r—y‘y×,Ñ,¨QÓ/×7Ñ7¸¸cÈÏÉÐ7ÓUÑU€GÜ�f˜gÓ&€DÜ˜f g¸4Ô@€LØ”6—=‘= Ó.Ò.Ð.Ð.Ø”6—=‘= Ó%Ò%Ð%Ð%Øˆt�O€GÜ�f˜gÓ&¬&¯-©-¸Ó*<Ò<Ð<Ñ<rJ   r%  c           
      ó,  — dt        j                  d«      d d z  }t        j                  t        j                  ddd«      d«      }|t         j                  j                  d«      j                  dd	|j                  ¬
«      z   }t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||d| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  j                  «       «      k(  sJ ‚t!        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  j                  «       «      k(  sJ ‚dt        j"                  d«      z  }dt        j                  t        j                  dd«      «      z  j%                  «       }t        ||| ¬«      t        j                  |t        j"                  d«      z  «      k(  sJ ‚t        ||| ¬«      t        j                  t        j"                  d«      «      k(  sJ ‚t!        ||| ¬«      t        j                  |«      k(  sJ ‚t        ||| ¬«      t        j                  d«      k(  sJ ‚y )Nr�   rí   rà   rì   rL   )rà   r+   r   r1  rÓ   r…   r$  r&   r+   rO  )Úlog_baser%  )rà   rí   é	   rY   )r0   ÚeyeÚtiler1   r4   r5   rˆ   r/   r   r§   r-  r  r   Úlog10r   rp  r   r¯   rO   )r%  rG   rE   Úy_score_noisyÚexpected_dcg_scores        rH   Útest_ndcg_toy_examplesr=    s  € à”—‘˜“˜2˜A�Ñ€FÜ�g‰g”b—i‘i  2 rÓ*¨FÓ3€GØœbŸi™i×3Ñ3°AÓ6×>Ñ>Øˆc˜Ÿ™ð ?ó ñ €Mô Ø� [ôä	�‰�qœ2Ÿ7™7¤2§9¡9¨Q°£?Ó3Ñ3Ó	4ò5ð 5ð 5ô Ø�¨;ôä	�‰�qœ2Ÿ7™7¤2§9¡9¨Q°£?Ó3Ñ3Ó	4ò5ð 5ð 5ô Ø� [ôä	�‰�qœ2Ÿ7™7¤2§9¡9¨Q°£?Ó3Ñ3Ó	4ò5ð 5ð 5ô Ø� "°+ôä	�‰�qœ2Ÿ8™8¤B§I¡I¨a°£OÓ4Ñ4Ó	5ò6ð 6ð 6ô �f˜g°;Ô?Ä6Ç=Á=Ø	
ŒR�W‰W”R—Y‘Y˜q !“_Ó%Ñ	%×+Ñ+Ó-óDò ð ð ô �V˜W°+Ô>Ä&Ç-Á-Ø	
ŒR�W‰W”R—Y‘Y˜q !“_Ó%Ñ	%×+Ñ+Ó-óCò ð ð ð ”—‘˜“Ñ €FØœbŸg™g¤b§i¡i°°1£oÓ6Ñ6×;Ñ;Ó=ÐÜØ� [ôä	�‰Ð)¬B¯G©G°A«JÑ6Ó	7ò8ð 8ð 8ô Ø� [ôä	�‰”r—w‘w˜q“zÓ	"ò#ð #ð #ô �V˜W°+Ô>Ä&Ç-Á-ØóCò ð ð ô �f˜g°;Ô?Ä6Ç=Á=ÐQTÓCUÒUÐUÑUrJ   c                  óˆ   — d} t        j                  t        | ¬«      5  t        dggdgg«       ddd«       y# 1 sw Y   yxY w)zhCheck that we raise an informative error message when trying to
    compute NDCG with a single document.zTComputing NDCG is only meaningful when there is more than 1 document. Got 1 instead.r¶   r+   N)r§   r¨   r©   r   )r�  s    rH   Útest_ndcg_error_single_documentr?  ¦  s:   € ð	ð ô 
�‰”z¨Ö	1Ü�Q�C�5˜A˜3˜%Ô ÷ 
2×	1Ñ	1ús	   ž8¸Ac                  óÂ   — t        dd¬«      \  } }| dz   }t        ||«       t        j                  j	                  d«      j                  d«      \  }}t        ||«       y r  )r   Ú_test_ndcg_score_forr0   r4   r5   r  r  s      rH   Útest_ndcg_scorerB  ±  sT   € Ü.¸AÈÔL�I€A€vØˆg˜‰k€GÜ˜ Ô)Ü—i‘i×+Ñ+¨AÓ.×<Ñ<¸\ÓJ�O€FˆGÜ˜ Õ)rJ   c                 óö  — t        | | «      }t        | |«      }||k  j                  «       sJ ‚| dk(  j                  d¬«      }||    t        j                  t	        j
                  | j                  «       «      «      k(  sJ ‚||   t        j                  t	        j                  |j                  «       «      «      k(  sJ ‚||    t        j                  t        | |«      |    t        | | «      |    z  «      k(  sJ ‚||   t        j                  t	        j                  |j                  «       «      «      k(  sJ ‚|j                  | j                  d   fk(  sJ ‚|j                  | j                  d   fk(  sJ ‚y )Nr   r+   r  )
r   r|  r§   r-  r0   r¯   rO   r°   r   r/   )rG   rE   r"  r^   Úall_zeros        rH   rA  rA  ¹  sR  € Ü ¨Ó/€EÜ ¨Ó0€EØ�U‰N×ÑÔ!Ð!Ð!Ø˜!‘× Ñ  aÐ Ó(€HØ�(�ÑœvŸ}™}¬R¯W©W°x°i·_±_Ó5FÓ-GÓHÒHÐHÐHØ�‰?œfŸm™m¬B¯H©H°X·\±\³^Ó,DÓEÒEÐEÐEØ�(�ÑœvŸ}™}Ü˜6 7Ó+¨X¨IÑ6Ü
˜V VÓ
,¨h¨YÑ
7ñ	8ó ò ð ð ð �‰?œfŸm™m¬B¯H©H°X·\±\³^Ó,DÓEÒEÐEÐEØ�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ð,Ø�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ñ,rJ   c            	      ó.  — t        j                  g d¢«      } t        | | d¬«      dk(  sJ ‚t        | | d¬«      dk(  sJ ‚t        j                  t
        «      5  t        | | d¬«      sJ ‚	 d d d «       t        j                  t
        «      5  t        | | d¬«      sJ ‚	 d d d «       t        j                  t
        «      5  t        | | d¬«      sJ ‚	 d d d «       t        j                  g d¢«      }t        | |d¬«      }t        | |«      }||k(  sJ ‚t        | |d	¬«      d
k(  sJ ‚t        d¬«      \  } }}t        j                  ddd«      D ]%  }t        t        | ||¬«      t        | ||«      «       Œ' y # 1 sw Y   �ŒxY w# 1 sw Y   ŒäxY w# 1 sw Y   Œ½xY w)Nr"  r+   )rq   gü©ñÒMbP?gš™™™™™¹¿gš™™™™™ñ?r   )rØ   r   rØ   g{®Gáz„?rÞ   r|   Tr“   g-Cëâ6?rà   )
r0   rž   r   r§   r¨   r©   rI   Úlinspacer   r‚   )rG   r	  Úroc_auc_with_max_fpr_oneÚunconstrained_roc_aucrF   rt   rq   s          rH   Útest_partial_roc_auc_scorerI  É  sY  € ä�X‰X’lÓ#€FÜ˜ °Ô3°qÒ8Ð8Ð8Ü˜ °Ô7¸1Ò<Ð<Ð<Ü	�‰”zÕ	"Ü˜V V°TÕ:Ð:Ñ:÷ 
#ä	�‰”zÕ	"Ü˜V V°SÕ9Ð9Ñ9÷ 
#ä	�‰”zÕ	"Ü˜V V°QÕ7Ð7Ñ7÷ 
#ô �x‰xÒ+Ó,€HÜ,¨V°XÀqÔIÐÜ)¨&°(Ó;ÐØ#Ð'<Ò<Ð<Ð<Ü˜ °3Ô7¸3Ò>Ð>Ð>ä'¨tÔ4Ñ€FˆF�AÜ—;‘;˜t Q¨Ö*ˆÜÜ˜& &°'Ô:Ü" 6¨6°7Ó;õ	
ñ +÷ 
#Ñ	"úç	"Ð	"úç	"Ð	"ús$   ÁE2Â
E?Â=FÅ2E<Å?FÆFzy_true, k, true_scorerÃ   r&   r�   rÄ   c                 ó–   — t        j                  g d¢g d¢g d¢g d¢g«      }t        | ||¬«      }|t        j                  |«      k(  sJ ‚y )Nrú  ©rØ   rÞ   rß   rÓ   ©rß   rØ   rÓ   rÞ   ©rÞ   rÓ   rß   rØ   r  ©r0   rž   r   r§   r-  )rG   r  Ú
true_scorerE   r^   s        rH   Útest_top_k_accuracy_scorerP  ã  sJ   € ô �h‰hâ Ú Ú Ú ð		
ó€Gô ! ¨°AÔ6€EØ”F—M‘M *Ó-Ò-Ð-Ñ-rJ   zy_score, k, true_score)rL   rL   r+   r+   )rL   r+   rL   r+   )rÓ   rÓ   rÕ   rÕ   )rÓ   rÕ   rÓ   rÕ   c                 ó,  — g d¢}| j                  «       dk\  r| j                  «       dk  rdnd}|dk(  r"| |kD  j                  t        j                  «      n|}t        || |¬«      }t        ||«      }||cxk(  rt        j                  |«      k(  sJ ‚ J ‚y )Nr"  r   r+   r|   r  )	ÚminÚmaxÚastyper0   Úint64r   r   r§   r-  )rE   r  rO  rG   rh   rF   r^   Ú	score_accs           rH   Ú test_top_k_accuracy_score_binaryrW  ø  s‡   € ò €Fà—{‘{“}¨Ò)¨g¯k©k«m¸qÒ.@‘Àa€IØ78¸A²vˆg˜	Ñ!×)Ñ)¬"¯(©(Ô3À6€Fä  ¨°AÔ6€EÜ˜v vÓ.€Ià�IÔ:¤§¡¨zÓ!:Ò:Ð:Ñ:Ð:Ñ:rJ   zy_true, true_score, labels)r   r+   r+   r&   r„  )rõ   rC  rC  rõ   )rõ   rö   r  rC  Úlabels_as_ndarrayc                 óÆ   — |rt        j                  |«      }t        j                  g d¢g d¢g d¢g d¢g«      }t        | |d|¬«      }|t	        j
                  |«      k(  sJ ‚y)z,Test when labels and y_score are multiclass.rú  rK  rL  rM  r&   ©r  r  N)r0   r9  rž   r   r§   r-  )rG   rO  r  rX  rE   r^   s         rH   Ú0test_top_k_accuracy_score_multiclass_with_labelsr[    s]   € ñ Ü—‘˜FÓ#ˆÜ�h‰hâ Ú Ú Ú ð		
ó€Gô ! ¨°A¸fÔE€EØ”F—M‘M *Ó-Ò-Ð-Ñ-rJ   c            
      óš  — t        j                  dddd¬«      \  } }t        | |d¬«      \  }}}}t        d¬«      }|j	                  ||«       t        ||f||f«      D ]f  \  } }t        dd«      D �cg c]  }t        ||j                  | «      |¬«      ‘Œ! }}t        j                  t        j                  |«      dkD  «      rŒfJ ‚ y c c}w )NrO  r4  r   )rê  r?   Ún_informativer*   r)   r&   r  )r   Úmake_classificationr   r   r8   rY  r[   r   r9   r0   r|  rä   )	r=   r>   ÚX_trainÚX_testÚy_trainÚy_testrD   r  Úscoress	            rH   Ú$test_top_k_accuracy_score_increasingrd  ,  sÍ   € ä×'Ñ'Ø °BÀQô�D€A€qô (8¸¸1È1Ô'MÑ$€GˆV�W˜fä
¨!Ô
,€CØ‡G�GˆG�WÔä�W˜fÐ%¨°Ð'8Ö9‰ˆˆ1äHMÈaÐQSÌó
ÙHTÀ1Ô   C×$5Ñ$5°aÓ$8¸AÖ>Èð 	ð 
ô �v‰v”b—g‘g˜f“o¨Ñ)Õ*Ð*Ð*ñ :ùò
s   Á2$Cc                 ó’   — t        j                  g d¢g d¢g d¢g d¢g«      }t        | ||¬«      t        j                  |«      k(  sJ ‚y )N)rà   rà   rí   r   )r+   rà   rà   rà   )r   r   r�   r�   r„  r  rN  )rG   r  rO  rE   s       rH   Útest_top_k_accuracy_score_tiesrf  ?  sE   € ô �h‰hâÚÚÚð		
ó€Gô   ¨°1Ô5¼¿¹ÀzÓ9RÒRÐRÑRrJ   z	y_true, krë   c                 óÔ   — t        j                  g d¢g d¢g d¢g d¢g«      }d}t        j                  t        |¬«      5  t        | ||¬«      }d d d «       dk(  sJ ‚y # 1 sw Y   ŒxY w)	Nrú  )rØ   rß   rÞ   rÓ   )rÓ   rØ   rß   rÞ   )rÞ   rÓ   rØ   rß   zu'k' \(\d+\) greater than or equal to 'n_classes' \(\d+\) will result in a perfect score and is therefore meaningless.r¶   r  r+   )r0   rž   r§   r¹   r   r   )rG   r  rE   r¼   r^   s        rH   Ú!test_top_k_accuracy_score_warningrh  T  si   € ô �h‰hâ Ú Ú Ú ð		
ó€Gð	6ð ô 
�‰Ô,Ð4DÖ	EÜ$ V¨W¸Ô:ˆ÷ 
Fà�AŠ:Ð‰:÷ 
FÐ	Eús   ¿AÁA'zy_true, y_score, labels, msg)r   g=
×£p=â?r+   r&   )rÓ   rØ   rÕ   )rß   rÞ   rÞ   rú   )rß   r|   rØ   z9y type must be 'binary' or 'multiclass', got 'continuous'zZNumber of classes in 'y_true' \(4\) not equal to the number of classes in 'y_score' \(3\).)r÷   r÷   rõ   rö   z"Parameter 'labels' must be unique.z#Parameter 'labels' must be ordered.)r   r   r+   r&   zSNumber of given labels \(4\) not equal to the number of classes in 'y_score' \(3\).r  z3'y_true' contains labels not in parameter 'labels'.)r|   rÓ   rÓ   )rÞ   rß   rÓ   z}`y_true` is binary while y_score is 2d with 3 classes. If `y_true` does not contain all the labels, `labels` must be providedc                 ó‚   — t        j                  t        |¬«      5  t        | |d|¬«       d d d «       y # 1 sw Y   y xY w)Nr¶   r&   rZ  )r§   r¨   r©   r   )rG   rE   r  rE  s       rH   Útest_top_k_accuracy_score_errorrj  m  s-   € ôf 
�‰”z¨Ö	-Ü˜V W°¸&ÕA÷ 
.×	-Ñ	-ús   œ5µ>c                 ó¢   —  | g d¢g d¢g«      }t        j                  g d¢g d¢g«      }t        ||«      }|t        j                  d«      k(  sJ ‚y )Nrç   rÀ   )r|   r¬   rÔ   rÅ  )r0   rž   r   r§   r-  )r  rG   rE   Úresults       rH   ÚOtest_label_ranking_avg_precision_score_should_allow_csr_matrix_for_y_true_inputrm  Ä  sI   € ñ šI¢yÐ1Ó2€FÜ�h‰hšªÐ3Ó4€GÜ2°6¸7ÓC€FØ”V—]‘] 5Ó)Ò)Ð)Ñ)rJ   Úmetricr6  ))FT)r   r+   )rÂ   rY   )ÚzeroÚonec                 óê  — t         j                  j                  d«      }d|d   }}|j                  ||d¬«      }|j	                  |«      } | |||¬«      }t        |t        «      rt        j                  |«      rJ ‚y|\  }}	}
t        j                  |«      j                  «       rJ ‚t        j                  |	«      j                  «       rJ ‚t        j                  |
«      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.
    é*   rO  rL   T)r†   ÚreplacerŠ  N)	r0   r4   r5   ÚchoicerJ  Ú
isinstancerP   rÎ   Úany)rn  r6  rB   r?   rR   rG   Úy_probarl  Úmetric_1Úmetric_2r�   s              rH   Ú#test_ranking_metric_pos_label_typesrz  Ð  sÔ   € ô �)‰)×
Ñ
 Ó
#€CØ˜w r™{ˆy€IØ�Z‰Z˜ i¸ˆZÓ>€FØ�h‰h�yÓ!€GÙ�F˜G¨yÔ9€FÜ�&œ%Ô Ü—8‘8˜FÔ#Ð#Ð#Ð#à)/Ñ&ˆ�(˜JÜ—8‘8˜HÓ%×)Ñ)Ô+Ð+Ð+Ü—8‘8˜HÓ%×)Ñ)Ô+Ð+Ð+Ü—8‘8˜JÓ'×+Ñ+Ô-Ð-Ð-Ð-rJ   c                 óà   — t         j                  j                  | «      }|j                  ddd¬«      }|j	                  d«      }t        ||«      \  }}}t        j                  |d   «      sJ ‚y)z¶Check that thresholds do not exceed 1.0 when `y_score` is a probability
    estimate.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26193
    r   r&   rO  r…   N)r0   r4   r5   r‡   rJ  r   Úisinf)r‰   rB   rG   rE   rt   r�   s         rH   Ú(test_roc_curve_with_probablity_estimatesr}  ê  sc   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ�[‰[˜˜A Bˆ[Ó'€FØ�h‰h�r‹l€GÜ  ¨Ó1Ñ€A€qˆ*Ü�8‰8�J˜q‘MÔ"Ð"Ñ"rJ   )NF)rà   rI  r   )‘rÍ   rð   Únumpyr0   r§   Úscipyr   Úsklearnr   Úsklearn.datasetsr   Úsklearn.exceptionsr   Úsklearn.linear_modelr   Úsklearn.metricsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úsklearn.metrics._rankingr   r   Úsklearn.model_selectionr   Úsklearn.preprocessingr   Úsklearn.random_projectionr   Úsklearn.utils._testingr   r   r   r   r   Úsklearn.utils.extmathr    Úsklearn.utils.fixesr!   Úsklearn.utils.validationr"   r#   r$   ÚCURVE_FUNCSrI   rW   rb   rj   r‚   r�   ÚmarkÚparametrizerš   r    r¥   rª   r­   r³   r¾   rÏ   rÛ   rå   ré   ró   rž   r  r  r)  r1  rA  rF  rM  rS  rV  r_  Úfilterwarningsre  rk  rv  ro  r�  r…  rˆ  rŽ  r�  r’  r›  r¤  r¦  r©  r¬  r®  r°  r¶  rÁ  rÈ  rÌ  rÎ  rÑ  rÖ  rç  rð  rô  rö  r[   rø  rý  r  r  r	  r  r  r  r  r  r  r)  r,  r.  r4  r=  r?  rB  rA  rI  rP  rW  r[  rd  rf  rh  rj  rm  rz  r}  r«  rJ   rH   Ú<module>r‘     sº  ðÛ Û 	ã Û Ý å Ý ;Ý 5Ý 3÷÷ ÷ ÷ ÷  MÝ 4Ý 0Ý ;÷õ õ *Ý .÷ñ ð #ØØØð	€ó)#ò`2òò<ò&Hò86ð& ‡�×Ñ˜ $¨ Ó/ñ
)ó 0ð
)ò
"ò)ò&#ò)ò)ò8)ò6oNòdMò	)ò.ò&ð" ‡�×ÑØà	ˆ�‰’,Ó	¢Ð+Ø	ˆ�‰’,Ó	 Ð&Ú	šÐ/Ú	˜tÐ$ð	óñ/Xóð/Xðd ‡�×ÑØà	ˆ�‰’,Ó	¢Ð+Ø	ˆ�‰Ò&Ó	'ªÐ9ðóñóðð: ‡�×ÑØà	ˆ�‰’,Ó	 Ð&Ú	˜tÐ$Ú	’yÐ!Ú	šÐ/ð	óñóððD ‡�×ÑØòóñóðòD:ð( ‡�×ÑØà	,¨h¨b¯h©h²|Ó.DÂiÐPà/ØˆB�H‰HÒ)Ó*Úð	
ðð ˆB�H‰H’\Ó"Øð	
ð 1ØˆB�H‰HÒ)Ó*Úð	
ðð ˆB�H‰H’\Ó"Ø�ˆFð	
ðð ˆB�H‰HÒ)Ó*Ø�#ˆJð	
ðð ˆB�H‰H’\Ó"Úð	
ðð ˆB�H‰HÒ)Ó*Ú ð	
ð AØˆB�H‰HÒ)Ó*Úð	
ð AØˆB�H‰HÒ)Ó*Úð	
ð AØˆB�H‰H’\Ó"Úð	
ð}CóFðN ‡�×Ñ˜¨°¨Ó7ñPó 8óOFðPPð ‡�×ÑØð'ð "°%Ñ8ð	
ð'ð "°%Ñ8ð	
ðFð "°BÑ7ð	
ðð "¨cÑ2ð	
ð 
4°RÐ8ð=ó"ñF	0óG"ðF	0ò&ð* ‡�×Ñ˜ {Ó3ñ#ó 4ð#ð ‡�×Ñ˜ {Ó3ñEó 4ðEð0 ‡�×ÑÐLÓMØ‡�×Ñ˜Ð(>À	Ð'JÓKØ‡�×Ñ˜¨°Ð(9Ó:ñ'ó ;ó Ló Nð'ð ‡�×Ñ˜ {Ó3ñ	&ó 4ð	&ð ‡�×Ñ˜ $¨ Ó/ñ ó 0ð ò>)ð, ‡�×Ñ˜ $¨ Ó/ñ`ó 0ð`òF6òD<ò=ò
=ò=ò*$ð2 ‡�×ÑØ.â	’K !  q cÐ*Ú	’N Q C¨!¨Ð-Ú	’N Q C¨!¨Ð-Ú	Ò%¨ s¨Q¨CÐ0Ú	’K¢²	Ð:Ú	’N¢M²9Ð=Ú	’N¢M²9Ð=Ú	Ò%¢}²iÐ@Ú	’K # ¨¨Ð,Ú	’N Q C¨!¨Ð-Ú	’N Q C¨!¨Ð-Ú	Ò%¨ s¨Q¨CÐ0Ú	’K¢²Ð>Ú	’N¢N²LÐAÚ	’N¢N²LÐAÚ	Ò%¢~²|ÐDÚ	’K¢ªMÐ:Ú	’N¢Iª}Ð=Ú	’N¢Iª}Ð=Ú	Ò%¢y²-Ð@ð)óñ2'ó3ð2'ð ‡�×ÑÚNò 
’KÒ!1²<ÀÐGÚ	’K¢ªi¸Ð>Ú	’NÒ$4²lÀEÐJÚ	’N¢K²¸DÐAâ	’K¢ªM¸5ÐAÚ	’K¢ªM¸4Ð@Ú	’N¢Iª}¸eÐDÚ	’N¢Iª}¸dÐCðóñ'óð'ð ‡�×ÑØ.à
ˆQˆ�#�s�˜a ˜V a¨ VÐ,Ø
ˆQˆ�#�s�˜a ˜V a¨ VÐ,Ú	Ò$ s¨A h°°A°Ð7Ú	Ò$ s¨A h°°A°Ð7Ú	Ò$ q c¨A¨3Ð/Ú	Ò$¢i²Ð;Ú	Ò$¢i²Ð=Ú	Ò$¢i²Ð=ð	óñ'óð'òð ‡�×Ñ˜Ò$EÓFñ2ó Gð2ð ‡�×ÑØâ	Ú	Ú	Ú	Ú	ðó	ñó	ðð ‡�×ÑØà
ˆQˆ’Ð?Ð@Ú	�Q˜�HÐ?Ð@Ú	’KÐ!FÐGÚ	’KÐ!FÐGâ.ÚØ(ð	
ð
óñ"óð"ò>ò48Sòvò.1ò4Xòò6#ðN 9:ó3ð@ ‡�×ÑØàØ3ØØ)ð	óð ‡�×Ñ˜Ð"GÈÐ!RÓSñó TóðòCð ‡�×Ñ˜ mÓ4Ø‡�×Ñ˜ jÓ1Ø‡�×Ñ˜©¨q«Ó2ñó 3ó 2ó 5ðòò*4ònLð  ‡�×ÑØâ	Ò$Ð%Ú	Ò%Ð&Ð'Ú
ˆÒ&Ð'ðóñ(óð(ò(ðV ‡�×Ñ˜¨.Ó9ñó :ðò9ò 	Pò)òUòò(ò$ò=ð ‡�×Ñ˜¨¨u¨Ó6ñ#Vó 7ð#VòL!ò*ò-ò 
ð4 ‡�×ÑØâ	�q˜$ÐÚ	�q˜#ÐÚ	�q˜$Ððóñ
.óð
.ð ‡�×ÑØà	ˆ�‰’.Ó	! 1 aÐ(Ø	ˆ�‰’.Ó	! 1 cÐ*Ø	ˆ�‰’.Ó	! 1 aÐ(Ø	ˆ�‰Ò&Ó	'¨¨AÐ.Ø	ˆ�‰Ò&Ó	'¨¨CÐ0Ø	ˆ�‰Ò&Ó	'¨¨AÐ.ðó
ñ	;ó
ð	;ð ‡�×ÑØ à	ˆ�‰’,Ó	 ¢|Ð4Ø	ˆ�‰’,Ó	 ¢lÐ3Ø	ˆ�‰’,Ó	 ¢lÐ3Ø	ˆ�‰Ò&Ó	'¨Ò/CÐDð	óð ‡�×ÑÐ,¨t°U¨mÓ<ñ.ó =óð.ò&+ð& ‡�×ÑØâ	�q˜$ÐÚ	�q˜#ÐÚ	�q˜!Ððóñ
Sóð
Sð ‡�×ÑØâ	�qÐÚ	�qÐðóñóðð$ ‡�×ÑØ"ò âÚÚÚð	ð ØGð
	
ò âÚÚÚð	ð ð+ð	
ò !âÚÚÚð	ò !Ø0ð
	
ò !âÚÚÚð	ò Ø1ð
	
ò âÚÚÚð	ò ð ð	
ò âÚÚÚð	ò ØAð
	
ð �ˆFÚšoÐ.ØðWð	
ðKNóQñdBóeQðdBð
 ‡�×Ñ˜¨.Ó9ñ*ó :ð*ð ‡�×ÑØÐ&¨	Ð3IÈ9ÐUóð ‡�×ÑØÒCóñ.óóð.ó(#rJ   