Ë
    ÜÍ:j¹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€                  jƒ                  dddg«      d„ «       ZBd„ ZCd„ ZDd„ ZEd„ ZFd„ ZGd„ ZHd„ ZId „ ZJd!„ ZKd"„ ZLd#„ ZMej€                  jƒ                  d$ ejœ                  g d%¢«      g d&¢f ejœ                  g d%¢«      dfg d'¢g d(¢fg d'¢dfg«      d)„ «       ZOej€                  jƒ                  d$ ejœ                  g d*¢«      g d&¢f ejœ                  g d+¢«      g d,¢fg«      d-„ «       ZPej€                  jƒ                  d$ ejœ                  g d.¢«      dfg d/¢dfg d.¢g d&¢fg d/¢g d(¢fg«      d0„ «       ZQej€                  jƒ                  d1g d2¢«      d3„ «       ZRd4„ ZSej€                  jƒ                  d5d6 ejœ                  g d.¢«      g d7¢fd6 ejœ                  g d/¢«      g d8¢fd9 ejœ                  g d*¢«      dfd: ejœ                  g d/¢«      g d;¢fd< ejœ                  g d.¢«      d d=gfd< ejœ                  g d/¢«      d>d?gfd@ ejœ                  g d.¢«      g dA¢fd@ ejœ                  g d/¢«      g dB¢fdC ejœ                  g dD¢«      g d(¢fdC ejœ                  g dB¢«      g d(¢fdC ejœ                  g dA¢«      g d&¢fg«      ej€                  jƒ                  dEdFdGg«      dH„ «       «       ZTej€                  jƒ                  dIdJdKdFdLœfdMdKdGdLœfdNdFg dOœfdPdFdQdRœfdSi fg«      dT„ «       ZUdU„ ZVdV„ ZWdW„ ZXdX„ ZYdY„ ZZej€                  jƒ                  dZe:«      d[„ «       Z[ej€                  jƒ                  dZe:«      d\„ «       Z\ej€                  j»                  d]«      ej€                  jƒ                  dZee g«      ej€                  jƒ                  d^d_d`g«      da„ «       «       «       Z^ej€                  jƒ                  dZe:«      db„ «       Z_ej€                  jƒ                  dddg«      dc„ «       Z`dd„ Zaej€                  jƒ                  dddg«      de„ «       Zbdf„ Zcdg„ Zddh„ Zedi„ Zfdj„ Zgdk„ Zhdl„ Ziej€                  jƒ                  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€                  jƒ                  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€                  jƒ                  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€                  jƒ                  d…g d†¢«      d‡„ «       Znej€                  jƒ                  dˆg d‰¢g dŠ¢g d‹¢g dŒ¢g d�¢g«      dŽ„ «       Zoej€                  jƒ                  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€                  jƒ                  d¡ereveuesf«      ej€                  jƒ                  d¢eewf«      d£„ «       «       Zyd¤„ Zzej€                  jƒ                  d¥d¦«      ej€                  jƒ                  d§d¨«      ej€                  jƒ                  d© e{d=«      «      dª„ «       «       «       Z|d«„ Z}d¬„ Z~d­„ Zej€                  jƒ                  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€                  jƒ                  d±e5«      d²„ «       Z‚d³„ Zƒd´„ Z„dµ„ Z…d¶„ Z†d·„ Z‡d¸„ Zˆd¹„ Z‰dº„ ZŠej€                  jƒ                  d»ddg«      d¼„ «       Z‹d½„ ZŒd¾„ Z�d¿„ ZŽdÀ„ Z�ej€                  jƒ                  dÁg dA¢d=dÂfg dA¢dÃdQfg dA¢dÄdÅfg«      dÆ„ «       Z�ej€                  jƒ                  dÇ ejœ                  g dÈ¢«      d=d=f ejœ                  g dÉ¢«      d=dQf ejœ                  g dÉ¢«      dÃd=f ejœ                  g dÊ¢«      d=d=f ejœ                  g dË¢«      d=dQf ejœ                  g dË¢«      dÃd=fg«      dÌ„ «       Z‘ej€                  jƒ                  dÍ ejœ                  g dÎ¢«      dÅg dA¢f ejœ                  g dy¢«      dQg dA¢f ejœ                  g dÏ¢«      dQg dA¢f ejœ                  g dÐ¢«      dÅg dÑ¢fg«      ej€                  jƒ                  dÒddg«      dÓ„ «       «       Z’dÔ„ Z“ej€                  jƒ                  dÁg dA¢d=dÂfg dA¢dÃdQfg dA¢dÄd=fg«      dÕ„ «       Z”ej€                  jƒ                  dÖg dA¢d×fg dA¢dŸfg«      dØ„ «       Z•ej€                  jƒ                  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€                  jƒ                  d±e5«      dì„ «       Z—ej€                  jƒ                  díeeee g«      ej€                  jƒ                  dîg dï¢«      dð„ «       «       Z˜dñ„ Z™�ddò„Zšej€                  jƒ                  dóeeeešg«      ej€                  jƒ                  dôd ejœ                  g dõ¢«      g«      dö„ «       «       Z›d÷„ Zœdø„ Z�ej€                  jƒ                  dùddg«      dú„ «       Zžej€                  jƒ                  dûd d=g«      dü„ «       ZŸdý„ Z dþ„ Z¡dÿ„ Z¢�d „ Z£�d„ Z¤y(  é    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«      }|j                  |«       ||   ||   }}t        |dz  «      }t
        j                  j                  d«      }t
        j                  ||j                  |d|z  «      f   }t        d¬«      }	|	j                  |d| |d| «      j!                  ||d «      }
|r	|
dd…df   }
|	j#                  ||d «      }||d }|||
fS )z½Make some classification predictions on a toy dataset using an SVC

    If binary is True restrict to a binary classification problem instead of a
    multiclass classification problem
    Né   é%   r   éÈ   ©Úrandom_stateé   )r   Ú	load_irisÚdataÚtargetÚshapeÚnpÚaranger)   ÚshuffleÚintÚrandomÚRandomStateÚc_Úrandnr   ÚfitÚpredict_probaÚpredict)ÚdatasetÚbinaryÚXÚyÚ	n_samplesÚ
n_featuresÚpÚrngÚhalfÚclfÚy_scoreÚy_predÚy_trues                úw/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_ranking.pyÚmake_predictionrN   B   sE  € ð €ä×$Ñ$Ó&ˆà�‰€AØ�‰€Aáà��Q‘‰x˜˜1˜q™5™ˆ1ˆàŸG™GÑ€IˆzÜ
�	‰	�)Ó€Aä
˜RÓ
 €CØ‡K�K�„NØˆQ‰4��1‘€q€AÜˆy˜1‰}Ó€Dô �)‰)×
Ñ
 Ó
"€CÜ
�‰ˆa�—‘˜9 c¨JÑ&6Ó7Ð7Ñ8€Aô ¨!Ô
,€CØ�g‰g�a˜˜�h  % 4 Ó)×7Ñ7¸¸$¸%¸ÓA€Gáð š!˜Q˜$‘-ˆà�[‰[˜˜4˜5˜Ó"€FØˆtˆuˆX€FØ�6˜7Ð"Ð"ó    c                 ó  — t        j                  | «      d   }|| |k(     }|| |k7     }|j                  dd«      |j                  dd«      z
  }t        j                  |dkD  «      }|t	        t        |«      t        |«      z  «      z  S )zKAlternative implementation to check for correctness of
    `roc_auc_score`.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€KÜ—‘�{ Q‘Ó'€Ià”uœS ›X¬¨C«Ñ0Ó1Ñ1Ð1rO   c                 ó`  — t        j                  | «      d   }t        j                  | |k(  «      }t        j                  |«      ddd…   }||   }| |   } d}t	        t        |«      «      D ]<  }| |   |k(  sŒd}t	        d|dz   «      D ]  }| |   |k(  sŒ|dz  }Œ ||dz   z  }||z  }Œ> ||z  S )a>  Alternative implementation to check for correctness of
    `average_precision_score`.

    Note that this implementation fails on some edge cases.
    For example, for constant predictions e.g. [0.5, 0.5, 0.5],
    y_true = [1, 0, 0] returns an average precision of 0.33...
    but y_true = [0, 0, 1] returns 1.0.
    r0   NrQ   r   ç      ð?)r5   rR   rT   ÚargsortÚrangerV   )	rL   rJ   rW   Ún_posÚorderÚscoreÚiÚprecÚjs	            rM   Ú_average_precisionrg   �   sÕ   € ô —	‘	˜&Ó! !Ñ$€IÜ�F‰F�6˜YÑ&Ó'€EÜ�J‰J�wÓ¡ " Ñ%€EØ�e‰n€GØ�E‰]€Fà€EÜ”3�w“<Ó ò 	ˆØ�!‰9˜	Ó!ð ˆDÜ˜1˜a !™e“_ò  �Ø˜!‘9 	Ó)Ø˜C‘K‘Dð ð �A˜‘G‰OˆDØ�T‰M‰Eð	ð �5‰=Ð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Ñ €Iˆv�yÜ”X˜iÓ(Ó)€IÜ”(˜6Ó"Ó#€FØÐÜ�1”c˜)“nÓ%ò HˆØ˜Y q™\¨V°A©Y¸ÀÀAÁ¹Ñ-FÑGÑGÑðHàÐ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                 ó.  — t        | |«      \  }}}|||k     }t        j                  ||«      }|||k     }t        j                  ||kD  «      }|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‰ˆˆS�!Ø�c˜W‘nÑ%ˆÜ—)‘)˜G WÓ-ˆØ�c˜W‘nÑ%ˆÜ—)‘)˜C '™MÓ*ˆØ˜1‘ˆØ˜‘K  W¡Ð.ˆØ˜‘K  W¡Ð.ˆÜ—)‘)˜G¤R§Y¡Y¨w¸À(Ó%KÓLˆØ˜Ð!Ð!rO   r   ç      à?r0   )r	   )rL   ru   rv   r€   rz   r{   Úpartial_aucÚfpr1Úfpr2Úmin_areaÚmax_areas              rM   Ú_partial_roc_auc_scorer‡   ²   ss   € ò

"ñ $ F¨I°wÓ?Ñ€GˆWÜ�g˜wÓ'€Kð €DØ€DØ�d˜T‘kÑ" d¨T¡kÑ2€HØ�d‰{€HØ�!�{ XÑ-°(¸XÑ2EÑFÑFÑGÐGrO   ÚdropTc                 ó,  — t        d¬«      \  }}}t        ||«      }t        ||| ¬«      \  }}}t        ||«      }t	        ||d¬«       t        |t        ||«      «       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )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Ñ€FˆAˆwÜ˜ Ó(€Lä$ V¨WÈÔMÑ€CˆˆjÜ�#�s‹m€GÜ˜g |¸QÕ?Ü˜¤¨v°wÓ!?Ô@Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rO   c                  ó`  — t         j                  j                  d«      } t        j                  dgdz  dgdz  z   «      }| j	                  dd¬«      }t        ||d¬«      \  }}}|d   dk(  sJ ‚|d	   dk(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )
Nr   é2   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‰X�q�c˜B‘h !  r¡Ñ)Ó*€FØ�[‰[˜ ˆ[Ó%€FÜ˜f fÀÔE�M€CˆˆcØˆq‰6�QŠ;Ðˆ;Øˆr‰7�aŠ<Ðˆ<Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜Ÿ	™	Ò!Ð!Ñ!rO   c                  ól  — t        d¬«      \  } }}t        | |«      \  }}}g }|D ]I  }t        j                  ||k\  | z  «      }t        j                  | «      }	|j	                  d|z  |	z  «       ŒK t        ||d¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )NTrŠ   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Ñ€FˆAˆwÜ$ V¨WÓ5Ñ€Cˆˆjð €KØò )ˆÜ�V‰V�W ‘\ VÑ+Ó,ˆÜ�F‰F�6‹NˆØ×Ñ˜3 ™8 a™<Õ(ð)ô ˜c ;¸Õ:Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rO   c                  ó˜   — t        d¬«      \  } }}t        j                  t        «      5  t	        | |«       d d d «       y # 1 sw Y   y xY w)NFrŠ   )rN   ÚpytestÚraisesÚ
ValueErrorr   )rL   ry   rJ   s      rM   Útest_roc_curve_multir¦   ü   s>   € ä(°Ô6Ñ€FˆAˆwä	�‰”zÓ	"ñ #Ü�&˜'Ô"÷#÷ #ñ #ús   ªA Á A	c                  óê   — t        d¬«      \  } }}t        | |dz
  «      \  }}}t        ||«      }t        |dd¬«       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y )NTrŠ   r�   çÍÌÌÌÌÌì?r+   r�   )rN   r   r	   r#   r4   )rL   ry   rJ   rw   rx   r�   r‘   s          rM   Útest_roc_curve_confidencer©     so   € ä(°Ô5Ñ€FˆAˆwä$ V¨W°s©]Ó;Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(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 ‚y )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¯     sE  € ä+°4Ô8Ñ€FˆD�'ô —7‘7˜6Ÿ<™<Ó(€LÜ$ V¨\Ó:Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ð(ô —8‘8˜FŸL™LÓ)€LÜ$ V¨\Ó:Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ð(ô % V¨TÓ2Ñ€CˆˆjÜ�#�s‹m€GÜ˜g t°QÕ7Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(rO   c                  óþ  — g d¢} g d¢}d}t        j                  t        |¬«      5  t        | |«      \  }}}d d d «       t	        t        j                  t        «      t
        j                  «      «       |j                  j                  k(  sJ ‚|j                  |j                  k(  sJ ‚d}t        j                  t        |¬«      5  t        | D �cg c]  }d|z
  ‘Œ	 c}|«      \  }}}d d d «       t	        |t        j                  t        |«      t
        j                  «      «       |j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚y # 1 sw Y   �Œ,xY wc c}w # 1 sw Y   Œ‰xY w)N)
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 meaninglessr0   )
r£   Úwarnsr   r   r$   r5   ÚfullrV   Únanr4   )rL   rK   Úexpected_messagerw   rx   r�   Úxs          rM   Útest_roc_curve_one_labelrº   +  sH  € Ú+€FÚ+€Fð 	Tð ô 
�‰Ô,Ð4DÔ	Eñ 9Ü(¨°Ó8ÑˆˆS�*÷9ô �sœBŸG™G¤C¨
£O´R·V±VÓ<Ô=Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ð(ð 	Sð ô 
�‰Ô,Ð4DÔ	Eñ JÜ(¸Ö)@°A¨!¨a«%Ò)@À&ÓIÑˆˆS�*÷Jô �sœBŸG™G¤C¨
£O´R·V±VÓ<Ô=Ø�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜
×(Ñ(Ò(Ð(Ñ(÷#9ñ 9üò *A÷Jð Jús)   ¦E!Ã	
E3ÃE.
ÃE3Å!E+Å.E3Å3E<c                  ó„  — ddg} ddg}t        | |«      \  }}}t        | |«      }t        |g d¢«       t        |g d¢«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |g d¢«       t        |g d¢«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |ddg«       t        |ddg«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |g d¢«       t        |g d¢«       t        |d«       ddg} ddg}t        | |«      \  }}}t        | |«      }t        |ddg«       t        |ddg«       t        |d«       ddg} dd	g}d
}t	        j
                  t        |¬«      5  t        | |«      \  }}}d d d «       t        |g d¢«       t        |t        j                  t        j                  t        j                  g«       d}t	        j
                  t        |¬«      5  t        | |«      }d d d «       t        j                  «      sJ ‚ddg} dd	g}d}t	        j
                  t        |¬«      5  t        | |«      \  }}}d d d «       t        |t        j                  t        j                  t        j                  g«       t        |g d¢«       d}t	        j
                  t        |¬«      5  t        | |«      }d d d «       t        j                  |«      sJ ‚t        j                  ddgddgg«      } t        j                  ddgddgg«      }t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        j                  ddgddgg«      } t        j                  ddgddgg«      }t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t	        j
                  t        |¬«      5  t        | |d¬«       d d d «       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        j                  ddgddgg«      } t        j                  ddgddgg«      }t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        j                  ddgddgg«      } t        j                  ddgddgg«      }t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       t        t        | |d¬«      d«       y # 1 sw Y   �Œ)xY w# 1 sw Y   �Œ½xY w# 1 sw Y   �ŒuxY w# 1 sw Y   �Œ	xY w# 1 sw Y   �Œ—xY w# 1 sw Y   �ŒrxY w# 1 sw Y   �ŒçxY w# 1 sw Y   �ŒÂxY w)Nr   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  s³  € à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c¢9Ô-Ü˜c¢9Ô-Ü˜ Ô%à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c¢9Ô-Ü˜c¢9Ô-Ü˜ Ô%à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c A q 6Ô*Ü˜c A q 6Ô*Ü˜ Ô%à�ˆV€FØ�!ˆf€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c¢9Ô-Ü˜c¢9Ô-Ü˜ Ô%à�ˆV€FØ�Cˆj€GÜ˜F GÓ,�K€CˆˆaÜ˜F GÓ,€GÜ˜c A q 6Ô*Ü˜c A q 6Ô*Ü˜ Ô%ð �ˆV€FØ�Tˆl€Gð 	Sð ô 
�‰Ô,Ð4DÔ	Eñ 1Ü ¨Ó0‰ˆˆS�!÷1ä˜c¢?Ô3Ü˜c¤B§F¡F¬B¯F©F´B·F±FÐ#;Ô<ð	5ð ô 
�‰Ô,Ð4DÔ	Eñ -Ü˜F GÓ,ˆ÷-ä�:‰:�cŒ?Ðˆ?ð �ˆV€FØ�Tˆl€Gð 	Tð ô 
�‰Ô,Ð4DÔ	Eñ 1Ü ¨Ó0‰ˆˆS�!÷1ä˜c¤B§F¡F¬B¯F©F´B·F±FÐ#;Ô<Ü˜c¢?Ô3ð	5ð ô 
�‰Ô,Ð4DÔ	Eñ -Ü˜F GÓ,ˆ÷-ä�:‰:�cŒ?Ðˆ?ô �X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜A˜  A Ð'Ó(€GÜ	�‰Ô,Ð4DÔ	Eñ 8Ü�f˜g¨wÕ7÷8ä	�‰Ô,Ð4DÔ	Eñ ;Ü�f˜g¨zÕ:÷;äœ f¨g¸yÔIÈ3ÔOÜœ f¨g¸wÔGÈÔMä�X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜A˜  A Ð'Ó(€GÜ	�‰Ô,Ð4DÔ	Eñ 8Ü�f˜g¨wÕ7÷8ä	�‰Ô,Ð4DÔ	Eñ ;Ü�f˜g¨zÕ:÷;äœ f¨g¸yÔIÈ3ÔOÜœ f¨g¸wÔGÈÔMä�X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜A˜  A Ð'Ó(€GÜœ f¨g¸wÔGÈÔKÜœ f¨g¸zÔJÈAÔNÜœ f¨g¸yÔIÈ1ÔMÜœ f¨g¸wÔGÈÔKä�X‰X˜˜1�v  1˜vÐ&Ó'€FÜ�h‰h˜˜c˜
 S¨# JÐ/Ó0€GÜœ f¨g¸wÔGÈÔMÜœ f¨g¸zÔJÈCÔPÜœ f¨g¸yÔIÈ3ÔOÜœ f¨g¸wÔGÈÕM÷}1ñ 1ú÷-ñ -ú÷1ñ 1ú÷-ñ -ú÷8ñ 8ú÷;ñ ;ú÷8ñ 8ú÷;ñ ;ús`   Æ"WÈW'É0W4Ë-XÍ*XÎXÐ4X(Ñ&X5×W$×'W1×4W>ØXØXØX%Ø(X2Ø5X?c            	      óè   — g d¢} g d¢}t        | |d¬«      \  }}}t        |t        j                  dddg«       g d¢} g d	¢}t        | |d¬«      \  }}}t        |t        j                  dd
dddg«       y )N©r   r   r   r   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×   ¸  st   € â€FÚ,€GÜ$ V¨WÈÔMÑ€CˆˆjÜ˜j¬2¯6©6°3¸¸SÐ*AÔBò 5€FÚO€GÜ$ V¨WÈÔMÑ€CˆˆjÜ˜j¬2¯6©6°3¸¸SÀ#ÀsÐ*KÕLrO   c                  ó  — g d¢} g d¢}t        j                  dd«      }t        | ||¬«      \  }}}t        j                  |«      dk  j	                  «       dk(  sJ ‚t        j                  |«      dk  j	                  «       dk(  sJ ‚y )N©r   r   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á   Æ  sz   € ò €FÚ'€GÜ—I‘I˜c 1Ó%€MÜ˜F G¸=ÔI�K€CˆˆaÜ�G‰G�C‹L˜1Ñ×!Ñ!Ó# qÒ(Ð(Ð(Ü�G‰G�C‹L˜1Ñ×!Ñ!Ó# qÒ(Ð(Ñ(rO   c                  ó0  — ddg} ddg}t        t        | |«      d«       ddg} ddg}t        t        | |«      d«       g d¢} g d¢}t        t        | |«      d«       ddg} ddg}t        t        | |«      d«       g d¢} g d¢}t        t        | |«      d«       y )Nr   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¨Ô-Ø	
ˆAˆ€AØ	
ˆAˆ€AÜœc ! Q›i¨Ô-Ú€AÚ€AÜœc ! Q›i¨Ô-Ø	
ˆAˆ€AØ	
ˆAˆ€AÜœc ! Q›i¨Ô+Ú€AÚ€AÜœc ! Q›i¨Õ-rO   c                  óî  — t        j                  t        «      5  t        g d¢ddg«       d d d «       t        j                  t        «      5  t        dgdg«       d d d «       g d¢} g d¢}dj	                  t        j                  | «      «      }t        j                  t        t        j                  |«      ¬«      5  t        | |«       d d d «       y # 1 sw Y   Œ©xY w# 1 sw Y   Œ…xY w# 1 sw Y   y xY w)	NrÁ   rÔ   rÏ   r¾   )r+   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˜c 3˜ZÔ(÷)ô 
�‰”zÓ	"ñ ÜˆSˆE�C�5Ô÷ò 	€AÚ€AØA×HÑHÌÏÉÐRSËÓU€MÜ	�‰”z¬¯©°=Ó)AÔ	Bñ ÜˆAˆqŒ	÷ð ÷)ð )ú÷ð ú÷ð ús#   šCÁCÂ=C+ÃCÃC(Ã+C4zy_true, labels)r   r0   r   r+   ©r   r0   r+   )ÚaÚbrñ   Úc)rñ   rò   ró   c           	      óv  — t        j                  g d¢g d¢g d¢g d¢g«      }t        g d¢g d¢«      }t        g d¢g d¢«      }||z   d	z  }t        g d
¢g d¢«      }t        g d¢g d¢«      }||z   d	z  }t        ddgddg«      }	t        ddgddg«      }
|	|
z   d	z  }||z   |z   dz  }t        t        | ||d¬«      |«       |||g}g d¢}t        j                  ||¬«      }t        t        | ||dd¬«      |«       d}t        j                  t        |¬«      5  t        | ||dd ¬«       d d d «       y # 1 sw Y   y xY w)N©rÔ   rÕ   rÔ   ©rÚ   rÛ   rÚ   ©çffffffÖ?r�   ç333333Ã?©r   rÏ   rÕ   ©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  ö  si  € ô �x‰xÚ	š/Ò+<ºmÐLó€Hô šYÒ(8Ó9€HäšYªÓ8€HØ  8Ñ+¨qÑ0Ðô šYªÓ7€HÜšYÒ(8Ó9€HØ  8Ñ+¨qÑ0Ðô ˜a ˜V c¨3 ZÓ0€HÜ˜a ˜V c¨3 ZÓ0€HØ  8Ñ+¨qÑ0Ðð -Ð/?Ñ?ÐBRÑRÐVWÑWÐÜÜ�f˜h¨vÀ5ÔIØôð $Ð%5Ð7GÐH€KÚ#€JÜŸ™ K¸ÔDÐÜÜØ�H V¸È
ô	
ð 	ô	ð M€MÜ	�‰Ô*°-Ô	@ñ XÜ�f˜h¨vÀ5ÐRVÕW÷X÷ Xñ Xús   ÄD/Ä/D8)r   r+   r   r+   )rñ   Údrñ   r  )rñ   rò   r  c           	      óü   — t        j                  g d¢g d¢g d¢g d¢g«      }t        g d¢g d¢«      }t        g d¢g d¢«      }||z   d	z  }t        t        | ||d
¬«      |«       t        t        | ||d
d¬«      |«       y )N)rÏ   r¾   rÕ   )rÐ   r¾   rÛ   )çš™™™™™á?r¾   çÍÌÌÌÌÌÜ?)rÛ   r¾   rÐ   )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‰xÚ	š/Ò+<ºoÐNó€Hô š\Ò+@ÓA€Häš\Ò+@ÓA€HØ˜HÑ$¨Ñ)€IäÜ�f˜h¨vÀ5Ô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¬«      |«       y )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‰xÚ	š/ª?ºOÐLó€Hô
 š,¨²°A°©Ó7€EÜš,¨²°A°©Ó7€EÜš,¨²°A°©Ó7€EÜÜ�f˜h°EÀ&ÐRVÔWØ	��uÐôð  ™¨Ñ.°#Ñ5ÐÜÜ�f˜h°EÀ&ÔIØôð ˜d‘l U¨T¡\Ñ1°E¸C±KÑ?€OÜÜØ�H¨%¸È
ô	
ð 	õ	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 ‚y )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_aucr.  €  s¹   € ô �X‰X’lÓ#€Fò 	ÚÚÚ ð	€Iô Ü�f˜i°[È'ÔRØôò 	ÚÚÚð	€Kô 	�f˜k°{ÈGÔTØ
ò	ðð	ð
 ”b—g‘g˜f“oÑ%€HÜØ� k¸7ôä	�‰�sÓ	òð ñ rO   c           
      óÜ  — | }t         j                  j                  g d¢d|¬«      }t        j                  |D �cg c]2  }t         j
                  j                  d||¬«      j                  «       ‘Œ4 c}«      }t        |g d¢¬«      }t        |j                  «       |j                  «       «      \  }}}t        ||«      }	t        ||dd	¬
«      }
|	t        j                  |
«      k(  sJ ‚y c c}w )N)ç       @r^   r�   éè  )r˜   r/   r0   )ÚnrF   r/   rð   )Úclassesr   rÈ   r)  )r   Ú	dirichletÚrvsr5   ÚasarrayÚmultinomialrs   r   r   Úravelr	   r   r£   r*  )Úglobal_random_seedÚseedrK   Úy_pred_irL   Úy_onehotrw   rx   ry   Úroc_auc_by_handÚroc_auc_autos              rM   Útest_micro_averaged_ovr_roc_aucr?  ª  sÏ   € Ø€Dô
 �_‰_× Ñ ¢°tÈ$Ð ÓO€FÜ�Z‰Zð #ö	
àô ×Ñ×!Ñ! A¨ÀÐ!ÓE×LÑLÕNò	
ó€Fô ˜fªiÔ8€HÜ˜HŸN™NÓ,¨f¯l©l«nÓ=�K€CˆˆaÜ˜#˜s“m€OÜ  ¨¸UÈGÔT€LØœfŸm™m¨LÓ9Ò9Ð9Ñ9ùò	
s   º7C)zmsg, y_true, labelsz!Parameter 'labels' must be unique©r   r+   r   )rñ   rñ   rò   zKNumber of classes in y_true not equal to the number of columns in 'y_score'z"Parameter 'labels' must be ordered)rñ   ró   rò   zMNumber of given labels, 2, not equal to the number of columns in 'y_score', 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 «       y # 1 sw Y   y xY w)Nrõ   rö   r÷   rú   r²   rÿ   )r5   r™   r£   r¤   r¥   r   )ÚmsgrL   r   r  r  s        rM   Ú*test_roc_auc_score_multiclass_labels_errorrD  ¾  sW   € ôR �x‰xÚ	š/Ò+<ºmÐLó€Hô 
�‰”z¨Ô	-ñ PÜ�f˜h¨vÀ;ÕO÷P÷ Pñ Pús   ½AÁAzmsg, kwargszLaverage must be one of \('macro', 'weighted', None\) for multiclass problemsrÇ   )rÅ   r  zUaverage must be one of \('micro', 'macro', 'weighted', None\) for multiclass problemszksample_weight is not supported for multiclass one-vs-one ROC AUC, 'sample_weight' must be None in this case)r  rÞ   z|Partial AUC computation not available in multiclass setting, 'max_fpr' must be set to `None`, received `max_fpr=0.5` insteadr�   )r  rv   z'multi_class must be in \('ovo', 'ovr'\)c                 óö   — t        d«      }|j                  dd«      }t        |«      }|j                  ddd¬«      }t	        j
                  t        | ¬«      5  t        ||fi |¤Ž d d d «       y # 1 sw Y   y xY w)Né”  é   r•   r   r—   r²   )r)   Úrandr%   rš   r£   r¤   r¥   r   )rC  ÚkwargsrG   rJ   Úy_probrL   s         rM   Ú#test_roc_auc_score_multiclass_errorrK    sn   € ôN ˜SÓ
!€CØ�h‰h�r˜1‹o€GÜ�WÓ€FØ�[‰[˜˜A Bˆ[Ó'€FÜ	�‰”z¨Ô	-ñ 0Ü�f˜fÑ/¨Ò/÷0÷ 0ñ 0ús   ÁA/Á/A8c                  ó4  — t        d«      } | j                  d«      }t        j                  dd¬«      }d}t	        j
                  t        |¬«      5  t        ||«       d d d «       t        j                  dd¬«      }t	        j
                  t        |¬«      5  t        ||«       d d d «       t        j                  ddd¬«      }t	        j
                  t        |¬«      5  t        ||«       d d d «       y # 1 sw Y   Œ™xY w# 1 sw Y   Œ^xY w# 1 sw Y   y xY w)NrF  é
   r8   ©ÚdtyperÂ   r²   rQ   )
r)   rH  r5   r¬   r£   rµ   r   r   r«   r¶   )rG   rK   rL   Úwarn_messages       rM   Útest_auc_score_non_binary_classrQ  >  sè   € ô ˜SÓ
!€CØ�X‰X�b‹\€Fä�X‰X�b Ô&€Fð	5ð ô 
�‰Ô,°LÔ	Añ &Ü�f˜fÔ%÷&ä�W‰W�R˜uÔ%€FÜ	�‰Ô,°LÔ	Añ &Ü�f˜fÔ%÷&ä�W‰W�R˜ 5Ô)€FÜ	�‰Ô,°LÔ	Añ &Ü�f˜fÔ%÷&ð &÷&ð &ú÷&ð &ú÷&ð &ús$   ÁC6ÂDÃ DÃ6C?ÄDÄDc                  óÌ  — t        j                  g d¢«      } t        j                  ddg«      }t        j                  t        d¬«      5  t        | |«       ddd«       t        j                  g d¢«      } t        j                  dt         j                  dd	g«      }t        j                  t        d
¬«      5  t        | |«       ddd«       y# 1 sw Y   ŒxxY w# 1 sw Y   yxY w)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_validationrU  S  s¹   € ô �X‰X’iÓ €FÜ�h‰h˜˜S�zÓ"€Gä	�‰”zÐ)JÔ	Kñ LÜ:¸6À7ÔK÷Lô �X‰X’lÓ#€FÜ�h‰h˜œRŸV™V S¨#Ð.Ó/€Gä	�‰”zÐ)>Ô	?ñ LÜ:¸6À7ÔK÷Lð L÷Lð Lú÷Lð Lús   Á
CÂ8CÃCÃC#c                  óZ  — 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J ‚ 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«       y# 1 sw Y   yxY w)zJTest zero weights in `_sort_inputs_and_compute_classification_thresholds`.©r   r0   r   r0   r   r0   )rÔ   r¨   rÚ   rÑ   r�   rÏ   )r¾   r0  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_weightsr]  d  s  € ä�X‰XÒ(Ó)€FÜ�h‰hÒ5Ó6€Gä—H‘HÒ;Ó<€Mô 	;Ø�G˜]ó	
ñ 4€M�> =°!ô ˆ}Ó¤ ^Ó!4ÔO¼¸MÓ8JÔOÈaÒOÐOÑOÐOÐOØ�nÑ$Ð$Ð$Ø�nÑ$Ð$Ð$ô IØ�ó�O€A€qˆ&�!ð ˆ>Ðˆ>ô �X‰X’iÓ €FÜ�h‰h’Ó'€GÜ—H‘Hš_Ó-€Mä	�‰”zÐ)OÔ	Pñ 
Ü:Ø�G˜]ô	
÷
÷ 
ñ 
ús   Ä
D!Ä!D*c                  óJ  — 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«      «       y)zETest sorting in `_sort_inputs_and_compute_classification_thresholds`.)r   r0   r   r0   r0   )rÔ   r¨   rÚ   rÑ   rÚ   )r^   r0  rX  r�   rÚ   NrQ   r0   )r0  r�   rX  rÚ   r^   )r   r0   r•   rç   r+   rç   rÚ   r   )r�   r�   r�   r�   r�   )r5   r™   r   Úallr$   )	rL   rJ   rÞ   rY  rZ  r[  Úthreshold_idxsÚy_score_samery   s	            rM   Ú>test_sort_inputs_and_compute_classification_thresholds_sortingrb  †  s  € ä�X‰X’oÓ&€FÜ�h‰hÒ0Ó1€GÜ—H‘HÒ6Ó7€Mô 	;Ø�G˜]ó	
ñ A€M�> =°.ô �6‰6�.  "Ð%¨¸¸Ð);Ñ;Ô<Ð<Ð<Ü�}¤b§h¡hÒ/HÓ&IÔJÜ�~¤r§x¡x²Ó'=Ô>ä�~ a¨Ð*¨S°#¨JÔ7Ü�} Q qÐ)¨A¨q¨6Ô2ô —8‘8Ò5Ó6€LÜPØ�óÑ€A€qˆ!ˆ^ô �~¤r§x¡x°°£}Õ5rO   c                 óâ  — t         j                  j                  | «      }d}|j                  ddd¬«      }|j	                  d¬«      }t        j
                  |«      }||z
  }t        ||«      \  }}}	}
}t        |«      t        |«      cxk(  r-t        |	«      cxk(  rt        |
«      cxk(  rt        |«      k(  sJ ‚ J ‚t        |
|	z   |«       t        ||z   |«       t        ||z   |	z   |
z   |«       y)z.Smoke test for confusion_matrix_at_thresholds.r–   r   r+   r—   N)	r5   r9   r:   rš   ÚuniformrT   r   rV   r!   )r9  rG   rD   rL   rJ   ra   Ún_negÚtnsÚfpsÚfnsÚtpsr�   s               rM   Ú#test_confusion_matrix_at_thresholdsrj  ¢  sØ   € ä
�)‰)×
Ñ
Ð 2Ó
3€Cà€IØ�[‰[˜˜A Cˆ[Ó(€FØ�k‰k˜sˆkÓ#€Gä�F‰F�6‹N€EØ˜Ñ€Eä%CÀFÈGÓ%TÑ"€Cˆˆc�3˜
äˆs‹8”s˜3“xÔJ¤3 s£8ÔJ¬s°3«xÔJ¼3¸z»?ÒJÐJÑJÐJÐJÜ�C˜#‘I˜uÔ%Ü�C˜#‘I˜uÔ%Ü�C˜#‘I ‘O cÑ)¨9Õ5rO   Ú
curve_funcc                 óÚ   — t        d«      }|j                  ddd¬«      }|j                  d«      }d}t        j                  t
        |¬«      5   | ||«       d d d «       y # 1 sw Y   y xY w)NrF  r   r•   rM  r—   z"multiclass format is not supportedr²   )r)   rš   rH  r£   r¤   r¥   )rk  rG   rL   rK   rC  s        rM   Ú4test_confusion_matrix_at_thresholds_multiclass_errorrm  µ  s_   € ä
˜SÓ
!€CØ�[‰[˜˜A Bˆ[Ó'€FØ�X‰X�b‹\€FØ
.€CÜ	�‰”z¨Ô	-ñ #Ù�6˜6Ô"÷#÷ #ñ #ús   Á
A!Á!A*c                 óô  — d}t        j                  t        |¬«      5   | t        j                  ddgd¬«      ddg«       d d d «       t        j                  t        |¬«      5   | t        j                  ddgt
        ¬«      ddg«       d d d «       g d	¢} | g d
¢|«      } | g d¢|«      }t        ||«      D ]%  \  }}t        j                  j                  ||«       Œ' y # 1 sw Y   Œ¢xY w# 1 sw Y   ŒdxY w)Nz‘y_true takes value in {'a', 'b'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitly.r²   rñ   rò   z<U1rN  r¾   r^   )r¾   r^   rÏ   gáz®GáÚ?©r   r0   r0   r   )r¾   r^   r^   r¾   )	r£   r¤   r¥   r5   r™   ÚobjectÚzipÚtestingr!   )rk  rC  rK   Ú	int_curveÚfloat_curveÚint_curve_partÚfloat_curve_parts          rM   Ú6test_confusion_matrix_at_thresholds_implicit_pos_labelrw  ¿  së   € ð
	ð ô 
�‰”z¨Ô	-ñ BÙ”2—8‘8˜S #˜J¨eÔ4°s¸C°jÔA÷Bô 
�‰”z¨Ô	-ñ CÙ”2—8‘8˜S #˜J¬fÔ5¸¸S°zÔB÷Cò
 #€FÙš<¨Ó0€IÙÒ1°6Ó:€KÜ,/°	¸;Ó,Gò EÑ(ˆÐ(Ü
�
‰
×"Ñ" >Ð3CÕDñE÷Bð Bú÷Cð Cús   ž#C"Á$'C.Ã"C+Ã.C7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 «       y # 1 sw Y   y xY w)Nó   aó   bz8Support for labels represented as bytes is not supportedr²   r¾   r^   )r    r£   r¤   Ú	TypeError)rk  rx  r   rC  s       rM   Ú<test_confusion_matrix_at_thresholds_implicit_bytes_pos_labelr}  Ø  sJ   € ô    t ¨kÓ:€FØ
D€CÜ	�‰”y¨Ô	,ñ 'Ù�6˜C ˜:Ô&÷'÷ 'ñ 'ús   ¬AÁA
c                 óš   — g d¢}g d¢}g d¢} | |||¬«      } | |d d |d d |d d ¬«      }t        ||«      D ]  \  }}t        ||«       Œ y )NrÙ   ©rÔ   rÏ   rÚ   rÛ   r�   )r0   r0   r0   r�   r   rÝ   rQ   )rq  r!   )rk  rL   rJ   rÞ   Úresult_1Úresult_2Úarr_1Úarr_2s           rM   Ú6test_confusion_matrix_at_thresholds_zero_sample_weightr„  æ  sf   € â€FÚ'€GÚ%€Má˜& '¸ÔG€HÙ˜&  "˜+ w¨s° |À=ÐQTÐRTÐCUÔV€Hä˜H hÓ/ò &‰ˆˆuÜ˜˜uÕ%ñ&rO   c                 ó”  — t        d¬«      \  }}}t        ||| «       t        |dd  |dd  | ¬«      \  }}}|d   dk(  sJ ‚|d   |dd  j                  «       k(  sJ ‚d|t	        j
                  |dk(  «      <   |j                  «       }t        ||| «       t        ||«       g d¢}g d	¢}	t        ||	| ¬«      \  }}}| r+t        |g d
¢«       t        |g d¢«       t        |g d¢«       n*t        |g d¢«       t        |g d¢«       t        |g d	¢«       |j                  |j                  k(  sJ ‚|j                  |j                  dz   k(  sJ ‚y )NTrŠ   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Ñ€FˆAˆwÜ  ¨°$Ô7ô % V¨A¨B Z°¸¸°ÐPTÔU�G€A€qˆ!ØˆQ‰4�3Š;Ðˆ;ØˆQ‰4�6˜!˜"�:—?‘?Ó$Ò$Ð$Ð$ð %'€FŒ2�8‰8�F˜a‘KÓ Ñ!Ø—+‘+“-€KÜ  ¨°$Ô7Ü�{ FÔ+â€FÚ!€NÜ$ V¨^ÈtÔT�G€A€qˆ!ÙÜ˜Ò6Ô7Ü˜Ò/Ô0Ü˜š9Õ%ä˜Ò;Ô<Ü˜Ò4Ô5Ü˜š<Ô(Ø�6‰6�Q—V‘VÒÐÐØ�6‰6�Q—V‘V˜a‘ZÒÐÑ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 ‚y )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Ñ€A€qˆ*Ü2°6¸7ÓCÐÜÐ2°E¸1Ô=ÜØÔ5°f¸gÓFôô Ü˜6 7Ó+Ð-AÈ1õð �6‰6�Q—V‘VÒÐÐØ�6‰6�Z—_‘_ qÑ(Ò(Ð(Ð(ä-Ø”—‘˜gÓ&¸$ôÑ€A€qˆ*ð �6‰6�Q—V‘VÒÐÐØ�6‰6�Z—_‘_ qÑ(Ò(Ð(Ñ(rO   c           	      óh  — t        j                  d¬«      5  ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |g d¢«       t	        |g d¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |g d	¢«       t	        |g d
¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |ddg«       t	        |ddg«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |g d¢«       t	        |g d¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        ||«      }t	        |ddg«       t	        |ddg«       t        |d«       ddg}ddg}t        j                  t        d¬«      5  t        ||| ¬«      \  }}}d d d «       t        j                  t        d¬«      5  t        ||«      }d d d «       t        |g d¢«       t        |g d¢«       t        |d«       ddg}ddg}t        ||| ¬«      \  }}}t        t        ||«      d«       t	        |g d¢«       t	        |g d¢«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        t        ||d¬«      d«       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        t        ||d¬«      d«       d d d «       t        j                  d¬«      5  t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  t        d¬«      5  t        t        ||d¬«      d«       d d d «       d d d «       y # 1 sw Y   �ŒÈxY w# 1 sw Y   �Œ¥xY w# 1 sw Y   �ŒÌxY w# 1 sw Y   �Œ�xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÙxY w# 1 sw Y   �Œ®xY w# 1 sw Y   �ŒgxY w# 1 sw Y   �Œ8xY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ”xY w# 1 sw Y   y xY w)NÚraise)r_  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
à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! !¢[Ô1Ü! !¢YÔ/Ü˜G SÔ)à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! !¢_Ô5Ü! !¢_Ô5ô 	˜G SÔ)à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! ! c¨1 XÔ.Ü! ! c¨1 XÔ.Ü˜G SÔ)à�Q�ˆØ�a�&ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! !¢[Ô1Ü! !¢YÔ/Ü˜G SÔ)à�Q�ˆØ˜�*ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜ)¨&°'Ó:ˆÜ! ! c¨1 XÔ.Ü! ! a¨ XÔ.Ü˜G SÔ)à�Q�ˆØ˜�,ˆÜ�\‰\œ+Ð-PÔQñ 	VÜ,¨V°WÐPTÔU‰GˆAˆq�!÷	Vä�\‰\œ+Ð-PÔQñ 	?Ü-¨f°gÓ>ˆG÷	?ä˜š9Ô%Ü˜š9Ô%Ü˜ Ô#à�Q�ˆØ˜�,ˆÜ(¨°ÈDÔQ‰ˆˆ1ˆaÜÔ3°F¸GÓDÀcÔJÜ! !¢_Ô5Ü! !¢]Ô3ô —‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔIÈ3ô÷	ô �\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔLÈcô÷	ô 	Ü# F¨G¸YÔGÈô	
ô 	Ô/°¸ÈÔQÐSVÔWä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔIÈ3ô÷	ô �\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔLÈcô÷	ô 	Ü# F¨G¸YÔGÈô	
ô 	Ô/°¸ÈÔQÐSVÔWä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜÜ# F¨G¸WÔEÀsô	
ô 	Ü# F¨G¸ZÔHÈ#ô	
ô 	Ü# F¨G¸YÔGÈô	
ô 	Ü# F¨G¸WÔEÀsô	
ô —‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔIÈ3ô÷	ô 	Ü# F¨G¸ZÔHÈ#ô	
ô �\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔKÈSô÷	ô �\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔIÈ3ô÷	ô
 —‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜÔ/°¸ÈÔQÐSVÔWÜÜ# F¨G¸ZÔHÈ#ô	
ô 	Ü# F¨G¸YÔGÈô	
ô 	Ô/°¸ÈÔQÐSVÔWä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜S #˜J¨¨c¨
Ð3Ó4ˆÜÜ# F¨G¸WÔEÀsô	
ô 	Ü# F¨G¸ZÔHÈ#ô	
ô 	Ü# F¨G¸YÔGÈô	
ô 	Ü# F¨G¸WÔEÀsô	
÷iV
ôp 
�‰˜Ô	"ñ ä—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜ—(‘(˜Q ˜F Q¨ FÐ+Ó,ˆÜ�\‰\œ+Ð-PÔQñ 	ÜÜ'¨°ÀÔLÈaô÷	÷	ð ÷S	Vñ 	Vú÷	?ñ 	?ú÷ 	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷4	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷sV
ñ V
ú÷x	ð 	ú÷	ð ús  —F*`Ç^Ç#`Ç7^'ÈC`Ë^4Ë*#`Ì_Ì&B	`Î/_Ï#`Ï+_ÐD`Ô#_(Ô<;`Õ7_5Ö#`Ö3`×D4`ÜA`(Ý0`Þ	`(Þ^$	Þ`Þ'^1	Þ,`Þ4^>	Þ9`ß_	ß`ß_	ß`ß_%	ß `ß(_2	ß-`ß5_?	ß:`à`	à`à`à`%	à!`(à(`1c                  óD  — g d¢} g d¢}t        | |d¬«      \  }}}t        |g d¢«       g d¢} g d¢}t        | |d¬«      \  }}}t        |g d¢«       g d	¢} g d
¢}t        | |d¬«      \  }}}t        |ddg«       g d¢} g d
¢}t        | |d¬«      \  }}}t        |g d
¢«       y)z9Check the behaviour of the `drop_intermediate` parameter.rÍ   rÎ   Tr‹   )r¾   rÑ   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�  Í  sÆ   € â€FÚ,€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �J¢Ô0ò 5€FÚO€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �JÒ >Ô?ò €FÚ"€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �J  c 
Ô+ò €FÚ"€GÜ$:Ø�¨4ô%Ñ!€Iˆv�zô �JÒ 4Õ5rO   c                  ó–   — t        j                  dt        ¬«      } d| d d d…<   t        j                  d«      }t	        | |«      dk(  sJ ‚y )Nr–   rN  r0   rç   r¿   )r5   r¬   r8   r«   r
   rT  s     rM   Ú&test_average_precision_constant_valuesrŸ  ï  sE   € ô
 �X‰X�c¤Ô%€FØ€F‰3ˆQˆ3�Kä�g‰g�c‹l€Gô # 6¨7Ó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 «       y # 1 sw Y   y xY w)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¤  ý  sd   € ä�X‰X�q˜!�fÓ€FÜ�X‰X�q˜!�fÓ€FÜ�i‰iÐUÓV€GÜ	�‰”z¨Ô	1ñ =Ü ¨¸!Õ<÷=÷ =ñ =ús   ÁA7Á7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 «       y # 1 sw Y   y xY w)
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‰X˜˜1�v  1˜v¨¨1 v°°1¨vÐ6Ó7€FÜ�X‰X˜˜S�z C¨ :°°S¨z¸CÀ¸:ÐFÓG€Fð	6ð ô 
�‰”z¨Ô	1ñ =Ü ¨¸!Õ<÷=÷ =ñ =ús   Á A8Á8Bc            	      ó   — t        j                  g d¢«      } t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      }d}t        j                  t        |¬«      5  t        | |d¬	«       d d d «       y # 1 sw Y   y xY w)
N©r   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ª    sq   € ä�X‰XÒ(Ó)€FÜ�h‰hâÚÚÚÚÚð	
ó	€Gð	6ð ô 
�‰”z¨Ô	1ñ >Ü ¨¸1Õ=÷>÷ >ñ >ús   ÁA4Á4A=c                  óö  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  d«      }t	        j
                  t        |¬«      5  t        | |«       ddd«       t	        j
                  t        |¬«      5  t        | |d¬«       ddd«       t	        j
                  t        |¬«      5  t        | |«       ddd«       y# 1 sw Y   ŒlxY w# 1 sw Y   ŒFxY w# 1 sw Y   yxY w)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   rC  s      rM   ÚDtest_multiclass_ranking_metrics_raise_for_incorrect_shape_of_y_scorer¬  (  s½   € ä�X‰XÒ(Ó)€FÜ�h‰hÒ5Ó6€Gä
�)‰)ÐMÓ
N€CÜ	�‰”z¨Ô	-ñ 1Ü ¨Ô0÷1ä	�‰”z¨Ô	-ñ :Ü�f˜g°5Õ9÷:ä	�‰”z¨Ô	-ñ .Ü˜V WÔ-÷.ð .÷	1ð 1ú÷:ð :ú÷.ð .ús$   ÁCÂC#ÃC/ÃC Ã#C,Ã/C8c                  ó\  — t        d¬«      \  } }}t        | |«      }t        | d|z  «      }t        | d|z  «      }t        | |dz
  «      }||k(  sJ ‚||k(  sJ ‚||k(  sJ ‚t        | |«      }t        | d|z  «      }t        | d|z  «      }	t        | |dz
  «      }
||k(  sJ ‚||	k(  sJ ‚||
k(  sJ ‚y )NTrŠ   r–   g�íµ ÷Æ°>rM  )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Ñ€FˆAˆwä˜F GÓ,€GÜ% f¨c°G©mÓ<ÐÜ'¨°°w±Ó?ÐÜ# F¨G°b©LÓ9€OØÐ'Ò'Ð'Ð'ØÐ)Ò)Ð)Ð)Ø�oÒ%Ð%Ð%ä$ V¨WÓ5€FÜ.¨v°s¸W±}ÓEÐÜ0°¸À¹ÓHÐÜ,¨V°W¸r±\ÓB€NØÐ%Ò%Ð%Ð%ØÐ'Ò'Ð'Ð'Ø�^Ò#Ð#Ñ#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                 óT   — t        | |«      \  }}}t        ||«       t        ||«       y ©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                 óX   — t        | ||¬«      \  }}}t        ||«       t        ||«       y )Nr‹   r¹  )rL   rJ   r»  r¼  rŒ   rw   r½  ry   s           rM   Ú test_det_curve_drop_intermediaterÀ  p  s-   € ô& ˜F GÐ?PÔQ�K€Cˆˆaä�C˜Ô&Ü�C˜Õ&rO   ©r¿   r�   r�   c                 óT   — t        | |«      \  }}}t        ||«       t        ||«       y r¸  r¹  rº  s          rM   Útest_det_curve_tie_handlingrÃ  ‰  s*   € ô ˜F GÓ,�K€Cˆˆaä�C˜Ô&Ü�C˜Õ&rO   c                  óT   — t        t        g d¢g d¢«      t        g d¢g d¢«      «       y )Nr¼   rä   rÍ   )r   r   r�   r�   r0   r0   )r!   r   © rO   rM   Útest_det_curve_sanity_checkrÆ  �  s    € äÜ’)š[Ó)ÜÒ$Ò&<Ó=õ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«       y )NrW  rè   rT  r0   r   )r   r5   r¶   r!   rÖ   )rJ   rw   r½  rm   s       rM   Útest_det_curve_constant_scoresrÈ  ¥  sT   € ä#Ú!¬2¯7©7°1°gÓ+>ôÑ€Cˆˆiô �C˜!˜Q˜Ô Ü�C˜!˜Q˜Ô Ü�I ¬¯©Ð0Õ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                 óZ   — t        | | ¬«      \  }}}t        |dg«       t        |dg«       y )NrT  r   r¹  )rL   rw   r½  ry   s       rM   Útest_det_curve_perfect_scoresrÊ  °  s.   € ô  6°6Ô:�K€Cˆˆaä�C˜!˜ÔÜ�C˜!˜ÕrO   zy_true, y_pred, err_msgrS  ©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 «       y # 1 sw Y   y xY w)Nr²   )r£   r¤   r¥   r   r¢  s      rM   Útest_det_curve_bad_inputrÐ  Á  s1   € ô  
�‰”z¨Ô	1ñ "Ü�&˜&Ô!÷"÷ "ñ "úó   œ2²;c                  óZ  — dgdz  dgdz  z   } t        j                  g d¢«      }d|z
  }t        | |d¬«      \  }}}t        | |d¬«      \  }}}|d   t        j                  d	«      k(  sJ ‚|d   t        j                  d
«      k(  sJ ‚t        ||d d d…   «       t        ||d d d…   «       y )NrÍ  r•   rÎ  ré   )
rÔ   rÛ   rÐ   rÏ   rÚ   rÛ   r�   rÐ   rÑ   r¨   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™HÒ%WÓXÐØÐ1Ñ1Ðä4=ØØØô5Ñ1€N�N Mô
 AJØØØôAÑ=ÐÐ*Ð,=ð ˜ÑœvŸ}™}¨SÓ1Ò1Ð1Ð1Ø˜QÑ¤6§=¡=°Ó#5Ò5Ð5Ð5ô �NÐ$6±t¸°tÑ$<Ô=Ü�NÐ$6±t¸°tÑ$<Õ=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«       y )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â  ï  sp  € ä™
 Q¨ F 8¨t°T¨l¨^Ó<¸aÔ@Ü™
 Q¨ F 8¨t°T¨l¨^Ó<¸eÔDÜ™
 Q¨ F 8¨t°T¨l¨^Ó<¸aÔ@ä™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜÙ’I�;Ò!2Ð 3Ó4Ð6Iôô Ù’I�;Ò!2Ð 3Ó4Ð6Iôô ™
¢I ;Ò1BÐ0CÓDÀeÔLÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜÙ’I�;Ò!2Ð 3Ó4Ð6Iôô ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀoÔVÜ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀaÔHä™
¢I ;Ò1BÐ0CÓDÀeÔLÜ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀoÔVÜ™
¢I ;Ò1BÐ0CÓDÀeÔLÜÙ’I�;Ò!2Ð 3Ó4Ð6Iôô ™
¢I ;Ò1BÐ0CÓDÀaÔHÜ™
¢I ;Ò1BÐ0CÓDÀaÔHô ™
 Q¨ F 8¨s°C¨j¨\Ó:¸CÔ@Ü™
 Q¨ F 8¨s°C¨j¨\Ó:¸CÔ@Ü™
 Q¨ F 8¨s°C¨j¨\Ó:¸AÔ>ä™
¢I ;Ò1AÐ0BÓCÀSÔIÜ™
¢I ;Ò1AÐ0BÓCÀSÔIÜ™
¢I ;Ò1AÐ0BÓCÀQÔGÜ™
¢I ;Ò1AÐ0BÓCÀUÔKÜÙ’I�;Ò!1Ð 2Ó3Ð5Hôô Ù’I�;Ò!1Ð 2Ó3Ð5Hôô ™
¢I ;Ò1AÐ0BÓCÀQÔGä™
¢I ;²Ð0AÓBÀEÔJä™
¢L >Ò4HÐ3IÓJÈEÕRrO   c           	      ó   — t        d«      }t        dd«      D ]‘  }|j                  d|f¬«      }t        j                  |«      }t        j
                  d|f«      } | ||«      dk(  sJ ‚ | ||«      dk(  sJ ‚t        j                  d|f«      } | ||«      dk(  sJ ‚ | ||«      dk(  rŒ‘J ‚ t         | dgdgdgdggdgdgdgdgg«      d«       y )Nr   r+   rÜ   r0   r—   r^   r�   )r)   r`   rd  r5   r‘  r¬   r«   r"   )rá  r/   Ún_labelsrJ   Úy_score_tiesrL   s         rM   Ú!check_zero_or_all_relevant_labelsræ  *  sú   € Ü% aÓ(€Lä˜!˜Q“Kò 7ˆØ×&Ñ&¨Q°¨MÐ&Ó:ˆÜ—}‘} WÓ-ˆô —‘˜1˜h˜-Ó(ˆÙ˜& 'Ó*¨cÒ1Ð1Ð1Ù˜& ,Ó/°3Ò6Ð6Ð6ô —‘˜!˜X˜Ó'ˆÙ˜& 'Ó*¨cÒ1Ð1Ð1Ù˜& ,Ó/°3Ó6Ð6Ð6ð7ô Ù�Q�C˜!˜˜q˜c A 3Ð'¨3¨%°#°¸¸À¸uÐ)EÓFÈõrO   c                 ó�  — t        j                  t        «      5   | g d¢g d¢«       d d d «       t        j                  t        «      5   | g d¢g d¢g d¢g d¢g«       d d d «       t        j                  t        «      5   | g d¢g d¢g d¢g d¢g«       d d d «       t        j                  t        «      5   | ddgddggddg«       d d d «       t        j                  t        «      5   | ddgddggddgg«       d d d «       t        j                  t        «      5   | ddgddggdgdgg«       d d d «       t        j                  t        «      5   | ddggddgddgg«       d d d «       t        j                  t        «      5   | dgdggddgddgg«       d d d «       t        j                  t        «      5   | ddgddggdgdgg«       d d d «       y # 1 sw Y   �Œ±xY w# 1 sw Y   �ŒˆxY w# 1 sw Y   �Œ_xY w# 1 sw Y   �Œ9xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒéxY w# 1 sw Y   ŒÁxY w# 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)	Nrü   )r¿   rÚ   rÏ   rð   )r¿   rÀ   r¾   )rÑ   rÚ   r¾   )rÕ   rÏ   r¾   r   r0   )r£   r¤   r¥   rà  s    rM   Úcheck_lrap_error_raisedrè  A  s  € ä	�‰”zÓ	"ñ 0Ù’9Ò.Ô/÷0ä	�‰”zÓ	"ñ UÙ’9Ò0²/Â?ÐSÔT÷Uä	�‰”zÓ	"ñ 
ÙÚÒ/²Â/ÐRô	
÷
ô 
�‰”zÓ	"ñ -Ù�Q˜�F˜Q ˜FÐ# a¨ VÔ,÷-ä	�‰”zÓ	"ñ /Ù�Q˜�F˜Q ˜FÐ# q¨! f XÔ.÷/ä	�‰”zÓ	"ñ 1Ù�Q˜�F˜Q ˜FÐ# q c¨A¨3 ZÔ0÷1ä	�‰”zÓ	"ñ /Ù�Q˜�F�8˜q !˜f q¨! fÐ-Ô.÷/ä	�‰”zÓ	"ñ 1Ù�Q�C˜!˜�:  A ¨¨A¨Ð/Ô0÷1ä	�‰”zÓ	"ñ 1Ù�Q˜�F˜Q ˜FÐ# q c¨A¨3 ZÔ0÷1ð 1÷)0ñ 0ú÷Uñ Uú÷
ñ 
ú÷-ñ -ú÷/ñ /ú÷1ð 1ú÷/ð /ú÷1ð 1ú÷1ð 1úsk   šGÁ	G$Á?G1Â5G>Ã(HÄHÅH$ÆH0Æ:H<ÇG!Ç$G.Ç1G;Ç>HÈHÈH!È$H-È0H9È<Ic           	      ó  — t        dd«      D ]v  }t        j                  d|f«      }t        d|«      D ]N  }t        ||z
  «      D ];  }t        j                  d|f«      }d|d|||z   …f<   t	         | ||«      ||z  «       Œ= ŒP Œx y )Nr+   rM  r0   r   )r`   r5   r«   r¬   r"   )rá  rä  rJ   Ú
n_relevantrX   rL   s         rM   Úcheck_lrap_only_tiesrë  [  s£   € ô ˜!˜R“Lò 	XˆÜ—'‘'˜1˜h˜-Ó(ˆô    8Ó,ò 	XˆJä˜X¨
Ñ2Ó3ò X�ÜŸ™ 1 h -Ó0�Ø45��q˜#  jÑ 0Ð0Ð0Ñ1Ü#¡J¨v°wÓ$?ÀÈhÑAVÕWñXñ	Xñ		XrO   c                 óè  ‡‡— t        dd«      D ]á  }|t        j                  |«      j                  d|f«      dz   z
  }t        j                  d|f«      }d|d<   d|d<   t         | ||«      d|z  dz   dz  «       t        d|«      D ]g  Št        |‰z
  «      D ]T  Št        j                  d|f«      }d|d‰‰‰z   …f<   t         | ||«      t        ˆˆfd„t        ‰«      D «       «      «       ŒV Œi Œã y )Nr+   rM  r0   )r   r   )r   rQ   r   c              3   ó@   •K  — | ]  }|d z   ‰|z   d z   ‰z  z  –— Œ y­w)r0   NrÅ  )Ú.0rŒ  rê  rX   s     €€rM   ú	<genexpr>z>check_lrap_without_tie_and_increasing_score.<locals>.<genexpr>~  s/   øè ø€ ò àð ˜Q™ C¨!¡G¨a¡K°:Ñ#=Õ>ñùs   ƒ)r`   r5   r6   rS   r¬   r"   rT   )rá  rä  rJ   rL   rê  rX   s       @@rM   Ú+check_lrap_without_tie_and_increasing_scorerð  j  s  ù€ ô ˜!˜R“Lò ˆØœbŸi™i¨Ó1×9Ñ9¸1¸h¸-ÓHÈ1ÑLÑMˆô —‘˜1˜h˜-Ó(ˆØˆˆt‰Øˆˆu‰Ü™J v¨wÓ7¸!¸h¹,ÈÑ:JÈaÑ9OÔPô    8Ó,ò 	ˆJä˜X¨
Ñ2Ó3ò 	�ÜŸ™ 1 h -Ó0�Ø45��q˜#  jÑ 0Ð0Ð0Ñ1Ü#Ù˜v wÓ/Üô ä!& zÓ!2ôó õñ	ñ	ñrO   c                 ó”  ‡‡— t        | |«       t        | «      } t        |«      }| j                  \  }}t        j                  |f«      }t        |«      D ]â  }t        j                  ||   d¬«      \  }}|j                  }||z
  Št        j                  ‰|dz   ¬«      j                  «       }	|	‰   Š| |   j                  «       d   }
|
j                  dk(  s|
j                  |k(  rd||<   Œ˜d||<   |
D ]*  Št        ˆˆfd„|
D «       «      }||xx   |‰‰   z  z  cc<   Œ, ||xx   |
j                  z  cc<   Œä |j                  «       S )z8Simple implementation of label ranking average precisionT)Úreturn_inverser0   )Ú	minlengthr   r¾   c              3   ó4   •K  — | ]  }‰|   ‰‰   k  –— Œ y ­wr¸  rÅ  )rî  rŒ  ÚlabelÚranks     €€rM   rï  z_my_lrap.<locals>.<genexpr>¡  s   øè ø€ Ò J¸A  a¡¨D°©KÕ!7Ñ Jùs   ƒ)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  …  sJ  ù€ ä˜F GÔ,Ü˜Ó €FÜ˜'Ó"€GØ Ÿ,™,Ñ€IˆxÜ�H‰H�i�\Ó"€EÜ�9Óò "ˆô !#§	¡	¨'°!©*ÀTÔ JÑˆ�XØ×"Ñ"ˆØ˜Ñ!ˆô —K‘K °¸!±Ô<×CÑCÓEˆ	Ø˜‰ˆà˜!‘9×$Ñ$Ó& qÑ)ˆØ�=‰=˜AÒ §¡°(Ò!:ØˆE�!‰HØàˆˆa‰Øò 	5ˆEô !Ô JÀÔ JÓJˆNð �!‹H˜¨¨e©Ñ4Ñ4ŒHð	5ð 	ˆa‹�H—M‘MÑ!Œð5"ð8 �:‰:‹<ÐrO   rÜ   c                 ó€  — t        dd|||¬«      \  }}t        |j                  d   |j                  d   |¬«      }t        |d«      r|j	                  «       }t        ||«      }t        ||«      }t        ||«       t        |«      }|j                  ||f¬«      }t        ||«      }t        ||«      }t        ||«       y )Nr0   F)rE   Úallow_unlabeledr/   Ú	n_classesrD   r   )Ún_componentsrE   r/   Útoarrayr—   )
r   r   r4   Úhasattrr  r   r  r"   r)   rd  )	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€JÜ˜V WÓ-€MÜ˜
 MÔ2ô & lÓ3€LØ×"Ñ"¨°IÐ(>Ð"Ó?€GÜ6°v¸wÓG€JÜ˜V WÓ-€MÜ˜
 MÕ2rO   ÚcheckÚfuncc                 ó   —  | |«       y r¸  rÅ  )r  r  s     rM   Útest_label_ranking_avpr  Ë  s   € ñ 
ˆ$…KrO   c                  ó"   — t        t        «       y r¸  )rè  r   rÅ  rO   rM   Útest_lrap_error_raisedr  Ù  s   € ÜÔAÕBrO   rD   )r0   r+   rê   rG  r  )r+   rÜ   rM  r/   c                 ó(   — t        t        || |«       y r¸  )r
  r   )rD   r  r/   s      rM   Ú$test_alternative_lrap_implementationr  Ý  s   € ô *Ü-¨y¸)À\õrO   c                  ól  — t        j                  g d¢g d¢g d¢gt        ¬«      } t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢«      }t        j                  g d	¢«      }t        t	        | ||¬
«      t        j
                  ||z  «      t        j
                  |«      z  «       y )Nr  r†  r›  rN  )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‰X’|¢\²<Ð@ÌÔM€FÜ�h‰hÚ	Ò3Ò5IÐJó€Gô —x‘xÒ 0Ó1ÐÜ—H‘Hš_Ó-€MäÜ-Ø�G¨=ô	
ô 	�‰ˆ}Ð/Ñ/Ó0´2·6±6¸-Ó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«       y )Nr   r0   r¿   rÀ   r+   rË  r¶  r¼   rü   r½   rã   r•   rû   rý   rÌ  rÝ  rÞ  ©rÔ   g      $@éýÿÿÿ©r   r0   r•   r0  ©rÔ   rM  r  r@  g«ªªªªª@©r•   r0   r•   ©r"   r   rÅ  rO   rM   Útest_coverage_errorr  û  s  € äœ¨¨A¨ x°4¸°,°Ó@À!ÔDÜœ¨¨A¨ x°4¸°,°Ó@À!ÔDÜœ¨¨A¨ x°4¸°,°Ó@À!ÔDÜœ¨¨A¨ x°4¸°,°Ó@À!ÔDäœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLäœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLäœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLÜœª	 {Ò5FÐ4GÓHÈ!ÔLô Üš	¢9Ð-²ÂÐ/KÓLØôô
 ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	ô	ô ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	õ	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«       y )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Üœ¨¨A¨ x°3¸°*°Ó>ÀÔBÜœ¨¨A¨ x°3¸°*°Ó>ÀÔBÜœ¨¨A¨ x°3¸°*°Ó>ÀÔBäœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÔKÜœª	 {Ò5EÐ4FÓGÈÕKrO   zy_true, y_scorec                 ó|   — t        j                  t        d¬«      5  t        | |«       d d d «       y # 1 sw Y   y xY w)Nz'Expected 2D array, got 1D array insteadr²   )r£   r¤   r¥   r   rT  s     rM   Útest_coverage_1d_error_messager#  B  s2   € ô 
�‰”zÐ)SÔ	Tñ (Ü�v˜wÔ'÷(÷ (ñ (úrÑ  c            	      óh  — t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢g d¢gg d¢g d¢g«      d«       t        t        g d¢g d¢g d	¢gg d¢g d¢g d¢g«      d«       t        t        g d¢g d¢g d	¢gg d¢g d¢g d¢g«      d«       y )Nr   r0   r¿   rÀ   r¼   r¶  rü   r�   r½   rã   r^   rû   rý   rË  rÞ  rÌ  rÁ  r  r  r  r@  r  ©r"   r   rÅ  rO   rM   Útest_label_ranking_lossr&  Q  s  € ÜÔ*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHÜÔ*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHäÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTÜÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTÜÔ*ªI¨;Ò9JÐ8KÓLÈeÔTô Ô*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHÜÔ*¨Q°¨F¨8°t¸T°l°^ÓDÀaÔHÜÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFÜÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFäÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9JÐ8KÓLÈaÔPÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOô ÜšI¢yÐ1²OÂYÐ3OÓPØôô
 ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	"ô	ô ÜÚš	¢9Ð-²ºyÊ)Ð/Tó	
ð 	"õ	rO   Úcsr_containerc                 óz   — t        t         | t        j                  g d¢g d¢g«      «      g d¢g d¢g«      d«       y )Nrü   rý   r  r  r�   )r"   r   r5   r™   )r'  s    rM   Útest_label_ranking_loss_sparser)  |  s4   € äÜÙœ"Ÿ(™(¢IªyÐ#9Ó:Ó;ºmÊYÐ=Wó	
ð 	õ	rO   c                  ó.  — t        j                  t        «      5  t        ddgddggddg«       d d d «       t        j                  t        «      5  t        ddgddggddgg«       d d d «       t        j                  t        «      5  t        ddgddggdgdgg«       d d d «       t        j                  t        «      5  t        ddggddgddgg«       d d d «       t        j                  t        «      5  t        dgdggddgddgg«       d d d «       t        j                  t        «      5  t        ddgddggdgdgg«       d d d «       y # 1 sw Y   �Œ!xY w# 1 sw Y   ŒöxY w# 1 sw Y   ŒÊxY w# 1 sw Y   ŒŸxY w# 1 sw Y   ŒsxY w# 1 sw Y   y xY w)Nr   r0   )r£   r¤   r¥   r   rÅ  rO   rM   Ú$test_ranking_appropriate_input_shaper+  †  s  € ä	�‰”zÓ	"ñ 5Ü˜Q ˜F Q¨ FÐ+¨a°¨VÔ4÷5ä	�‰”zÓ	"ñ 7Ü˜Q ˜F Q¨ FÐ+¨q°!¨f¨XÔ6÷7ä	�‰”zÓ	"ñ 9Ü˜Q ˜F Q¨ FÐ+¨q¨c°A°3¨ZÔ8÷9ä	�‰”zÓ	"ñ 7Ü˜Q ˜F˜8 q¨! f¨q°!¨fÐ%5Ô6÷7ä	�‰”zÓ	"ñ 9Ü˜Q˜C ! ˜:¨¨A¨°°A°Ð'7Ô8÷9ä	�‰”zÓ	"ñ 9Ü˜Q ˜F Q¨ FÐ+¨q¨c°A°3¨ZÔ8÷9ð 9÷5ñ 5ú÷7ð 7ú÷9ð 9ú÷7ð 7ú÷9ð 9ú÷9ð 9úsG   šEÁEÂE'Â?E3Ã6E?Ä.FÅEÅE$Å'E0Å3E<Å?FÆFc                  óÄ  — t        t        ddggddgg«      d«       t        t        ddggddgg«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d¢gg d¢g«      d«       t        t        g d	¢gg d¢g«      d«       t        t        g d
¢gg d¢g«      d«       y )Nr0   r   r�   r¼   rÁ  rü   r½   rã   rû   rý   r%  rÅ  rO   rM   Útest_ranking_loss_ties_handlingr-  –  sÎ   € äÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFÜÔ*¨Q°¨F¨8°s¸C°j°\ÓBÀAÔFÜÔ*ªI¨;Ò9IÐ8JÓKÈUÔSÜÔ*ªI¨;Ò9IÐ8JÓKÈUÔSÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÔOÜÔ*ªI¨;Ò9IÐ8JÓKÈQÕOrO   c                  óÂ   — t        dd¬«      \  } }| dz   }t        ||«       t        j                  j	                  d«      j                  d«      \  }}t        ||«       y ©Nr   rM  )r/   r  r0   )r+   r–   rM  )r   Ú_test_dcg_score_forr5   r9   r:   Úrandom_sample©ry   rL   rJ   s      rM   Útest_dcg_scorer3  ¢  sT   € Ü.¸AÈÔL�I€A€vØˆg˜‰k€GÜ˜ Ô(Ü—i‘i×+Ñ+¨AÓ.×<Ñ<¸\ÓJ�O€FˆGÜ˜ Õ(rO   c                 ó   — t        j                  t        j                  | j                  d   «      dz   «      }t	        | | «      }t	        | |«      }||k  j                  «       sJ ‚t	        | | d¬«      |k  j                  «       sJ ‚|j                  | j                  d   fk(  sJ ‚|j                  | j                  d   fk(  sJ ‚|t        j                  t        j                  | «      d d …d d d…f   |z  j                  d¬«      «      k(  sJ ‚y )Nr0   r+   rÜ   ©Úkr   rQ   ©Úaxis)
r5   Úlog2r6   r4   r   r_  r£   r*  ÚsortrT   )rL   rJ   ÚdiscountÚidealrc   s        rM   r0  r0  ª  sî   € Ü�w‰w”r—y‘y §¡¨a¡Ó1°AÑ5Ó6€HÜ˜v vÓ.€EÜ˜v wÓ/€EØ�U‰N×ÑÔ!Ð!Ð!Ü˜v v°Ô3°uÑ<×AÑAÔCÐCÐCØ�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ð,Ø�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ð,Ø”F—M‘M¤2§7¡7¨6£?²1±d¸°d°7Ñ#;¸hÑ#F×"KÑ"KÐQRÐ"KÓ"SÓTÒTÐTÑTrO   c            	      ó’  — t        j                  t        j                  d«      g«      } t        j                  | j                  «      }t        | |«      }t        | |d¬«      }dt        j                  t        j                  dd«      «      z  }|t        j                  |j                  «       | j                  «       z  g«      k(  sJ ‚|t        j                  || d d …d d d…f   z  j                  «       g«      k(  sJ ‚d|dd	d …f<   t        | |«      }t        | |d¬«      }|t        j                  || d d …d d d…f   z  j                  «       g«      k(  sJ ‚|t        j                  |d d j                  «       | dd	d …f   j                  «       z  |dd  j                  «       | dd d	…f   j                  «       z  z   g«      k(  sJ ‚y )
NrÜ   T©Úignore_tiesr0   r+   ré   rQ   r   r•   )r5   r6  r6   r¬   r4   r   r9  r£   r*  rT   r‰  )rL   rJ   ÚdcgÚdcg_ignore_tiesÚ	discountss        rM   Útest_dcg_tiesrC  µ  sœ  € Ü�Z‰ZœŸ™ 1›˜Ó'€FÜ�h‰h�v—|‘|Ó$€GÜ
˜V WÓ
-€CÜ(¨°ÀdÔK€OØ”B—G‘GœBŸI™I a¨›OÓ,Ñ,€IØ”&—-‘- §¡£°6·;±;³=Ñ!@Ð AÓBÒBÐBÐBØœfŸm™m¨i¸&ÂÁDÀbÀDÀ¹/Ñ.I×-NÑ-NÓ-PÐ,QÓRÒRÐRÐRØ€GˆAˆq‰rˆE�NÜ
˜V WÓ
-€CÜ(¨°ÀdÔK€OØœfŸm™m¨i¸&ÂÁDÀbÀDÀ¹/Ñ.I×-NÑ-NÓ-PÐ,QÓRÒRÐRÐRØ”&—-‘-à�b�qˆM×ÑÓ &¨¨A©B¨¡-×"4Ñ"4Ó"6Ñ6Ø˜˜ˆm×ÑÓ! F¨1¨b¨q¨b¨5¡M×$6Ñ$6Ó$8Ñ8ñ9ð	
óò ð ñ rO   c            	      ó´   — t        j                  d«      j                  d«      } t        | | dd¬«      t	        j
                  t        | | dd¬«      «      k(  sJ ‚y )Né   )r+   rè   r•   T)r6  r?  )r5   r6   rS   r   r£   r*  )rñ   s    rM   Útest_ndcg_ignore_ties_with_krF  É  sP   € Ü
�	‰	�"‹×Ñ˜fÓ%€AÜ�a˜˜a¨TÔ2´f·m±mÜ�1�a˜1¨$Ô/ó7ò ð ñ rO   c                  óà   — t        j                  g d¢g«      } t        j                  g d¢g«      }d}t        j                  t        |¬«      5  t        | |«       ddd«       y# 1 sw Y   yxY w)zDCheck `ndcg_score` exception when `y_true` contains negative values.)g{®Gázì¿gö(\�Âõà¿g®GázÞ¿gö(\�ÂõØ?gìQ¸…ëá?)gìQ¸…ë±?g×£p=
×Ó?rÀ   g…ëQ¸Õ?gHáz®GÑ?z7ndcg_score should not be used on negative y_true valuesr²   N)r5   r™   r£   r¤   r¥   r   )rL   rJ   r¸   s      rM   Ú test_ndcg_negative_ndarray_errorrH  Ð  sZ   € ä�X‰XÒ8Ð9Ó:€FÜ�h‰hÒ6Ð7Ó8€GØPÐÜ	�‰”zÐ)9Ô	:ñ $Ü�6˜7Ô#÷$÷ $ñ $ús   ÁA$Á$A-c                  ó¸  — t        j                  d«      j                  dd«      } | t         j                  j	                  d«      j                  dd| j                  ¬«      z   }t        | |«      }t        | |d¬	«      }|t        j                  |«      k(  sJ ‚|t        j                  d
«      k(  sJ ‚|dz  }t        | |«      t        j                  d
«      k(  sJ ‚y )NéF   ré   rM  r   çš™™™™™É¿rÏ   r—   Tr>  r^   r1  )
r5   r6   rS   r9   r:   rd  r4   r   r£   r*  )rL   rJ   ÚndcgÚndcg_no_tiess       rM   Útest_ndcg_invariantrN  Ù  sº   € Ü�Y‰Y�r‹]×"Ñ" 1 bÓ)€FØ”r—y‘y×,Ñ,¨QÓ/×7Ñ7¸¸cÈÏÉÐ7ÓUÑU€GÜ�f˜gÓ&€DÜ˜f g¸4Ô@€LØ”6—=‘= Ó.Ò.Ð.Ð.Ø”6—=‘= Ó%Ò%Ð%Ð%Øˆt�O€GÜ�f˜gÓ&¬&¯-©-¸Ó*<Ò<Ð<Ñ<rO   r?  c           
      ó,  — dt        j                  d«      d d z  }t        j                  t        j                  ddd«      d«      }|t         j                  j                  d«      j                  dd	|j                  ¬
«      z   }t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||d| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  «      k(  sJ ‚t        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  j                  «       «      k(  sJ ‚t!        ||| ¬«      t        j                  dt        j                  t        j                  dd«      «      z  j                  «       «      k(  sJ ‚dt        j"                  d«      z  }dt        j                  t        j                  dd«      «      z  j%                  «       }t        ||| ¬«      t        j                  |t        j"                  d«      z  «      k(  sJ ‚t        ||| ¬«      t        j                  t        j"                  d«      «      k(  sJ ‚t!        ||| ¬«      t        j                  |«      k(  sJ ‚t        ||| ¬«      t        j                  d«      k(  sJ ‚y )Nr•   ré   rÜ   rè   rQ   )rÜ   r0   r   rK  rÏ   r—   r>  r+   r0   rM  )Úlog_baser?  )rÜ   ré   é	   r^   )r5   ÚeyeÚtiler6   r9   r:   rd  r4   r   r£   r*  r9  r   Úlog10r   r‰  r   r«   rT   )r?  rL   rJ   Úy_score_noisyÚexpected_dcg_scores        rM   Útest_ndcg_toy_examplesrW  ä  s  € à”—‘˜“˜2˜A�Ñ€FÜ�g‰g”b—i‘i  2 rÓ*¨FÓ3€GØœbŸi™i×3Ñ3°AÓ6×>Ñ>Øˆc˜Ÿ™ð ?ó ñ €Mô Ø� [ôä	�‰�qœ2Ÿ7™7¤2§9¡9¨Q°£?Ó3Ñ3Ó	4ò5ð 5ð 5ô Ø�¨;ôä	�‰�qœ2Ÿ7™7¤2§9¡9¨Q°£?Ó3Ñ3Ó	4ò5ð 5ð 5ô Ø� [ôä	�‰�qœ2Ÿ7™7¤2§9¡9¨Q°£?Ó3Ñ3Ó	4ò5ð 5ð 5ô Ø� "°+ôä	�‰�qœ2Ÿ8™8¤B§I¡I¨a°£OÓ4Ñ4Ó	5ò6ð 6ð 6ô �f˜g°;Ô?Ä6Ç=Á=Ø	
ŒR�W‰W”R—Y‘Y˜q !“_Ó%Ñ	%×+Ñ+Ó-óDò ð ð ô �V˜W°+Ô>Ä&Ç-Á-Ø	
ŒR�W‰W”R—Y‘Y˜q !“_Ó%Ñ	%×+Ñ+Ó-óCò ð ð ð ”—‘˜“Ñ €FØœbŸg™g¤b§i¡i°°1£oÓ6Ñ6×;Ñ;Ó=ÐÜØ� [ôä	�‰Ð)¬B¯G©G°A«JÑ6Ó	7ò8ð 8ð 8ô Ø� [ôä	�‰”r—w‘w˜q“zÓ	"ò#ð #ð #ô �V˜W°+Ô>Ä&Ç-Á-ØóCò ð ð ô �f˜g°;Ô?Ä6Ç=Á=ÐQTÓCUÒUÐUÑUrO   c                  óˆ   — d} t        j                  t        | ¬«      5  t        dggdgg«       ddd«       y# 1 sw Y   yxY w)zhCheck that we raise an informative error message when trying to
    compute NDCG with a single document.zTComputing NDCG is only meaningful when there is more than 1 document. Got 1 instead.r²   r0   N)r£   r¤   r¥   r   )r£  s    rM   Útest_ndcg_error_single_documentrY    sC   € ð	ð ô 
�‰”z¨Ô	1ñ !Ü�Q�C�5˜A˜3˜%Ô ÷!÷ !ñ !ús	   ž8¸Ac                  óÂ   — t        dd¬«      \  } }| dz   }t        ||«       t        j                  j	                  d«      j                  d«      \  }}t        ||«       y r/  )r   Ú_test_ndcg_score_forr5   r9   r:   r1  r2  s      rM   Útest_ndcg_scorer\    sT   € Ü.¸AÈÔL�I€A€vØˆg˜‰k€GÜ˜ Ô)Ü—i‘i×+Ñ+¨AÓ.×<Ñ<¸\ÓJ�O€FˆGÜ˜ Õ)rO   c                 óö  — t        | | «      }t        | |«      }||k  j                  «       sJ ‚| dk(  j                  d¬«      }||    t        j                  t	        j
                  | j                  «       «      «      k(  sJ ‚||   t        j                  t	        j                  |j                  «       «      «      k(  sJ ‚||    t        j                  t        | |«      |    t        | | «      |    z  «      k(  sJ ‚||   t        j                  t	        j                  |j                  «       «      «      k(  sJ ‚|j                  | j                  d   fk(  sJ ‚|j                  | j                  d   fk(  sJ ‚y )Nr   r0   r7  )
r   r_  r£   r*  r5   r«   rT   r¬   r   r4   )rL   rJ   r<  rc   Úall_zeros        rM   r[  r[    sR  € Ü ¨Ó/€EÜ ¨Ó0€EØ�U‰N×ÑÔ!Ð!Ð!Ø˜!‘× Ñ  aÐ Ó(€HØ�(�ÑœvŸ}™}¬R¯W©W°x°i·_±_Ó5FÓ-GÓHÒHÐHÐHØ�‰?œfŸm™m¬B¯H©H°X·\±\³^Ó,DÓEÒEÐEÐEØ�(�ÑœvŸ}™}Ü˜6 7Ó+¨X¨IÑ6Ü
˜V VÓ
,¨h¨YÑ
7ñ	8ó ò ð ð ð �‰?œfŸm™m¬B¯H©H°X·\±\³^Ó,DÓEÒEÐEÐEØ�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ð,Ø�;‰;˜6Ÿ<™<¨™?Ð,Ò,Ð,Ñ,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 «       t        j                  t
        «      5  t        | | d¬«      sJ ‚	 d d d «       t        j                  t
        «      5  t        | | d¬«      sJ ‚	 d d d «       t        j                  g d¢«      }t        | |d¬«      }t        | |«      }||k(  sJ ‚t        | |d	¬«      d
k(  sJ ‚t        d¬«      \  } }}t        j                  ddd«      D ]%  }t        t        | ||¬«      t        | ||«      «       Œ' y # 1 sw Y   �ŒxY w# 1 sw Y   ŒäxY w# 1 sw Y   Œ½xY w)Nr  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_scorerc  .  sw  € ä�X‰X’lÓ#€FÜ˜ °Ô3°qÒ8Ð8Ð8Ü˜ °Ô7¸1Ò<Ð<Ð<Ü	�‰”zÓ	"ñ ;Ü˜V V°TÕ:Ð:Ñ:÷;ä	�‰”zÓ	"ñ :Ü˜V V°SÕ9Ð9Ñ9÷:ä	�‰”zÓ	"ñ 8Ü˜V V°QÕ7Ð7Ñ7÷8ô �x‰xÒ+Ó,€HÜ,¨V°XÀqÔIÐÜ)¨&°(Ó;ÐØ#Ð'<Ò<Ð<Ð<Ü˜ °3Ô7¸3Ò>Ð>Ð>ä'¨tÔ4Ñ€FˆF�AÜ—;‘;˜t Q¨Ó*ò 
ˆÜÜ˜& &°'Ô:Ü" 6¨6°7Ó;õ	
ñ
÷;ñ ;ú÷:ð :ú÷8ð 8ús$   ÁE2Â
E?Â=FÅ2E<Å?FÆFzy_true, k, true_scorer¿   r+   r•   rÀ   c                 ó–   — t        j                  g d¢g d¢g d¢g d¢g«      }t        | ||¬«      }|t        j                  |«      k(  sJ ‚y )Nr  ©rÔ   rÚ   rÛ   rÏ   ©rÛ   rÔ   rÏ   rÚ   ©rÚ   rÏ   rÛ   rÔ   r5  ©r5   r™   r   r£   r*  )rL   r6  Ú
true_scorerJ   rc   s        rM   Útest_top_k_accuracy_scorerj  H  sJ   € ô �h‰hâ Ú Ú Ú ð		
ó€Gô ! ¨°AÔ6€EØ”F—M‘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                 ó,  — g d¢}| j                  «       dk\  r| j                  «       dk  rdnd}|dk(  r"| |kD  j                  t        j                  «      n|}t        || |¬«      }t        ||«      }||cxk(  rt        j                  |«      k(  sJ ‚ J ‚y )Nr  r   r0   r�   r5  )	ÚminÚmaxÚastyper5   Úint64r   r   r£   r*  )rJ   r6  ri  rL   rm   rK   rc   Ú	score_accs           rM   Ú test_top_k_accuracy_score_binaryrq  ]  s‡   € ò €Fà—{‘{“}¨Ò)¨g¯k©k«m¸qÒ.@‘Àa€IØ78¸A²vˆg˜	Ñ!×)Ñ)¬"¯(©(Ô3À6€Fä  ¨°AÔ6€EÜ˜v vÓ.€Ià�IÔ:¤§¡¨zÓ!:Ò:Ð:Ñ:Ð:Ñ:rO   zy_true, true_score, labels)r   r0   r0   r+   rœ  )rñ   rA  rA  rñ   )rñ   rò   r  rA  Úlabels_as_ndarrayc                 óÆ   — |rt        j                  |«      }t        j                  g d¢g d¢g d¢g d¢g«      }t        | |d|¬«      }|t	        j
                  |«      k(  sJ ‚y)z,Test when labels and y_score are multiclass.r  re  rf  rg  r+   ©r6  r   N)r5   r6  r™   r   r£   r*  )rL   ri  r   rr  rJ   rc   s         rM   Ú0test_top_k_accuracy_score_multiclass_with_labelsru  t  s]   € ñ Ü—‘˜FÓ#ˆÜ�h‰hâ Ú Ú Ú ð		
ó€Gô ! ¨°A¸fÔE€EØ”F—M‘M *Ó-Ò-Ð-Ñ-rO   c            
      óš  — t        j                  dddd¬«      \  } }t        | |d¬«      \  }}}}t        d¬«      }|j	                  ||«       t        ||f||f«      D ]f  \  } }t        dd«      D �cg c]  }t        ||j                  | «      |¬«      ‘Œ! }}t        j                  t        j                  |«      dkD  «      rŒfJ ‚ y c c}w )NrM  r1  r   )r  rD   Ún_informativer/   r.   r+   r5  )r   Úmake_classificationr   r   r=   rq  r`   r   r>   r5   r_  rà   )	rB   rC   ÚX_trainÚX_testÚy_trainÚy_testrI   r6  Úscoress	            rM   Ú$test_top_k_accuracy_score_increasingr~  ‘  sÐ   € ä×'Ñ'Ø °BÀQô�D€A€qô (8¸¸1È1Ô'MÑ$€GˆV�W˜fä
¨!Ô
,€CØ‡G�GˆG�WÔä�W˜fÐ%¨°Ð'8Ó9ò +‰ˆˆ1äHMÈaÐQSËö
ØCDÔ   C×$5Ñ$5°aÓ$8¸AÖ>ð
ˆð 
ô �v‰v”b—g‘g˜f“o¨Ñ)Õ*Ð*Ð*ñ+ùò
s   Á2$Cc                 ó’   — t        j                  g d¢g d¢g d¢g d¢g«      }t        | ||¬«      t        j                  |«      k(  sJ ‚y )N)rÜ   rÜ   ré   r   )r0   rÜ   rÜ   rÜ   )r   r   r•   r•   rœ  r5  rh  )rL   r6  ri  rJ   s       rM   Útest_top_k_accuracy_score_tiesr€  ¤  sE   € ô �h‰hâÚÚÚð		
ó€Gô   ¨°1Ô5¼¿¹ÀzÓ9RÒ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 «       dk(  sJ ‚y # 1 sw Y   ŒxY w)	Nr  )rÔ   rÛ   rÚ   rÏ   )rÏ   rÔ   rÛ   rÚ   )rÚ   rÏ   rÔ   rÛ   zu'k' \(\d+\) greater than or equal to 'n_classes' \(\d+\) will result in a perfect score and is therefore meaningless.r²   r5  r0   )r5   r™   r£   rµ   r   r   )rL   r6  rJ   r¸   rc   s        rM   Ú!test_top_k_accuracy_score_warningr‚  ¹  sn   € ô �h‰hâ Ú Ú Ú ð		
ó€Gð	6ð ô 
�‰Ô,Ð4DÔ	Eñ ;Ü$ V¨W¸Ô:ˆ÷;à�AŠ:Ð‰:÷;ð ;ús   ¿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 «       y # 1 sw Y   y xY w)Nr²   r+   rt  )r£   r¤   r¥   r   )rL   rJ   r   rC  s       rM   Útest_top_k_accuracy_score_errorr„  Ò  s:   € ôf 
�‰”z¨Ô	-ñ BÜ˜V W°¸&ÕA÷B÷ Bñ Bús   œ5µ>c                 ó¢   —  | g d¢g d¢g«      }t        j                  g d¢g d¢g«      }t        ||«      }|t        j                  d«      k(  sJ ‚y )Nrã   r¼   )r�   r¨   rÐ   rß  )r5   r™   r   r£   r*  )r'  rL   rJ   Úresults       rM   ÚOtest_label_ranking_avg_precision_score_should_allow_csr_matrix_for_y_true_inputr‡  )	  sI   € ñ šI¢yÐ1Ó2€FÜ�h‰hšªÐ3Ó4€GÜ2°6¸7ÓC€FØ”V—]‘] 5Ó)Ò)Ð)Ñ)rO   Úmetricr3  ))FT)r   r0   )r¾   r^   )ÚzeroÚonec                 óê  — t         j                  j                  d«      }d|d   }}|j                  ||d¬«      }|j	                  |«      } | |||¬«      }t        |t        «      rt        j                  |«      rJ ‚y|\  }}	}
t        j                  |«      j                  «       rJ ‚t        j                  |	«      j                  «       rJ ‚t        j                  |
«      j                  «       rJ ‚y)zÀCheck that the metric works with different types of `pos_label`.

    We can expect `pos_label` to be a bool, an integer, a float, a string.
    No error should be raised for those types.
    é*   rM  rQ   T)r˜   Úreplacer¡  N)	r5   r9   r:   ÚchoicerH  Ú
isinstancerU   rÊ   Úany)rˆ  r3  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Ù�F˜G¨yÔ9€FÜ�&œ%Ô Ü—8‘8˜FÔ#Ð#Ð#Ð#à)/Ñ&ˆ�(˜JÜ—8‘8˜HÓ%×)Ñ)Ô+Ð+Ð+Ü—8‘8˜HÓ%×)Ñ)Ô+Ð+Ð+Ü—8‘8˜JÓ'×+Ñ+Ô-Ð-Ð-Ð-rO   c                 óà   — t         j                  j                  | «      }|j                  ddd¬«      }|j	                  d«      }t        ||«      \  }}}t        j                  |d   «      sJ ‚y)z¶Check that thresholds do not exceed 1.0 when `y_score` is a probability
    estimate.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26193
    r   r+   rM  r—   N)r5   r9   r:   rš   rH  r   Úisinf)r9  rG   rL   rJ   ry   r�   s         rM   Ú)test_roc_curve_with_probability_estimatesr—  O	  sc   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ�[‰[˜˜A Bˆ[Ó'€FØ�h‰h�r‹l€GÜ  ¨Ó1Ñ€A€qˆ*Ü�8‰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œ  ]	  sG   € àÐÜŸ™ VÓ,ˆÜ—‘˜ Ñ.Ó/€JÜ—‘˜ Ñ.Ó/€JØ˜
Ð#Ð#rO   Úmetric_funcrÞ   ©r0   r+   r0   r   r+   c           
      ó�  — t        j                  g d¢«      }t        j                  g d¢«      }t        ||| |¬«      \  }}g }|D ]4  }||k\  j                  t        «      }|j                   | |||¬«      «       Œ6 t        |«      t        |«      k(  sJ ‚t        j                  t        j                  |«      dk  «      sJ ‚|�?t        |t        j                  t        j                  ||dk7     «      «      ddd…   «       n8t        |t        j                  t        j                  |«      «      ddd…   «       t        ||«       y)z,Test `metric_at_thresholds` outputs correct.rÙ   ©rÔ   rÐ   rÛ   r¨   rÛ   rÝ   r   NrQ   )r5   r™   r   rn  r8   rr   rV   r_  rà   r!   r:  rR   )	r�  rÞ   rL   rJ   Úmetric_valuesr�   Úexpected_scoresrm   rK   s	            rM   Útest_metric_at_thresholdsr£  f	  s  € ô �X‰X’oÓ&€FÜ�h‰hÒ0Ó1€Gä 4Ø�˜°Mô!Ñ€M�:ð
 €OØò Yˆ	Ø˜YÑ&×.Ñ.¬sÓ3ˆØ×Ñ™{¨6°6ÈÔWÕXðYô ˆ}Ó¤ Z£Ò0Ð0Ð0ä�6‰6”"—'‘'˜*Ó%¨Ñ*Ô+Ð+Ð+àÐ äØœŸ™¤§	¡	¨'°-À1Ñ2DÑ*EÓ FÓGÉÈ"ÈÑMõ	
ô 	˜
¤B§G¡G¬B¯I©I°gÓ,>Ó$?ÁÀ"ÀÑ$EÔFÜ�M ?Õ3rO   c                 óV   — 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‰F�6‹NœBŸF™F 6›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«       y# 1 sw Y   yxY w)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©  “	  si   € ä�X‰X’oÓ&€FÜ�h‰hÒ1Ó2€GÜ—H‘Hš_Ó-€Mä	�‰”yÐ(LÔ	Mñ 
Ü#Ø�GÔ;È=ô
‰ˆˆ1÷
÷ 
ñ 
ús   Á!BÂB
Ú	normalizec                 ó|  — t        j                  g d¢«      }t        j                  g d¢«      }t        ||t        d| i¬«      \  }}g }|D ]7  }||k\  j	                  t
        «      }|j                  t        ||| ¬«      «       Œ9 t        ||«       t        |«      t        t        j                  |«      «      k(  sJ ‚y)z@Test `metric_params` passed correctly to `metric_at_thresholds`.rÙ   r§  rª  ©Úmetric_params)rª  N)
r5   r™   r   r   rn  r8   rr   r!   rV   rR   )rª  rL   rJ   r¡  r�   Úexpected_valuesrm   rK   s           rM   Ú'test_metric_at_thresholds_metric_paramsr¯  Ÿ	  s®   € ô �X‰X’oÓ&€FÜ�h‰hÒ1Ó2€Gä 4Ø�œ¸ÀYÐ7Oô!Ñ€M�:ð €OØò Tˆ	Ø˜YÑ&×.Ñ.¬sÓ3ˆØ×Ñœ~¨f°fÈ	ÔRÕSðTô �M ?Ô3Üˆz‹?œc¤"§)¡)¨GÓ"4Ó5Ò5Ð5Ñ5rO   rW   c           	      ó(  — t        j                  g d¢«      }t        j                  g d¢«      }t        ||t        | ddœ¬«      \  }}g }|D ]8  }||k\  j	                  t
        «      }|j                  t        ||| d¬«      «       Œ: t        ||«       y)z?Test `pos_label` is passed correctly to `metric_at_thresholds`.rÙ   r   r   )rW   Úzero_divisionr¬  N)r5   r™   r   r   rn  r8   rr   r!   )rW   rL   rJ   r¡  r�   r¢  rm   rK   s           rM   Ú#test_metric_at_thresholds_pos_labelr²  ²	  s”   € ô �X‰X’oÓ&€FÜ�h‰hÒ0Ó1€Gä 4ØØÜØ$-ÀÑBô	!Ñ€M�:ð €OØò 
ˆ	Ø˜YÑ&×.Ñ.¬sÓ3ˆØ×ÑÜ˜F F°iÈqÔQõ	
ð
ô �M ?Õ3rO   c                  ó~  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  g d¢«      }t        d«      }|j                  t	        |«      «      }| |   }||   }||   }t        | |t        |¬«      \  }}	t        ||t        |¬«      \  }
}t        ||
«       t        |	|«       y)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‰X’oÓ&€FÜ�h‰hÒ0Ó1€GÜ—H‘Hš_Ó-€Mä
˜RÓ
 €CØ—?‘?¤3 w£<Ó0€LØ˜Ñ&€KØ˜<Ñ(€LØ& |Ñ4Ðä-Ø�œ°}ôÑ€Hˆhô .Ø�\¤>ÐASôÑ€Hˆhô �H˜hÔ'Ü�H˜hÕ'rO   c                  óN  — 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«       y# 1 sw Y   yxY w)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‰hÒ0Ó1€Gä�x‰xšÓ(€HÜ�x‰xšÓ(€Hä-¨h¸ÄÓPÑ€HˆhÜ-¨h¸ÄÓPÑ€Hˆhä�H˜hÔ'Ü�H˜hÔ'ô —h‘hšÓ/€OÜ—h‘hšÓ/€Oä-Ø�'œ>¸ôÑ€Hˆhô .Ø�'œ>¸ôÑ€Hˆhô
 �H˜hÔ'ä	�‰”~Ó	&ñ ,Ü˜ (Ô+÷,÷ ,ñ ,ús   ÄDÄD$c                  óp  — 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   |«       y)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   rf  rg  rh  ri  Úthresholds_cmr¡  r�   s	            rM   Ú;test_metric_at_thresholds_consistency_with_confusion_matrixrÅ  
  sÂ   € ô
 �X‰X’oÓ&€FÜ�h‰hÒ0Ó1€Gä(FØØó)Ñ%€Cˆˆc�3˜ô
 !5Ø�Ô)¸(ÀQÈÀFÐ9Kô!Ñ€M�:ô �z =Ô1ô �}¢Q¨¨1 WÑ-¨sÔ3Ü�}¢Q¨¨1 WÑ-¨sÔ3Ü�}¢Q¨¨1 WÑ-¨sÔ3Ü�}¢Q¨¨1 WÑ-¨sÕ3rO   c                  ó   — t        j                  g d¢«      } t        j                  g d¢«      }t        | |t        dt         j                  i¬«      \  }}t        j
                  t        j                  |«      «      sJ ‚y)z,Test `metric_at_thresholds` with NaN output.)r   r   r   r   r   r  r±  r¬  N)r5   r™   r   r   r·   r_  rÊ   )rL   rJ   r¡  ry   s       rM   Ú*test_metric_at_thresholds_with_nan_outputsrÇ  "
  s_   € ô �X‰X’oÓ&€FÜ�h‰hÒ0Ó1€Gä+Ø�œ°oÄrÇvÁvÐ5NôÑ€M�1ô �6‰6”"—(‘(˜=Ó)Ô*Ð*Ñ*rO   c                  óÚ   — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  t        d¬«      5  t        | |d «       d d d «       y # 1 sw Y   y xY w)Nro  )rÏ   rÔ   rÑ   rÑ   z"Pass pos_label=None as keyword argr²   )r5   r™   r£   rµ   ÚFutureWarningr   rT  s     rM   Ú?test_confusion_matrix_at_thresholds_positional_args_deprecationrÊ  0
  sO   € Ü�X‰X’lÓ#€FÜ�h‰hÒ+Ó,€GÜ	�‰”mÐ+OÔ	Pñ >Ü& v¨w¸Ô=÷>÷ >ñ >ús   Á
A!Á!A*)NF)rÜ   rG  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&  r.  r?  rD  rK  rQ  rU  r]  rb  rj  rm  rw  Ú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+  r-  r3  r0  rC  rF  rH  rN  rW  rY  r\  r[  rc  rj  rq  ru  r~  r€  r‚  r„  r‡  r”  r—  rœ  r£  r¥  r©  r¯  r²  r»  rÂ  rÅ  rÇ  rÊ  rÅ  rO   rM   ú<module>rÞ     s¹  ðÛ Û 	ã Û Ý å Ý ;Ý 5Ý 3÷÷ ÷ ÷ ÷ ÷(ñ õ
 5Ý 0Ý ;÷õ õ *Ý .÷ñ ð #ØØØð	€ô)#ò`2òò<ò&Hð8 ‡�×Ñ˜ $¨ Ó/ñ
)ó 0ð
)ò
"ò)ò&#ò)ò)ò8)ò6oNòdMò	)ò.ò&ð" ‡�×ÑØà	ˆ�‰’,Ó	¢Ð+Ø	ˆ�‰’,Ó	 Ð&Ú	šÐ/Ú	˜tÐ$ð	óñ/Xóð/Xðd ‡�×ÑØà	ˆ�‰’,Ó	¢Ð+Ø	ˆ�‰Ò&Ó	'ªÐ9ðóñóðð: ‡�×ÑØà	ˆ�‰’,Ó	 Ð&Ú	˜tÐ$Ú	’yÐ!Ú	šÐ/ð	óñóððD ‡�×ÑØòóñóðòD:ð( ‡�×ÑØà	,¨h¨b¯h©h²|Ó.DÂiÐPà/ØˆB�H‰HÒ)Ó*Úð	
ðð ˆB�H‰H’\Ó"Øð	
ð 1ØˆB�H‰HÒ)Ó*Úð	
ðð ˆB�H‰H’\Ó"Ø�ˆFð	
ðð ˆB�H‰HÒ)Ó*Ø�#ˆJð	
ðð ˆB�H‰H’\Ó"Úð	
ðð ˆB�H‰HÒ)Ó*Ú ð	
ð AØˆB�H‰HÒ)Ó*Úð	
ð AØˆB�H‰HÒ)Ó*Úð	
ð AØˆB�H‰H’\Ó"Úð	
ð}CóFðN ‡�×Ñ˜¨°¨Ó7ñPó 8óOFðPPð ‡�×ÑØð'ð "°%Ñ8ð	
ð'ð "°%Ñ8ð	
ðFð "°BÑ7ð	
ðð "¨cÑ2ð	
ð 
4°RÐ8ð=ó"ñF	0óG"ðF	0ò&ò*Lò"
òD6ò86ð& ‡�×Ñ˜ {Ó3ñ#ó 4ð#ð ‡�×Ñ˜ {Ó3ñEó 4ðEð0 ‡�×ÑÐLÓMØ‡�×Ñ˜Ð(>À	Ð'JÓKØ‡�×Ñ˜¨°Ð(9Ó:ñ'ó ;ó Ló Nð'ð ‡�×Ñ˜ {Ó3ñ	&ó 4ð	&ð ‡�×Ñ˜ $¨ Ó/ñ ó 0ð ò>)ð, ‡�×Ñ˜ $¨ Ó/ñ`ó 0ð`òF6òD<ò=ò
=ò>ò*.ò$ð2 ‡�×ÑØ.â	’K !  q cÐ*Ú	’N Q C¨!¨Ð-Ú	’N Q C¨!¨Ð-Ú	Ò%¨ s¨Q¨CÐ0Ú	’K¢²	Ð:Ú	’N¢M²9Ð=Ú	’N¢M²9Ð=Ú	Ò%¢}²iÐ@Ú	’K # ¨¨Ð,Ú	’N Q C¨!¨Ð-Ú	’N Q C¨!¨Ð-Ú	Ò%¨ s¨Q¨CÐ0Ú	’K¢²Ð>Ú	’N¢N²LÐAÚ	’N¢N²LÐAÚ	Ò%¢~²|ÐDÚ	’K¢ªMÐ:Ú	’N¢Iª}Ð=Ú	’N¢Iª}Ð=Ú	Ò%¢y²-Ð@ð)óñ2'ó3ð2'ð ‡�×ÑÚNò 
’KÒ!1²<ÀÐGÚ	’K¢ªi¸Ð>Ú	’NÒ$4²lÀEÐJÚ	’N¢K²¸DÐAâ	’K¢ªM¸5ÐAÚ	’K¢ªM¸4Ð@Ú	’N¢Iª}¸eÐDÚ	’N¢Iª}¸dÐCðóñ'óð'ð ‡�×ÑØ.à
ˆQˆ�#�s�˜a ˜V a¨ VÐ,Ø
ˆQˆ�#�s�˜a ˜V a¨ VÐ,Ú	Ò$ s¨A h°°A°Ð7Ú	Ò$ s¨A h°°A°Ð7Ú	Ò$ q c¨A¨3Ð/Ú	Ò$¢i²Ð;Ú	Ò$¢i²Ð=Ú	Ò$¢i²Ð=ð	óñ'óð'òð ‡�×Ñ˜Ò$EÓFñ2ó Gð2ð ‡�×ÑØâ	Ú	Ú	Ú	Ú	ðó	ñó	ðð ‡�×ÑØà
ˆQˆ’Ð?Ð@Ú	�Q˜�HÐ?Ð@Ú	’KÐ!FÐGÚ	’KÐ!FÐGâ.ÚØ(ð	
ð
óñ"óð"ò>ò48Sòvò.1ò4Xòò6#ðN 9:ô3ð@ ‡�×ÑØàØ3ØØ)ð	óð ‡�×Ñ˜Ð"GÈÐ!RÓSñó TóðòCð ‡�×Ñ˜ mÓ4Ø‡�×Ñ˜ jÓ1Ø‡�×Ñ˜©¨q«Ó2ñó 3ó 2ó 5ðòò*4ònLð  ‡�×ÑØâ	Ò$Ð%Ú	Ò%Ð&Ð'Ú
ˆÒ&Ð'ðóñ(óð(ò(ðV ‡�×Ñ˜¨.Ó9ñó :ðò9ò 	Pò)òUòò(ò$ò=ð ‡�×Ñ˜¨¨u¨Ó6ñ#Vó 7ð#VòL!ò*ò-ò 
ð4 ‡�×ÑØâ	�q˜$ÐÚ	�q˜#ÐÚ	�q˜$Ððóñ
.óð
.ð ‡�×ÑØà	ˆ�‰’.Ó	! 1 aÐ(Ø	ˆ�‰’.Ó	! 1 cÐ*Ø	ˆ�‰’.Ó	! 1 aÐ(Ø	ˆ�‰Ò&Ó	'¨¨AÐ.Ø	ˆ�‰Ò&Ó	'¨¨CÐ0Ø	ˆ�‰Ò&Ó	'¨¨AÐ.ðó
ñ	;ó
ð	;ð ‡�×ÑØ à	ˆ�‰’,Ó	 ¢|Ð4Ø	ˆ�‰’,Ó	 ¢lÐ3Ø	ˆ�‰’,Ó	 ¢lÐ3Ø	ˆ�‰Ò&Ó	'¨Ò/CÐDð	óð ‡�×ÑÐ,¨t°U¨mÓ<ñ.ó =óð.ò&+ð& ‡�×ÑØâ	�q˜$ÐÚ	�q˜#ÐÚ	�q˜!Ððóñ
Sóð
Sð ‡�×ÑØâ	�qÐÚ	�qÐðóñóðð$ ‡�×ÑØ"ò âÚÚÚð	ð ØGð
	
ò âÚÚÚð	ð ð+ð	
ò !âÚÚÚð	ò !Ø0ð
	
ò !âÚÚÚð	ò Ø1ð
	
ò âÚÚÚð	ò ð ð	
ò âÚÚÚð	ò ØAð
	
ð �ˆFÚšoÐ.ØðWð	
ðKNóQñdBóeQðdBð
 ‡�×Ñ˜¨.Ó9ñ*ó :ð*ð ‡�×ÑØÐ&¨	Ð3IÈ9ÐUóð ‡�×ÑØÒCóñ.óóð.ò(#ô$ð ‡�×ÑØàØØàðó	ð ‡�×Ñ˜¨4°°·±º/Ó1JÐ*KÓLñ4ó Mó	ð4ò:,ò
	
ð ‡�×Ñ˜ t¨U mÓ4ñ6ó 5ð6ð$ ‡�×Ñ˜ q¨! fÓ-ñ4ó .ð4ò,(ò.%,òP4ó4
+ô>rO   