§
    rŠtj¹x ã                   óè  — 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mZmZm Z m!Z! d dl"m#Z#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/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9 eeee gZ:�dd„Z;d„ Z<d„ Z=d„ Z>d„ Z?ej@         A                    dddg¦  «        d„ ¦   «         ZBd„ ZCd„ ZDd„ ZEd„ ZFd„ ZGd„ ZHd„ ZId „ ZJd!„ ZKd"„ ZLd#„ ZMej@         A                    d$ ejN        g d%¢¦  «        g d&¢f ejN        g d%¢¦  «        dfg d'¢g d(¢fg d'¢dfg¦  «        d)„ ¦   «         ZOej@         A                    d$ ejN        g d*¢¦  «        g d&¢f ejN        g d+¢¦  «        g d,¢fg¦  «        d-„ ¦   «         ZPej@         A                    d$ ejN        g d.¢¦  «        dfg d/¢dfg d.¢g d&¢fg d/¢g d(¢fg¦  «        d0„ ¦   «         ZQej@         A                    d1g d2¢¦  «        d3„ ¦   «         ZRd4„ ZSej@         A                    d5d6 ejN        g d.¢¦  «        g d7¢fd6 ejN        g d/¢¦  «        g d8¢fd9 ejN        g d*¢¦  «        dfd: ejN        g d/¢¦  «        g d;¢fd< ejN        g d.¢¦  «        d d=gfd< ejN        g d/¢¦  «        d>d?gfd@ ejN        g d.¢¦  «        g dA¢fd@ ejN        g d/¢¦  «        g dB¢fdC ejN        g dD¢¦  «        g d(¢fdC ejN        g dB¢¦  «        g d(¢fdC ejN        g dA¢¦  «        g d&¢fg¦  «        ej@         A                    dEdFdGg¦  «        dH„ ¦   «         ¦   «         ZTej@         A                    dIdJdKdFdLœfdMdKdGdLœfdNdFg dOœfdPdFdQdRœfdSi fg¦  «        dT„ ¦   «         ZUdU„ ZVdV„ ZWdW„ ZXdX„ ZYdY„ ZZej@         A                    dZe:¦  «        d[„ ¦   «         Z[ej@         A                    dZe:¦  «        d\„ ¦   «         Z\ej@         ]                    d]¦  «        ej@         A                    dZee g¦  «        ej@         A                    d^d_d`g¦  «        da„ ¦   «         ¦   «         ¦   «         Z^ej@         A                    dZe:¦  «        db„ ¦   «         Z_ej@         A                    dddg¦  «        dc„ ¦   «         Z`dd„ Zaej@         A                    dddg¦  «        de„ ¦   «         Zbdf„ Zcdg„ Zddh„ Zedi„ Zfdj„ Zgdk„ Zhdl„ Ziej@         A                    dmg dn¢g do¢d gd gfg dn¢g dp¢d gd gfg dn¢g dq¢d gd gfg dn¢g dr¢d gd gfg ds¢g do¢g dt¢g du¢fg ds¢g dp¢g dt¢g du¢fg ds¢g dq¢g dt¢g du¢fg ds¢g dr¢g dt¢g du¢fg du¢g do¢dvgd gfg du¢g dp¢d gd gfg du¢g dq¢d gd gfg du¢g dr¢d gd gfg dw¢g do¢g dx¢g dy¢fg dw¢g dp¢g dx¢g dy¢fg dw¢g dq¢g dx¢g dy¢fg dw¢g dr¢g dx¢g dy¢fg dz¢g do¢g d{¢g d|¢fg dz¢g dp¢g d{¢g d|¢fg dz¢g dq¢g d{¢g d|¢fg dz¢g dr¢g d{¢g d|¢fg¦  «        d}„ ¦   «         Zjej@         A                    g d~¢g dw¢g do¢g d¢g dy¢dfg dw¢g do¢g d€¢g du¢dfg dw¢g dp¢g d¢g dy¢dfg dw¢g dp¢g d€¢g du¢dfg dz¢g do¢g d{¢g d|¢dfg dz¢g do¢g d{¢g d|¢dfg dz¢g dp¢g d{¢g d|¢dfg dz¢g dp¢g d{¢g d|¢dfg¦  «        d�„ ¦   «         Zkej@         A                    dmd=d gdQdQgd=d gd d=gfd d=gdQdQgd=d gd d=gfg dn¢g d‚¢dQd gd d=gfg ds¢g d‚¢dQd gd d=gfg du¢g d‚¢d gd gfg dw¢g d‚¢g d{¢g du¢fg dz¢g d‚¢g d{¢g do¢fg d{¢g d‚¢g d{¢g do¢fg¦  «        dƒ„ ¦   «         Zld„„ Zmej@         A                    d…g d†¢¦  «        d‡„ ¦   «         Znej@         A                    dˆg d‰¢g dŠ¢g d‹¢g dŒ¢g d�¢g¦  «        dŽ„ ¦   «         Zoej@         A                    d�d d=gg do¢d�fg du¢d dQgd�fg d‘¢g do¢d’fg d“¢g do¢d’fg d”¢g d•¢d–fg¦  «        d—„ ¦   «         Zpd˜„ Zqd™„ Zrdš„ Zsd›„ Ztdœ„ Zud�„ Zvdž„ Zw	 �dd¡„Zxej@         A                    d¢ereveuesf¦  «        ej@         A                    d£eewf¦  «        d¤„ ¦   «         ¦   «         Zyd¥„ Zzej@         A                    d¦d§¦  «        ej@         A                    d¨d©¦  «        ej@         A                    dª e{d=¦  «        ¦  «        d«„ ¦   «         ¦   «         ¦   «         Z|d¬„ Z}d­„ Z~d®„ Zej@         A                    d¯g dz¢g d‚¢fg dz¢g d‚¢gfg dz¢gg d‚¢fg¦  «        d°„ ¦   «         Z€d±„ Z�ej@         A                    d²e5¦  «        d³„ ¦   «         Z‚d´„ Zƒdµ„ Z„d¶„ Z…d·„ Z†d¸„ Z‡d¹„ Zˆdº„ Z‰d»„ ZŠej@         A                    d¼ddg¦  «        d½„ ¦   «         Z‹d¾„ ZŒd¿„ Z�dÀ„ ZŽdÁ„ Z�ej@         A                    dÂg dA¢d=dÃfg dA¢dÄdQfg dA¢dÅdÆfg¦  «        dÇ„ ¦   «         Z�ej@         A                    dÈ ejN        g dÉ¢¦  «        d=d=f ejN        g dÊ¢¦  «        d=dQf ejN        g dÊ¢¦  «        dÄd=f ejN        g dË¢¦  «        d=d=f ejN        g dÌ¢¦  «        d=dQf ejN        g dÌ¢¦  «        dÄd=fg¦  «        dÍ„ ¦   «         Z‘ej@         A                    dÎ ejN        g dÏ¢¦  «        dÆg dA¢f ejN        g dy¢¦  «        dQg dA¢f ejN        g dÐ¢¦  «        dQg dA¢f ejN        g dÑ¢¦  «        dÆg dÒ¢fg¦  «        ej@         A                    dÓddg¦  «        dÔ„ ¦   «         ¦   «         Z’dÕ„ Z“ej@         A                    dÂg dA¢d=dÃfg dA¢dÄdQfg dA¢dÅd=fg¦  «        dÖ„ ¦   «         Z”ej@         A                    d×g dA¢dØfg dA¢dŸfg¦  «        dÙ„ ¦   «         Z•ej@         A                    dÚg dÛ¢g dÜ¢g dÝ¢g dÞ¢g dß¢gddàfg dA¢g dÜ¢g dÝ¢g dÞ¢g dß¢gd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 d;¢däfg då¢g dÜ¢g dÝ¢g dÞ¢g dß¢gg dA¢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j@         A                    d²e5¦  «        dí„ ¦   «         Z—ej@         A                    dîeeee g¦  «        ej@         A                    dïg dð¢¦  «        dñ„ ¦   «         ¦   «         Z˜dò„ Z™�ddó„Zšej@         A                    dôeeeešg¦  «        ej@         A                    dõd ejN        g dö¢¦  «        g¦  «        d÷„ ¦   «         ¦   «         Z›dø„ Zœdù„ Z�ej@         A                    dúddg¦  «        dû„ ¦   «         Zžej@         A                    düd d=g¦  «        dý„ ¦   «         ZŸdþ„ Z dÿ„ Z¡�d „ Z¢�d„ Z£�d„ Z¤dS (  é    N)Ústats)Údatasets)Úmake_multilabel_classification)ÚUndefinedMetricWarning)ÚLogisticRegression)Úaccuracy_scoreÚaucÚaverage_precision_scoreÚconfusion_matrixÚconfusion_matrix_at_thresholdsÚcoverage_errorÚ	dcg_scoreÚ	det_curveÚ%label_ranking_average_precision_scoreÚlabel_ranking_lossÚmetric_at_thresholdsÚ
ndcg_scoreÚprecision_recall_curveÚprecision_scoreÚrecall_scoreÚroc_auc_scoreÚ	roc_curveÚtop_k_accuracy_score)Ú_dcg_sample_scoresÚ_ndcg_sample_scoresÚ2_sort_inputs_and_compute_classification_thresholds)Ú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¦  «        }|                     |¦  «         ||         ||         }}t          |dz  ¦  «        }t
          j
                             d¦  «        }t
          j        ||                     |d|z  ¦  «        f         }t          d¬¦  «        }	|	                     |d|…         |d|…         ¦  «                             ||d…         ¦  «        }
|r|
dd…df         }
|	                     ||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                ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/metrics/tests/test_ranking.pyÚmake_predictionrN   B   ss  € ð €åÔ$Ñ&Ô&ˆàŒ€AØŒ€Aàð "à��Q’Œx˜˜1˜qš5œˆ1ˆàœGÑ€IˆzÝ
Œ	�)ÑÔ€Aå
˜RÑ
 Ô
 €CØ‡K‚K��N„N€NØˆQŒ4��1”€q€AÝˆy˜1‰}ÑÔ€Dõ Œ)×
Ò
 Ñ
"Ô
"€CÝ
Œˆa�—’˜9 c¨JÑ&6Ñ7Ô7Ð7Ô8€Aõ ¨!Ð
,Ñ
,Ô
,€CØ�gŠg�a˜˜˜”h  % 4 %¤Ñ)Ô)×7Ò7¸¸$¸%¸%¼ÑAÔA€Gàð  ð ˜!˜!˜!˜Q˜$”-ˆà�[Š[˜˜4˜5˜5œÑ"Ô"€FØˆtˆuˆuŒX€FØ�6˜7Ð"Ð"ó    c                 óN  — t          j        | ¦  «        d         }|| |k             }|| |k             }|                     dd¦  «        |                     dd¦  «        z
  }t          j        |dk    ¦  «        }|t	          t          |¦  «        t          |¦  «        z  ¦  «        z  S )zKAlternative implementation to check for correctness of
    `roc_auc_score`.r0   éÿÿÿÿr   )r5   ÚuniqueÚreshapeÚsumÚfloatÚlen)rL   rJ   Ú	pos_labelÚposÚnegÚdiff_matrixÚ	n_corrects          rM   Ú_aucr\   r   s•   € õ ”	˜&Ñ!Ô! !Ô$€Ið �&˜IÒ%Ô
&€CØ
�&˜IÒ%Ô
&€CØ—+’+˜a Ñ$Ô$ s§{¢{°2°qÑ'9Ô'9Ñ9€KÝ”�{ Q’Ñ'Ô'€Ià•u�S ™XœX­¨C©¬Ñ0Ñ1Ô1Ñ1Ð1rO   c                 ó�  — t          j        | ¦  «        d         }t          j        | |k    ¦  «        }t          j        |¦  «        ddd…         }||         }| |         } d}t	          t          |¦  «        ¦  «        D ]D}| |         |k    r6d}t	          d|dz   ¦  «        D ]}| |         |k    r|dz  }Œ||dz   z  }||z  }ŒE||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.
    r0   NrQ   r   ç      ð?)r5   rR   rT   ÚargsortÚrangerV   )	rL   rJ   rW   Ún_posÚorderÚscoreÚiÚprecÚjs	            rM   Ú_average_precisionrg   �   så   € õ ”	˜&Ñ!Ô! !Ô$€IÝŒF�6˜YÒ&Ñ'Ô'€EÝŒ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‰=ÐrO   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   r0   )r   ÚlistÚreversedr`   rV   )rL   rJ   Ú	precisionÚrecallÚ	thresholdÚaverage_precisionrd   s          rM   Ú_average_precision_slowro   Ÿ   s™   € õ $:¸&À'Ñ#JÔ#JÑ €Iˆv�yÝ•X˜iÑ(Ô(Ñ)Ô)€IÝ•(˜6Ñ"Ô"Ñ#Ô#€FØÐÝ�1•c˜)‘n”nÑ%Ô%ð Hð HˆØ˜Y qœ\¨V°A¬Y¸ÀÀAÁ¼Ñ-FÑGÑGÐÐØÐrO   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                 óX  — t          | |¦  «        \  }}}|||k             }t          j        ||¦  «        }|||k             }t          j        ||k    ¦  «        }|dz
  }	||	         ||         g}
||	         ||         g}t          j        |t          j        ||
|¦  «        ¦  «        }||fS )Nr0   )r   r5   ÚappendÚargmaxÚinterp)rL   Ú	y_predictÚmax_fprÚfprÚtprÚ_Únew_fprÚnew_tprÚidx_outÚidx_inÚx_interpÚy_interps               rM   Ú_partial_rocz,_partial_roc_auc_score.<locals>._partial_roc·   s®   € Ý ¨	Ñ2Ô2‰ˆˆS�!Ø�c˜W’nÔ%ˆÝ”)˜G WÑ-Ô-ˆØ�c˜W’nÔ%ˆÝ”)˜C 'šMÑ*Ô*ˆØ˜1‘ˆØ˜”K  W¤Ð.ˆØ˜”K  W¤Ð.ˆÝ”)˜G¥R¤Y¨w¸À(Ñ%KÔ%KÑLÔLˆØ˜Ð!Ð!rO   r   ç      à?r0   )r	   )rL   ru   rv   r€   rz   r{   Úpartial_aucÚfpr1Úfpr2Úmin_areaÚmax_areas              rM   Ú_partial_roc_auc_scorer‡   ²   s…   € ð

"ð 
"ð 
"ð $�| 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ÐGrO   ÚdropTc                 óB  — t          d¬¦  «        \  }}}t          ||¦  «        }t          ||| ¬¦  «        \  }}}t          ||¦  «        }t	          ||d¬¦  «         t          |t          ||¦  «        ¦  «         |j        |j        k    sJ ‚|j        |j        k    sJ ‚d S )NT©rA   ©Údrop_intermediater+   ©Údecimal)rN   r\   r   r	   r#   r"   r   r4   )	rˆ   rL   ry   rJ   Úexpected_aucrw   rx   Ú
thresholdsÚroc_aucs	            rM   Útest_roc_curver’   Î   s²   € õ )°Ð5Ñ5Ô5Ñ€FˆAˆwÝ˜ Ñ(Ô(€Lå$ V¨WÈÐMÑMÔMÑ€CˆˆjÝ�#�s‰mŒm€GÝ˜g |¸QÐ?Ñ?Ô?Ð?Ý˜¥¨v°wÑ!?Ô!?Ñ@Ô@Ð@ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(Ð(Ð(rO   c                  ó\  — t           j                             d¦  «        } t          j        dgdz  dgdz  z   ¦  «        }|                      dd¬¦  «        }t          ||d¬¦  «        \  }}}|d         dk    sJ ‚|d	         dk    sJ ‚|j        |j        k    sJ ‚|j        |j        k    sJ ‚d S )
Nr   é2   r0   é   éd   ©ÚsizeTr‹   rQ   )r5   r9   r:   ÚarrayÚrandintr   r4   )rG   rL   rK   rw   rx   Úthrs         rM   Útest_roc_curve_end_pointsrœ   Ü   sº   € õ Œ)×
Ò
 Ñ
"Ô
"€CÝŒX�q�c˜B‘h !  r¡Ñ)Ñ*Ô*€FØ�[Š[˜ ˆ[Ñ%Ô%€FÝ˜f fÀÐEÑEÔE�M€CˆˆcØˆqŒ6�QŠ;ˆ;ˆ;ˆ;ØˆrŒ7�aŠ<ˆ<ˆ<ˆ<ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜œ	Ò!Ð!Ð!Ð!Ð!Ð!rO   c                  ód  — t          d¬¦  «        \  } }}t          | |¦  «        \  }}}g }|D ]L}t          j        ||k    | z  ¦  «        }t          j        | ¦  «        }	|                     d|z  |	z  ¦  «         ŒMt          ||d¬¦  «         |j        |j        k    sJ ‚|j        |j        k    sJ ‚d S )NTrŠ   r^   r+   r�   )rN   r   r5   rT   rr   r#   r4   )
rL   ry   rJ   rw   rx   r�   Útpr_correctÚtÚtprF   s
             rM   Útest_roc_returns_consistencyr¡   é   sÓ   € õ )°Ð5Ñ5Ô5Ñ€FˆAˆwÝ$ V¨WÑ5Ô5Ñ€Cˆˆjð €KØð )ð )ˆÝŒV�W ’\ VÑ+Ñ,Ô,ˆÝŒF�6‰NŒNˆØ×Ò˜3 ™8 a™<Ñ(Ô(Ð(Ð(õ ˜c ;¸Ð:Ñ:Ô:Ð:ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(Ð(Ð(rO   c                  ó²   — t          d¬¦  «        \  } }}t          j        t          ¦  «        5  t	          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NFrŠ   )rN   ÚpytestÚraisesÚ
ValueErrorr   )rL   ry   rJ   s      rM   Útest_roc_curve_multir¦   ü   s�   € å(°Ð6Ñ6Ô6Ñ€FˆAˆwå	Œ•zÑ	"Ô	"ð #ð #Ý�&˜'Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   ®AÁAÁAc                  óè   — t          d¬¦  «        \  } }}t          | |dz
  ¦  «        \  }}}t          ||¦  «        }t          |dd¬¦  «         |j        |j        k    sJ ‚|j        |j        k    sJ ‚d S )NTrŠ   r�   çÍÌÌÌÌÌì?r+   r�   )rN   r   r	   r#   r4   )rL   ry   rJ   rw   rx   r�   r‘   s          rM   Útest_roc_curve_confidencer©     s†   € å(°Ð5Ñ5Ô5Ñ€FˆAˆwå$ V¨W°s©]Ñ;Ô;Ñ€CˆˆjÝ�#�s‰mŒm€GÝ˜g t°QÐ7Ñ7Ô7Ð7ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(Ð(Ð(rO   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 ‚d S )NTrŠ   r�   r+   r�   gö(\�Âõè?)rN   r5   Úonesr4   r   r	   r#   Úzeros)rL   ÚpredrJ   Útrivial_predrw   rx   r�   r‘   s           rM   Útest_roc_curve_hardr¯     sp  € å+°4Ð8Ñ8Ô8Ñ€FˆD�'õ ”7˜6œ<Ñ(Ô(€LÝ$ V¨\Ñ:Ô:Ñ€CˆˆjÝ�#�s‰mŒm€GÝ˜g t°QÐ7Ñ7Ô7Ð7ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(õ ”8˜FœLÑ)Ô)€LÝ$ V¨\Ñ:Ô:Ñ€CˆˆjÝ�#�s‰mŒm€GÝ˜g t°QÐ7Ñ7Ô7Ð7ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(õ % V¨TÑ2Ô2Ñ€CˆˆjÝ�#�s‰mŒm€GÝ˜g t°QÐ7Ñ7Ô7Ð7ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(Ð(Ð(rO   c                  óÆ  — g d¢} g d¢}d}t          j        t          |¬¦  «        5  t          | |¦  «        \  }}}d d d ¦  «         n# 1 swxY w Y   t	          |t          j        t          |¦  «        t
          j        ¦  «        ¦  «         |j	        |j	        k    sJ ‚|j	        |j	        k    sJ ‚d}t          j        t          |¬¦  «        5  t          d„ | D ¦   «         |¦  «        \  }}}d d d ¦  «         n# 1 swxY w Y   t	          |t          j        t          |¦  «        t
          j        ¦  «        ¦  «         |j	        |j	        k    sJ ‚|j	        |j	        k    sJ ‚d S )N)
r0   r0   r0   r0   r0   r0   r0   r0   r0   r0   )
r   r0   r   r0   r   r0   r   r0   r   r0   úINo negative samples in y_true, false positive value should be meaningless©ÚmatchúHNo positive samples in y_true, true positive value should be meaninglessc                 ó   — g | ]}d |z
  ‘ŒS )r0   © )Ú.0Úxs     rM   ú
<listcomp>z,test_roc_curve_one_label.<locals>.<listcomp>?  s   € Ð)@Ð)@Ð)@°A¨!¨a©%Ð)@Ð)@Ð)@rO   )
r£   Úwarnsr   r   r$   r5   ÚfullrV   Únanr4   )rL   rK   Úexpected_messagerw   rx   r�   s         rM   Útest_roc_curve_one_labelr¾   +  sþ  € Ø+Ð+Ð+€FØ+Ð+Ð+€Fð 	Tð õ 
ŒÕ,Ð4DÐ	EÑ	EÔ	Eð 9ð 9Ý(¨°Ñ8Ô8ÑˆˆS�*ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9õ �s�BœG¥C¨
¡O¤OµR´VÑ<Ô<Ñ=Ô=Ð=ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(ð 	Sð õ 
ŒÕ,Ð4DÐ	EÑ	EÔ	Eð Jð JÝ(Ð)@Ð)@¸Ð)@Ñ)@Ô)@À&ÑIÔIÑˆˆS�*ðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jõ �s�BœG¥C¨
¡O¤OµR´VÑ<Ô<Ñ=Ô=Ð=ØŒ9˜œ	Ò!Ð!Ð!Ð!ØŒ9˜
Ô(Ò(Ð(Ð(Ð(Ð(Ð(s#   ¦AÁAÁAÃC8Ã8C<Ã?C<c                  óJ  — 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 ¦  «         n# 1 swxY w Y   t          |g d¢¦  «         t          |t          j        t          j        t          j        g¦  «         d}t	          j        t          |¬¦  «        5  t          | |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j
        |¦  «        sJ ‚ddg} dd	g}d}t	          j        t          |¬¦  «        5  t          | |¦  «        \  }}}d d d ¦  «         n# 1 swxY w Y   t          |t          j        t          j        t          j        g¦  «         t          |g d¢¦  «         d}t	          j        t          |¬¦  «        5  t          | |¦  «        }d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   t	          j        t          |¬¦  «        5  t          | |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   t	          j        t          |¬¦  «        5  t          | |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   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¦  «         d S )Nr   r0   ©r   r   r0   ©r   r0   r0   r^   ç        r�   ç      Ð?ç      è?r´   r²   ©rÂ   r�   r^   ú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   r5   r¼   ÚmathÚisnanr™   )rL   rJ   rx   rw   ry   r‘   r½   r	   s           rM   Útest_roc_curve_toydatarÏ   F  sb	  € à�ˆV€FØ�!ˆf€GÝ˜F GÑ,Ô,�K€CˆˆaÝ˜F GÑ,Ô,€GÝ˜c 9 9 9Ñ-Ô-Ð-Ý˜c 9 9 9Ñ-Ô-Ð-Ý˜ Ñ%Ô%Ð%à�ˆV€FØ�!ˆf€GÝ˜F GÑ,Ô,�K€CˆˆaÝ˜F GÑ,Ô,€GÝ˜c 9 9 9Ñ-Ô-Ð-Ý˜c 9 9 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 9 9Ñ-Ô-Ð-Ý˜c 9 9 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Ñ	EÔ	Eð 1ð 1Ý ¨Ñ0Ô0‰ˆˆS�!ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å˜c ? ? ?Ñ3Ô3Ð3Ý˜c¥B¤F­B¬FµB´FÐ#;Ñ<Ô<Ð<ð	5ð õ 
ŒÕ,Ð4DÐ	EÑ	EÔ	Eð -ð -Ý˜F GÑ,Ô,ˆð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -åŒ:�c‰?Œ?ÐÐˆ?ð �ˆV€FØ�Tˆl€Gð 	Tð õ 
ŒÕ,Ð4DÐ	EÑ	EÔ	Eð 1ð 1Ý ¨Ñ0Ô0‰ˆˆS�!ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å˜c¥B¤F­B¬FµB´FÐ#;Ñ<Ô<Ð<Ý˜c ? ? ?Ñ3Ô3Ð3ð	5ð õ 
ŒÕ,Ð4DÐ	EÑ	EÔ	Eð -ð -Ý˜F GÑ,Ô,ˆð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -åŒ:�c‰?Œ?ÐÐˆ?õ ŒX˜˜1�v  1˜vÐ&Ñ'Ô'€FÝŒh˜˜A˜  A Ð'Ñ(Ô(€GÝ	ŒÕ,Ð4DÐ	EÑ	EÔ	Eð 8ð 8Ý�f˜g¨wÐ7Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8å	ŒÕ,Ð4DÐ	EÑ	EÔ	Eð ;ð ;Ý�f˜g¨zÐ:Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;å� f¨g¸yÐIÑIÔIÈ3ÑOÔOÐOÝ� f¨g¸wÐGÑGÔGÈÑMÔMÐMåŒX˜˜1�v  1˜vÐ&Ñ'Ô'€FÝŒh˜˜A˜  A Ð'Ñ(Ô(€GÝ	ŒÕ,Ð4DÐ	EÑ	EÔ	Eð 8ð 8Ý�f˜g¨wÐ7Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8å	ŒÕ,Ð4DÐ	EÑ	EÔ	Eð ;ð ;Ý�f˜g¨zÐ:Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;å� f¨g¸yÐIÑIÔIÈ3ÑOÔOÐOÝ� f¨g¸wÐGÑGÔGÈÑMÔMÐMåŒX˜˜1�v  1˜vÐ&Ñ'Ô'€FÝŒh˜˜A˜  A Ð'Ñ(Ô(€GÝ� f¨g¸wÐGÑGÔGÈÑKÔKÐKÝ� f¨g¸zÐJÑJÔJÈAÑNÔNÐNÝ� f¨g¸yÐIÑIÔIÈ1ÑMÔMÐMÝ� f¨g¸wÐGÑGÔGÈÑKÔKÐKåŒX˜˜1�v  1˜vÐ&Ñ'Ô'€FÝŒh˜˜c˜
 S¨# JÐ/Ñ0Ô0€GÝ� f¨g¸wÐGÑGÔGÈÑMÔMÐMÝ� f¨g¸zÐJÑJÔJÈCÑPÔPÐPÝ� f¨g¸yÐIÑIÔIÈ3ÑOÔOÐOÝ� f¨g¸wÐGÑGÔGÈÑMÔMÐMÐMÐMs�   ÈH'È'H+È.H+ÊJ/Ê/J3Ê6J3Ë5LÌLÌLÎNÎN"Î%N"ÐP-Ð-P1Ð4P1ÑQ2Ñ2Q6Ñ9Q6ÔT+Ô+T/Ô2T/ÕU0Õ0U4Õ7U4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¦  «         d S )N©r   r   r   r   r0   r0   ©rÂ   çš™™™™™É?r�   ç333333ã?çffffffæ?r^   Tr‹   r^   rÕ   rÂ   ©r   r   r   r   r   r   r   r0   r0   r0   r0   r0   r0   ©rÂ   çš™™™™™¹?rÔ   rÔ   rÕ   çš™™™™™é?r¨   rÔ   rÕ   rÙ   r¨   r¨   r^   r¨   rÔ   )r   r#   r5   Úinf)rL   rJ   rx   rw   r�   s        rM   Ú test_roc_curve_drop_intermediaterÛ   ¸  s¦   € àÐÐ€FØ,Ð,Ð,€GÝ$ V¨WÈÐMÑMÔMÑ€CˆˆjÝ˜j­2¬6°3¸¸SÐ*AÑBÔBÐBð 5Ð4Ð4€FØOÐOÐO€GÝ$ V¨WÈÐMÑMÔMÑ€CˆˆjÝ˜j­2¬6°3¸¸SÀ#ÀsÐ*KÑLÔLÐLÐLÐLrO   c                  ó,  — g d¢} g d¢}t          j        dd¦  «        }t          | ||¬¦  «        \  }}}t          j        |¦  «        dk                          ¦   «         dk    sJ ‚t          j        |¦  «        dk                          ¦   «         dk    sJ ‚d S )N©r   r   r0   r0   r0   )rØ   rÕ   ç333333Ó?çš™™™™™Ù?r�   rÓ   é   ©Úsample_weightr   )r5   Úrepeatr   ÚdiffrT   )rL   rJ   râ   rw   rx   ry   s         rM   Ú!test_roc_curve_fpr_tpr_increasingrå   Æ  s�   € ð ˆ_ˆ_€FØ'Ð'Ð'€GÝ”I˜c 1Ñ%Ô%€MÝ˜F G¸=ÐIÑIÔI�K€CˆˆaÝŒG�C‰LŒL˜1Ò×!Ò!Ñ#Ô# qÒ(Ð(Ð(Ð(ÝŒG�C‰LŒL˜1Ò×!Ò!Ñ#Ô# qÒ(Ð(Ð(Ð(Ð(Ð(rO   c                  ó‚  — 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¦  «         d S )Nr   r0   r�   ©r0   r   r   rÁ   ©r   r�   r0   )r#   r	   )r¸   rC   s     rM   Útest_aucré   Ò  sÚ   € à	
ˆAˆ€AØ	
ˆAˆ€AÝ�c ! Q™iœi¨Ñ-Ô-Ð-Ø	
ˆAˆ€AØ	
ˆAˆ€AÝ�c ! Q™iœi¨Ñ-Ô-Ð-Øˆ	ˆ	€AØˆ	ˆ	€AÝ�c ! Q™iœi¨Ñ-Ô-Ð-Ø	
ˆAˆ€AØ	
ˆAˆ€AÝ�c ! Q™iœi¨Ñ+Ô+Ð+Øˆˆ€AØˆˆ€AÝ�c ! Q™iœi¨Ñ-Ô-Ð-Ð-Ð-rO   c                  ó   — t          j        t          ¦  «        5  t          g d¢ddg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          dgdg¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢} g d¢}d                     t          j        | ¦  «        ¦  «        }t          j        t          t          j        |¦  «        ¬¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	NrÅ   rØ   rÓ   rÂ   )r+   r0   r•   é   )rà   é   é   é   z+x is neither increasing nor decreasing : {}r²   )	r£   r¤   r¥   r	   Úformatr5   r™   ÚreÚescape)r¸   rC   Úerror_messages      rM   Útest_auc_errorsró   å  sº  € å	Œ•zÑ	"Ô	"ð )ð )ÝˆOˆOˆO˜c 3˜ZÑ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ 
Œ•zÑ	"Ô	"ð ð ÝˆSˆE�C�5ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 	ˆˆ€AØˆˆ€AØA×HÒHÍÌÐRSÉÌÑUÔU€MÝ	Œ•z­¬°=Ñ)AÔ)AÐ	BÑ	BÔ	Bð ð ÝˆAˆq‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s1   š;»?Á?ÁA>Á>BÂBÃ%DÄDÄ
Dzy_true, labels)r   r0   r   r+   ©r   r0   r+   )ÚaÚbrõ   Úc)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          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 ¦  «         d S # 1 swxY w Y   d S )N©rØ   rÙ   rØ   ©rÞ   rß   rÞ   ©çffffffÖ?r�   ç333333Ã?©r   rÓ   rÙ   ©r0   r   r0   )rØ   rÞ   rü   ©r   r0   r   )rÙ   rß   r�   r+   ©r0   r0   r   )rØ   rü   r   rÀ   )rØ   rý   rÙ   r0   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²   )r5   r™   r   r"   rÉ   r£   r¤   ÚNotImplementedError)rL   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                    rM   Ú#test_multiclass_ovo_roc_auc_toydatar  ö  sQ  € õ ŒxØ	ˆˆ˜/˜/˜/Ð+<Ð+<Ð+<¸m¸m¸mÐLñô €Hõ ˜Y˜Y˜YÐ(8Ð(8Ð(8Ñ9Ô9€Hå˜Y˜Y˜Y¨¨¨Ñ8Ô8€HØ  8Ñ+¨qÑ0Ðõ ˜Y˜Y˜Y¨¨¨Ñ7Ô7€HÝ˜Y˜Y˜YÐ(8Ð(8Ð(8Ñ9Ô9€HØ  8Ñ+¨qÑ0Ðõ ˜a ˜V c¨3 ZÑ0Ô0€HÝ˜a ˜V c¨3 ZÑ0Ô0€HØ  8Ñ+¨qÑ0Ðð -Ð/?Ñ?ÐBRÑRÐVWÑWÐÝÝ�f˜h¨vÀ5ÐIÑIÔIØñô ð ð $Ð%5Ð7GÐH€KØ#Ð#Ð#€JÝœ K¸ÐDÑDÔDÐÝÝØ�H V¸È
ð	
ñ 	
ô 	
ð 	ñ	ô ð ð M€MÝ	ŒÕ*°-Ð	@Ñ	@Ô	@ð Xð XÝ�f˜h¨vÀ5ÐRVÐWÑWÔWÐWðXð Xð Xñ Xô Xð Xð Xð Xð Xð Xð Xð Xøøøð Xð Xð Xð Xð Xð Xs   Ä;EÅE!Å$E!)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¬¦  «        |¦  «         d S )N)rÓ   rÂ   rÙ   )rÔ   rÂ   rß   )çš™™™™™á?rÂ   çÍÌÌÌÌÌÜ?)rß   rÂ   rÔ   )r0   r   r0   r   )rÓ   rÔ   r  rß   ©r   r0   r   r0   )rÙ   rß   r  rÔ   r+   r  r  rÊ   r  ©r5   r™   r   r"   )rL   r  r	  r
  r  Ú	ovo_scores         rM   Ú*test_multiclass_ovo_roc_auc_toydata_binaryr  1  sá   € õ ŒxØ	ˆˆ˜/˜/˜/Ð+<Ð+<Ð+<¸o¸o¸oÐNñô €Hõ ˜\˜\˜\Ð+@Ð+@Ð+@ÑAÔA€Hå˜\˜\˜\Ð+@Ð+@Ð+@ÑAÔA€HØ˜HÑ$¨Ñ)€IåÝ�f˜h¨vÀ5ÐIÑIÔIÈ9ñô ð õ
 ÝØ�H V¸È
ð	
ñ 	
ô 	
ð 	ñ	ô ð ð ð rO   )r   r0   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¬¦  «        |¦  «         d S )N©r^   rÂ   rÂ   )rØ   r�   rß   )rØ   rØ   rÙ   )rÞ   rÞ   rß   ©r0   r   r   r   r   )r   r0   r   r   r0   ©r   r   r0   r0   r+   Úovr)r  r  rÉ   g      @)r  r  rÃ   r�   rÊ   r  )rL   r  r	  Úout_0Úout_1Úout_2Úresult_unweightedÚresult_weighteds           rM   Ú#test_multiclass_ovr_roc_auc_toydatar*  U  s]  € õ ŒxØ	ˆˆ˜/˜/˜/¨?¨?¨?¸O¸O¸OÐLñô €Hõ
 ˜,˜,˜,¨°°°°A°¬Ñ7Ô7€EÝ˜,˜,˜,¨°°°°A°¬Ñ7Ô7€EÝ˜,˜,˜,¨°°°°A°¬Ñ7Ô7€EÝÝ�f˜h°EÀ&ÐRVÐWÑWÔWØ	��uÐñô ð ð  ™¨Ñ.°#Ñ5ÐÝÝ�f˜h°EÀ&ÐIÑIÔIØñô ð ð ˜d‘l U¨T¡\Ñ1°E¸C±KÑ?€OÝÝØ�H¨%¸È
ð	
ñ 	
ô 	
ð 	ñ	ô ð ð ð rO   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 ‚d S )N)r•   r0   r+   r   )rÂ   rÂ   rÂ   r^   )rÂ   r^   rÂ   rÂ   )rÂ   rÂ   r^   rÂ   )rÄ   çš™™™™™©?r,  rý   ©r  rÉ   r^   rÃ   )rë   rë   r�   )r5   r™   r"   r   r«   r£   Úapprox)r  rÉ   rL   Ú	y_perfectÚy_imperfectÚy_chances         rM   Ú0test_perfect_imperfect_chance_multiclass_roc_aucr2  €  s#  € õ ŒX�l�l�lÑ#Ô#€Fð 	ÐÐØÐÐØÐÐØ Ð Ð ð	€Iõ Ý�f˜i°[È'ÐRÑRÔRØñô ð ð 	ÐÐØÐÐØÐÐØÐÐð	€Kõ 	�f˜k°{ÈGÐTÑTÔTØ
ò	ð 	ð 	ð 	ð
 •b”g˜f‘o”oÑ%€HÝØ� k¸7ðñ ô å	Œ�sÑ	Ô	òð ð ð ð ð rO   c                 ó¤  ‡	— | Š	t           j                             g d¢d‰	¬¦  «        }t          j        ˆ	fd„|D ¦   «         ¦  «        }t          |g d¢¬¦  «        }t          |                     ¦   «         |                     ¦   «         ¦  «        \  }}}t          ||¦  «        }t          ||dd¬	¦  «        }|t          j        |¦  «        k    sJ ‚d S )
N)ç       @r^   r�   éè  )r˜   r/   c                 óx   •— g | ]6}t           j                             d |‰¬¦  «                             ¦   «         ‘Œ7S )r0   )ÚnrF   r/   )r   ÚmultinomialÚrvsrs   )r·   Úy_pred_iÚseeds     €rM   r¹   z3test_micro_averaged_ovr_roc_auc.<locals>.<listcomp>²  sM   ø€ ð 	
ð 	
ð 	
àõ Ô×!Ò! A¨ÀÐ!ÑEÔE×LÒLÑNÔNð	
ð 	
ð 	
rO   rô   )Úclassesr$  rÌ   r-  )r   Ú	dirichletr9  r5   Úasarrayr   r   Úravelr	   r   r£   r.  )
Úglobal_random_seedrK   rL   Úy_onehotrw   rx   ry   Úroc_auc_by_handÚroc_auc_autor;  s
            @rM   Útest_micro_averaged_ovr_roc_aucrD  ª  sä   ø€ Ø€Dõ
 Œ_× Ò    °tÈ$Ð ÑOÔO€FÝŒZð	
ð 	
ð 	
ð 	
à"ð	
ñ 	
ô 	
ñô €Fõ ˜f¨i¨i¨iÐ8Ñ8Ô8€HÝ˜HŸNšNÑ,Ô,¨f¯lªl©n¬nÑ=Ô=�K€CˆˆaÝ˜#˜s‘m”m€OÝ  ¨¸UÈGÐTÑTÔT€LØ�fœm¨LÑ9Ô9Ò9Ð9Ð9Ð9Ð9Ð9rO   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', 3r0   rõ   rö   zMNumber of given labels, 4, not equal to the number of columns in 'y_score', 3)r   r0   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 ¦  «         d S # 1 swxY w Y   d S )Nrù   rú   rû   rþ   r²   r  )r5   r™   r£   r¤   r¥   r   )ÚmsgrL   r  r  r	  s        rM   Ú*test_roc_auc_score_multiclass_labels_errorrI  ¾  sÛ   € õR ŒxØ	ˆˆ˜/˜/˜/Ð+<Ð+<Ð+<¸m¸m¸mÐLñô €Hõ 
Œ•z¨Ð	-Ñ	-Ô	-ð Pð PÝ�f˜h¨vÀ;ÐOÑOÔOÐOðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pð Pð Ps   ¼AÁ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  rv   z'multi_class must be in \('ovo', 'ovr'\)c                 ó"  — t          d¦  «        }|                     dd¦  «        }t          |¦  «        }|                     ddd¬¦  «        }t	          j        t          | ¬¦  «        5  t          ||fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Né”  é   r•   r   r—   r²   )r)   Úrandr%   rš   r£   r¤   r¥   r   )rH  ÚkwargsrG   rJ   Úy_probrL   s         rM   Ú#test_roc_auc_score_multiclass_errorrP    sØ   € õN ˜SÑ
!Ô
!€CØ�hŠh�r˜1‰oŒo€GÝ�WÑÔ€FØ�[Š[˜˜A Bˆ[Ñ'Ô'€FÝ	Œ•z¨Ð	-Ñ	-Ô	-ð 0ð 0Ý�f˜fÐ/Ð/¨Ð/Ð/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   Á(BÂBÂBc                  ól  — t          d¦  «        } |                      d¦  «        }t          j        dd¬¦  «        }d}t	          j        t          |¬¦  «        5  t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        dd¬¦  «        }t	          j        t          |¬¦  «        5  t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        ddd¬¦  «        }t	          j        t          |¬¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrK  é
   r8   ©ÚdtyperÆ   r²   rQ   )
r)   rM  r5   r¬   r£   rº   r   r   r«   r»   )rG   rK   rL   Úwarn_messages       rM   Útest_auc_score_non_binary_classrV  >  sê  € õ ˜SÑ
!Ô
!€CØ�XŠX�b‰\Œ\€FåŒX�b Ð&Ñ&Ô&€Fð	5ð õ 
ŒÕ,°LÐ	AÑ	AÔ	Að &ð &Ý�f˜fÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &åŒW�R˜uÐ%Ñ%Ô%€FÝ	ŒÕ,°LÐ	AÑ	AÔ	Að &ð &Ý�f˜fÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &åŒW�R˜ 5Ð)Ñ)Ô)€FÝ	ŒÕ,°LÐ	AÑ	AÔ	Að &ð &Ý�f˜fÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s6   ÁA5Á5A9Á<A9Â1CÃCÃCÄD)Ä)D-Ä0D-c                  óÜ  — t          j        g d¢¦  «        } t          j        ddg¦  «        }t          j        t          d¬¦  «        5  t          | |¦  «         ddd¦  «         n# 1 swxY w Y   t          j        g d¢¦  «        } t          j        dt           j        dd	g¦  «        }t          j        t          d
¬¦  «        5  t          | |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zKTest `_sort_inputs_and_compute_classification_thresholds` input validation.r   rØ   r¨   úinconsistent numbers of samplesr²   Nr  rÞ   rÕ   zInput.*contains NaN)r5   r™   r£   r¤   r¥   r   r¼   ©rL   rJ   s     rM   ÚGtest_sort_inputs_and_compute_classification_thresholds_input_validationrZ  S  sƒ  € õ ŒX�i�i�iÑ Ô €FÝŒh˜˜S�zÑ"Ô"€Gå	Œ•zÐ)JÐ	KÑ	KÔ	Kð Lð LÝ:¸6À7ÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lõ ŒX�l�l�lÑ#Ô#€FÝŒh˜�RœV S¨#Ð.Ñ/Ô/€Gå	Œ•zÐ)>Ð	?Ñ	?Ô	?ð Lð LÝ:¸6À7ÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Ls$   ÁA%Á%A)Á,A)ÃC!Ã!C%Ã(C%c                  óŒ  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          | ||¦  «        \  }}}}t          |¦  «        t          |¦  «        cxk    rt          |¦  «        cxk    rdk    sn J ‚d|vsJ ‚d|vsJ ‚t          | |¦  «        \  }}}}|�J ‚t          j        g d¢¦  «        } t          j        g d	¢¦  «        }t          j        g d
¢¦  «        }t	          j        t          d¬¦  «        5  t          | ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zJTest zero weights in `_sort_inputs_and_compute_classification_thresholds`.©r   r0   r   r0   r   r0   )rØ   r¨   rÞ   rÕ   r�   rÓ   )rÂ   r4  r^   ç      ø?rÂ   rÙ   rë   rØ   r�   Nr   )rØ   r¨   rÞ   )rÂ   rÂ   rÂ   z$Sample weights must contain at leastr²   )r5   r™   r   rV   r£   r¤   r¥   )rL   rJ   râ   Úy_true_sortedÚy_score_sortedÚweight_sortedry   Úweights           rM   ÚCtest_sort_inputs_and_compute_classification_thresholds_zero_weightsrb  d  sÎ  € åŒXÐ(Ð(Ð(Ñ)Ô)€FÝŒhÐ5Ð5Ð5Ñ6Ô6€Gå”HÐ;Ð;Ð;Ñ<Ô<€Mõ 	;Ø�G˜]ñ	
ô 	
ñ 4€M�> =°!õ ˆ}ÑÔ¥ ^Ñ!4Ô!4ÐOÐOÒOÐO½¸MÑ8JÔ8JÐOÐOÒOÐOÈaÒOÐOÐOÐOÐOÐOØ�nÐ$Ð$Ð$Ð$Ø�nÐ$Ð$Ð$Ð$õ IØ�ñô �O€A€qˆ&�!ð ˆ>ˆ>ˆ>õ ŒX�i�i�iÑ Ô €FÝŒh���Ñ'Ô'€GÝ”H˜_˜_˜_Ñ-Ô-€Må	Œ•zÐ)OÐ	PÑ	PÔ	Pð 
ð 
Ý:Ø�G˜]ñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ÄD9Ä9D=Å D=c                  óž  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          | ||¦  «        \  }}}}t          j        |dd…         |dd…         k    ¦  «        sJ ‚t	          |t          j        g d¢¦  «        ¦  «         t	          |t          j        g d¢¦  «        ¦  «         t	          |d	d
…         ddg¦  «         t	          |d	d
…         ddg¦  «         t          j        g d¢¦  «        }t          | |¦  «        \  }}}}t	          |t          j        d
g¦  «        ¦  «         dS )zETest sorting in `_sort_inputs_and_compute_classification_thresholds`.)r   r0   r   r0   r0   )rØ   r¨   rÞ   rÕ   rÞ   )r^   r4  r]  r�   rÞ   NrQ   r0   )r4  r�   r]  rÞ   r^   )r   r0   r•   rë   r+   rë   rÞ   r   )r�   r�   r�   r�   r�   )r5   r™   r   Úallr$   )	rL   rJ   râ   r^  r_  r`  Úthreshold_idxsÚy_score_samery   s	            rM   Ú>test_sort_inputs_and_compute_classification_thresholds_sortingrg  †  sd  € åŒX�o�o�oÑ&Ô&€FÝŒhÐ0Ð0Ð0Ñ1Ô1€GÝ”HÐ6Ð6Ð6Ñ7Ô7€Mõ 	;Ø�G˜]ñ	
ô 	
ñ A€M�> =°.õ Œ6�.  " Ô%¨¸¸¸Ô);Ò;Ñ<Ô<Ð<Ð<Ð<Ý�}¥b¤hÐ/HÐ/HÐ/HÑ&IÔ&IÑJÔJÐJÝ�~¥r¤x°°°Ñ'=Ô'=Ñ>Ô>Ð>å�~ a¨ cÔ*¨S°#¨JÑ7Ô7Ð7Ý�} Q q SÔ)¨A¨q¨6Ñ2Ô2Ð2õ ”8Ð5Ð5Ð5Ñ6Ô6€LÝPØ�ñô Ñ€A€qˆ!ˆ^õ �~¥r¤x°°¡}¤}Ñ5Ô5Ð5Ð5Ð5rO   c                 ó@  — t           j                             | ¦  «        }d}|                     ddd¬¦  «        }|                     d¬¦  «        }t          j        |¦  «        }||z
  }t          ||¦  «        \  }}}	}
}t          |¦  «        t          |¦  «        cxk    r;t          |	¦  «        cxk    r't          |
¦  «        cxk    rt          |¦  «        k    sn J ‚t          |
|	z   |¦  «         t          ||z   |¦  «         t          ||z   |	z   |
z   |¦  «         dS )z.Smoke test for confusion_matrix_at_thresholds.r–   r   r+   r—   N)	r5   r9   r:   rš   ÚuniformrT   r   rV   r!   )r@  rG   rD   rL   rJ   ra   Ún_negÚtnsÚfpsÚfnsÚtpsr�   s               rM   Ú#test_confusion_matrix_at_thresholdsro  ¢  s"  € å
Œ)×
Ò
Ð 2Ñ
3Ô
3€Cà€IØ�[Š[˜˜A Cˆ[Ñ(Ô(€FØ�kŠk˜sˆkÑ#Ô#€GåŒF�6‰NŒN€EØ˜Ñ€Eå%CÀFÈGÑ%TÔ%TÑ"€Cˆˆc�3˜
åˆs‰8Œ8•s˜3‘x”xÐJÐJÒJÐJ¥3 s¡8¤8ÐJÐJÒJÐJ­s°3©x¬xÐJÐJÒJÐJ½3¸z¹?¼?ÒJÐJÐJÐJÐJÐJÝ�C˜#‘I˜uÑ%Ô%Ð%Ý�C˜#‘I˜uÑ%Ô%Ð%Ý�C˜#‘I ‘O cÑ)¨9Ñ5Ô5Ð5Ð5Ð5rO   Ú
curve_funcc                 ó  — t          d¦  «        }|                     ddd¬¦  «        }|                     d¦  «        }d}t          j        t
          |¬¦  «        5   | ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrK  r   r•   rR  r—   z"multiclass format is not supportedr²   )r)   rš   rM  r£   r¤   r¥   )rp  rG   rL   rK   rH  s        rM   Ú4test_confusion_matrix_at_thresholds_multiclass_errorrr  µ  sÅ   € å
˜SÑ
!Ô
!€CØ�[Š[˜˜A Bˆ[Ñ'Ô'€FØ�XŠX�b‰\Œ\€FØ
.€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð #ð #Øˆ
�6˜6Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   ÁA4Á4A8Á;A8c                 ó  — d}t          j        t          |¬¦  «        5   | t          j        ddgd¬¦  «        ddg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5   | t          j        ddgt
          ¬¦  «        ddg¦  «         d d d ¦  «         n# 1 swxY w Y   g d	¢} | g d
¢|¦  «        } | g d¢|¦  «        }t          ||¦  «        D ]%\  }}t          j                             ||¦  «         Œ&d S )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<U1rS  rÂ   r^   )rÂ   r^   rÓ   gáz®GáÚ?©r   r0   r0   r   )rÂ   r^   r^   rÂ   )	r£   r¤   r¥   r5   r™   ÚobjectÚzipÚtestingr!   )rp  rH  rK   Ú	int_curveÚfloat_curveÚint_curve_partÚfloat_curve_parts          rM   Ú6test_confusion_matrix_at_thresholds_implicit_pos_labelr|  ¿  sÛ  € ð
	ð õ 
Œ•z¨Ð	-Ñ	-Ô	-ð Bð BØˆ
•2”8˜S #˜J¨eÐ4Ñ4Ô4°s¸C°jÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bõ 
Œ•z¨Ð	-Ñ	-Ô	-ð Cð CØˆ
•2”8˜S #˜J­fÐ5Ñ5Ô5¸¸S°zÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð
 #Ð"Ð"€FØ�
˜<˜<˜<¨Ñ0Ô0€IØ�*Ð1Ð1Ð1°6Ñ:Ô:€KÝ,/°	¸;Ñ,GÔ,Gð Eð EÑ(ˆÐ(Ý
Œ
×"Ò" >Ð3CÑDÔDÐDÐDðEð Es#   ž%AÁAÁAÁ5*B+Â+B/Â2B/z.ignore:Support for labels represented as bytesÚlabels_typeri   r™   c                 ó²   — t          ddg|¦  «        }d}t          j        t          |¬¦  «        5   | |ddg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nó   aó   bz8Support for labels represented as bytes is not supportedr²   rÂ   r^   )r    r£   r¤   Ú	TypeError)rp  r}  r  rH  s       rM   Ú<test_confusion_matrix_at_thresholds_implicit_bytes_pos_labelr‚  Ø  s«   € õ    t ¨kÑ:Ô:€FØ
D€CÝ	Œ•y¨Ð	,Ñ	,Ô	,ð 'ð 'Øˆ
�6˜C ˜:Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   °AÁAÁAc                 óÒ   — g d¢}g d¢}g d¢} | |||¬¦  «        } | |d d…         |d d…         |d d…         ¬¦  «        }t          ||¦  «        D ]\  }}t          ||¦  «         Œd S )NrÝ   ©rØ   rÓ   rÞ   rß   r�   )r0   r0   r0   r�   r   rá   rQ   )rv  r!   )rp  rL   rJ   râ   Úresult_1Úresult_2Úarr_1Úarr_2s           rM   Ú6test_confusion_matrix_at_thresholds_zero_sample_weightr‰  æ  s£   € àˆ_ˆ_€FØ'Ð'Ð'€GØ%Ð%Ð%€Màˆz˜& '¸ÐGÑGÔG€HØˆz˜&  " œ+ w¨s°¨s¤|À=ÐQTÐRTÐQTÔCUÐVÑVÔV€Hå˜H hÑ/Ô/ð &ð &‰ˆˆuÝ˜˜uÑ%Ô%Ð%Ð%ð&ð &rO   c                 ó  — t          d¬¦  «        \  }}}t          ||| ¦  «         t          |dd …         |dd …         | ¬¦  «        \  }}}|d         dk    sJ ‚|d         |dd …                              ¦   «         k    sJ ‚d|t	          j        |dk    ¦  «        <   |                     ¦   «         }t          ||| ¦  «         t          ||¦  «         g d¢}g d	¢}	t          ||	| ¬¦  «        \  }}}| r7t          |g d
¢¦  «         t          |g d¢¦  «         t          |g d¢¦  «         n6t          |g d¢¦  «         t          |g d¢¦  «         t          |g d	¢¦  «         |j	        |j	        k    sJ ‚|j	        |j	        dz   k    sJ ‚d S )NTrŠ   r0   r‹   r   r^   rQ   ©r0   r   r   r0   )r0   r+   r•   rë   )r�   çÚÁQUUÕ?r^   r^   )r^   r�   r�   rÂ   )r0   r+   rë   )r�   rŒ  r�   r^   r^   )r^   r�   r�   r�   rÂ   )
rN   Ú_test_precision_recall_curver   Úmeanr5   ÚwhereÚcopyr$   r!   r˜   )
rˆ   rL   ry   rJ   rF   ÚrrŸ   Úy_true_copyr  Úpredict_probass
             rM   Útest_precision_recall_curver”  ó  sÈ  € å(°Ð5Ñ5Ô5Ñ€FˆAˆwÝ  ¨°$Ñ7Ô7Ð7õ % V¨A¨B¨B¤Z°¸¸¸´ÐPTÐUÑUÔU�G€A€qˆ!ØˆQŒ4�3Š;ˆ;ˆ;ˆ;ØˆQŒ4�6˜!˜"˜"”:—?’?Ñ$Ô$Ò$Ð$Ð$Ð$ð %'€F�2Œ8�F˜a’KÑ Ô Ñ!Ø—+’+‘-”-€KÝ  ¨°$Ñ7Ô7Ð7Ý�{ FÑ+Ô+Ð+àˆ\ˆ\€FØ!�\�\€NÝ$ V¨^ÈtÐTÑTÔT�G€A€qˆ!Øð )Ý˜Ð6Ð6Ð6Ñ7Ô7Ð7Ý˜Ð/Ð/Ð/Ñ0Ô0Ð0Ý˜˜9˜9˜9Ñ%Ô%Ð%Ð%å˜Ð;Ð;Ð;Ñ<Ô<Ð<Ý˜Ð4Ð4Ð4Ñ5Ô5Ð5Ý˜˜<˜<˜<Ñ(Ô(Ð(ØŒ6�Q”VÒÐÐÐØŒ6�Q”V˜a‘ZÒÐÐÐÐÐrO   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 ‚d S )Nr‹   g+‡ÙÎë?r•   r+   r�   r0   )	r   ro   r#   r
   r"   rg   r˜   r5   Ú
zeros_like)rL   rJ   rˆ   rF   r‘  r�   Úprecision_recall_aucs          rM   r�  r�    s"  € å-¨f°gÐQUÐVÑVÔVÑ€A€qˆ*Ý2°6¸7ÑCÔCÐÝÐ2°E¸1Ñ=Ô=Ð=ÝØÕ5°f¸gÑFÔFñô ð õ Ý˜6 7Ñ+Ô+Ð-AÈ1ðñ ô ð ð Œ6�Q”VÒÐÐÐØŒ6�Z”_ qÑ(Ò(Ð(Ð(Ð(å-Ø•”˜gÑ&Ô&¸$ðñ ô Ñ€A€qˆ*ð Œ6�Q”VÒÐÐÐØŒ6�Z”_ qÑ(Ò(Ð(Ð(Ð(Ð(Ð(rO   c           	      ó(  — 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 ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          ||¦  «        }d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          t          ||d¬¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          t          ||d¬¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   t          t          ||d¬¦  «        d¦  «         t          j        t          d¬¦  «        5  t          t          ||d¬¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          t          ||d¬¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚraise)rd  r   r0   r‹   )r�   r0   r0   r  r^   )r�   rÂ   r^   r!  r�   rÂ   rÃ   rÄ   z!No positive class found in y_truer²   rÀ   )r^   r^   r^   )r0   r�   rÂ   rÇ   rÈ   rÊ   rË   rÌ   Úignore)r5   Úerrstater   r
   r#   r"   r£   rº   ÚUserWarningr!   r™   )rˆ   rL   rJ   rF   r‘  ry   Úauc_prcs          rM   Ú#test_precision_recall_curve_toydatarž  )  s«  € å	Œ˜Ð	!Ñ	!Ô	!ð V
ð V
à�Q�ˆØ�a�&ˆÝ(¨°ÈDÐQÑQÔQ‰ˆˆ1ˆaÝ)¨&°'Ñ:Ô:ˆÝ! ! [ [ [Ñ1Ô1Ð1Ý! ! Y Y YÑ/Ô/Ð/Ý˜G SÑ)Ô)Ð)à�Q�ˆØ�a�&ˆÝ(¨°ÈDÐQÑQÔQ‰ˆˆ1ˆaÝ)¨&°'Ñ:Ô:ˆÝ! ! _ _ _Ñ5Ô5Ð5Ý! ! _ _ _Ñ5Ô5Ð5õ 	˜G SÑ)Ô)Ð)à�Q�ˆØ�a�&ˆÝ(¨°ÈDÐQÑQÔQ‰ˆˆ1ˆaÝ)¨&°'Ñ:Ô:ˆÝ! ! c¨1 XÑ.Ô.Ð.Ý! ! c¨1 XÑ.Ô.Ð.Ý˜G SÑ)Ô)Ð)à�Q�ˆØ�a�&ˆÝ(¨°ÈDÐQÑQÔQ‰ˆˆ1ˆaÝ)¨&°'Ñ:Ô:ˆÝ! ! [ [ [Ñ1Ô1Ð1Ý! ! Y Y YÑ/Ô/Ð/Ý˜G SÑ)Ô)Ð)à�Q�ˆØ˜�*ˆÝ(¨°ÈDÐQÑQÔQ‰ˆˆ1ˆaÝ)¨&°'Ñ:Ô:ˆÝ! ! c¨1 XÑ.Ô.Ð.Ý! ! a¨ XÑ.Ô.Ð.Ý˜G SÑ)Ô)Ð)à�Q�ˆØ˜�,ˆÝŒ\�+Ð-PÐQÑQÔQð 	Vð 	VÝ,¨V°WÐPTÐUÑUÔU‰GˆAˆq�!ð	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	VåŒ\�+Ð-PÐQÑQÔQð 	?ð 	?Ý-¨f°gÑ>Ô>ˆGð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?å˜˜9˜9˜9Ñ%Ô%Ð%Ý˜˜9˜9˜9Ñ%Ô%Ð%Ý˜ Ñ#Ô#Ð#à�Q�ˆØ˜�,ˆÝ(¨°ÈDÐQÑQÔQ‰ˆˆ1ˆaÝÕ3°F¸GÑDÔDÀcÑJÔJÐJÝ! ! _ _ _Ñ5Ô5Ð5Ý! ! ] ] ]Ñ3Ô3Ð3õ ”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜Q ˜F Q¨ FÐ+Ñ,Ô,ˆÝŒ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐIÑIÔIÈ3ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Œ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐLÑLÔLÈcñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 	Ý# F¨G¸YÐGÑGÔGÈñ	
ô 	
ð 	
õ 	Õ/°¸ÈÐQÑQÔQÐSVÑWÔWÐWå”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜Q ˜F Q¨ FÐ+Ñ,Ô,ˆÝŒ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐIÑIÔIÈ3ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Œ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐLÑLÔLÈcñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 	Ý# F¨G¸YÐGÑGÔGÈñ	
ô 	
ð 	
õ 	Õ/°¸ÈÐQÑQÔQÐSVÑWÔWÐWå”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜Q ˜F Q¨ FÐ+Ñ,Ô,ˆÝÝ# F¨G¸WÐEÑEÔEÀsñ	
ô 	
ð 	
õ 	Ý# F¨G¸ZÐHÑHÔHÈ#ñ	
ô 	
ð 	
õ 	Ý# F¨G¸YÐGÑGÔGÈñ	
ô 	
ð 	
õ 	Ý# F¨G¸WÐEÑEÔEÀsñ	
ô 	
ð 	
õ ”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜Q ˜F Q¨ FÐ+Ñ,Ô,ˆÝŒ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐIÑIÔIÈ3ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 	Ý# F¨G¸ZÐHÑHÔHÈ#ñ	
ô 	
ð 	
õ Œ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐKÑKÔKÈSñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Œ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐIÑIÔIÈ3ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 ”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜Q ˜F Q¨ FÐ+Ñ,Ô,ˆÝÕ/°¸ÈÐQÑQÔQÐSVÑWÔWÐWÝÝ# F¨G¸ZÐHÑHÔHÈ#ñ	
ô 	
ð 	
õ 	Ý# F¨G¸YÐGÑGÔGÈñ	
ô 	
ð 	
õ 	Õ/°¸ÈÐQÑQÔQÐSVÑWÔWÐWå”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜S #˜J¨¨c¨
Ð3Ñ4Ô4ˆÝÝ# F¨G¸WÐEÑEÔEÀsñ	
ô 	
ð 	
õ 	Ý# F¨G¸ZÐHÑHÔHÈ#ñ	
ô 	
ð 	
õ 	Ý# F¨G¸YÐGÑGÔGÈñ	
ô 	
ð 	
õ 	Ý# F¨G¸WÐEÑEÔEÀsñ	
ô 	
ð 	
ðiV
ð V
ð V
ñ V
ô V
ð V
ð V
ð V
ð V
ð V
ð V
øøøð V
ð V
ð V
ð V
õp 
Œ˜Ð	"Ñ	"Ô	"ð ð å”˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”(˜Q ˜F Q¨ FÐ+Ñ,Ô,ˆÝŒ\�+Ð-PÐQÑQÔQð 	ð 	ÝÝ'¨°ÀÐLÑLÔLÈañô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s‘  –HcÈ$IÈ;cÉI	ÉcÉI	ÉcÉ-J
É>cÊ
J	ÊcÊJ	ÊC&cÍ8!N%ÎcÎ%N)	Î)cÎ,N)	Î-cÏ!O8Ï,cÏ8O<	Ï<cÏ?O<	Ð BcÒ!R?Ò3cÒ?S	ÓcÓS	ÓcÓ%!TÔcÔT	ÔcÔT	ÔEcÙ !ZÚcÚZ	ÚcÚZ	Ú>cÛ!\ Û4cÜ \	ÜcÜ\	ÜcÜ&!]ÝcÝ]	ÝcÝ]	ÝE+cãcãcã2Afå!e/å#få/e3	å3få6e3	å7fæfæfc                  ó†  — 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
¢¦  «         dS )z9Check the behaviour of the `drop_intermediate` parameter.rÑ   rÒ   Tr‹   )rÂ   rÕ   r^   rÖ   r×   )rÂ   rÔ   rÕ   rÙ   r¨   r^   ©r   r   r   r   )rÂ   rØ   rÓ   rÞ   rÂ   rÞ   ©r0   r0   r0   r0   N)r   r!   )rL   rJ   rk   rl   r�   s        rM   Ú-test_precision_recall_curve_drop_intermediater¢  Í  sH  € àÐÐ€FØ,Ð,Ð,€GÝ$:Ø�¨4ð%ñ %ô %Ñ!€Iˆv�zõ �J   Ñ0Ô0Ð0ð 5Ð4Ð4€FØOÐOÐO€GÝ$:Ø�¨4ð%ñ %ô %Ñ!€Iˆv�zõ �JÐ >Ð >Ð >Ñ?Ô?Ð?ð ˆ\ˆ\€FØ"Ð"Ð"€GÝ$:Ø�¨4ð%ñ %ô %Ñ!€Iˆv�zõ �J  c 
Ñ+Ô+Ð+ð ˆ\ˆ\€FØ"Ð"Ð"€GÝ$:Ø�¨4ð%ñ %ô %Ñ!€Iˆv�zõ �JÐ 4Ð 4Ð 4Ñ5Ô5Ð5Ð5Ð5rO   c                  ó    — t          j        dt          ¬¦  «        } d| d d d…<   t          j        d¦  «        }t	          | |¦  «        dk    sJ ‚d S )Nr–   rS  r0   rë   rÃ   )r5   r¬   r8   r«   r
   rY  s     rM   Ú&test_average_precision_constant_valuesr¤  ï  sW   € õ
 ŒX�c¥Ð%Ñ%Ô%€FØ€Fˆ3ˆ3ˆQˆ3�KåŒg�c‰lŒl€Gõ # 6¨7Ñ3Ô3°tÒ;Ð;Ð;Ð;Ð;Ð;rO   c                  ó  — t          j        ddg¦  «        } t          j        ddg¦  «        }t          j        d¦  «        }t	          j        t          |¬¦  «        5  t          | |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r0   z;pos_label=2 is not a valid label. It should be one of [0 1]r²   r+   ©rW   )r5   r™   rð   rñ   r£   r¤   r¥   r
   ©rL   rK   Úerr_msgs      rM   Ú4test_average_precision_score_binary_pos_label_errorsr©  ý  sÆ   € åŒX�q˜!�fÑÔ€FÝŒX�q˜!�fÑÔ€FÝŒiÐUÑVÔV€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð =ð =Ý ¨¸!Ð<Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s   ÁA<Á<B ÂB 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 ¦  «         d S # 1 swxY w Y   d S )
Nr0   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¦  ©r5   r™   r£   r¤   r¥   r
   r§  s      rM   Ú8test_average_precision_score_multilabel_pos_label_errorsr¬    sî   € õ ŒX˜˜1�v  1˜v¨¨1 v°°1¨vÐ6Ñ7Ô7€FÝŒX˜˜S�z C¨ :°°S¨z¸CÀ¸:ÐFÑGÔG€Fð	6ð õ 
Œ•z¨Ð	1Ñ	1Ô	1ð =ð =Ý ¨¸!Ð<Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s   ÁA>Á>BÂ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 ¦  «         d S # 1 swxY w Y   d S )
N©r   r0   r+   r   r0   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«  )rL   rJ   r¨  s      rM   Ú8test_average_precision_score_multiclass_pos_label_errorsr¯    sò   € åŒXÐ(Ð(Ð(Ñ)Ô)€FÝŒhàˆOˆOØˆOˆOØˆOˆOØˆOˆOØˆOˆOØˆOˆOð	
ñ	ô 	€Gð	6ð õ 
Œ•z¨Ð	1Ñ	1Ô	1ð >ð >Ý ¨¸1Ð=Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð >ð >s   ÁA:Á:A>ÂA>c                  ó  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        d¦  «        }t	          j        t          |¬¦  «        5  t          | |¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          |¬¦  «        5  t          | |d¬¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          |¬¦  «        5  t          | |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zNTest ranking metrics, with multiclass support, raise if shape `y_score` is 1D.r®  )r�   rß   rÙ   r¨   rÙ   rÕ   z7`y_score` needs to be of shape `(n_samples, n_classes)`r²   Nr$  )r  )
r5   r™   rð   rñ   r£   r¤   r¥   r
   r   r   )rL   rJ   rH  s      rM   ÚDtest_multiclass_ranking_metrics_raise_for_incorrect_shape_of_y_scorer±  (  sÀ  € åŒXÐ(Ð(Ð(Ñ)Ô)€FÝŒhÐ5Ð5Ð5Ñ6Ô6€Gå
Œ)ÐMÑ
NÔ
N€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð 1ð 1Ý ¨Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å	Œ•z¨Ð	-Ñ	-Ô	-ð :ð :Ý�f˜g°5Ð9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :å	Œ•z¨Ð	-Ñ	-Ô	-ð .ð .Ý˜V WÑ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s6   ÁA9Á9A=Â A=ÂB>Â>CÃCÃ$DÄDÄ	D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 ‚d S )NTrŠ   r–   g�íµ ÷Æ°>rR  )rN   r   r
   )rL   ry   rJ   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              rM   Útest_score_scale_invariancerº  6  s  € õ )°Ð5Ñ5Ô5Ñ€FˆAˆwå˜F GÑ,Ô,€GÝ% f¨c°G©mÑ<Ô<ÐÝ'¨°°w±Ñ?Ô?ÐÝ# F¨G°b©LÑ9Ô9€OØÐ'Ò'Ð'Ð'Ð'ØÐ)Ò)Ð)Ð)Ð)Ø�oÒ%Ð%Ð%Ð%å$ V¨WÑ5Ô5€FÝ.¨v°s¸W±}ÑEÔEÐÝ0°¸À¹ÑHÔHÐÝ,¨V°W¸r±\ÑBÔB€NØÐ%Ò%Ð%Ð%Ð%ØÐ'Ò'Ð'Ð'Ð'Ø�^Ò#Ð#Ð#Ð#Ð#Ð#rO   z(y_true,y_score,expected_fpr,expected_fnrrÀ   rè   )r   rÃ   r�   )r�   rÄ   r0   ©rÃ   r�   rÄ   r   )r�   r�   r   rÁ   rÂ   rç   )r0   r0   r�   r   )r   r0   r0   r0   rÿ   r  )r   r�   r�   c                 ón   — t          | |¦  «        \  }}}t          ||¦  «         t          ||¦  «         d S ©N©r   r!   ©rL   rJ   Úexpected_fprÚexpected_fnrrw   Úfnrry   s          rM   Útest_det_curve_toydatarÃ  O  s?   € õ6 ˜F GÑ,Ô,�K€Cˆˆaå�C˜Ñ&Ô&Ð&Ý�C˜Ñ&Ô&Ð&Ð&Ð&rO   )rL   rJ   rÀ  rÁ  rŒ   )r0   r0   r�   rÂ   )r0   r0   rÂ   c                 ór   — t          | ||¬¦  «        \  }}}t          ||¦  «         t          ||¦  «         d S )Nr‹   r¾  )rL   rJ   rÀ  rÁ  rŒ   rw   rÂ  ry   s           rM   Ú test_det_curve_drop_intermediaterÅ  p  sE   € õ& ˜F GÐ?PÐQÑQÔQ�K€Cˆˆaå�C˜Ñ&Ô&Ð&Ý�C˜Ñ&Ô&Ð&Ð&Ð&rO   ©rÃ   r�   r�   c                 ón   — t          | |¦  «        \  }}}t          ||¦  «         t          ||¦  «         d S r½  r¾  r¿  s          rM   Útest_det_curve_tie_handlingrÈ  ‰  s?   € õ ˜F GÑ,Ô,�K€Cˆˆaå�C˜Ñ&Ô&Ð&Ý�C˜Ñ&Ô&Ð&Ð&Ð&rO   c                  ón   — t          t          g d¢g d¢¦  «        t          g d¢g d¢¦  «        ¦  «         d S )NrÀ   rè   rÑ   )r   r   r�   r�   r0   r0   )r!   r   r¶   rO   rM   Útest_det_curve_sanity_checkrÊ  �  sN   € åÝ�)�)�)˜[˜[˜[Ñ)Ô)ÝÐ$Ð$Ð$Ð&<Ð&<Ð&<Ñ=Ô=ñô ð ð ð rO   rJ   )r   rÃ   r�   rÄ   r0   c                 óÚ   — t          g d¢t          j        d| ¦  «        ¬¦  «        \  }}}t          |ddg¦  «         t          |ddg¦  «         t          || t          j        g¦  «         d S )Nr\  rì   rY  r0   r   )r   r5   r»   r!   rÚ   )rJ   rw   rÂ  rm   s       rM   Útest_det_curve_constant_scoresrÌ  ¥  s{   € å#Ø!Ð!Ð!­2¬7°1°gÑ+>Ô+>ðñ ô Ñ€Cˆˆiõ �C˜!˜Q˜Ñ Ô Ð Ý�C˜!˜Q˜Ñ Ô Ð Ý�I ­¬Ð0Ñ1Ô1Ð1Ð1Ð1rO   rL   )r   r   r   r   r   r0   rÑ   )r   r   r   r0   r0   r0   )r   r   r0   r0   r0   r0   )r   r0   r0   r0   r0   r0   c                 ót   — t          | | ¬¦  «        \  }}}t          |dg¦  «         t          |dg¦  «         d S )NrY  r   r¾  )rL   rw   rÂ  ry   s       rM   Útest_det_curve_perfect_scoresrÎ  °  sF   € õ  6°6Ð:Ñ:Ô:�K€Cˆˆaå�C˜!˜ÑÔÐÝ�C˜!˜ÑÔÐÐÐrO   zy_true, y_pred, err_msgrX  ©r   r   r   z#Only one class is present in y_true©r0   r0   r0   )ÚcancerrÑ  ú
not cancer)rÓ   rÞ   rÙ   zpos_label is not specifiedc                 óŽ   — t          j        t          |¬¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr²   )r£   r¤   r¥   r   r§  s      rM   Útest_det_curve_bad_inputrÔ  Á  s�   € õ  
Œ•z¨Ð	1Ñ	1Ô	1ð "ð "Ý�&˜&Ñ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "ó   œ:º>Á>c                  ó’  — 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…         ¦  «         d S )NrÑ  r•   rÒ  rí   )
rØ   rß   rÔ   rÓ   rÞ   rß   r�   rÔ   rÕ   r¨   r0   r¦  r   rß   rÓ   rQ   )r5   r™   r   r£   r.  r!   )	rL   Ú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	            rM   Útest_det_curve_pos_labelrß  Õ  s  € ØˆZ˜!‰^˜|˜n¨qÑ0Ñ0€FÝœHÐ%WÐ%WÐ%WÑXÔXÐØÐ1Ñ1Ðå4=ØØØð5ñ 5ô 5Ñ1€N�N Mõ
 AJØØØðAñ Aô AÑ=ÐÐ*Ð,=ð ˜Ô�vœ}¨SÑ1Ô1Ò1Ð1Ð1Ð1Ø˜QÔ¥6¤=°Ñ#5Ô#5Ò5Ð5Ð5Ð5õ �NÐ$6°t°t¸°tÔ$<Ñ=Ô=Ð=Ý�NÐ$6°t°t¸°tÔ$<Ñ=Ô=Ð=Ð=Ð=rO   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¦  «         d S )Nr   r0   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å?)r0   r0   r0   r   )r�   r�   r�   r�   )r"   ©Ú
lrap_scores    rM   Úcheck_lrap_toyræ  ï  s/  € å˜
˜
 Q¨ F 8¨t°T¨l¨^Ñ<Ô<¸aÑ@Ô@Ð@Ý˜
˜
 Q¨ F 8¨t°T¨l¨^Ñ<Ô<¸eÑDÔDÐDÝ˜
˜
 Q¨ F 8¨t°T¨l¨^Ñ<Ô<¸aÑ@Ô@Ð@å˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀeÑLÔLÐLÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀeÑLÔLÐLÝØˆ
�I�I�I�;Ð!2Ð!2Ð!2Ð 3Ñ4Ô4Ð6Iñô ð õ Øˆ
�I�I�I�;Ð!2Ð!2Ð!2Ð 3Ñ4Ô4Ð6Iñô ð õ ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀeÑLÔLÐLÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀeÑLÔLÐLÝØˆ
�I�I�I�;Ð!2Ð!2Ð!2Ð 3Ñ4Ô4Ð6Iñô ð õ ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀoÑVÔVÐVÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHå˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀeÑLÔLÐLÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀoÑVÔVÐVÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀeÑLÔLÐLÝØˆ
�I�I�I�;Ð!2Ð!2Ð!2Ð 3Ñ4Ô4Ð6Iñô ð õ ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHÝ˜
˜
 I I I ;Ð1BÐ1BÐ1BÐ0CÑDÔDÀaÑHÔHÐHõ ˜
˜
 Q¨ F 8¨s°C¨j¨\Ñ:Ô:¸CÑ@Ô@Ð@Ý˜
˜
 Q¨ F 8¨s°C¨j¨\Ñ:Ô:¸CÑ@Ô@Ð@Ý˜
˜
 Q¨ F 8¨s°C¨j¨\Ñ:Ô:¸AÑ>Ô>Ð>å˜
˜
 I I I ;Ð1AÐ1AÐ1AÐ0BÑCÔCÀSÑIÔIÐIÝ˜
˜
 I I I ;Ð1AÐ1AÐ1AÐ0BÑCÔCÀSÑIÔIÐIÝ˜
˜
 I I I ;Ð1AÐ1AÐ1AÐ0BÑCÔCÀQÑGÔGÐGÝ˜
˜
 I I I ;Ð1AÐ1AÐ1AÐ0BÑCÔCÀUÑKÔKÐKÝØˆ
�I�I�I�;Ð!1Ð!1Ð!1Ð 2Ñ3Ô3Ð5Hñô ð õ Øˆ
�I�I�I�;Ð!1Ð!1Ð!1Ð 2Ñ3Ô3Ð5Hñô ð õ ˜
˜
 I I I ;Ð1AÐ1AÐ1AÐ0BÑCÔCÀQÑGÔGÐGå˜
˜
 I I I ;°°°Ð0AÑBÔBÀEÑJÔJÐJå˜
˜
 L L L >Ð4HÐ4HÐ4HÐ3IÑJÔJÈEÑRÔRÐRÐRÐRrO   c           	      óÞ  — t          d¦  «        }t          dd¦  «        D ]¢}|                     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    sJ ‚Œ£t           | dgdgdgdggdgdgdgdgg¦  «        d¦  «         d S )Nr   r+   rà   r0   r—   r^   r�   )r)   r`   ri  r5   r–  r¬   r«   r"   )rå  r/   Ún_labelsrJ   Úy_score_tiesrL   s         rM   Ú!check_zero_or_all_relevant_labelsrê  *  sA  € Ý% aÑ(Ô(€Lå˜!˜Q‘K”Kð 7ð 7ˆØ×&Ò&¨Q°¨MÐ&Ñ:Ô:ˆÝ”} WÑ-Ô-ˆõ ”˜1˜h˜-Ñ(Ô(ˆØˆz˜& 'Ñ*Ô*¨cÒ1Ð1Ð1Ð1Øˆz˜& ,Ñ/Ô/°3Ò6Ð6Ð6Ð6õ ”˜!˜X˜Ñ'Ô'ˆØˆz˜& 'Ñ*Ô*¨cÒ1Ð1Ð1Ð1Øˆz˜& ,Ñ/Ô/°3Ò6Ð6Ð6Ð6Ð6õ Øˆ
�Q�C˜!˜˜q˜c A 3Ð'¨3¨%°#°¸¸À¸uÐ)EÑFÔFÈñô ð ð ð rO   c                 óö  — t          j        t          ¦  «        5   | g d¢g d¢¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | g d¢g d¢g d¢g d¢g¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | g d¢g d¢g d¢g d¢g¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | ddgddggddg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | ddgddggddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | ddgddggdgdgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | ddggddgddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | dgdggddgddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | ddgddggdgdgg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr   )rÃ   rÞ   rÓ   rô   )rÃ   rÄ   rÂ   )rÕ   rÞ   rÂ   )rÙ   rÓ   rÂ   r   r0   )r£   r¤   r¥   rä  s    rM   Úcheck_lrap_error_raisedrì  A  s  € å	Œ•zÑ	"Ô	"ð 0ð 0Øˆ
�9�9�9Ð.Ð.Ð.Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0å	Œ•zÑ	"Ô	"ð Uð UØˆ
�9�9�9Ð0Ð0Ð0°/°/°/À?À?À?ÐSÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uå	Œ•zÑ	"Ô	"ð 
ð 
Øˆ
ØˆOˆOÐ/Ð/Ð/°°°À/À/À/ÐRñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 
Œ•zÑ	"Ô	"ð -ð -Øˆ
�Q˜�F˜Q ˜FÐ# a¨ VÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -å	Œ•zÑ	"Ô	"ð /ð /Øˆ
�Q˜�F˜Q ˜FÐ# q¨! f XÑ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /å	Œ•zÑ	"Ô	"ð 1ð 1Øˆ
�Q˜�F˜Q ˜FÐ# q c¨A¨3 ZÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å	Œ•zÑ	"Ô	"ð /ð /Øˆ
�Q˜�F�8˜q !˜f q¨! fÐ-Ñ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /å	Œ•zÑ	"Ô	"ð 1ð 1Øˆ
�Q�C˜!˜�:  A ¨¨A¨Ð/Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å	Œ•zÑ	"Ô	"ð 1ð 1Øˆ
�Q˜�F˜Q ˜FÐ# q c¨A¨3 ZÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1sœ   š7·;¾;ÁA?Á?BÂBÂ#CÃCÃCÃ+DÄDÄDÄ0EÅEÅEÅ6FÆFÆ FÆ=GÇG#Ç&G#ÈH&È&H*È-H*É
I.É.I2É5I2c           	      ó&  — t          dd¦  «        D ]}t          j        d|f¦  «        }t          d|¦  «        D ]V}t          ||z
  ¦  «        D ]A}t          j        d|f¦  «        }d|d|||z   …f<   t	           | ||¦  «        ||z  ¦  «         ŒBŒWŒ€d S )Nr+   rR  r0   r   )r`   r5   r«   r¬   r"   )rå  rè  rJ   Ú
n_relevantrX   rL   s         rM   Úcheck_lrap_only_tiesrï  [  sÓ   € õ ˜!˜R‘L”Lð 	Xð 	XˆÝ”'˜1˜h˜-Ñ(Ô(ˆõ    8Ñ,Ô,ð 	Xð 	XˆJå˜X¨
Ñ2Ñ3Ô3ð Xð X�Ýœ 1 h -Ñ0Ô0�Ø45��q˜#  jÑ 0Ð0Ð0Ñ1Ý# J J¨v°wÑ$?Ô$?ÀÈhÑAVÑWÔWÐWÐWðXð	Xð		Xð 	XrO   c                 ó.  ‡‡— t          dd¦  «        D �] }|t          j        |¦  «                             d|f¦  «        dz   z
  }t          j        d|f¦  «        }d|d<   d|d<   t           | ||¦  «        d|z  dz   dz  ¦  «         t          d|¦  «        D ]zŠt          |‰z
  ¦  «        D ]eŠt          j        d|f¦  «        }d|d‰‰‰z   …f<   t           | ||¦  «        t          ˆˆfd„t          ‰¦  «        D ¦   «         ¦  «        ¦  «         ŒfŒ{�Œd S )Nr+   rR  r0   )r   r   )r   rQ   r   c              3   ó:   •K  — | ]}|d z   ‰|z   d z   ‰z  z  V — ŒdS )r0   Nr¶   )r·   r‘  rî  rX   s     €€rM   ú	<genexpr>z>check_lrap_without_tie_and_increasing_score.<locals>.<genexpr>~  sM   øè è € ð ð àð ˜Q™ C¨!¡G¨a¡K°:Ñ#=Ñ>ðð ð ð ð ð rO   )r`   r5   r6   rS   r¬   r"   rT   )rå  rè  rJ   rL   rî  rX   s       @@rM   Ú+check_lrap_without_tie_and_increasing_scoreró  j  sv  øø€ õ ˜!˜R‘L”Lð ñ ˆØ�bœi¨Ñ1Ô1×9Ò9¸1¸h¸-ÑHÔHÈ1ÑLÑMˆõ ”˜1˜h˜-Ñ(Ô(ˆØˆˆt‰Øˆˆu‰Ý˜J˜J v¨wÑ7Ô7¸!¸h¹,ÈÑ:JÈaÑ9OÑPÔPÐPõ    8Ñ,Ô,ð 	ð 	ˆJå˜X¨
Ñ2Ñ3Ô3ð 	ð 	�Ýœ 1 h -Ñ0Ô0�Ø45��q˜#  jÑ 0Ð0Ð0Ñ1Ý#Ø�J˜v wÑ/Ô/Ýð ð ð ð ð å!& zÑ!2Ô!2ðñ ô ñ ô ñô ð ð ð	ñ	ðð rO   c                 óÈ  ‡‡— t          | |¦  «         t          | ¦  «        } t          |¦  «        }| j        \  }}t          j        |f¦  «        }t          |¦  «        D ]ð}t          j        ||         d¬¦  «        \  }}|j        }||z
  Št          j        ‰|dz   ¬¦  «         	                    ¦   «         }	|	‰         Š| |          
                    ¦   «         d         }
|
j        dk    s|
j        |k    rd||<   Œœd||<   |
D ]7Št          ˆˆfd„|
D ¦   «         ¦  «        }||xx         |‰‰         z  z  cc<   Œ8||xx         |
j        z  cc<   Œñ|                     ¦   «         S )z8Simple implementation of label ranking average precisionT)Úreturn_inverser0   )Ú	minlengthr   rÂ   c              3   ó<   •K  — | ]}‰|         ‰‰         k    V — Œd S r½  r¶   )r·   r‘  ÚlabelÚranks     €€rM   rò  z_my_lrap.<locals>.<genexpr>¡  s0   øè è € Ð JÐ J¸A  a¤¨D°¬KÒ!7Ð JÐ JÐ JÐ JÐ JÐ JrO   )r(   r'   r4   r5   Úemptyr`   rR   r˜   ÚbincountÚcumsumÚnonzerorT   rŽ  )rL   rJ   rD   rè  rc   rd   Úunique_rankÚinv_rankÚn_ranksÚ	corr_rankÚrelevantÚn_ranked_aboverø  rù  s               @@rM   Ú_my_lrapr  …  s‹  øø€ å˜F GÑ,Ô,Ð,Ý˜Ñ Ô €FÝ˜'Ñ"Ô"€GØ œ,Ñ€IˆxÝŒH�i�\Ñ"Ô"€EÝ�9ÑÔð "ð "ˆõ !#¤	¨'°!¬*ÀTÐ JÑ JÔ JÑˆ�XØÔ"ˆØ˜Ñ!ˆõ ”K °¸!±Ð<Ñ<Ô<×CÒCÑEÔEˆ	Ø˜Œˆà˜!”9×$Ò$Ñ&Ô& qÔ)ˆØŒ=˜AÒÐ ¤°(Ò!:Ð!:ØˆE�!‰HØàˆˆa‰Øð 	5ð 	5ˆEõ !Ð JÐ JÐ JÐ JÐ JÀÐ JÑ JÔ JÑJÔJˆNð �!ˆHˆHŒH˜¨¨e¬Ñ4Ñ4ˆHˆH‰HˆHàˆaˆˆŒ�H”MÑ!ˆˆ‰ˆà�:Š:‰<Œ<ÐrO   rà   rL  c                 óÚ  — t          dd|||¬¦  «        \  }}t          |j        d         |j        d         |¬¦  «        }t          |d¦  «        r|                     ¦   «         }t          ||¦  «        }t          ||¦  «        }t          ||¦  «         t          |¦  «        }| 	                    ||f¬¦  «        }t          ||¦  «        }t          ||¦  «        }t          ||¦  «         d S )Nr0   F)rE   Úallow_unlabeledr/   Ú	n_classesrD   r   )Ún_componentsrE   r/   Útoarrayr—   )
r   r   r4   Úhasattrr	  r   r  r"   r)   ri  )	rå  r  rD   r/   ry   rL   rJ   Ú
score_lrapÚscore_my_lraps	            rM   Ú%check_alternative_lrap_implementationr  «  s  € õ /ØØØ!ØØðñ ô �I€A€võ $Ø”\ !”_Ø”< ”?Ø!ðñ ô €Gõ ˆw˜	Ñ"Ô"ð $Ø—/’/Ñ#Ô#ˆÝ6°v¸wÑGÔG€JÝ˜V WÑ-Ô-€MÝ˜
 MÑ2Ô2Ð2õ & lÑ3Ô3€LØ×"Ò"¨°IÐ(>Ð"Ñ?Ô?€GÝ6°v¸wÑGÔG€JÝ˜V WÑ-Ô-€MÝ˜
 MÑ2Ô2Ð2Ð2Ð2rO   ÚcheckÚfuncc                 ó   —  | |¦  «         d S r½  r¶   )r  r  s     rM   Útest_label_ranking_avpr  Ë  s   € ð 
€Eˆ$�K„K€K€K€KrO   c                  ó.   — t          t          ¦  «         d S r½  )rì  r   r¶   rO   rM   Útest_lrap_error_raisedr  Ù  s   € ÝÕAÑBÔBÐBÐBÐBrO   rD   )r0   r+   rî   rL  r  )r+   rà   rR  r/   c                 ó4   — t          t          || |¦  «         d S r½  )r  r   )rD   r  r/   s      rM   Ú$test_alternative_lrap_implementationr  Ý  s)   € õ *Ý-¨y¸)À\ñô ð ð ð rO   c                  ót  — 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  ¦  «         d S )Nr"  r‹  r   rS  )rÞ   rß   rÓ   rØ   )rØ   rÓ   rÞ   rß   ©rß   rÞ   rÓ   rØ   )r�   rÄ   r^   )r^   r^   rÂ   rá   )r5   r™   Úboolr"   r   rT   )rL   rJ   Úsamplewise_lrapsrâ   s       rM   Ú&test_lrap_sample_weighting_zero_labelsr  æ  sß   € õ ŒX�|�|�| \ \ \°<°<°<Ð@ÍÐMÑMÔM€FÝŒhØ	Ð	Ð	Ð3Ð3Ð3Ð5IÐ5IÐ5IÐJñô €Gõ ”xÐ 0Ð 0Ð 0Ñ1Ô1ÐÝ”H˜_˜_˜_Ñ-Ô-€MåÝ-Ø�G¨=ð	
ñ 	
ô 	
õ 	Œˆ}Ð/Ñ/Ñ0Ô0µ2´6¸-Ñ3HÔ3HÑHñ	ô ð ð ð rO   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¦  «         d S )Nr   r0   rÃ   rÄ   r+   rÏ  r»  rÀ   r   rÁ   rç   r•   rÿ   r  rÐ  rá  râ  ©rØ   g      $@éýÿÿÿ©r   r0   r•   r4  ©rØ   rR  r  rE  g«ªªªªª@©r•   r0   r•   ©r"   r   r¶   rO   rM   Útest_coverage_errorr"  û  st  € å�¨¨A¨ x°4¸°,°Ñ@Ô@À!ÑDÔDÐDÝ�¨¨A¨ x°4¸°,°Ñ@Ô@À!ÑDÔDÐDÝ�¨¨A¨ x°4¸°,°Ñ@Ô@À!ÑDÔDÐDÝ�¨¨A¨ x°4¸°,°Ñ@Ô@À!ÑDÔDÐDå�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLå�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLå�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLÝ�¨	¨	¨	 {Ð5FÐ5FÐ5FÐ4GÑHÔHÈ!ÑLÔLÐLõ Ý˜	˜	˜	 9 9 9Ð-°°°ÀÀÀÐ/KÑLÔLØñô ð õ
 ÝØˆYˆY˜	˜	˜	 9 9 9Ð-°°°¸y¸y¸yÈ)È)È)Ð/Tñ	
ô 	
ð 	ñ	ô ð õ ÝØˆYˆY˜	˜	˜	 9 9 9Ð-°°°¸y¸y¸yÈ)È)È)Ð/Tñ	
ô 	
ð 	ñ	ô ð ð ð rO   c                  óf  — 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¦  «         d S )Nr   r�   r0   r+   rÏ  rÆ  rÀ   r   rÁ   rç   r•   rÿ   r  rÐ  r!  r¶   rO   rM   Útest_coverage_tie_handlingr$  2  sð  € Ý�¨¨A¨ x°3¸°*°Ñ>Ô>ÀÑBÔBÐBÝ�¨¨A¨ x°3¸°*°Ñ>Ô>ÀÑBÔBÐBÝ�¨¨A¨ x°3¸°*°Ñ>Ô>ÀÑBÔBÐBÝ�¨¨A¨ x°3¸°*°Ñ>Ô>ÀÑBÔBÐBå�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÝ�¨	¨	¨	 {Ð5EÐ5EÐ5EÐ4FÑGÔGÈÑKÔKÐKÐKÐKrO   zy_true, y_scorec                 óŽ   — t          j        t          d¬¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz'Expected 2D array, got 1D array insteadr²   )r£   r¤   r¥   r   rY  s     rM   Útest_coverage_1d_error_messager&  B  sŽ   € õ 
Œ•zÐ)SÐ	TÑ	TÔ	Tð (ð (Ý�v˜wÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (rÕ  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¦  «         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¦  «         d S )Nr   r0   rÃ   rÄ   rÀ   r»  r   r�   rÁ   rç   r^   rÿ   r  rÏ  râ  rÐ  rÆ  r  r  r  rE  r   ©r"   r   r¶   rO   rM   Útest_label_ranking_lossr)  Q  s†  € ÝÕ*¨Q°¨F¨8°t¸T°l°^ÑDÔDÀaÑHÔHÐHÝÕ*¨Q°¨F¨8°t¸T°l°^ÑDÔDÀaÑHÔHÐHåÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈaÑPÔPÐPÝÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈeÑTÔTÐTÝÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈaÑPÔPÐPÝÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈeÑTÔTÐTÝÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈeÑTÔTÐTÝÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈeÑTÔTÐTõ Õ*¨Q°¨F¨8°t¸T°l°^ÑDÔDÀaÑHÔHÐHÝÕ*¨Q°¨F¨8°t¸T°l°^ÑDÔDÀaÑHÔHÐHÝÕ*¨Q°¨F¨8°s¸C°j°\ÑBÔBÀAÑFÔFÐFÝÕ*¨Q°¨F¨8°s¸C°j°\ÑBÔBÀAÑFÔFÐFåÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈaÑPÔPÐPÝÕ*¨I¨I¨I¨;Ð9JÐ9JÐ9JÐ8KÑLÔLÈaÑPÔPÐPÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈQÑOÔOÐOÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈQÑOÔOÐOõ Ý˜I˜I˜I y y yÐ1°O°O°OÀYÀYÀYÐ3OÑPÔPØñô ð õ
 ÝØˆYˆY˜	˜	˜	 9 9 9Ð-°°°¸y¸y¸yÈ)È)È)Ð/Tñ	
ô 	
ð 	"ñ	ô ð õ ÝØˆYˆY˜	˜	˜	 9 9 9Ð-°°°¸y¸y¸yÈ)È)È)Ð/Tñ	
ô 	
ð 	"ñ	ô ð ð ð rO   Úcsr_containerc                 ó�   — t          t           | t          j        g d¢g d¢g¦  «        ¦  «        g d¢g d¢g¦  «        d¦  «         d S )Nr   r  r  r   r�   )r"   r   r5   r™   )r*  s    rM   Útest_label_ranking_loss_sparser,  |  sc   € åÝØˆM�"œ( I I I¨y¨y¨yÐ#9Ñ:Ô:Ñ;Ô;¸m¸m¸mÈYÈYÈYÐ=Wñ	
ô 	
ð 	ñ	ô ð ð ð rO   c                  ó„  — t          j        t          ¦  «        5  t          ddgddggddg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          ddgddggddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          ddgddggdgdgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          ddggddgddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          dgdggddgddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          ddgddggdgdgg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r0   )r£   r¤   r¥   r   r¶   rO   rM   Ú$test_ranking_appropriate_input_shaper.  †  sE  € å	Œ•zÑ	"Ô	"ð 5ð 5Ý˜Q ˜F Q¨ FÐ+¨a°¨VÑ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5å	Œ•zÑ	"Ô	"ð 7ð 7Ý˜Q ˜F Q¨ FÐ+¨q°!¨f¨XÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7å	Œ•zÑ	"Ô	"ð 9ð 9Ý˜Q ˜F Q¨ FÐ+¨q¨c°A°3¨ZÑ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9å	Œ•zÑ	"Ô	"ð 7ð 7Ý˜Q ˜F˜8 q¨! f¨q°!¨fÐ%5Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7å	Œ•zÑ	"Ô	"ð 9ð 9Ý˜Q˜C ! ˜:¨¨A¨°°A°Ð'7Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9å	Œ•zÑ	"Ô	"ð 9ð 9Ý˜Q ˜F Q¨ FÐ+¨q¨c°A°3¨ZÑ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9si   š?¿AÁAÁ#B	Â	BÂBÂ-CÃCÃCÃ8DÄD"Ä%D"ÅE)Å)E-Å0E-ÆF5Æ5F9Æ<F9c                  óF  — 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¦  «         d S )Nr0   r   r�   rÀ   rÆ  r   rÁ   rç   rÿ   r  r(  r¶   rO   rM   Útest_ranking_loss_ties_handlingr0  –  sX  € åÕ*¨Q°¨F¨8°s¸C°j°\ÑBÔBÀAÑFÔFÐFÝÕ*¨Q°¨F¨8°s¸C°j°\ÑBÔBÀAÑFÔFÐFÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈUÑSÔSÐSÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈUÑSÔSÐSÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈQÑOÔOÐOÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈQÑOÔOÐOÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈQÑOÔOÐOÝÕ*¨I¨I¨I¨;Ð9IÐ9IÐ9IÐ8JÑKÔKÈQÑOÔOÐOÐOÐOrO   c                  óä   — t          dd¬¦  «        \  } }| dz   }t          ||¦  «         t          j                             d¦  «                             d¦  «        \  }}t          ||¦  «         d S ©Nr   rR  )r/   r  r0   )r+   r–   rR  )r   Ú_test_dcg_score_forr5   r9   r:   Úrandom_sample©ry   rL   rJ   s      rM   Útest_dcg_scorer6  ¢  sp   € Ý.¸AÈÐLÑLÔL�I€A€vØˆg˜‰k€GÝ˜ Ñ(Ô(Ð(Ý”i×+Ò+¨AÑ.Ô.×<Ò<¸\ÑJÔJ�O€FˆGÝ˜ Ñ(Ô(Ð(Ð(Ð(rO   c                 ó:  — t          j        t          j        | j        d         ¦  «        dz   ¦  «        }t	          | | ¦  «        }t	          | |¦  «        }||k                         ¦   «         sJ ‚t	          | | d¬¦  «        |k                         ¦   «         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   	                    d¬¦  «        ¦  «        k    sJ ‚d S )Nr0   r+   rà   ©Úkr   rQ   ©Úaxis)
r5   Úlog2r6   r4   r   rd  r£   r.  ÚsortrT   )rL   rJ   ÚdiscountÚidealrc   s        rM   r3  r3  ª  s  € ÝŒw•r”y ¤¨a¤Ñ1Ô1°AÑ5Ñ6Ô6€HÝ˜v vÑ.Ô.€EÝ˜v wÑ/Ô/€EØ�UŠN×ÒÑ!Ô!Ð!Ð!Ð!Ý˜v v°Ð3Ñ3Ô3°uÒ<×AÒAÑCÔCÐCÐCÐCØŒ;˜6œ<¨œ?Ð,Ò,Ð,Ð,Ð,ØŒ;˜6œ<¨œ?Ð,Ò,Ð,Ð,Ð,Ø•F”M¥2¤7¨6¡?¤?°1°1°1°d°d¸°d°7Ô#;¸hÑ#F×"KÒ"KÐQRÐ"KÑ"SÔ"SÑTÔTÒTÐTÐTÐTÐTÐTrO   c            	      ó  — t          j        t          j        d¦  «        g¦  «        } t          j        | j        ¦  «        }t          | |¦  «        }t          | |d¬¦  «        }dt          j        t          j        dd¦  «        ¦  «        z  }|t          j        | 	                    ¦   «         |  
                    ¦   «         z  g¦  «        k    sJ ‚|t          j        || d d …d d d…f         z   	                    ¦   «         g¦  «        k    sJ ‚d|dd	d …f<   t          | |¦  «        }t          | |d¬¦  «        }|t          j        || d d …d d d…f         z   	                    ¦   «         g¦  «        k    sJ ‚|t          j        |d d…          	                    ¦   «         | dd	d …f          
                    ¦   «         z  |dd …          	                    ¦   «         | dd d	…f          
                    ¦   «         z  z   g¦  «        k    sJ ‚d S )
Nrà   T©Úignore_tiesr0   r+   rí   rQ   r   r•   )r5   r>  r6   r¬   r4   r   r<  r£   r.  rT   rŽ  )rL   rJ   ÚdcgÚdcg_ignore_tiesÚ	discountss        rM   Útest_dcg_tiesrF  µ  s÷  € ÝŒZ�œ 1™œ˜Ñ'Ô'€FÝŒh�v”|Ñ$Ô$€GÝ
˜V WÑ
-Ô
-€CÝ(¨°ÀdÐKÑKÔK€OØ•B”G�BœI a¨™OœOÑ,Ô,Ñ,€IØ•&”- §¢¡¤°6·;²;±=´=Ñ!@Ð AÑBÔBÒBÐBÐBÐBØ�fœm¨i¸&ÀÀÀÀDÀDÀbÀDÀ¼/Ñ.I×-NÒ-NÑ-PÔ-PÐ,QÑRÔRÒRÐRÐRÐRØ€GˆAˆqˆrˆrˆE�NÝ
˜V WÑ
-Ô
-€CÝ(¨°ÀdÐKÑKÔK€OØ�fœm¨i¸&ÀÀÀÀDÀDÀbÀDÀ¼/Ñ.I×-NÒ-NÑ-PÔ-PÐ,QÑRÔRÒRÐRÐRÐRØ•&”-à�b�q�bŒM×ÒÑÔ &¨¨A¨B¨B¨¤-×"4Ò"4Ñ"6Ô"6Ñ6Ø˜˜˜Œm×ÒÑ!Ô! F¨1¨b¨q¨b¨5¤M×$6Ò$6Ñ$8Ô$8Ñ8ñ9ð	
ñô ò ð ð ð ð ð rO   c            	      óÌ   — t          j        d¦  «                             d¦  «        } t          | | dd¬¦  «        t	          j        t          | | dd¬¦  «        ¦  «        k    sJ ‚d S )Né   )r+   rì   r•   T)r9  rB  )r5   r6   rS   r   r£   r.  )rõ   s    rM   Útest_ndcg_ignore_ties_with_krI  É  sq   € Ý
Œ	�"‰Œ×Ò˜fÑ%Ô%€AÝ�a˜˜a¨TÐ2Ñ2Ô2µf´mÝ�1�a˜1¨$Ð/Ñ/Ô/ñ7ô 7ò ð ð ð ð ð rO   c                  óî   — t          j        g d¢g¦  «        } t          j        g d¢g¦  «        }d}t          j        t          |¬¦  «        5  t          | |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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)r5   r™   r£   r¤   r¥   r   )rL   rJ   r½   s      rM   Ú test_ndcg_negative_ndarray_errorrK  Ð  sÄ   € åŒXÐ8Ð8Ð8Ð9Ñ:Ô:€FÝŒhÐ6Ð6Ð6Ð7Ñ8Ô8€GØPÐÝ	Œ•zÐ)9Ð	:Ñ	:Ô	:ð $ð $Ý�6˜7Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s   ÁA*Á*A.Á1A.c                  óÖ  — t          j        d¦  «                             dd¦  «        } | t           j                             d¦  «                             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 ‚d S )NéF   rí   rR  r   çš™™™™™É¿rÓ   r—   TrA  r^   r5  )
r5   r6   rS   r9   r:   ri  r4   r   r£   r.  )rL   rJ   ÚndcgÚndcg_no_tiess       rM   Útest_ndcg_invariantrQ  Ù  sÝ   € ÝŒY�r‰]Œ]×"Ò" 1 bÑ)Ô)€FØ•r”y×,Ò,¨QÑ/Ô/×7Ò7¸¸cÈÌÐ7ÑUÔUÑU€GÝ�f˜gÑ&Ô&€DÝ˜f g¸4Ð@Ñ@Ô@€LØ•6”= Ñ.Ô.Ò.Ð.Ð.Ð.Ø•6”= Ñ%Ô%Ò%Ð%Ð%Ð%Øˆt�O€GÝ�f˜gÑ&Ô&­&¬-¸Ñ*<Ô*<Ò<Ð<Ð<Ð<Ð<Ð<rO   rB  c           
      óv  — dt          j        d¦  «        d d…         z  }t          j        t          j        ddd¦  «        d¦  «        }|t           j                             d¦  «                             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                       ¦   «         ¦  «        k    sJ ‚t!          ||| ¬¦  «        t          j
        dt          j        t          j        dd¦  «        ¦  «        z                       ¦   «         ¦  «        k    sJ ‚dt          j        d¦  «        z  }dt          j        t          j        dd¦  «        ¦  «        z                       ¦   «         }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 ‚d S )Nr•   rí   rà   rì   rQ   )rà   r0   r   rN  rÓ   r—   rA  r+   r0   rR  )Úlog_baserB  )rà   rí   é	   r^   )r5   ÚeyeÚtiler6   r9   r:   ri  r4   r   r£   r.  r<  r   Úlog10r   rŽ  r   r«   rT   )rB  rL   rJ   Úy_score_noisyÚexpected_dcg_scores        rM   Útest_ndcg_toy_examplesrZ  ä  sÄ  € à•”˜‘”˜2˜A˜2”Ñ€FÝŒg•b”i  2 rÑ*Ô*¨FÑ3Ô3€GØ�bœi×3Ò3°AÑ6Ô6×>Ò>Øˆc˜œð ?ñ ô ñ €Mõ Ø� [ðñ ô å	Œ�q�2œ7¥2¤9¨Q°¡?¤?Ñ3Ô3Ñ3Ñ	4Ô	4ò5ð 5ð 5ð 5õ Ø�¨;ðñ ô å	Œ�q�2œ7¥2¤9¨Q°¡?¤?Ñ3Ô3Ñ3Ñ	4Ô	4ò5ð 5ð 5ð 5õ Ø� [ðñ ô å	Œ�q�2œ7¥2¤9¨Q°¡?¤?Ñ3Ô3Ñ3Ñ	4Ô	4ò5ð 5ð 5ð 5õ Ø� "°+ðñ ô å	Œ�q�2œ8¥B¤I¨a°¡O¤OÑ4Ô4Ñ4Ñ	5Ô	5ò6ð 6ð 6ð 6õ �f˜g°;Ð?Ñ?Ô?Å6Ä=Ø	
�RŒW•R”Y˜q !‘_”_Ñ%Ô%Ñ	%×+Ò+Ñ-Ô-ñDô Dò ð ð ð õ �V˜W°+Ð>Ñ>Ô>Å&Ä-Ø	
�RŒW•R”Y˜q !‘_”_Ñ%Ô%Ñ	%×+Ò+Ñ-Ô-ñCô Cò ð ð ð ð •”˜‘”Ñ €FØ�bœg¥b¤i°°1¡o¤oÑ6Ô6Ñ6×;Ò;Ñ=Ô=ÐÝØ� [ðñ ô å	ŒÐ)­B¬G°A©J¬JÑ6Ñ	7Ô	7ò8ð 8ð 8ð 8õ Ø� [ðñ ô å	Œ•r”w˜q‘z”zÑ	"Ô	"ò#ð #ð #ð #õ �V˜W°+Ð>Ñ>Ô>Å&Ä-ØñCô Cò ð ð ð õ �f˜g°;Ð?Ñ?Ô?Å6Ä=ÐQTÑCUÔCUÒUÐUÐUÐUÐUÐUrO   c                  óš   — d} t          j        t          | ¬¦  «        5  t          dggdgg¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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²   r0   N)r£   r¤   r¥   r   )r¨  s    rM   Útest_ndcg_error_single_documentr\    sŸ   € ð	ð õ 
Œ•z¨Ð	1Ñ	1Ô	1ð !ð !Ý�Q�C�5˜A˜3˜%Ñ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   žA Á AÁAc                  óä   — t          dd¬¦  «        \  } }| dz   }t          ||¦  «         t          j                             d¦  «                             d¦  «        \  }}t          ||¦  «         d S r2  )r   Ú_test_ndcg_score_forr5   r9   r:   r4  r5  s      rM   Útest_ndcg_scorer_    sp   € Ý.¸AÈÐLÑLÔL�I€A€vØˆg˜‰k€GÝ˜ Ñ)Ô)Ð)Ý”i×+Ò+¨AÑ.Ô.×<Ò<¸\ÑJÔJ�O€FˆGÝ˜ Ñ)Ô)Ð)Ð)Ð)rO   c                 óJ  — t          | | ¦  «        }t          | |¦  «        }||k                         ¦   «         sJ ‚| dk                         d¬¦  «        }||          t          j        t	          j        |                      ¦   «         ¦  «        ¦  «        k    sJ ‚||         t          j        t	          j        |                     ¦   «         ¦  «        ¦  «        k    sJ ‚||          t          j        t          | |¦  «        |          t          | | ¦  «        |          z  ¦  «        k    sJ ‚||         t          j        t	          j        |                     ¦   «         ¦  «        ¦  «        k    sJ ‚|j	        | j	        d         fk    sJ ‚|j	        | j	        d         fk    sJ ‚d S )Nr   r0   r:  )
r   rd  r£   r.  r5   r«   rT   r¬   r   r4   )rL   rJ   r?  rc   Úall_zeros        rM   r^  r^    s‰  € Ý ¨Ñ/Ô/€EÝ ¨Ñ0Ô0€EØ�UŠN×ÒÑ!Ô!Ð!Ð!Ð!Ø˜!’× Ò  aÐ Ñ(Ô(€HØ�(�Ô�vœ}­R¬W°x°i·_²_Ñ5FÔ5FÑ-GÔ-GÑHÔHÒHÐHÐHÐHØ�Œ?�fœm­B¬H°X·\²\±^´^Ñ,DÔ,DÑEÔEÒEÐEÐEÐEØ�(�Ô�vœ}Ý˜6 7Ñ+Ô+¨X¨IÔ6Ý
˜V VÑ
,Ô
,¨h¨YÔ
7ñ	8ñ ô  ò ð ð ð ð �Œ?�fœm­B¬H°X·\²\±^´^Ñ,DÔ,DÑEÔEÒEÐEÐEÐEØŒ;˜6œ<¨œ?Ð,Ò,Ð,Ð,Ð,ØŒ;˜6œ<¨œ?Ð,Ò,Ð,Ð,Ð,Ð,Ð,rO   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 ¦  «         n# 1 swxY w Y   t          j        t
          ¦  «        5  t          | | d¬¦  «        sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j        t
          ¦  «        5  t          | | d¬¦  «        sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j        g d¢¦  «        }t          | |d¬¦  «        }t          | |¦  «        }||k    sJ ‚t          | |d	¬¦  «        d
k    sJ ‚t          d¬¦  «        \  } }}t          j        ddd¦  «        D ]1}t          t          | ||¬¦  «        t          | ||¦  «        ¦  «         Œ2d S )Nr#  r0   )rv   gü©ñÒMbP?gš™™™™™¹¿gš™™™™™ñ?r   )rØ   r   rØ   g{®Gáz„?rÞ   r�   TrŠ   g-Cëâ6?rà   )
r5   r™   r   r£   r¤   r¥   rN   Úlinspacer"   r‡   )rL   r	  Úroc_auc_with_max_fpr_oneÚunconstrained_roc_aucrK   ry   rv   s          rM   Útest_partial_roc_auc_scorerf  .  sÃ  € åŒX�l�l�lÑ#Ô#€FÝ˜ °Ð3Ñ3Ô3°qÒ8Ð8Ð8Ð8Ý˜ °Ð7Ñ7Ô7¸1Ò<Ð<Ð<Ð<Ý	Œ•zÑ	"Ô	"ð ;ð ;Ý˜V V°TÐ:Ñ:Ô:Ð:Ð:Ð:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;å	Œ•zÑ	"Ô	"ð :ð :Ý˜V V°SÐ9Ñ9Ô9Ð9Ð9Ð9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :å	Œ•zÑ	"Ô	"ð 8ð 8Ý˜V V°QÐ7Ñ7Ô7Ð7Ð7Ð7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ ŒxÐ+Ð+Ð+Ñ,Ô,€HÝ,¨V°XÀqÐIÑIÔIÐÝ)¨&°(Ñ;Ô;ÐØ#Ð'<Ò<Ð<Ð<Ð<Ý˜ °3Ð7Ñ7Ô7¸3Ò>Ð>Ð>Ð>å'¨tÐ4Ñ4Ô4Ñ€FˆF�AÝ”;˜t Q¨Ñ*Ô*ð 
ð 
ˆÝÝ˜& &°'Ð:Ñ:Ô:Ý" 6¨6°7Ñ;Ô;ñ	
ô 	
ð 	
ð 	
ð
ð 
s6   Á BÂBÂ	BÂ&CÃCÃCÃ,DÄDÄD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 ‚d S )Nr  ©rØ   rÞ   rß   rÓ   ©rß   rØ   rÓ   rÞ   ©rÞ   rÓ   rß   rØ   r8  ©r5   r™   r   r£   r.  )rL   r9  Ú
true_scorerJ   rc   s        rM   Útest_top_k_accuracy_scorerm  H  su   € õ Œhà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Gõ ! ¨°AÐ6Ñ6Ô6€EØ•F”M *Ñ-Ô-Ò-Ð-Ð-Ð-Ð-Ð-rO   zy_score, k, true_score)rQ   rQ   r0   r0   )rQ   r0   rQ   r0   )rÓ   rÓ   rÕ   rÕ   )rÓ   rÕ   rÓ   rÕ   c                 óV  — g d¢}|                       ¦   «         dk    r|                      ¦   «         dk    rdnd}|dk    r#| |k                         t          j        ¦  «        n|}t          || |¬¦  «        }t          ||¦  «        }||cxk    rt          j        |¦  «        k    sn J ‚d S )Nr#  r   r0   r�   r8  )	ÚminÚmaxÚastyper5   Úint64r   r   r£   r.  )rJ   r9  rl  rL   rm   rK   rc   Ú	score_accs           rM   Ú test_top_k_accuracy_score_binaryrt  ]  s¹   € ð ˆ\ˆ\€Fà—{’{‘}”}¨Ò)Ð)¨g¯kªk©m¬m¸qÒ.@Ð.@��Àa€IØ78¸A²v°vˆg˜	Ò!×)Ò)­"¬(Ñ3Ô3Ð3À6€Få  ¨°AÐ6Ñ6Ô6€EÝ˜v vÑ.Ô.€Ià�IÐ:Ð:Ò:Ð:¥¤¨zÑ!:Ô!:Ò:Ð:Ð:Ð:Ð:Ð:Ð:Ð:rO   zy_true, true_score, labels)r   r0   r0   r+   r¡  )rõ   rF  rF  rõ   )rõ   rö   r  rF  Úlabels_as_ndarrayc                 óÌ   — |rt          j        |¦  «        }t          j        g d¢g d¢g d¢g d¢g¦  «        }t          | |d|¬¦  «        }|t	          j        |¦  «        k    sJ ‚dS )z,Test when labels and y_score are multiclass.r  rh  ri  rj  r+   ©r9  r  N)r5   r>  r™   r   r£   r.  )rL   rl  r  ru  rJ   rc   s         rM   Ú0test_top_k_accuracy_score_multiclass_with_labelsrx  t  sŽ   € ð ð $Ý”˜FÑ#Ô#ˆÝŒhà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Gõ ! ¨°A¸fÐEÑEÔE€EØ•F”M *Ñ-Ô-Ò-Ð-Ð-Ð-Ð-Ð-rO   c                  ó„  ‡‡‡— t          j        dddd¬¦  «        \  ŠŠt          ‰‰d¬¦  «        \  } }}}t          d¬¦  «        Š‰                     | |¦  «         t          | |f||f¦  «        D ]O\  ŠŠˆˆˆfd„t          dd¦  «        D ¦   «         }t          j        t          j	        |¦  «        dk    ¦  «        sJ ‚ŒPd S )NrR  r5  r   )r  rD   Ún_informativer/   r.   c                 óZ   •— g | ]'}t          ‰‰                     ‰¦  «        |¬ ¦  «        ‘Œ(S )r8  )r   r>   )r·   r9  rB   rI   rC   s     €€€rM   r¹   z8test_top_k_accuracy_score_increasing.<locals>.<listcomp>�  sD   ø€ ð 
ð 
ð 
ØCDÕ   C×$5Ò$5°aÑ$8Ô$8¸AÐ>Ñ>Ô>ð
ð 
ð 
rO   r+   )
r   Úmake_classificationr   r   r=   rv  r`   r5   rd  rä   )ÚX_trainÚX_testÚy_trainÚy_testÚscoresrB   rI   rC   s        @@@rM   Ú$test_top_k_accuracy_score_increasingr‚  ‘  s   øøø€ åÔ'Ø °BÀQðñ ô �D€A€qõ (8¸¸1È1Ð'MÑ'MÔ'MÑ$€GˆV�W˜få
¨!Ð
,Ñ
,Ô
,€CØ‡G‚GˆG�WÑÔÐå�W˜fÐ%¨°Ð'8Ñ9Ô9ð +ð +‰ˆˆ1ð
ð 
ð 
ð 
ð 
ð 
ÝHMÈaÐQSÉÌð
ñ 
ô 
ˆõ Œv•b”g˜f‘o”o¨Ò)Ñ*Ô*Ð*Ð*Ð*Ð*ð+ð +rO   c                 óš   — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          | ||¬¦  «        t          j        |¦  «        k    sJ ‚d S )N)rà   rà   rí   r   )r0   rà   rà   rà   )r   r   r•   r•   r¡  r8  rk  )rL   r9  rl  rJ   s       rM   Útest_top_k_accuracy_score_tiesr„  ¤  sh   € õ ŒhàˆLˆLØˆLˆLØˆLˆLØˆLˆLð		
ñô €Gõ   ¨°1Ð5Ñ5Ô5½¼ÀzÑ9RÔ9RÒRÐRÐRÐRÐRÐRrO   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 ¦  «         n# 1 swxY w Y   |dk    sJ ‚d S )	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²   r8  r0   )r5   r™   r£   rº   r   r   )rL   r9  rJ   r½   rc   s        rM   Ú!test_top_k_accuracy_score_warningr†  ¹  sÛ   € õ Œhà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Gð	6ð õ 
ŒÕ,Ð4DÐ	EÑ	EÔ	Eð ;ð ;Ý$ V¨W¸Ð:Ñ:Ô:ˆð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;à�AŠ:ˆ:ˆ:ˆ:ˆ:ˆ:s   ¾AÁA!Á$A!zy_true, y_score, labels, msg)r   g=
×£p=â?r0   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   r0   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 ¦  «         d S # 1 swxY w Y   d S )Nr²   r+   rw  )r£   r¤   r¥   r   )rL   rJ   r  rH  s       rM   Útest_top_k_accuracy_score_errorrˆ  Ò  s©   € õf 
Œ•z¨Ð	-Ñ	-Ô	-ð Bð BÝ˜V W°¸&ÐAÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð Bð Bs   œ=½AÁAc                 ó°   —  | g d¢g d¢g¦  «        }t          j        g d¢g d¢g¦  «        }t          ||¦  «        }|t          j        d¦  «        k    sJ ‚d S )Nrç   rÀ   )r�   r¨   rÔ   rã  )r5   r™   r   r£   r.  )r*  rL   rJ   Úresults       rM   ÚOtest_label_ranking_avg_precision_score_should_allow_csr_matrix_for_y_true_inputr‹  )	  sl   € ð ˆ]˜I˜I˜I y y yÐ1Ñ2Ô2€FÝŒh˜˜˜¨¨¨Ð3Ñ4Ô4€GÝ2°6¸7ÑCÔC€FØ•V”] 5Ñ)Ô)Ò)Ð)Ð)Ð)Ð)Ð)rO   Úmetricr<  ))FT)r   r0   )rÂ   r^   )ÚzeroÚonec                 ó$  — t           j                             d¦  «        }d|d         }}|                     ||d¬¦  «        }|                     |¦  «        } | |||¬¦  «        }t          |t          ¦  «        rt          j        |¦  «        rJ ‚dS |\  }}	}
t          j        |¦  «                             ¦   «         rJ ‚t          j        |	¦  «                             ¦   «         rJ ‚t          j        |
¦  «                             ¦   «         rJ ‚dS )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.
    é*   rR  rQ   T)r˜   Úreplacer¦  N)	r5   r9   r:   ÚchoicerM  Ú
isinstancerU   rÎ   Úany)rŒ  r<  rG   rD   rW   rL   Úy_probarŠ  Úmetric_1Úmetric_2r�   s              rM   Ú#test_ranking_metric_pos_label_typesr˜  5	  s
  € õ Œ)×
Ò
 Ñ
#Ô
#€CØ˜w rœ{ˆy€IØ�ZŠZ˜ i¸ˆZÑ>Ô>€FØ�hŠh�yÑ!Ô!€GØˆV�F˜G¨yÐ9Ñ9Ô9€FÝ�&�%Ñ Ô ð .Ý”8˜FÑ#Ô#Ð#Ð#Ð#Ð#Ð#à)/Ñ&ˆ�(˜JÝ”8˜HÑ%Ô%×)Ò)Ñ+Ô+Ð+Ð+Ð+Ý”8˜HÑ%Ô%×)Ò)Ñ+Ô+Ð+Ð+Ð+Ý”8˜JÑ'Ô'×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-rO   c                 óþ   — t           j                             | ¦  «        }|                     ddd¬¦  «        }|                     d¦  «        }t          ||¦  «        \  }}}t          j        |d         ¦  «        sJ ‚dS )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+   rR  r—   N)r5   r9   r:   rš   rM  r   Úisinf)r@  rG   rL   rJ   ry   r�   s         rM   Ú)test_roc_curve_with_probability_estimatesr›  O	  sv   € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�[Š[˜˜A Bˆ[Ñ'Ô'€FØ�hŠh�r‰lŒl€GÝ  ¨Ñ1Ô1Ñ€A€qˆ*ÝŒ8�J˜q”MÑ"Ô"Ð"Ð"Ð"Ð"Ð"rO   c                 ó’   — |€t          j        |¦  «        }t          j        ||z  ¦  «        }t          j        | |z  ¦  «        }||fS )z0Dummy metric that returns a tuple of two values.)r5   Ú	ones_likerT   )rL   rK   râ   Ú
y_pred_sumÚ
y_true_sums        rM   Ú_dummy_metricr   ]	  sJ   € àÐÝœ VÑ,Ô,ˆÝ”˜ Ñ.Ñ/Ô/€JÝ”˜ Ñ.Ñ/Ô/€JØ˜
Ð#Ð#rO   Úmetric_funcrâ   ©r0   r+   r0   r   r+   c           
      óà  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          ||| |¬¦  «        \  }}g }|D ]A}||k                         t          ¦  «        }|                      | |||¬¦  «        ¦  «         ŒBt          |¦  «        t          |¦  «        k    sJ ‚t          j        t          j        |¦  «        dk    ¦  «        sJ ‚|�Ht          |t          j
        t          j        ||dk             ¦  «        ¦  «        ddd…         ¦  «         n=t          |t          j
        t          j        |¦  «        ¦  «        ddd…         ¦  «         t          ||¦  «         dS )z,Test `metric_at_thresholds` outputs correct.rÝ   ©rØ   rÔ   rß   r¨   rß   rá   r   NrQ   )r5   r™   r   rq  r8   rr   rV   rd  rä   r!   r=  rR   )	r¡  râ   rL   rJ   Úmetric_valuesr�   Úexpected_scoresrm   rK   s	            rM   Útest_metric_at_thresholdsr§  f	  s}  € õ ŒX�o�o�oÑ&Ô&€FÝŒhÐ0Ð0Ð0Ñ1Ô1€Gå 4Ø�˜°Mð!ñ !ô !Ñ€M�:ð
 €OØð Yð Yˆ	Ø˜YÒ&×.Ò.­sÑ3Ô3ˆØ×Ò˜{˜{¨6°6ÈÐWÑWÔWÑXÔXÐXÐXåˆ}ÑÔ¥ Z¡¤Ò0Ð0Ð0Ð0åŒ6•"”'˜*Ñ%Ô%¨Ò*Ñ+Ô+Ð+Ð+Ð+àÐ åØ�œ¥¤	¨'°-À1Ò2DÔ*EÑ FÔ FÑGÔGÈÈÈ"ÈÔMñ	
ô 	
ð 	
ð 	
õ 	˜
¥B¤G­B¬I°gÑ,>Ô,>Ñ$?Ô$?ÀÀÀ"ÀÔ$EÑFÔFÐFÝ�M ?Ñ3Ô3Ð3Ð3Ð3rO   c                 óR   — t          j        |¦  «        t          j        | ¦  «        fS )z2Dummy metric that does not accept `sample_weight`.)r5   rT   )rL   rK   s     rM   Ú_dummy_metric_no_sample_weightr©  Ž	  s   € åŒF�6‰NŒN�BœF 6™NœNÐ+Ð+rO   c                  ó(  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        t          d¬¦  «        5  t          | |t          |¬¦  «        \  }}ddd¦  «         dS # 1 swxY w Y   dS )zLTest `TypeError` is raised when `metric_func` does not take `sample_weight`.rÝ   ©rØ   rß   rü   rÔ   r¨   ©r0   r+   r•   r0   r+   z"got an unexpected keyword argumentr²   rá   N)r5   r™   r£   r¤   r�  r   r©  )rL   rJ   râ   ry   s       rM   Ú-test_metric_at_thresholds_sample_weight_errorr­  “	  sÚ   € åŒX�o�o�oÑ&Ô&€FÝŒhÐ1Ð1Ð1Ñ2Ô2€GÝ”H˜_˜_˜_Ñ-Ô-€Må	Œ•yÐ(LÐ	MÑ	MÔ	Mð 
ð 
Ý#Ø�GÕ;È=ð
ñ 
ô 
‰ˆˆ1ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ÁBÂBÂBÚ	normalizec                 ó´  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          ||t          d| i¬¦  «        \  }}g }|D ]E}||k                         t
          ¦  «        }|                     t          ||| ¬¦  «        ¦  «         ŒFt          ||¦  «         t          |¦  «        t          t          j	        |¦  «        ¦  «        k    sJ ‚dS )z@Test `metric_params` passed correctly to `metric_at_thresholds`.rÝ   r«  r®  ©Úmetric_params)r®  N)
r5   r™   r   r   rq  r8   rr   r!   rV   rR   )r®  rL   rJ   r¥  r�   Úexpected_valuesrm   rK   s           rM   Ú'test_metric_at_thresholds_metric_paramsr³  Ÿ	  sé   € õ ŒX�o�o�oÑ&Ô&€FÝŒhÐ1Ð1Ð1Ñ2Ô2€Gå 4Ø��¸ÀYÐ7Oð!ñ !ô !Ñ€M�:ð €OØð Tð Tˆ	Ø˜YÒ&×.Ò.­sÑ3Ô3ˆØ×Ò�~¨f°fÈ	ÐRÑRÔRÑSÔSÐSÐSå�M ?Ñ3Ô3Ð3Ýˆz‰?Œ?�c¥"¤)¨GÑ"4Ô"4Ñ5Ô5Ò5Ð5Ð5Ð5Ð5Ð5rO   rW   c           	      óP  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          ||t          | ddœ¬¦  «        \  }}g }|D ]F}||k                         t
          ¦  «        }|                     t          ||| d¬¦  «        ¦  «         ŒGt          ||¦  «         dS )z?Test `pos_label` is passed correctly to `metric_at_thresholds`.rÝ   r¤  r   )rW   Úzero_divisionr°  N)r5   r™   r   r   rq  r8   rr   r!   )rW   rL   rJ   r¥  r�   r¦  rm   rK   s           rM   Ú#test_metric_at_thresholds_pos_labelr¶  ²	  sÑ   € õ ŒX�o�o�oÑ&Ô&€FÝŒhÐ0Ð0Ð0Ñ1Ô1€Gå 4ØØÝØ$-ÀÐBÐBð	!ñ !ô !Ñ€M�:ð €OØð 
ð 
ˆ	Ø˜YÒ&×.Ò.­sÑ3Ô3ˆØ×ÒÝ˜F F°iÈqÐQÑQÔQñ	
ô 	
ð 	
ð 	
õ �M ?Ñ3Ô3Ð3Ð3Ð3rO   c                  óÈ  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          d¦  «        }|                     t	          |¦  «        ¦  «        }| |         }||         }||         }t          | |t          |¬¦  «        \  }}	t          ||t          |¬¦  «        \  }
}t          ||
¦  «         t          |	|¦  «         dS )z<Test `y_score` order does not effect `metric_at_thresholds`.rÝ   )r¨   rÔ   r�   rØ   rß   r¬  r�  rá   N)r5   r™   r)   ÚpermutationrV   r   r   r!   )rL   rJ   râ   rG   Úperm_indicesÚy_true_permÚy_score_permÚsample_weight_permr–  Úthresh_1r—  Úthresh_2s               rM   Ú'test_metric_at_thresholds_y_score_orderr¿  É	  sð   € åŒX�o�o�oÑ&Ô&€FÝŒhÐ0Ð0Ð0Ñ1Ô1€GÝ”H˜_˜_˜_Ñ-Ô-€Må
˜RÑ
 Ô
 €CØ—?’?¥3 w¡<¤<Ñ0Ô0€LØ˜Ô&€KØ˜<Ô(€LØ& |Ô4Ðå-Ø��°}ðñ ô Ñ€Hˆhõ .Ø�\¥>ÐASðñ ô Ñ€Hˆhõ �H˜hÑ'Ô'Ð'Ý�H˜hÑ'Ô'Ð'Ð'Ð'rO   c                  ó–  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          || t          ¦  «        \  }}t          || t          ¦  «        \  }}t	          ||¦  «         t	          ||¦  «         t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          || t          |¬¦  «        \  }}t          || t          |¬¦  «        \  }}t	          ||¦  «         t          j        t          ¦  «        5  t	          ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )a¥  Test duplicate `y_score` edge cases in `metric_at_thresholds`.

    If there are duplicate `y_score` values and `y_true` differs between
    these duplicate values, `y_score` order will not affect metric output.

    However, if there are duplicate `y_score` values and `sample_weight` differs
    between these duplicate values, `y_score` order can affect metric output,
    as stable sort preserves relative order.
    )rÔ   r¨   rØ   rß   rÔ   )r0   r   r0   r0   r   rÝ   r¢  )r+   r+   r0   r   r0   rá   N)r5   r™   r   r   r!   r£   r¤   ÚAssertionError)	rJ   Úy_true_1Úy_true_2r–  r½  r—  r¾  Úsample_weight_1Úsample_weight_2s	            rM   Ú9test_metric_at_thresholds_y_score_order_duplicate_y_scorerÆ  à	  s�  € õ ŒhÐ0Ð0Ð0Ñ1Ô1€GåŒx˜˜˜Ñ(Ô(€HÝŒx˜˜˜Ñ(Ô(€Hå-¨h¸ÅÑPÔPÑ€HˆhÝ-¨h¸ÅÑPÔPÑ€Hˆhå�H˜hÑ'Ô'Ð'Ý�H˜hÑ'Ô'Ð'õ ”h˜˜˜Ñ/Ô/€OÝ”h˜˜˜Ñ/Ô/€Oå-Ø�'�>¸ðñ ô Ñ€Hˆhõ .Ø�'�>¸ðñ ô Ñ€Hˆhõ
 �H˜hÑ'Ô'Ð'å	Œ•~Ñ	&Ô	&ð ,ð ,Ý˜ (Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   Ä D>Ä>EÅEc                  óÀ  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          | |¦  «        \  }}}}}t          | |t          dddgi¬¦  «        \  }}t          ||¦  «         t          |dd…ddf         |¦  «         t          |dd…ddf         |¦  «         t          |dd…ddf         |¦  «         t          |dd…ddf         |¦  «         dS )zžTest `metric_at_thresholds` consistency with `confusion_matrix_at_thresholds`.

    This also checks output when `metric_func` returns a tuple of arrays.
    rÝ   )rØ   rß   rß   rÔ   r¨   r  r   r0   r°  N)r5   r™   r   r   r   r$   )	rL   rJ   rk  rl  rm  rn  Úthresholds_cmr¥  r�   s	            rM   Ú;test_metric_at_thresholds_consistency_with_confusion_matrixrÉ  
  s  € õ
 ŒX�o�o�oÑ&Ô&€FÝŒhÐ0Ð0Ð0Ñ1Ô1€Gå(FØØñ)ô )Ñ%€Cˆˆc�3˜õ
 !5Ø�Õ)¸(ÀQÈÀFÐ9Kð!ñ !ô !Ñ€M�:õ �z =Ñ1Ô1Ð1õ �} Q Q Q¨¨1 WÔ-¨sÑ3Ô3Ð3Ý�} Q Q Q¨¨1 WÔ-¨sÑ3Ô3Ð3Ý�} Q Q Q¨¨1 WÔ-¨sÑ3Ô3Ð3Ý�} Q Q Q¨¨1 WÔ-¨sÑ3Ô3Ð3Ð3Ð3rO   c                  óü   — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          | |t          dt           j        i¬¦  «        \  }}t          j        t          j        |¦  «        ¦  «        sJ ‚dS )z,Test `metric_at_thresholds` with NaN output.)r   r   r   r   r   r„  rµ  r°  N)r5   r™   r   r   r¼   rd  rÎ   )rL   rJ   r¥  ry   s       rM   Ú*test_metric_at_thresholds_with_nan_outputsrË  "
  s~   € õ ŒX�o�o�oÑ&Ô&€FÝŒhÐ0Ð0Ð0Ñ1Ô1€Gå+Ø��°oÅrÄvÐ5Nðñ ô Ñ€M�1õ Œ6•"”(˜=Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*Ð*Ð*rO   c                  óè   — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        t          d¬¦  «        5  t          | |d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrt  )rÓ   rØ   rÕ   rÕ   z"Pass pos_label=None as keyword argr²   )r5   r™   r£   rº   ÚFutureWarningr   rY  s     rM   Ú?test_confusion_matrix_at_thresholds_positional_args_deprecationrÎ  0
  s·   € ÝŒX�l�l�lÑ#Ô#€FÝŒhÐ+Ð+Ð+Ñ,Ô,€GÝ	Œ•mÐ+OÐ	PÑ	PÔ	Pð >ð >Ý& v¨w¸Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð >ð >s   ÁA'Á'A+Á.A+)NF)rà   rL  r   r½  )¥rÍ   rð   Únumpyr5   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   r   r   r   r   Úsklearn.metrics._rankingr   r   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_FUNCSrN   r\   rg   ro   r‡   ÚmarkÚparametrizer’   rœ   r¡   r¦   r©   r¯   r¾   rÏ   rÛ   rå   ré   ró   r™   r  r  r*  r2  rD  rI  rP  rV  rZ  rb  rg  ro  rr  r|  Úfilterwarningsr‚  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.  r0  r6  r3  rF  rI  rK  rQ  rZ  r\  r_  r^  rf  rm  rt  rx  r‚  r„  r†  rˆ  r‹  r˜  r›  r   r§  r©  r­  r³  r¶  r¿  rÆ  rÉ  rË  rÎ  r¶   rO   rM   ú<module>râ     sQ  ðØ €€€Ø 	€	€	€	à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð(ð ð ð ð ð ð ð ð ð ð
 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð #ØØØð	€ñ)#ð )#ð )#ð )#ð`2ð 2ð 2ðð ð ð<ð ð ð&Hð Hð Hð8 „×Ò˜ $¨ Ñ/Ô/ð
)ð 
)ñ 0Ô/ð
)ð
"ð 
"ð 
"ð)ð )ð )ð&#ð #ð #ð)ð )ð )ð)ð )ð )ð8)ð )ð )ð6oNð oNð oNðdMð Mð Mð	)ð 	)ð 	)ð.ð .ð .ð&ð ð ð" „×ÒØà	ˆŒ�,�,�,Ñ	Ô	   Ð+Ø	ˆŒ�,�,�,Ñ	Ô	 Ð&Ø	Ð	Ð	˜˜˜Ð/Ø	Ð	Ð	˜tÐ$ð	ñô ð/Xð /Xñô ð/Xðd „×ÒØà	ˆŒ�,�,�,Ñ	Ô	   Ð+Ø	ˆŒÐ&Ð&Ð&Ñ	'Ô	'¨¨¨Ð9ðñô ðð ñô ðð: „×ÒØà	ˆŒ�,�,�,Ñ	Ô	 Ð&Ø	Ð	Ð	˜tÐ$Ø	ˆˆ�y�y�yÐ!Ø	Ð	Ð	˜˜˜Ð/ð	ñô ðð ñô ððD „×ÒØðð ð ñô ðð ñô ððD:ð :ð :ð( „×ÒØà	,¨h¨b¬h°|°|°|Ñ.DÔ.DÀiÀiÀiÐPà/ØˆBŒHÐ)Ð)Ð)Ñ*Ô*ØˆOˆOð	
ðð ˆBŒH�\�\�\Ñ"Ô"Øð	
ð 1ØˆBŒHÐ)Ð)Ð)Ñ*Ô*ØˆOˆOð	
ðð ˆBŒH�\�\�\Ñ"Ô"Ø�ˆFð	
ðð ˆBŒHÐ)Ð)Ð)Ñ*Ô*Ø�#ˆJð	
ðð ˆBŒH�\�\�\Ñ"Ô"ØˆLˆLð	
ðð ˆBŒHÐ)Ð)Ð)Ñ*Ô*Ø Ð Ð ð	
ð AØˆBŒHÐ)Ð)Ð)Ñ*Ô*ØˆOˆOð	
ð AØˆBŒHÐ)Ð)Ð)Ñ*Ô*ØˆOˆOð	
ð AØˆBŒH�\�\�\Ñ"Ô"ØˆIˆIð	
ð}CñFô FðN „×Ò˜¨°¨Ñ7Ô7ðPð Pñ 8Ô7ñOFô FðPPð „×ÒØð'ð "°%Ð8Ð8ð	
ð'ð "°%Ð8Ð8ð	
ðFð "°BÐ7Ð7ð	
ðð "¨cÐ2Ð2ð	
ð 
4°RÐ8ð=ñ"ô "ðF	0ð 	0ñG"ô "ðF	0ð&ð &ð &ð*Lð Lð Lð"
ð 
ð 
ðD6ð 6ð 6ð86ð 6ð 6ð& „×Ò˜ {Ñ3Ô3ð#ð #ñ 4Ô3ð#ð „×Ò˜ {Ñ3Ô3ðEð Eñ 4Ô3ðEð0 „×ÒÐLÑMÔMØ„×Ò˜Ð(>À	Ð'JÑKÔKØ„×Ò˜¨°Ð(9Ñ:Ô:ð'ð 'ñ ;Ô:ñ LÔKñ NÔMð'ð „×Ò˜ {Ñ3Ô3ð	&ð 	&ñ 4Ô3ð	&ð „×Ò˜ $¨ Ñ/Ô/ð ð  ñ 0Ô/ð ð>)ð )ð )ð, „×Ò˜ $¨ Ñ/Ô/ð`ð `ñ 0Ô/ð`ðF6ð 6ð 6ðD<ð <ð <ð=ð =ð =ð
=ð 
=ð 
=ð>ð >ð >ð*.ð .ð .ð$ð $ð $ð2 „×ÒØ.à	ˆˆ�K�K�K !  q cÐ*Ø	ˆˆ�N�N�N Q C¨!¨Ð-Ø	ˆˆ�N�N�N Q C¨!¨Ð-Ø	ˆˆÐ%Ð%Ð%¨ s¨Q¨CÐ0Ø	ˆˆ�K�K�K   °	°	°	Ð:Ø	ˆˆ�N�N�N M M M°9°9°9Ð=Ø	ˆˆ�N�N�N M M M°9°9°9Ð=Ø	ˆˆÐ%Ð%Ð% } } }°i°i°iÐ@Ø	ˆˆ�K�K�K # ¨¨Ð,Ø	ˆˆ�N�N�N Q C¨!¨Ð-Ø	ˆˆ�N�N�N Q C¨!¨Ð-Ø	ˆˆÐ%Ð%Ð%¨ s¨Q¨CÐ0Ø	ˆˆ�K�K�K   °°°Ð>Ø	ˆˆ�N�N�N N N N°L°L°LÐAØ	ˆˆ�N�N�N N N N°L°L°LÐAØ	ˆˆÐ%Ð%Ð% ~ ~ ~°|°|°|ÐDØ	ˆˆ�K�K�K   ¨M¨M¨MÐ:Ø	ˆˆ�N�N�N I I I¨}¨}¨}Ð=Ø	ˆˆ�N�N�N I I I¨}¨}¨}Ð=Ø	ˆˆÐ%Ð%Ð% y y y°-°-°-Ð@ð)ñô ð2'ð 'ñ3ô ð2'ð „×ÒØNÐNÐNð 
ˆˆ�K�K�KÐ!1Ð!1Ð!1°<°<°<ÀÐGØ	ˆˆ�K�K�K   ¨i¨i¨i¸Ð>Ø	ˆˆ�N�N�NÐ$4Ð$4Ð$4°l°l°lÀEÐJØ	ˆˆ�N�N�N K K K°°°¸DÐAà	ˆˆ�K�K�K   ¨M¨M¨M¸5ÐAØ	ˆˆ�K�K�K   ¨M¨M¨M¸4Ð@Ø	ˆˆ�N�N�N I I I¨}¨}¨}¸eÐDØ	ˆˆ�N�N�N I I 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°°°Ð;Ø	ˆˆÐ$Ð$Ð$ i i i°°°Ð=Ø	ˆˆÐ$Ð$Ð$ i i i°°°Ð=ð	ñô ð'ð 'ñô ð'ðð ð ð „×Ò˜Ð$EÐ$EÐ$EÑFÔFð2ð 2ñ GÔFð2ð „×ÒØà	Ð	Ð	Ø	Ð	Ð	Ø	Ð	Ð	Ø	Ð	Ð	Ø	Ð	Ð	ðñ	ô 	ðð ñ	ô 	ðð „×ÒØà
ˆQˆ���Ð?Ð@Ø	ˆˆ�Q˜�HÐ?Ð@Ø	ˆˆ�K�K�KÐ!FÐGØ	ˆˆ�K�K�KÐ!FÐGà.Ð.Ð.ØˆOˆOØ(ð	
ð
ñô ð"ð "ñô ð"ð>ð >ð >ð48Sð 8Sð 8Sðvð ð ð.1ð 1ð 1ð4Xð Xð Xðð ð ð6#ð #ð #ðN 9:ñ3ð 3ð 3ð 3ð@ „×ÒØàØ3ØØ)ð	ñô ð „×Ò˜Ð"GÈÐ!RÑSÔSðð ñ TÔSñô ððCð Cð Cð „×Ò˜ mÑ4Ô4Ø„×Ò˜ jÑ1Ô1Ø„×Ò˜¨¨¨q©¬Ñ2Ô2ðð ñ 3Ô2ñ 2Ô1ñ 5Ô4ððð ð ð*4ð 4ð 4ðnLð Lð Lð  „×ÒØà	ˆˆÐ$Ð$Ð$Ð%Ø	ˆˆÐ%Ð%Ð%Ð&Ð'Ø
ˆ)ˆ)ˆÐ&Ð&Ð&Ð'ðñô ð(ð (ñô ð(ð(ð (ð (ðV „×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ðð9ð 9ð 9ð 	Pð 	Pð 	Pð)ð )ð )ðUð Uð Uðð ð ð(ð ð ð$ð $ð $ð=ð =ð =ð „×Ò˜¨¨u¨Ñ6Ô6ð#Vð #Vñ 7Ô6ð#VðL!ð !ð !ð*ð *ð *ð-ð -ð -ð 
ð 
ð 
ð4 „×ÒØà	ˆˆ�q˜$ÐØ	ˆˆ�q˜#ÐØ	ˆˆ�q˜$Ððñô ð
.ð 
.ñô ð
.ð „×ÒØà	ˆŒ�.�.�.Ñ	!Ô	! 1 aÐ(Ø	ˆŒ�.�.�.Ñ	!Ô	! 1 cÐ*Ø	ˆŒ�.�.�.Ñ	!Ô	! 1 aÐ(Ø	ˆŒÐ&Ð&Ð&Ñ	'Ô	'¨¨AÐ.Ø	ˆŒÐ&Ð&Ð&Ñ	'Ô	'¨¨CÐ0Ø	ˆŒÐ&Ð&Ð&Ñ	'Ô	'¨¨AÐ.ðñ
ô 
ð	;ð 	;ñ
ô 
ð	;ð „×ÒØ à	ˆŒ�,�,�,Ñ	Ô	  | | |Ð4Ø	ˆŒ�,�,�,Ñ	Ô	  l l lÐ3Ø	ˆŒ�,�,�,Ñ	Ô	  l l lÐ3Ø	ˆŒÐ&Ð&Ð&Ñ	'Ô	'¨Ð/CÐ/CÐ/CÐDð	ñô ð „×ÒÐ,¨t°U¨mÑ<Ô<ð.ð .ñ =Ô<ñô ð.ð&+ð +ð +ð& „×ÒØà	ˆˆ�q˜$ÐØ	ˆˆ�q˜#ÐØ	ˆˆ�q˜!Ððñô ð
Sð 
Sñô ð
Sð „×ÒØà	ˆˆ�qÐØ	ˆˆ�qÐðñô ðð ñô ðð$ „×ÒØ"ð ˆOˆOà��Ø��Ø��Ø��ð	ð ØGð
	
ð ˆLˆLà��Ø��Ø��Ø��ð	ð ð+ð	
ð !Ð Ð à��Ø��Ø��Ø��ð	ð !Ð Ð Ø0ð
	
ð !Ð Ð à��Ø��Ø��Ø��ð	ð ˆOˆOØ1ð
	
ð ˆLˆLà��Ø��Ø��Ø��ð	ð ˆLˆLð ð	
ð ˆLˆLà��Ø��Ø��Ø��ð	ð ˆIˆIØAð
	
ð �ˆFØˆ_ˆ_˜o˜o˜oÐ.ØðWð	
ðKNñQô QðdBð BñeQô QðdBð
 „×Ò˜¨.Ñ9Ô9ð*ð *ñ :Ô9ð*ð „×ÒØÐ&¨	Ð3IÈ9ÐUñô ð „×ÒØÐCÐCÐCñô ð.ð .ñô ñô ð.ð(#ð #ð #ñ$ð $ð $ð $ð „×ÒØàØØàðñ	ô 	ð „×Ò˜¨4°°´¸/¸/¸/Ñ1JÔ1JÐ*KÑLÔLð4ð 4ñ MÔLñ	ô 	ð4ð:,ð ,ð ,ð
	
ð 	
ð 	
ð „×Ò˜ t¨U mÑ4Ô4ð6ð 6ñ 5Ô4ð6ð$ „×Ò˜ q¨! fÑ-Ô-ð4ð 4ñ .Ô-ð4ð,(ð (ð (ð.%,ð %,ð %,ñP4ð 4ð 4ñ4
+ð 
+ð 
+ñ>ð >ð >ð >ð >rO   