Ë
    ÜÍ:j¸‚ ã                   óv!  — d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dl
m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mZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d d
lFmGZG d dlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[ d dl\m]Z] d dl^m_Z_m`Z`maZambZbmcZcmdZd d dl^meZf d dlgmhZhmiZimjZjmkZkmlZlmmZmmnZn d dlompZpmqZqmrZr d dlsmtZt d dlumvZvmwZw i de0“de1“de6“de7“de4“de9“de2“de&“d ee>d¬«      “deB“d eC“d! ee8d ¬"«      “d#e5“d$e3“d% ee8d&¬"«      “d'e8“d( ee#d&¬"«      “e" ee"d)¬*«       ee"d+¬*«      ed,œ¥Zxi d-e“d.e“d/ eed0¬1«      “d2 eed3¬4«      “d5e“d6d7„ “d8e:“d9 ee:d0¬:«      “d;e)“d<eE“d= eeEd3¬4«      “d>e+“d?e=“d@e?“dAe'“dB ee(dC¬D«      “dE ee(dF¬D«      “i dGe/“dH ee(dIdF¬J«      “dK ee'dI¬L«      “dM ee(dIdC¬J«      “dN ee=dI¬L«      “dO ee?dI¬L«      “dP ee+dI¬L«      “dQ ee(dRdF¬J«      “dS ee'dR¬L«      “dT ee(dRdC¬J«      “dU ee=dR¬L«      “dV ee?dR¬L«      “dW ee+dR¬L«      “dX ee(dYdF¬J«      “dZ ee'dY¬L«      “d[ ee(dYdC¬J«      “d\ ee=dY¬L«      “¥ ee?dY¬L«       ee+dY¬L«       ee(d]dF¬J«       ee'd]¬L«       ee(d]dC¬J«       ee=d]¬L«       ee?d]¬L«       ee+d]¬L«      ed^œ	¥Zyd_„ ZzeeAeze%d`œZ{i dae“dbe-“dce.“dd ee.d3¬4«      “dee*“dfe“dge@“dh ee@dI¬L«      “di ee@d]¬L«      “dj ee@dR¬L«      “dk ee@dYdl¬m«      “dn ee@dIdl¬m«      “do ee@dYdp¬m«      “dq ee@dIdp¬m«      “dr ee@dF¬s«      “dte“du eedI¬L«      “ eed]¬L«       eedR¬L«      e,e;e$eDe e!dvœ¥Z| e}«       Z~e~jÿ                  e|«       e~jÿ                  ey«       e~jÿ                  ex«       e~jÿ                  e{«       h dw£Z€h dx£Z�e€�j                  e�«      Zƒh dy£Z„h dz£Z…h d{£Z†h d|£Z‡h d}£Zˆh d~£Z‰h d£ZŠh d€£Z‹h d�£ZŒh d‚£Z�h dƒ£ZŽh d„£Z�h d…£Z�dd hZ‘g d†¢Z’d‡„ Z“dˆ„ Z”d‰„ Z•e�j,                  �j/                  dŠ e˜eŒ«      «      d‹„ «       Z™e�j,                  �j/                  dŠ e˜e�«      «      dŒ„ «       Zšd�„ Z›e�j,                  �j/                  dŠ e˜ eœe~«      eƒz
  «      «      dŽ„ «       Z�d�„ Zže�j,                  �j/                  dŠ e˜ eœe~«      eƒz
  «      «      d�„ «       ZŸi ey¥d‘ei¥Z e�j,                  �j/                  d’e �jC                  «       «      d“„ «       Z¢e�j,                  �j/                  d’ey�jC                  «       «      d”„ «       Z£e�j,                  �j/                  dŠ e˜ eœey«      eƒz
  «      «      d•„ «       Z¤e�j,                  �j/                  dŠe|«      d–„ «       Z¥d d—ge�jL                  e�jL                  gfd d—ge�jN                  e�jN                  gfd d—ge�jN                  e�jL                  gfd d—ge�jL                  d—gfd d—ge�jN                  d—gfgZ¨e�j,                  �j/                  d’ ee|�jC                  «       ex�jC                  «       «      «      e�j,                  �j/                  d˜e¨«      d™„ «       «       Z©e�j,                  �j/                  d’ey�jC                  «       «      e�j,                  �j/                  d˜e¨e�jN                  d—dCgg dš¢fe�jL                  d—dCgg dš¢fgz   «      d›„ «       «       Zªe�j,                  �j/                  d’ey�jC                  «       «      dœ„ «       Z«d�„ Z¬dž„ Z­e�j,                  �j]                  dŸ«      e�j,                  �j/                  dŠ e˜ eœe~«      eƒz
   eœe|«      z
  «      «      d „ «       «       Z¯e�j,                  �j]                  dŸ«      e�j,                  �j/                  dŠ e˜e‹eŠz  «      «      d¡„ «       «       Z°e�j,                  �j/                  dŠ e˜e‹«      «      d¢„ «       Z±e�j,                  �j/                  dŠ e˜e‹«      «      d£„ «       Z²e�j,                  �j]                  d¤«      e�j,                  �j/                  d¥ep«      d¦„ «       «       Z³e�j,                  �j/                  dŠ e˜eŠ«      «      d§„ «       Z´e�j,                  �j/                  dŠ e˜eˆ«      «      d¨„ «       Zµe�j,                  �j/                  dŠ e˜eˆ«      «      d©„ «       Z¶e�j,                  �j/                  dŠ e˜eˆ�jo                  eŠ«      «      «      dª„ «       Z¸d«„ Z¹d¬„ Zºe�j,                  �j/                  dŠ e˜e„«      «      d­„ «       Z»e�j,                  �j/                  dŠ e˜e„e…z  «      «      d®„ «       Z¼e�j,                  �j/                  dŠ e˜e„«      «      d¯„ «       Z½d°„ Z¾e�j,                  �j/                  dŠ e˜e„«      «      d±„ «       Z¿dãd²„ZÀe�j,                  �j/                  dŠ e˜ eœe~«      �jo                   eœex«      «      eŽz
  «      «      d³„ «       ZÁe�j,                  �j„                  e�j,                  �j/                  dŠ e˜ eœe~«      �jo                   eœex«      «      eŽz
  «      «      d´„ «       «       ZÃe�j,                  �j/                  dŠ e˜ eœe~«       eœex«      z
  eŽz
  e€z
  «      «      dµ„ «       ZÄe�j,                  �j/                  dŠ e˜ eœe~«       eœex«      z
  eŽz
  eƒz
  «      «      d¶„ «       ZÅe�j,                  �j/                  dŠ e˜eŠe‰z  eŽz
  «      «      d·„ «       ZÆe�j,                  �j/                  dŠ e˜e‹eŽz
  «      «      d¸„ «       ZÇd¹„ ZÈe�j,                  �j/                  dŠ e˜eŠd8hz
  «      «      dº„ «       ZÉe�j,                  �j/                  dŠ e˜e‰e‹z  «      «      d»„ «       ZÊe�j,                  �j/                  dŠ e˜ eœe|«      eƒz
  «      «      d¼„ «       ZËe�j,                  �j/                  d½ e�j˜                  d¾gd¿z  dÀgdCz  z   eÍ¬Á«       e�j˜                  d¾gd¿z  dÀgdCz  z   «       e�j˜                  d¾gd¿z  dÀgdCz  z   «      g«      e�j,                  �j/                  dÂey«      dÃ„ «       «       ZÎe�j,                  �j/                  dÄed0fed0fe'd3f ee(d—¬D«      d3fe+d3fe<d0fe=d3fe?d3feAd0fg	«      e�j,                  �j/                  dÅeÏeÍg«      dÆ„ «       «       ZÐdÇ„ ZÑdÈ„ ZÒdÉ„ ZÓdÊ„ ZÔdË„ ZÕdÌ„ ZÖdÍ„ Z×dÎ„ ZØdÏ„ ZÙdÐ„ ZÚi eeÒeÓeÔg“eeÒeÓeÔg“eeÒeÓg“eeÒeÓg“eeÒeÓg“e%eÒg“e'eÒeÓeÔg“e(eÒeÓeÔg“e+eÒeÓeÔg“e:eÒeÓeÔg“e=eÒeÓeÔg“e<eÒg“e?eÒeÓeÔg“eEeÒeÓeÔg“e)eÒeÓeÔg“eeÕeÖe×g“e.eÕeÖe×g“i e eÕeÖe×g“e!eÕeÖe×g“e8eØg“ ee8dÑ¬"«      eØg“ ee8dÒ¬"«      eØg“e>eØeÙg“eLeÚg“e&eØeÙg“e1eØeÙg“e4eØeÙg“e6eØeÙg“e7eØeÙg“e9eØeÙg“eeØeÙg“e"eØeÙg“ ee"d)¬*«      eØeÙg“ ee"d+¬*«      eØeÙg“¥i e#eØg“eQeÚg“e5eØg“eIeÚg“e3eØg“e0eØg“e2eØeÙg“eJeÚg“eReÚg“eSeÚg“eKeÚg“eMeÚg“ePeÚg“eOeÚg“eNeÚg“eWeÚg“eXeÚg“¥eBeØeÙgeCeØeÙgeYeÚgeVeÚgeAeÒgeTeÚgeUeÚgi¥ZÛeÛfdÓ„ZÜe�j,                  �j/                  dÔ ed«       «      e�j,                  �j/                  dÕ eÜ«       «      dÖ„ «       «       ZÝd×„ ZÞe�j,                  �j/                  dØ ec«       D � cg c]  }  e�j¾                  | ddC dÙ| dC   iŽ‘Œ c} «      e�j,                  �j/                  dÂ e˜e’«      «      dÚ„ «       «       Zàe�j,                  �j/                  dÂ e˜ eœe’«       eœey�jÃ                  «       «      e€z
  z  «      «      endÛ„ «       «       Zâe�j,                  �j/                  dÔ ed«       «      e�j,                  �j/                  dÂ e˜ eœe’«       eœe|�jÃ                  «       «       eœe{�jÃ                  «       «      z  e€z
  z  «      «      dÜ„ «       «       Zãe�j,                  �j/                  dÝdÞdßg«      e�j,                  �j/                  dÂ e˜e~«      «      dà„ «       «       Zädá„ Zåe�j,                  �j/                  dŠ e˜e~«      «      dâ„ «       Zæyc c} w )äé    N)Úpartial)Ú	signature)ÚchainÚpermutationsÚproduct)ÚTuple)Úconfig_context)Úmake_multilabel_classification)ÚUndefinedMetricWarning)0Úaccuracy_scoreÚaverage_precision_scoreÚbalanced_accuracy_scoreÚbrier_score_lossÚclassification_reportÚcohen_kappa_scoreÚconfusion_matrixÚconfusion_matrix_at_thresholdsÚcoverage_errorÚd2_absolute_error_scoreÚd2_brier_scoreÚd2_log_loss_scoreÚd2_pinball_scoreÚd2_tweedie_scoreÚ	dcg_scoreÚ	det_curveÚexplained_variance_scoreÚf1_scoreÚfbeta_scoreÚhamming_lossÚ
hinge_lossÚjaccard_scoreÚ%label_ranking_average_precision_scoreÚlabel_ranking_lossÚlog_lossÚmatthews_corrcoefÚ	max_errorÚmean_absolute_errorÚmean_absolute_percentage_errorÚmean_gamma_devianceÚmean_pinball_lossÚmean_poisson_devianceÚmean_squared_errorÚmean_squared_log_errorÚmean_tweedie_devianceÚmedian_absolute_errorÚmultilabel_confusion_matrixÚ
ndcg_scoreÚprecision_recall_curveÚprecision_scoreÚr2_scoreÚrecall_scoreÚroc_auc_scoreÚ	roc_curveÚroot_mean_squared_errorÚroot_mean_squared_log_errorÚtop_k_accuracy_scoreÚzero_one_loss)Ú_average_binary_score)Úadditive_chi2_kernelÚchi2_kernelÚcosine_distancesÚcosine_similarityÚeuclidean_distancesÚlaplacian_kernelÚlinear_kernelÚmanhattan_distancesÚpaired_cosine_distancesÚpaired_euclidean_distancesÚpaired_manhattan_distancesÚpairwise_distancesÚpairwise_distances_argminÚpairwise_kernelsÚpolynomial_kernelÚ
rbf_kernelÚsigmoid_kernel)ÚLabelBinarizer)Úshuffle)Ú_atol_for_typeÚ_max_precision_float_dtypeÚget_namespaceÚmove_toÚ(yield_mixed_namespace_input_permutationsÚ)yield_namespace_device_dtype_combinations©Údevice)Ú_array_api_for_testsÚassert_allcloseÚassert_almost_equalÚassert_array_equalÚassert_array_lessÚignore_warningsÚ'skip_if_array_api_compat_not_configured)ÚCOO_CONTAINERSÚparse_versionÚ
sp_version)Útype_of_target)Ú_num_samplesÚcheck_random_stater&   r'   r,   r-   r*   r/   r(   r   r4   Úvariance_weighted)Úmultioutputr8   r9   Úmean_normal_deviance)Úpowerr+   r)   Úmean_compound_poisson_deviancegffffffö?r.   r   çš™™™™™¹?)ÚalphagÍÌÌÌÌÌì?)r   Úd2_pinball_score_01Úd2_pinball_score_09r   r   r   Ú adjusted_balanced_accuracy_scoreT)ÚadjustedÚunnormalized_accuracy_scoreF©Ú	normalizer   Únormalized_confusion_matrixc                  ó˜   — t        | i |¤Žj                  d«      t        | i |¤Žj                  d¬«      d d …t        j                  f   z  S )NÚfloaté   ©Úaxis)r   ÚastypeÚsumÚnpÚnewaxis)ÚargsÚkwargss     úv/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_common.pyú<lambda>r€   ²   sM   € Ü˜$Ð) &Ñ)×0Ñ0°Ó9Ü
˜DÐ
+ FÑ
+×
/Ñ
/°QÐ
/Ó
7º¼2¿:¹:¸Ñ
Fñ	Gð ó    r0   Ú"multilabel_confusion_matrix_sample)Ú
samplewiser   r;   Úunnormalized_zero_one_lossr!   r3   r5   r   Úf2_scoreé   )Úbetaú
f0.5_scoreç      à?Úmatthews_corrcoef_scoreúweighted_f0.5_scoreÚweighted©Úaverager‡   Úweighted_f1_score©rŽ   Úweighted_f2_scoreÚweighted_precision_scoreÚweighted_recall_scoreÚweighted_jaccard_scoreúmicro_f0.5_scoreÚmicroÚmicro_f1_scoreÚmicro_f2_scoreÚmicro_precision_scoreÚmicro_recall_scoreÚmicro_jaccard_scoreúmacro_f0.5_scoreÚmacroÚmacro_f1_scoreÚmacro_f2_scoreÚmacro_precision_scoreÚsamples)	Úmacro_recall_scoreÚmacro_jaccard_scoreúsamples_f0.5_scoreÚsamples_f1_scoreÚsamples_f2_scoreÚsamples_precision_scoreÚsamples_recall_scoreÚsamples_jaccard_scorer   c            
      ó  — t        | i |¤Ž\  }}}t        |«      t        |«      z
  }t        j                  ||t        j                  |j                  t        j                  «      d|fdt        j                  g¬«      g«      S )a'  
    The dimensions of precision-recall pairs and the threshold array as
    returned by the precision_recall_curve do not match. See
    :func:`sklearn.metrics.precision_recall_curve`

    This prevents implicit conversion of return value triple to a higher
    dimensional np.array of dtype('float64') (it will be of dtype('object)
    instead). This again is needed for assert_array_equal to work correctly.

    As a workaround we pad the threshold array with NaN values to match
    the dimension of precision and recall arrays respectively.
    r   Úconstant)Ú	pad_widthÚmodeÚconstant_values)r2   Úlenr{   ÚarrayÚpadry   Úfloat64Únan)r}   r~   Ú	precisionÚrecallÚ
thresholdsÚpad_thresholdss         r   Ú(precision_recall_curve_padded_thresholdsr¸   á   sz   € ô %;¸DÐ$KÀFÑ$KÑ!€Iˆv�zä˜“^¤c¨*£oÑ5€Nä�8‰8àØÜ�F‰FØ×!Ñ!¤"§*¡*Ó-Ø˜nÐ-ØÜ!#§¡ ô	ð		
óð r�   )r   r7   r2   r   r   r#   r$   Úunnormalized_log_lossr    r   r6   Úweighted_roc_aucÚsamples_roc_aucÚmicro_roc_aucÚovr_roc_aucÚovr)rŽ   Úmulti_classÚweighted_ovr_roc_aucÚovo_roc_aucÚovoÚweighted_ovo_roc_aucÚpartial_roc_auc)Úmax_fprr   Ú weighted_average_precision_score)Úsamples_average_precision_scoreÚmicro_average_precision_scorer"   r1   r   r:   r   r   >   r   r1   r   r¥   r¦   r#   r¨   r©   r§   r‚   r"   r¤   >   r   r…   r   r7   r5   r!   r¼   r6   rÄ   r3   r»   rº   r2   r   rˆ   >   r   r…   r5   r!   r3   rˆ   >   r6   rÄ   r   >   r   r…   r   r7   r5   r!   r   r3   r   r2   r   rÈ   r   rÇ   rÆ   rˆ   >!   r   r…   r$   r5   r!   r   rž   rŸ   r—   r˜   r3   r   r   r   r   r�   r‘   r¢   rš   r£   r›   r    r™   r“   r”   r’   r0   rs   r‚   rˆ   rœ   r•   r‹   >   r$   r;   r   r:   >   r$   r   r1   r¼   r6   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„   r0   rp   rœ   r•   r¤   r‹   >   r4   r   r*   r,   rl   rm   r'   r/   r-   r   r8   r   r9   r(   >   r   r&   r   r!   r;   r   rž   r—   r˜   r   r*   r,   rš   r£   r'   r›   rg   r.   r/   r™   r©   r“   r-   rŠ   r8   r„   r9   rp   r•   >"   r…   r4   r   r7   r    r5   rŸ   r3   r   r   r   r�   r‘   r¢   rl   rm   r)   r    r+   r2   r”   r   r   r   r’   r0   rs   r   r(   ri   rn   rˆ   rœ   r‹   >   r&   rÁ   rÃ   >   r   r¹   r„   r0   rp   r   r‚   >   r   r)   r+   ri   ) r   r   r   r   r   r   r   r   rl   rm   r   r   r   r$   r&   r'   r(   ri   r)   rg   r*   r+   r,   r-   r.   r/   r0   r3   r4   r5   r8   r9   c                 ó†   — t        t        | j                  «       |j                  «       «      «      dz   }| |z  } ||z  }| |fS )zMake targets strictly positiverv   )ÚabsÚmin©Úy1Úy2Úoffsets      r   Ú_require_positive_targetsrÐ   —  s?   € ä”�R—V‘V“X˜rŸv™v›xÓ(Ó)¨AÑ-€FØˆ&�L€BØˆ&�L€BØˆrˆ6€Mr�   c                 ó  — t        t        | j                  «       |j                  «       «      «      dz
  }| j                  t        j                  «      } |j                  t        j                  «      }| |z  } ||z  }| |fS )z$Make targets strictly larger than -1g®Gáz®ï?)rÊ   rË   ry   r{   r²   rÌ   s      r   Ú_require_log1p_targetsrÒ   Ÿ  sc   € ä”�R—V‘V“X˜rŸv™v›xÓ(Ó)¨DÑ0€FØ	�‰”2—:‘:Ó	€BØ	�‰”2—:‘:Ó	€BØˆ&�L€BØˆ&�L€BØˆrˆ6€Mr�   c                  ó¤   — t         t        z  t        t        «      z  t        z  t        t
        «      k(  sJ ‚t         t        z  t        «       k(  sJ ‚y ©N)ÚSYMMETRIC_METRICSÚNOT_SYMMETRIC_METRICSÚsetÚ!CONTINUOUS_CLASSIFICATION_METRICSÚ"METRIC_UNDEFINED_BINARY_MULTICLASSÚALL_METRICS© r�   r   Útest_symmetry_consistencyrÜ   ©  sX   € ô 	Ü
ñ	 ä
Ô/Ó
0ñ	1ô -ñ	-ô 
Œ[Ó	òð ð ô Ô 5Ñ5¼#»%Ò?Ð?Ñ?r�   Únamec                 óÖ  — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }| t        v rt        ||«      \  }}n| t        v rt        ||«      \  }}|j                  ddd¬«      }|j                  ddd¬«      }t        |    }| t        v r/| t        v r t         |||«       |||«      d| z  ¬«       y J d«       ‚t         |||«       |||«      d| z  ¬«       y )	Nr   r†   ©é   ©Úsize©rà   é   z%s is not symmetric©Úerr_msgz This case is currently unhandled)
rd   ÚrandintÚMETRICS_REQUIRE_POSITIVE_YrÐ   ÚMETRICS_WITH_LOG1P_YrÒ   rÚ   ÚMETRIC_UNDEFINED_BINARYÚMULTILABELS_METRICSrY   )rÝ   Úrandom_stateÚy_trueÚy_predÚ
y_true_binÚ
y_pred_binÚmetrics          r   Útest_symmetric_metricrò   µ  s  € ô & aÓ(€LØ×!Ñ! ! Q¨UÐ!Ó3€FØ×!Ñ! ! Q¨UÐ!Ó3€FàÔ)Ñ)Ü2°6¸6ÓB‰ˆ‘à	Ô%Ñ	%Ü/°¸Ó?‰ˆ�à×%Ñ% a¨°Ð%Ó:€JØ×%Ñ% a¨°Ð%Ó:€Jä˜Ñ€FØÔ&Ñ&ØÔ&Ñ&ÜÙ�z :Ó.Ù�z :Ó.Ø-°Ñ4öð =Ð<Ó<�5äÙ�6˜6Ó"Ù�6˜6Ó"Ø)¨DÑ0ö	
r�   c                 óF  — t        d«      }t        |    }d}t        d«      D ]m  }|j                  ddd¬«      }|j                  ddd¬«      }| t        v rt        ||«      \  }} |||«      } |||«      }t        j                  ||«      rŒkd} n |rt        | › d�«      ‚y )	Nr   Té   r†   rß   rá   Fú seems to be symmetric)	rd   rÚ   Úrangerç   rè   rÐ   r{   ÚallcloseÚ
ValueError)	rÝ   rì   rñ   Úalways_symmetricÚ_rí   rî   ÚnominalÚswappeds	            r   Útest_not_symmetric_metricrý   ×  sÆ   € ô & aÓ(€LÜ˜Ñ€Fð
 ÐÜ�1‹Xò ˆØ×%Ñ% a¨°Ð%Ó7ˆØ×%Ñ% a¨°Ð%Ó7ˆàÔ-Ñ-Ü6°v¸vÓF‰NˆF�Fá˜ Ó(ˆÙ˜ Ó(ˆÜ�{‰{˜7 GÕ,Ø$ÐÙðñ Ü˜D˜6Ð!7Ð8Ó9Ð9ð r�   c                  ó0  — d} d}t        | «       t        j                  t        |› d�¬«      5  t        |«       d d d «       t	        |«       t        j                  t
        | › d�¬«      5  t	        | «       d d d «       y # 1 sw Y   ŒGxY w# 1 sw Y   y xY w)Nr   r5   z is not symmetric©Úmatchrõ   )rò   ÚpytestÚraisesÚAssertionErrorrý   rø   )ÚsymÚnot_syms     r   Útest_symmetry_testsr  ò  s‹   € à
€CØ€Gô ˜#ÔÜ	�‰”~°¨yÐ8IÐ-JÔ	Kñ 'Ü˜gÔ&÷'ô ˜gÔ&Ü	�‰”z¨C¨5Ð0FÐ)GÔ	Hñ 'Ü! #Ô&÷'ð '÷'ð 'ú÷
'ð 'ús   ®B Á+BÂ B	ÂBc                 óx  — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }| t        v rt        ||«      \  }}n| t        v rt        ||«      \  }}t        ||d¬«      \  }}t        «       5  t        |    }t         |||«       |||«      d| z  ¬«       d d d «       y # 1 sw Y   y xY w)Nr   r†   rß   rá   ©rì   ú %s is not sample order invariantrå   )
rd   rç   rè   rÐ   ré   rÒ   rO   r]   rÚ   rY   )rÝ   rì   rí   rî   Úy_true_shuffleÚy_pred_shufflerñ   s          r   Útest_sample_order_invariancer    sÊ   € ô & aÓ(€LØ×!Ñ! ! Q¨UÐ!Ó3€FØ×!Ñ! ! Q¨UÐ!Ó3€FàÔ)Ñ)Ü2°6¸6ÓB‰ˆ‘Ø	Ô%Ñ	%Ü/°¸Ó?‰ˆ�ä%,¨V°VÈ!Ô%LÑ"€N�Nä	Ó	ñ 
Ü˜TÑ"ˆÜÙ�6˜6Ó"Ù�> >Ó2Ø6¸Ñ=õ	
÷
÷ 
ñ 
ús   Á>)B0Â0B9c                  ód  — t        d«      } | j                  ddd¬«      }| j                  ddd¬«      }| j                  |j                  ¬«      }||j	                  dd¬«      z  }t        |||d¬«      \  }}}t        D ]*  }t        |   }t         |||«       |||«      d	|z  ¬
«       Œ, t        D ]*  }t        |   }t         |||«       |||«      d	|z  ¬
«       Œ, t        D ]I  }t        |   }t         |||«       |||«      d	|z  ¬
«       t         |||«       |||«      d	|z  ¬
«       ŒK y )Nr   r†   rã   rá   rv   T©rx   Úkeepdimsr  r	  rå   )rd   rç   ÚuniformÚshaperz   rO   rë   rÚ   rY   ÚCONTINUOUS_MULTILABEL_METRICSÚMULTIOUTPUT_METRICS)	rì   rí   rî   Úy_scorer
  r  Úy_score_shufflerÝ   rñ   s	            r   Ú7test_sample_order_invariance_multilabel_and_multioutputr    si  € Ü% aÓ(€Lð ×!Ñ! ! Q¨XÐ!Ó6€FØ×!Ñ! ! Q¨XÐ!Ó6€FØ×"Ñ"¨¯©Ð"Ó5€Gð ˆw�{‰{ ¨Dˆ{Ó1Ñ1€Gä6=Ø�˜¨aô7Ñ3€N�N Oô $ò 
ˆÜ˜TÑ"ˆÜÙ�6˜6Ó"Ù�> >Ó2Ø6¸Ñ=ö	
ð
ô .ò 
ˆÜ˜TÑ"ˆÜÙ�6˜7Ó#Ù�> ?Ó3Ø6¸Ñ=ö	
ð
ô $ò 
ˆÜ˜TÑ"ˆÜÙ�6˜7Ó#Ù�> ?Ó3Ø6¸Ñ=õ	
ô
 	Ù�6˜6Ó"Ù�> >Ó2Ø6¸Ñ=ö	
ñ
r�   c                 ó<  — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }| t        v rt        ||«      \  }}n| t        v rt        ||«      \  }}t        |«      }t        |«      }t        j                  |«      t        j                  |«      }}t        |j                  d«       t        |j                  d«       t        j                  |d«      }t        j                  |d«      }	t        j                  |d«      }
t        j                  |d«      }t        «       5  t        |    } |||«      }t         |||«      |d| z  ¬	«       t         |||«      |d
| z  ¬	«       t         |||	«      |d| z  ¬	«       t         |||«      |d| z  ¬	«       t         |||«      |d| z  ¬	«       t         |||	«      |d| z  ¬	«       t         |||«      |d| z  ¬	«       t         |||	«      |d| z  ¬	«       t         |||«      |d| z  ¬	«       t        j                   t"        «      5   |||«       d d d «       t        j                   t"        «      5   ||
|«       d d d «       t        j                   t"        «      5   |||«       d d d «       t        j                   t"        «      5   ||
|«       d d d «       t        j                   t"        «      5   |||«       d d d «       t        j                   t"        «      5   ||
|	«       d d d «       | t$        t&        z  t(        z  vrqd| v rBt        j*                  t,        «      5  t/        j0                   ||
|«      «      sJ ‚	 d d d «       n+t        j                   t"        «      5   ||
|«       d d d «       d d d «       y # 1 sw Y   �ŒqxY w# 1 sw Y   �ŒSxY w# 1 sw Y   �Œ5x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   ŒjxY w# 1 sw Y   y xY w)Nr   r†   rß   rá   rv   )éÿÿÿÿrv   )rv   r  z,%s is not representation invariant with listrå   z3%s is not representation invariant with np-array-1dz7%s is not representation invariant with np-array-columnz@%s is not representation invariant with mix np-array-1d and listzK%s is not representation invariant with mix np-array-1d and np-array-columnzD%s is not representation invariant with mix list and np-array-columnÚroc_auc)rd   rç   rè   rÐ   ré   rÒ   Úlistr{   r°   r[   ÚndimÚreshaper]   rÚ   rY   r  r  rø   r  r  rë   Úwarnsr   ÚmathÚisnan)rÝ   rì   rÍ   rÎ   Úy1_listÚy2_listÚy1_1dÚy2_1dÚ	y1_columnÚ	y2_columnÚy1_rowÚy2_rowrñ   Úmeasures                 r   Ú&test_format_invariance_with_1d_vectorsr)  G  sø  € ô & aÓ(€LØ	×	Ñ	˜a ¨Ð	Ó	/€BØ	×	Ñ	˜a ¨Ð	Ó	/€BàÔ)Ñ)Ü*¨2¨rÓ2‰ˆ‰BØ	Ô%Ñ	%Ü'¨¨BÓ/‰ˆˆBä�2‹h€GÜ�2‹h€Gä—8‘8˜B“<¤§¡¨"£ˆ5€EÜ�u—z‘z 1Ô%Ü�u—z‘z 1Ô%Ü—
‘
˜5 'Ó*€IÜ—
‘
˜5 'Ó*€IÜ�Z‰Z˜˜wÓ'€FÜ�Z‰Z˜˜wÓ'€Fä	Ó	ñ f+Ü˜TÑ"ˆá˜˜R“.ˆäÙ�7˜GÓ$ØØBÀTÑIõ	
ô 	Ù�5˜%Ó ØØIÈDÑPõ	
ô 	Ù�9˜iÓ(ØØMÐPTÑTõ	
ô 	Ù�5˜'Ó"ØØVØñõ	
ô 	Ù�7˜EÓ"ØØVØñõ	
ô 	Ù�5˜)Ó$Øð2ð ñ	õ	
ô 	Ù�9˜eÓ$Øð2ð ñ	õ	
ô 	Ù�7˜IÓ&ØàVàñõ	
ô 	Ù�9˜gÓ&ØàVàñõ	
ô �]‰]œ:Ó&ñ 	"Ù�5˜&Ô!÷	"ä�]‰]œ:Ó&ñ 	"Ù�6˜5Ô!÷	"ä�]‰]œ:Ó&ñ 	$Ù�7˜FÔ#÷	$ä�]‰]œ:Ó&ñ 	$Ù�6˜7Ô#÷	$ä�]‰]œ:Ó&ñ 	&Ù�9˜fÔ%÷	&ä�]‰]œ:Ó&ñ 	&Ù�6˜9Ô%÷	&ð
 ÜÔ"?Ñ?ÔBUÑUñ
ð ˜DÑ ô —\‘\Ô"8Ó9ñ >ÜŸ:™:¡f¨V°VÓ&<Ô=Ð=Ñ=÷>ð >ô —]‘]¤:Ó.ñ +Ù˜6 6Ô*÷+÷Kf+ð f+÷Z	"ñ 	"ú÷	"ñ 	"ú÷	$ñ 	$ú÷	$ñ 	$ú÷	&ð 	&ú÷	&ð 	&ú÷>ð >ú÷+ð +ú÷Kf+ð f+úsÍ   Ä1DPÈ5
N.È?!PÉ 
N;É*!PÊ
OÊ!PÊ6
OË !PË!
O"Ë+!PÌ
O.Ì;PÍO:Í1"PÎ
PÎPÎ.N8	Î3PÎ;O	Ï PÏO	ÏPÏO	ÏPÏ"O+	Ï'PÏ.O7	Ï3PÏ:P	Ï?PÐP	ÐPÐPr   rñ   c                 óì   — d}t        j                  t        t        j                  |«      ¬«      5   | t        j                  g «      t        j                  g «      «       d d d «       y # 1 sw Y   y xY w)NzIFound empty input array (e.g., `y_true` or `y_pred`) while a minimum of 1rÿ   )r  r  rø   ÚreÚescaper{   r°   )rñ   Úmsgs     r   Ú0test_classification_metrics_raise_on_empty_inputr.  Î  sL   € à
U€CÜ	�‰”z¬¯©°3«Ô	8ñ +ÙŒr�x‰x˜‹|œRŸX™X b›\Ô*÷+÷ +ñ +ús   ±0A*Á*A3c                 óè  — t        d«      }d}|j                  dd|f¬«      }|j                  dd|f¬«      }|j                  |dz
  f¬«      }t        j                  t
        d¬«      5   | |||¬«       d d d «       |j                  |f¬«      }t        j                  |d<   t        j                  t
        d	¬«      5   | |||¬«       d d d «       t        j                  |d<   t        j                  t
        d
¬«      5   | |||¬«       d d d «       t        j                  g d¢«      }t        j                  t
        d¬«      5   | |d d |d d |¬«       d d d «       |j                  |dz  f¬«      j                  |df«      }t        j                  t
        d¬«      5   | |||¬«       d d d «       y # 1 sw Y   �ŒDx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á   rv   ú'Found input variables with inconsistentrÿ   ©Úsample_weightú%Input sample_weight contains infinityú Input sample_weight contains NaN©y      ð?       @y      @      @y      @      @úComplex data not supportedé   ú)Sample weights must be 1D array or scalar)rd   rç   Úrandom_sampler  r  rø   r{   Úinfr³   r°   r  )rñ   rì   Ú	n_samplesrÍ   rÎ   r2  s         r   Ú.test_classification_with_invalid_sample_weightr<  Õ  sÖ  € ô & aÓ(€LØ€IØ	×	Ñ	˜a ¨)¨Ð	Ó	6€BØ	×	Ñ	˜a ¨)¨Ð	Ó	6€Bà ×.Ñ.°YÀ±]Ð4DÐ.ÓE€MÜ	�‰”zÐ)RÔ	Sñ 4Ùˆr�2 ]Õ3÷4ð !×.Ñ.°Y°LÐ.ÓA€MÜ—v‘v€M�!ÑÜ	�‰”zÐ)PÔ	Qñ 4Ùˆr�2 ]Õ3÷4ô —v‘v€M�!ÑÜ	�‰”zÐ)KÔ	Lñ 4Ùˆr�2 ]Õ3÷4ô —H‘HÒ5Ó6€MÜ	�‰”zÐ)EÔ	Fñ <Ùˆr�"�1ˆv�r˜"˜1�v¨]Õ;÷<ð !×.Ñ.°YÀ±]Ð4DÐ.ÓE×MÑMØ	�Aˆó€Mô 
�‰”zÐ)TÔ	Uñ 4Ùˆr�2 ]Õ3÷4ð 4÷'4ñ 4ú÷
4ð 4ú÷4ð 4ú÷<ð <ú÷4ð 4ús<   Á)F7Â>GÄ GÅGÆ"G(Æ7GÇGÇGÇG%Ç(G1c                 ó@  — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }t        j                  ddg«      |   }t        j                  ddg«      |   }d}ddg}t	        «       5  t
        |    } |||«      }	|}
| t        v rt        |
|¬«      }
 |
||«      }t        |	|dj                  | «      ¬	«        |
|j                  d
«      |j                  d
«      «      }t        |	|dj                  | «      ¬	«       | t        v rwt        |
|¬«      }
 |
||«      }t        |	|dj                  | «      ¬	«        |
|j                  d
«      |j                  d
«      «      }t        |	|dj                  | «      ¬	«       d d d «       y # 1 sw Y   y xY w)Nr   r†   rß   rá   ÚeggsÚspam©Ú	pos_labelú+{0} failed string vs number invariance testrå   ÚOú2{0} failed string object vs number invariance test)Úlabelsz,{0} failed string vs number  invariance test)rd   rç   r{   r°   r]   ÚCLASSIFICATION_METRICSÚMETRICS_WITH_POS_LABELr   r[   Úformatry   ÚMETRICS_WITH_LABELS)rÝ   rì   rÍ   rÎ   Úy1_strÚy2_strÚpos_label_strÚ
labels_strrñ   Úmeasure_with_numberÚ
metric_strÚmeasure_with_strÚmeasure_with_strobjs                r   Ú7test_classification_invariance_string_vs_numbers_labelsrR  õ  s­  € ô
 & aÓ(€LØ	×	Ñ	˜a ¨Ð	Ó	/€BØ	×	Ñ	˜a ¨Ð	Ó	/€Bä�X‰X�v˜vÐ&Ó'¨Ñ+€FÜ�X‰X�v˜vÐ&Ó'¨Ñ+€Fà€MØ˜&Ð!€Jä	Ó	ñ &Ü'¨Ñ-ˆÙ$ R¨›nÐð ˆ
ØÔ)Ñ)Ü  °}ÔEˆJá% f¨fÓ5ÐäØØØA×HÑHÈÓNõ	
ñ )¨¯©°sÓ);¸V¿]¹]È3Ó=OÓPÐÜØØØH×OÑOÐPTÓUõ	
ð Ô&Ñ&Ü  °JÔ?ˆJÙ)¨&°&Ó9ÐÜØ#Ø ØF×MÑMÈdÓSõñ #-¨V¯]©]¸3Ó-?ÀÇÁÈsÓASÓ"TÐÜØ#Ø#ØF×MÑMÈdÓSõ÷E&÷ &ñ &ús   Á8DFÆFc                 óô  — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }t        j                  ddg«      |   }d}t	        «       5  t
        |    }| t        vr||}| t        v rt        ||¬«      } |||«      } |||«      }	t        ||	dj                  | «      ¬	«        ||j                  d
«      |«      }
t        ||
dj                  | «      ¬	«       net        j                  t        «      5   |||«       d d d «       t        j                  t        «      5   ||j                  d
«      |«       d d d «       d d d «       y # 1 sw Y   ŒLxY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   r†   rß   rá   r>  r?  r@  rB  rå   rC  rD  )rd   rç   r{   r°   r]   rØ   rê   rG  r   r[   rH  ry   r  r  rø   )rÝ   rì   rÍ   rÎ   rJ  rL  rñ   rO  rN  rP  rQ  s              r   ÚBtest_continuous_classification_invariance_string_vs_numbers_labelsrT  -  ss  € ô & aÓ(€LØ	×	Ñ	˜a ¨Ð	Ó	/€BØ	×	Ñ	˜a ¨Ð	Ó	/€Bä�X‰X�v˜vÐ&Ó'¨Ñ+€Fà€Mä	Ó	ñ /Ü2°4Ñ8ˆØÔ.Ñ.àˆJØÔ-Ñ-Ü$ Z¸=ÔI�
á"(¨¨R£.ÐÙ)¨&°"Ó5ÐÜØ#Ø ØE×LÑLÈTÓRõñ #-¨V¯]©]¸3Ó-?ÀÓ"DÐÜØ#Ø#ØL×SÑSØóöô —‘œzÓ*ñ #Ù�v˜rÔ"÷#ä—‘œzÓ*ñ /Ù�v—}‘} SÓ)¨2Ô.÷/÷9/ð /÷4#ð #ú÷/ð /ú÷9/ð /ús=   ÁB'E.Ä
EÄ!E.Ä,E"ÅE.ÅE	ÅE.Å"E+	Å'E.Å.E7rv   zy_true, y_scorec                 ó”   — | t         k(  r|g}|g}t        j                  t        d¬«      5   | ||«       d d d «       y # 1 sw Y   y xY w)Nzcontains (NaN|infinity)rÿ   )r   r  r  rø   )rñ   rí   r  s      r   Útest_continuous_inf_nan_inputrV  b  sH   € ð ”ÒØ�ˆØ�)ˆÜ	�‰”zÐ)CÔ	Dñ  Ùˆv�wÔ÷ ÷  ñ  ús	   «
>¾A)rv   r†   r7  c                 óv  — t        j                  |«      j                  «       s+d}t        j                  |«      j	                  «       rd}n-d}n*d}t        j                  |«      j	                  «       rd}nd}d|› d|› �}t        j                  t        |¬«      5   | ||«       ddd«       y# 1 sw Y   yxY w)	z{check that classification metrics raise a message mentioning the
    occurrence of non-finite values in the target vectors.rí   ÚNaNzinfinity or a value too largerî   zInput z
 contains rÿ   N)r{   ÚisfiniteÚallr  Úanyr  r  rø   )rñ   rí   r  Ú
input_nameÚunexpected_valueræ   s         r   Ú!test_classification_inf_nan_inputr^  p  s¦   € ô  �;‰;�vÓ×"Ñ"Ô$Øˆ
Ü�8‰8�FÓ×ÑÔ!Ø$Ñà>Ñàˆ
Ü�8‰8�GÓ× Ñ Ô"Ø$Ñà>Ðà�z�l *Ð-=Ð,>Ð?€Gä	�‰”z¨Ô	1ñ  Ùˆv�wÔ÷ ÷  ñ  ús   Â
B/Â/B8c                 óŠ   — g d¢g d¢}}d}t        j                  t        |¬«      5   | ||«       ddd«       y# 1 sw Y   yxY w)zocheck that classification metrics raise a message of mixed type data
    with continuous/binary target vectors.)ÚaÚbr`  ©rj   çš™™™™™É?ç333333Ó?zJClassification metrics can't handle a mix of binary and continuous targetsrÿ   N)r  r  rø   )rñ   rí   r  ræ   s       r   Ú+test_classification_binary_continuous_inputre  “  sD   € ò &¢ˆG€FàTð ô 
�‰”z¨Ô	1ñ  Ùˆv�wÔ÷ ÷  ñ  ús	   ¦
9¹Ac                 ó’   — t         |    }| t        v rddg}n| t        v rddg}nddg}t        |d¬«      D ]  \  }} ||g|g«       Œ y )Nrv   r†   gffffffæ¿r   ©Úrepeat)rÚ   rè   ré   r   )rÝ   rñ   ÚvaluesÚiÚjs        r   Úcheck_single_samplerl  Ÿ  se   € ô
 ˜Ñ€Fð Ô)Ñ)Ø�Q�‰Ø	Ô%Ñ	%Ø˜�‰à�Q�ˆÜ˜ qÔ)ò ‰ˆˆ1Ù�ˆs�Q�CÕñr�   c                 ó²   — t         |    }t        ddgd¬«      D ]<  \  }}}} |t        j                  ||gg«      t        j                  ||gg«      «       Œ> y )Nr   rv   é   rg  )rÚ   r   r{   r°   )rÝ   rñ   rj  rk  ÚkÚls         r   Úcheck_single_sample_multioutputrq  ±  sV   € Ü˜Ñ€FÜ˜q !˜f¨QÔ/ò 7‰
ˆˆ1ˆa�ÙŒr�x‰x˜!˜Q˜˜Ó!¤2§8¡8¨a°¨V¨HÓ#5Õ6ñ7r�   Úignorec                 ó   — t        | «       y rÔ   )rl  ©rÝ   s    r   Útest_single_sampleru  ¸  s   € ô ˜Õr�   c                 ó   — t        | «       y rÔ   )rq  rt  s    r   Útest_single_sample_multioutputrw  È  s   € ô $ DÕ)r�   c                 óü   — t        j                  g d¢g d¢g d¢g«      }t        j                  ddgddgddgg«      }t        |    }t        j                  t
        «      5   |||«       d d d «       y # 1 sw Y   y xY w)N)rv   r   r   rv   )r   rv   rv   rv   ©rv   rv   r   rv   r   rv   ©r{   r°   rÚ   r  r  rø   )rÝ   rí   rî   rñ   s       r   Ú(test_multioutput_number_of_output_differr{  Î  sm   € ä�X‰X’|¢\²<Ð@ÓA€FÜ�X‰X˜˜1�v  1˜v¨¨1 vÐ.Ó/€Fä˜Ñ€FÜ	�‰”zÓ	"ñ Ùˆv�vÔ÷÷ ñ ús   Á
A2Á2A;c           	      ó6  — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }t        |    } |||«      }t        d«      D ]F  }|j	                  |j
                  d   «      }t         ||d d …|f   |d d …|f   «      |d| z  ¬«       ŒH y )	Nr   r†   ©rà   rô   rá   r7  rv   z'%s is not dimension shuffling invariantrå   )rd   r  rÚ   rö   Úpermutationr  rY   )rÝ   rì   rí   rî   rñ   Úerrorrú   Úperms           r   Ú=test_multioutput_regression_invariance_to_dimension_shufflingr�  Ø  sª   € ô & aÓ(€LØ×!Ñ! ! Q¨WÐ!Ó5€FØ×!Ñ! ! Q¨WÐ!Ó5€Fä˜Ñ€FÙ�6˜6Ó"€Eä�1‹Xò 
ˆØ×'Ñ'¨¯©°Q©Ó8ˆÜÙ�6š!˜T˜'‘? Fª1¨d¨7¡OÓ4ØØ=ÀÑFö	
ñ
r�   z1ignore::sklearn.exceptions.UndefinedMetricWarningÚcoo_containerc                 óŽ  — d}d}t        d|d|d¬«      \  }}t        d|d|d¬«      \  }}t        j                  |dg|z  gg«      }t        j                  |dg|z  gg«      } | |«      } | |«      }t        |«      }t        |«      }	|D �
cg c]  }
t        |
«      ‘Œ }}
|	D �
cg c]  }
t        |
«      ‘Œ }}
t        D ]z  }t
        |   }t        |t        «      rd|_        ||_	         |||«      }t         |||«      |d|z  ¬	«       t         |||«      |d
|z  ¬	«       t         |||	«      |d|z  ¬	«       Œ| y c c}
w c c}
w )Nrn  é2   rv   r   T©Ú
n_featuresÚ	n_classesrì   r;  Úallow_unlabeledÚtmpzO%s failed representation invariance between dense and sparse indicator formats.rå   z\%s failed representation invariance  between dense array and list of list indicator formats.zW%s failed representation invariance  between dense and list of array indicator formats.)r
   r{   Úvstackr  rë   rÚ   Ú
isinstancer   Ú
__module__Ú__name__rY   rZ   )r‚  r‡  r;  rú   rÍ   rÎ   Úy1_sparse_indicatorÚy2_sparse_indicatorÚy1_list_array_indicatorÚy2_list_array_indicatorr`  Úy1_list_list_indicatorÚy2_list_list_indicatorrÝ   rñ   r(  s                   r   Ú)test_multilabel_representation_invariancer”  ë  sž  € ð €IØ€Iä*ØØØØØô�E€A€rô +ØØØØØô�E€A€rô 
�‰�B˜!˜˜y™Ð)Ð*Ó	+€BÜ	�‰�B˜!˜˜y™Ð)Ð*Ó	+€Bá'¨Ó+ÐÙ'¨Ó+Ðä" 2›hÐÜ" 2›hÐà/FÖG¨!œd 1�gÐGÐÐGØ/FÖG¨!œd 1�gÐGÐÐGä#ò '
ˆÜ˜TÑ"ˆô �fœgÔ&Ø %ˆFÔØ"ˆFŒOá˜˜R“.ˆô 	ÙÐ&Ð(;Ó<Øð6ð ñ	õ	
ô 	ÙÐ)Ð+AÓBØð%ð ñõ		
ô 	ÙÐ*Ð,CÓDØð%ð ñö		
ñ='
ùò HùÚGs   ÂD=Â%Ec           	      óè   — dgdgddggg d¢g gdgt        j                  g ddggd¬«      g}t        |    }|D ]-  }t        j                  t
        «      5   |||«       d d d «       Œ/ y # 1 sw Y   Œ:xY w)Nrv   r†   r   )rÛ   r†   )r   rv   rÛ   Úobject©Údtyperz  )rÝ   Úmultilabel_sequencesrñ   Úseqs       r   Ú+test_raise_value_error_multilabel_sequencesr›  8  sŒ   € ð ˆˆqˆc�A�q�6ÐÚØ	ˆØ	ˆÜ
�‰�"�q˜!�f� XÔ.ðÐô ˜Ñ€FØ#ò ˆÜ�]‰]œ:Ó&ñ 	Ù�3˜Ô÷	ð 	ñ÷	ð 	ús   Á
A(Á(A1	c                 óN  — d}d}t        d«      }|j                  d||f¬«      }|j                  d||f¬«      }|j                  |j                  ¬«      }t        |    }| t
        v r|n|} |||d¬«      }	 |||d¬«      }
t        d|	z  dd	¬
«       t        |	|
|z  d| › �¬
«       y )Nr†   rà   r   rá   Trq   Fç      ð¿ú0We failed to test correctly the normalize optionrå   úFailed with )rd   rç   r  r  rÚ   rØ   r\   rY   )rÝ   r‡  r;  rì   rí   rî   r  ÚmetricsÚpredÚmeasure_normalizedÚmeasure_not_normalizeds              r   Ú+test_normalize_option_binary_classificationr¤  I  sÎ   € ð €IØ€IÜ% aÓ(€Là×!Ñ! ! Y°i°\Ð!ÓB€FØ×!Ñ! ! Y°i°\Ð!ÓB€FØ×"Ñ"¨¯©Ð"Ó5€Gä˜$Ñ€GØÔ?Ñ?‰7ÀV€DÙ  ¨¸Ô>ÐÙ$ V¨T¸UÔCÐäØÐ!Ñ!Ø	ØBõô ØØ Ñ*Ø˜t˜fÐ%ör�   c                 ó°  — d}d}t        d«      }|j                  d||f¬«      }|j                  d||f¬«      }|j                  ||«      }t        j                  | «      }||j                  d¬«      j                  dd«      z  }t        |    }| t        v r|n|}	 |||	d¬	«      }
 |||	d
¬	«      }t        d|
z  dd¬«       t        |
||z  d| › �¬«       y )Nrn  rà   r   rá   r  rw   rv   Trq   Fr�  rž  rå   rŸ  )rd   rç   Úrandr{   Úexprz   r  rÚ   rØ   r\   rY   )rÝ   r‡  r;  rì   rí   rî   r  Útempr   r¡  r¢  r£  s               r   Ú/test_normalize_option_multiclass_classificationr©  f  sû   € ð €IØ€IÜ% aÓ(€Là×!Ñ! ! Y°i°\Ð!ÓB€FØ×!Ñ! ! Y°i°\Ð!ÓB€FØ×Ñ 	¨9Ó5€GÜ�6‰6�7�(Ó€DØ�T—X‘X 2�XÓ&×.Ñ.¨r°1Ó5Ñ5€Gä˜$Ñ€GØÔ?Ñ?‰7ÀV€DÙ  ¨¸Ô>ÐÙ$ V¨T¸UÔCÐäØÐ!Ñ!Ø	ØBõô ØØ Ñ*Ø˜t˜fÐ%ör�   c                 ój  — d}d}t        d«      }t        d|dd|¬«      \  }}t        d|dd|¬«      \  }}|j                  |j                  ¬«      }|dg|z  z  }|dg|z  z  }t        |    }| t
        v r|n|}	 |||	d¬«      }
 |||	d	¬«      }t        d
|
z  dd¬«       t        |
||z  d| › �¬«       y )Nrn  éd   r   rv   T)r†  r‡  rì   rˆ  r;  rá   rq   Fr�  rž  rå   rŸ  )rd   r
   r  r  rÚ   rØ   r\   rY   )rÝ   r‡  r;  rì   rú   rí   rî   r  r   r¡  r¢  r£  s               r   Ú/test_normalize_option_multilabel_classificationr¬  …  sþ   € ð
 €IØ€IÜ% aÓ(€Lô /ØØØØØô�I€A€vô /ØØØØØô�I€A€vð ×"Ñ"¨¯©Ð"Ó5€Gð ˆqˆc�I‰oÑ€FØ
ˆqˆc�I‰oÑ€Fä˜$Ñ€GØÔ?Ñ?‰7ÀV€DÙ  ¨¸Ô>ÐÙ$ V¨T¸UÔCÐäØÐ!Ñ!Ø	ØBõô ØØ Ñ*Ø˜t˜fÐ%ör�   c                 óø  — |j                   \  }} | ||d ¬«      }t        |t        |«      D �	cg c]  }	 | |d d …|	f   |d d …|	f   «      ‘Œ c}	«        | ||d¬«      }
t        |
 | |j                  «       |j                  «       «      «        | ||d¬«      }t        |t	        j
                  |«      «       t	        j                  |dt        ¬«      }t	        j                  |«      dk7  r- | ||d¬«      }t        |t	        j                  ||¬«      «       n | ||d¬«      }t        |d«       |rN | ||d¬«      }t        |t	        j
                  t        |«      D �	cg c]  }	 | ||	   ||	   «      ‘Œ c}	«      «       t        j                  t        «      5   | ||d	¬«       d d d «       t        j                  t        «      5   | ||d
¬«       d d d «       y c c}	w c c}	w # 1 sw Y   ŒAxY w# 1 sw Y   y xY w)Nr�   r–   r�   r   )rx   r˜  rŒ   )Úweightsr¡   ÚunknownÚgarbage)r  rY   rö   Úravelr{   Úmeanrz   ÚintrŽ   r  r  rø   )rñ   rí   rî   Úy_true_binarizeÚy_pred_binarizeÚis_multilabelr;  r‡  Úlabel_measurerj  Úmicro_measureÚmacro_measurer®  Úweighted_measureÚsample_measures                  r   Ú_check_averagingr¼  ·  sæ  € ð +×0Ñ0Ñ€Iˆyñ ˜6 6°4Ô8€MÜØô ˜9Ó%ö	
àñ �?¢1 a 4Ñ(¨/º!¸Q¸$Ñ*?Õ@ò	
ôñ ˜6 6°7Ô;€MÜØ‘v˜o×3Ñ3Ó5°×7LÑ7LÓ7NÓOôñ
 ˜6 6°7Ô;€MÜ�M¤2§7¡7¨=Ó#9Ô:ô �f‰f�_¨1´CÔ8€Gä	‡v�vˆgƒ˜!ÒÙ! &¨&¸*ÔEÐÜÐ(¬"¯*©*°]ÈGÔ*TÕUá! &¨&¸*ÔEÐÜÐ(¨!Ô,ñ Ù ¨¸	ÔBˆÜØÜ�G‰Gô # 9Ó-öàñ ˜?¨1Ñ-¨¸qÑ/AÕBòóô	
ô 
�‰”zÓ	"ñ 2Ùˆv�v yÕ1÷2ä	�‰”zÓ	"ñ 2Ùˆv�v yÕ1÷2ð 2ùòS	
ùò@÷2ð 2ú÷2ð 2ús#   ®G
ÅGÆG$ÇG0Ç$G-Ç0G9c                 óÂ   — t        |«      j                  d«      }t        |    }| t        v rt	        ||||||«       y | t
        v rt	        ||||||«       y t        d«      ‚)NÚ
multilabelz2Metric is not recorded as having an average option)rb   Ú
startswithrÚ   ÚMETRICS_WITH_AVERAGINGr¼  Ú0CONTINUOUS_CLASSIFICATION_METRICS_WITH_AVERAGINGrø   )rÝ   rí   r´  rî   rµ  r  r¶  rñ   s           r   Úcheck_averagingrÂ  í  sm   € Ü" 6Ó*×5Ñ5°lÓC€Mä˜Ñ€FàÔ%Ñ%ÜØ�F˜F O°_Àmõ	
ð 
ÔAÑ	AÜØ�F˜G _°g¸}õ	
ô ÐMÓNÐNr�   c                 ó6  — d\  }}t        d«      }|j                  d||f¬«      }|j                  d||f¬«      }|j                  ||f¬«      }t        «       j	                  |«      }|j                  |«      }|j                  |«      }	t        | ||||	|«       y )N)r„  r7  r   rá   )rd   rç   r  rN   ÚfitÚ	transformrÂ  )
rÝ   r;  r‡  rì   rí   rî   r  Úlbr´  rµ  s
             r   Útest_averaging_multiclassrÇ  þ  s¡   € à Ñ€IˆyÜ% aÓ(€LØ×!Ñ! ! Y°i°\Ð!ÓB€FØ×!Ñ! ! Y°i°\Ð!ÓB€FØ×"Ñ"¨°IÐ(>Ð"Ó?€Gä	Ó	×	Ñ	˜fÓ	%€BØ—l‘l 6Ó*€OØ—l‘l 6Ó*€Oä�D˜& /°6¸?ÈGÕTr�   c                 óª   — d\  }}t        d|d|d¬«      \  }}|d d }|dd  }t        d«      j                  d|f¬«      }|}|}	t        | ||||	|«       y )	N)é(   rô   rv   rô   Fr…  rà   r   rá   )r
   rd   ÚnormalrÂ  )
rÝ   r;  r‡  rú   Úyrí   rî   r  r´  rµ  s
             r   Útest_averaging_multilabelrÌ    s{   € ð
 !Ñ€IˆyÜ)ØØØØØô�D€A€qð ˆs�ˆV€FØˆrˆsˆV€FÜ  Ó#×*Ñ*°°Y°Ð*Ó@€GØ€OØ€Oä�D˜& /°6¸?ÈGÕTr�   c                 óª   — t        j                  d«      }t        j                  d«      }t        j                  d«      }|}|}t        | |||||«       y ©N©rà   r7  )r{   ÚzerosrÂ  ©rÝ   rí   rî   r  r´  rµ  s         r   Ú$test_averaging_multilabel_all_zeroesrÒ  #  sH   € ä�X‰X�gÓ€FÜ�X‰X�gÓ€FÜ�h‰h�wÓ€GØ€OØ€Oä�D˜& /°6¸?ÈGÕTr�   c                  óŠ   — t        j                  d«      } t        j                  d«      }| }|}dd„}t        || |||d¬«       y )NrÏ  c                 ó&   — t        t        | ||«      S rÔ   )r<   r3   )rí   r  rŽ   s      r   r€   z=test_averaging_binary_multilabel_all_zeroes.<locals>.<lambda>4  s   € Ô=RÜ˜ ¨'ó>€ r�   T)r¶  )r�   )r{   rÐ  r¼  )rí   rî   r´  rµ  Úbinary_metrics        r   Ú+test_averaging_binary_multilabel_all_zeroesrÖ  .  sK   € Ü�X‰X�gÓ€FÜ�X‰X�gÓ€FØ€OØ€Oò€Mô ØØØØØØör�   c                 óª   — t        j                  d«      }t        j                  d«      }t        j                  d«      }|}|}t        | |||||«       y rÎ  )r{   ÚonesrÂ  rÑ  s         r   Ú"test_averaging_multilabel_all_onesrÙ  A  sH   € ä�W‰W�WÓ€FÜ�W‰W�WÓ€FÜ�g‰g�gÓ€GØ€OØ€Oä�D˜& /°6¸?ÈGÕTr�   c                 óò  — t         j                  j                  d«      }|€|j                  ddt	        |«      ¬«      }| dk(  rt        |d¬«      n|} |||d ¬«      }t        | |||t        j                  t	        |«      ¬«      ¬«      d	| z  ¬
«        ||||¬«      }t        j                  t        «      5  t        ||«       t        d|›d|›d| ›�«      ‚# 1 sw Y   nxY w ||||j                  «       ¬«      }t        ||d|›d|›d| ›�¬
«        |t        j                  ||d¬«      t        j                  ||d¬«      d ¬«      }	t        ||	d| z  ¬
«       |dd d…   }
t        j                  |«      }d|d d d…<   |dd d…   }|dd d…   } ||||
¬«      } ||||¬«      }t        ||d|›d|›d| ›�¬
«       | t        vr/| dv rdgnddg}|D ]  }t        | |||||z  ¬«      d| z  ¬
«       Œ! dj!                  t#        |«      t#        |«      t#        |«      dz  «      }t        j                  t        |¬«      5   |||t        j$                  ||g«      ¬«       d d d «       y # 1 sw Y   y xY w)Nr   rv   é
   rá   r:   )ro  r1  )r  zAFor %s sample_weight=None is not equivalent to sample_weight=onesrå   z>Unweighted and weighted scores are unexpectedly almost equal (z) and (z) for zFWeighted scores for array and list sample_weight input are not equal (z != rw   z.Weighting %s is not equal to repeating samplesr†   zUZeroing weights does not give the same result as removing the corresponding samples (>   r7   r/   rd  z/%s sample_weight is not invariant under scalingzJFound input variables with inconsistent numbers of samples: \[{}, {}, {}\]rÿ   )r{   ÚrandomÚRandomStaterç   r¯   r   rY   rØ  r  r  r  rø   Útolistrh  ÚcopyÚWEIGHT_SCALE_DEPENDENT_METRICSrH  rc   Úhstack)rÝ   rñ   rÍ   rÎ   r2  ÚrngÚunweighted_scoreÚweighted_scoreÚweighted_score_listÚrepeat_weighted_scoreÚsample_weight_subsetÚsample_weight_zeroedÚ	y1_subsetÚ	y2_subsetÚweighted_score_subsetÚweighted_score_zeroedÚscaling_valuesÚscalingÚerror_messages                      r   Úcheck_sample_weight_invariancerð  L  s½  € Ü
�)‰)×
Ñ
 Ó
"€CØÐØŸ™ A r´°B³˜Ó8ˆð &*Ð-CÒ%CŒW�V˜qÕ!È€Fñ ˜b "°DÔ9ÐäØÙˆr�2¤R§W¡W´3°r³7Ô%;Ô<ØSØ
ñõñ ˜B °-Ô@€Nô 
�‰”~Ó	&ñ 
ÜÐ(¨.Ô9Ýò )ª.¹$ð@ó
ð 	
÷
ð 
úñ !  R°}×7KÑ7KÓ7MÔNÐÜØÙò
 Ò.±ð	6õñ #Ü
�	‰	�"�m¨!Ô,Ü
�	‰	�"�m¨!Ô,ØôÐô
 ØØØ@À4ÑGõð )¨¨¨A¨Ñ.ÐÜŸ7™7 =Ó1ÐØ !Ð™˜1˜ÑØ�1�4�a�4‘€IØ�1�4�a�4‘€IÙ"Ø�9Ð,@ôÐñ # 2 rÐ9MÔNÐÜØÙò
 !Ò"7¹ð	?õð Ô1Ñ1ð ÐAÑAˆQ‰CÈÈ3Àxð 	ð &ò 	ˆGÜØÙ�r˜2¨]¸WÑ-DÔEØIÈDÑPöð	ð	#ß#)¡6Ü˜Óœl¨2Ó.´¸]Ó0KÈaÑ0Oó$
ð ô 
�‰”z¨Ô	7ñ PÙˆr�2¤R§Y¡Y°¸}Ð/MÓ%NÕO÷P÷ Pñ Pús   Â9!CÃC#É!I-É-I6c                 óÖ   — d}t        d«      }|j                  |f¬«      }|j                  |f¬«      }t        j                  t	        |«      «      }t
        |    }t        | ||||«       y )Nr„  r   rá   )rd   r9  r{   Úaranger¯   rÚ   rð  )rÝ   r;  rì   rí   rî   r2  rñ   s          r   Ú(test_regression_sample_weight_invarianceró  ´  si   € ð €IÜ% aÓ(€Là×'Ñ'¨i¨\Ð'Ó:€FØ×'Ñ'¨i¨\Ð'Ó:€FÜ—I‘Iœc &›kÓ*€MÜ˜Ñ€Fä" 4¨°¸ÀÕOr�   c                 óò  — d}t        d«      }|j                  |f¬«      }|j                  |f¬«      }t        |    }|j                  |dz
  f¬«      }t        j                  t
        d¬«      5   ||||¬«       d d d «       |j                  |f¬«      }t        j                  |d<   t        j                  t
        d¬«      5   ||||¬«       d d d «       t        j                  |d<   t        j                  t
        d	¬«      5   ||||¬«       d d d «       t        j                  g d
¢«      }t        j                  t
        d¬«      5   ||d d |d d |¬«       d d d «       |j                  |dz  f¬«      j                  |df«      }t        j                  t
        d¬«      5   ||||¬«       d d d «       y # 1 sw Y   �ŒDx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á   rv   r0  rÿ   r1  r3  r4  r5  r6  r7  r†   r8  )rd   r9  rÚ   r  r  rø   r{   r:  r³   r°   r  )rÝ   r;  rì   rí   rî   rñ   r2  s          r   Ú*test_regression_with_invalid_sample_weightrõ  É  sÜ  € ð €IÜ% aÓ(€LØ×'Ñ'¨i¨\Ð'Ó:€FØ×'Ñ'¨i¨\Ð'Ó:€FÜ˜Ñ€Fà ×.Ñ.°YÀ±]Ð4DÐ.ÓE€MÜ	�‰”zÐ)RÔ	Sñ <Ùˆv�v¨]Õ;÷<ð !×.Ñ.°Y°LÐ.ÓA€MÜ—v‘v€M�!ÑÜ	�‰”zÐ)PÔ	Qñ <Ùˆv�v¨]Õ;÷<ô —v‘v€M�!ÑÜ	�‰”zÐ)KÔ	Lñ <Ùˆv�v¨]Õ;÷<ô —H‘HÒ5Ó6€MÜ	�‰”zÐ)EÔ	Fñ DÙˆv�b�qˆz˜6 " 1˜:°]ÕC÷Dð !×.Ñ.°YÀ±]Ð4DÐ.ÓE×MÑMØ	�Aˆó€Mô 
�‰”zÐ)TÔ	Uñ <Ùˆv�v¨]Õ;÷<ð <÷'<ñ <ú÷
<ð <ú÷<ð <ú÷Dð Dú÷<ð <ús<   Á.F<ÃG	ÄGÅG!Æ'G-Æ<GÇ	GÇGÇ!G*Ç-G6c                 ó  — d}t        d«      }|j                  dd|f¬«      }|j                  dd|f¬«      }|j                  |f¬«      }t        |    }| t        t
        j                  «       z  v rt        | |||«       y t        | |||«       y )Nr„  r   r†   rá   )rd   rç   r9  rÚ   rØ   ÚCURVE_METRICSÚkeysrð  )rÝ   r;  rì   rí   rî   r  rñ   s          r   Ú$test_binary_sample_weight_invariancerù  ñ  s—   € ð €IÜ% aÓ(€LØ×!Ñ! ! Q¨i¨\Ð!Ó:€FØ×!Ñ! ! Q¨i¨\Ð!Ó:€FØ×(Ñ(¨y¨lÐ(Ó;€GÜ˜Ñ€FØÔ1´M×4FÑ4FÓ4HÑHÑIÜ& t¨V°V¸WÕEä& t¨V°V¸VÕDr�   c                 ól  — d}t        d«      }|j                  dd|f¬«      }|j                  dd|f¬«      }|j                  |df¬«      }t        |    }| t        v rJt        j                  | «      }||j                  d¬«      j                  dd«      z  }t        | |||«       y t        | |||«       y )Nr„  r   rô   rá   r  rw   rv   )
rd   rç   r9  rÚ   rØ   r{   r§  rz   r  rð  )	rÝ   r;  rì   rí   rî   r  rñ   r¨  Úy_score_norms	            r   Ú(test_multiclass_sample_weight_invariancerü    s½   € ð €IÜ% aÓ(€LØ×!Ñ! ! Q¨i¨\Ð!Ó:€FØ×!Ñ! ! Q¨i¨\Ð!Ó:€FØ×(Ñ(¨y¸!¨nÐ(Ó=€GÜ˜Ñ€FØÔ0Ñ0ä�v‰v�w�hÓˆØ˜dŸh™h¨B˜hÓ/×7Ñ7¸¸AÓ>Ñ>ˆÜ& t¨V°V¸\ÕJä& t¨V°V¸VÕDr�   c                 ó‚  — t        d«      }t        ddddd¬«      \  }}t        ddddd¬«      \  }}t        j                  ||g«      }t        j                  ||g«      }|j	                  |j
                  ¬«      }||j                  dd¬	«      z  }t        |    }| t        v rt        | |||«       y t        | |||«       y )
Nr   rv   rÛ  r„  Fr…  rá   Tr  )
rd   r
   r{   rŠ  r  r  rz   rÚ   rØ   rð  )	rÝ   rì   rú   ÚyaÚybrí   rî   r  rñ   s	            r   Ú(test_multilabel_sample_weight_invariancer   "  sÉ   € ô & aÓ(€LÜ*Ø °¸bÐRWô�E€A€rô +Ø °¸bÐRWô�E€A€rô �Y‰Y˜˜B�xÓ €FÜ�Y‰Y˜˜B�xÓ €FØ×"Ñ"¨¯©Ð"Ó5€Gð ˆw�{‰{ ¨Dˆ{Ó1Ñ1€Gä˜Ñ€FØÔ0Ñ0Ü& t¨V°V¸WÕEä& t¨V°V¸VÕDr�   c                 ó˜   — t        d«      }|j                  ddd¬«      }|j                  ddd¬«      }t        |    }t        | |||«       y )Nr   r†   r}  rá   )rd   r  rÚ   rð  )rÝ   rì   rí   rî   rñ   s        r   Ú)test_multioutput_sample_weight_invariancer  @  sT   € ô
 & aÓ(€LØ×!Ñ! ! Q¨WÐ!Ó5€FØ×!Ñ! ! Q¨WÐ!Ó5€Fä˜Ñ€FÜ" 4¨°¸Õ@r�   c                  óò  — t        j                  g d¢g d¢g«      } t        j                  g d¢g d¢g«      }t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g d¢«      }t        j                  |d¬«      \  }}t        D ]Y  }||g| |gfD ]L  \  }}	|t        vr|	j
                  d	kD  rŒt        |   }
 |
||	|d ¬
«      } |
||	d ¬«      }t        |||   «       ŒN Œ[ y )N)rv   rv   r   r   ©r   r   rv   rv   )r   rv   rv   r   )r   rv   r†   )r   r†   r7  )r7  r   rv   r†   T)Úreturn_inverserv   )rE  rŽ   r�   )r{   r°   ÚuniquerÀ  rë   r  rÚ   r[   )Úy_true_multilabelÚy_pred_multilabelÚy_true_multiclassÚy_pred_multiclassrE  rú   Úinverse_labelsrÝ   rí   rî   rñ   Úscore_labelsÚscores                r   Útest_no_averaging_labelsr  M  sö   € ô Ÿ™¢,²Ð!=Ó>ÐÜŸ™¢,²Ð!=Ó>ÐÜŸ™¢Ó+ÐÜŸ™¢Ó+ÐÜ�X‰X’lÓ#€FÜŸ	™	 &¸Ô>Ñ€A€~ä&ò DˆàÐ 1Ð2ØÐ 1Ð2ð
ò 	D‰NˆF�Fð Ô.Ñ.°6·;±;À²?Øä  Ñ&ˆFá! &¨&¸ÈÔNˆLÙ˜6 6°4Ô8ˆEÜ˜|¨U°>Ñ-BÕCñ	DñDr�   c                 ó"  — t        d«      }d\  }}|j                  dd||f¬«      }|j                  dd||f¬«      }t        |    } |||«      }t        t	        |«      |«      D ])  }|d d …|f   }	|d d …|f   }
 ||
|	«      }t        ||«       Œ+ y )Nr   ©rà   rn  r†   rá   )rd   rç   rÚ   r   rö   rZ   ©rÝ   rì   r;  r‡  rí   r  rñ   r  r€  Úy_score_permÚy_true_permÚcurrent_scores               r   Ú-test_multilabel_label_permutations_invariancer  f  s²   € ô & aÓ(€LØ Ñ€Iˆyà×!Ñ! ! Q¨i¸Ð-CÐ!ÓD€FØ×"Ñ" 1 a¨y¸)Ð.DÐ"ÓE€Gä˜Ñ€FÙ�6˜7Ó#€EäœU 9Ó-¨yÓ9ò 2ˆØšq $˜wÑ'ˆØšQ ˜W‘oˆá˜{¨LÓ9ˆÜ˜E =Õ1ñ2r�   c                 ó  — t        d«      }d\  }}|j                  dd||f¬«      }|j                  |j                  ¬«      }||j	                  dd¬«      z  }d||j	                  d«      dk(  df<   d||j	                  d«      dk(  df<   t
        |    } |||«      }t        t        |«      |«      D ]Q  }|d d …|f   }	|d d …|f   }
 ||
|	«      }|t        k(  rt        j                  |«      sJ ‚|d	kD  rŒDJ ‚t        ||«       ŒS y )
Nr   r  r†   rá   rv   Tr  rn  g    €„.A)rd   rç   r  r  rz   rÚ   r   rö   r(   r{   rY  rZ   r  s               r   Ú>test_continuous_multilabel_multioutput_permutations_invariancer  {  s+  € ô & aÓ(€LØ Ñ€IˆyØ×!Ñ! ! Q¨i¸Ð-CÐ!ÓD€FØ×"Ñ"¨¯©Ð"Ó5€Gð ˆw�{‰{ ¨Dˆ{Ó1Ñ1€Gð %&€Fˆ6�:‰:�a‹=˜AÑ˜qÐ Ñ!Ø$%€Fˆ6�:‰:�a‹=˜AÑ˜qÐ Ñ!ä˜Ñ€FÙ�6˜7Ó#€EäœU 9Ó-¨yÓ9ò 6ˆØšq $˜wÑ'ˆØšQ ˜W‘oˆá˜{¨LÓ9ˆØÔ3Ò3Ü—;‘;˜}Ô-Ð-Ð-Ø  3Ó&Ð&Ð&ô    }Õ5ñ6r�   c                 ó  — d\  }}t        d«      }|j                  ||«      }t        j                  | «      }||j	                  d¬«      j                  dd«      z  }|j                  d||¬«      }t        |    } |||«      }t        t        |«      |«      D ]r  }	t        j                  |t        ¬«      }
t        j                  |«      |
t        |	«      <   |d d …|
f   }t        j                  |	|«      } |||«      }t        ||«       Œt y )N)r«  r7  r   r  rw   rv   rá   r—  )rd   r¦  r{   r§  rz   r  rç   rÚ   r   rö   rÐ  r³  rò  r  ÚtakerZ   )rÝ   r;  r‡  rì   r  r¨  rí   rñ   r  r€  Úinverse_permr  r  r  s                 r   Ú-test_continuous_metric_permutation_invariancer  Ÿ  sÿ   € ð
 "Ñ€IˆyÜ% aÓ(€Là×Ñ 	¨9Ó5€GÜ�6‰6�7�(Ó€DØ�T—X‘X 2�XÓ&×.Ñ.¨r°1Ó5Ñ5€GØ×!Ñ! ! Y°YÐ!Ó?€Fä˜Ñ€FÙ�6˜7Ó#€EÜœU 9Ó-¨yÓ9ò 2ˆÜ—x‘x 	´Ô5ˆÜ#%§9¡9¨YÓ#7ˆ”T˜$“ZÑ Øšq ,˜Ñ/ˆÜ—g‘g˜d FÓ+ˆá˜{¨LÓ9ˆÜ˜E =Õ1ñ2r�   rÍ   r?  r7  r>  r—  Úmetric_namec                 óð   — t         j                  j                  d«      }d}|j                  dd|¬«      }d}t	        j
                  t        |¬«      5  t        |   | |«       d d d «       y # 1 sw Y   y xY w)Né*   rô   r   r†   rá   z.Mix of label input types \(string and number\)rÿ   )r{   rÜ  rÝ  rç   r  r  rø   rF  )rÍ   r  râ  r;  rÎ   ræ   s         r   Ú"test_metrics_consistent_type_errorr  ¸  sh   € ô �)‰)×
Ñ
 Ó
#€CØ€Ià	�‰�Q˜ 	ˆÓ	*€Bà?€GÜ	�‰”z¨Ô	1ñ 4Ü˜{Ñ+¨B°Ô3÷4÷ 4ñ 4ús   ÁA,Á,A5zmetric, y_pred_thresholdÚdtype_y_strc                 óô  — t         j                  j                  d«      }t        j                  dgdz  dgdz  z   |¬«      }|j	                  dd|j
                  ¬«      }|st        j                  ddg|¬«      |   }d	}t        j                  d
«      }t        | «      j                  d   j                  }|dk(  r|n|}	t        j                  t        |	¬«      5   | ||«       d d d «       y # 1 sw Y   y xY w)Nr  r?  r7  r>  r†   r—  r   rá   z”y_true takes value in {'eggs', 'spam'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitzEpos_label=1 is not a valid label. It should be one of ['eggs' 'spam']rA  rv   rÿ   )r{   rÜ  rÝ  r°   rç   râ   r+  r,  r   Ú
parametersÚdefaultr  r  rø   )
rñ   Úy_pred_thresholdr   râ  rÍ   rÎ   Úerr_msg_pos_label_NoneÚerr_msg_pos_label_1Úpos_label_defaultræ   s
             r   Ú test_metrics_pos_label_error_strr(  Î  sæ   € ô$ �)‰)×
Ñ
 Ó
#€CÜ	�‰�6�(˜Q‘, & ¨A¡Ñ-°[Ô	A€BØ	�‰�Q˜ §¡ˆÓ	(€BáÜ�X‰X�v˜vÐ&¨kÔ:¸2Ñ>ˆð	"ð ô
 Ÿ)™)ØOóÐô " &Ó)×4Ñ4°[ÑA×IÑIÐà%6¸!Ò%;Ñ!ÐAW€GÜ	�‰”z¨Ô	1ñ Ùˆr�2Œ÷÷ ñ ús   Ã
C.Ã.C7c                 ó  ‡‡‡— t        ||‰«      \  Š}‰j                  ||¬«      }‰j                  ||¬«      }	 | ||fi |¤Ž}
|j                  d«      �‰j                  |d   |¬«      |d<   |j                  d«      }t        |t        j
                  «      r‰j                  ||¬«      |d<   	 t	        j                  |«       t	        j                  |	«       d}dˆˆfd„	Šdˆfd„	}|r¨ | ||	fi |¤Ž}t        |
t        «      r_t        t        |
D �cg c]  }|j                  ‘Œ c}«      «      dkD  r0 |||
«        | ||	fi |¤Ž} |||
«        | ||fi |¤Ž} |||
«       n/ ‰||
«        | ||	fi |¤Ž} ‰||
«        | ||fi |¤Ž} ‰||
«       t        d¬	«      5   | ||	fi |¤Ž}t        |t        «      r |||
d¬
«       n ‰||
d¬
«       d d d «       y # t        t        t        f$ r d}Y �Œw xY wc c}w # 1 sw Y   y xY w)NrV   r2  rf   TFc                 óz   •— |r!t        ‰j                  | «      t        d¬«      } t        | |t	        ‰«      ¬«       y )NÚcpu)ÚxprW   )Úatol)rS   Úasarrayr{   rY   rP   )Úmetric_aÚmetric_bÚ	convert_aÚ
dtype_namer,  s      €€r   Ú_check_metric_matchesz5check_array_api_metric.<locals>._check_metric_matches  s.   ø€ ÙÜ˜rŸz™z¨(Ó3¼À5ÔIˆHÜ˜ (´À
Ó1KÖLr�   c                 óD   •— t        | |«      D ]  \  }} ‰|||¬«       Œ y )N©r1  )Úzip)r/  r0  r1  Úmetric_a_valÚmetric_b_valr3  s        €r   Ú_check_each_metric_matchesz:check_array_api_metric.<locals>._check_each_metric_matches  s,   ø€ Ü*-¨h¸Ó*Aò 	SÑ&ˆL˜,Ù! ,°È	ÖRñ	Sr�   rv   ©Úarray_api_dispatchr5  )F)rX   r.  Úgetr‹  r{   ÚndarrayÚ	TypeErrorÚRuntimeErrorrø   Útupler¯   r×   r  r	   )rñ   Úarray_namespaceÚdevice_namer2  Úa_npÚb_npÚmetric_kwargsrW   Úa_xpÚb_xpÚ	metric_nprf   Únumpy_as_array_worksr9  Ú	metric_xpÚ
metric_valÚmetric_xp_mixed_1Úmetric_xp_mixed_2r3  r,  s      `              @@r   Úcheck_array_api_metricrN  ÷  s6  ú€ ô & o°{ÀJÓO�J€Bˆà�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dá�t˜TÑ3 ]Ñ3€Ià×Ñ˜Ó)Ð5Ø)+¯©Ø˜/Ñ*°6ð *4ó *
ˆ�oÑ&ð  ×#Ñ# MÓ2€KÜ�+œrŸz™zÔ*Ø')§z¡z°+Àf zÓ'Mˆ�mÑ$ð	%Ü
�
‰
�4ÔÜ
�
‰
�4ÔØ#ÐöMõ
Sñ Ù˜4 Ñ7¨Ñ7ˆ	ô
 �y¤%Ô(Ü”C¸IÖF¨j˜×)Ó)ÒFÓGÓHÈ1ÒLá& y°)Ô<á & t¨TÑ C°]Ñ CÐÙ&Ð'8¸)ÔDá & t¨TÑ C°]Ñ CÐÙ&Ð'8¸)ÕDñ " )¨YÔ7á & t¨TÑ C°]Ñ CÐÙ!Ð"3°YÔ?á & t¨TÑ C°]Ñ CÐÙ!Ð"3°YÔ?ä	¨4Ô	0ñ HÙ˜4 Ñ7¨Ñ7ˆ	ô �i¤Ô'Ù& y°)ÀtÖLá! )¨YÀ$ÕG÷Hð HøôU ”|¤ZÐ0ò %ð
  %Óð%üò. G÷&Hð Hús$   Â0,G ÄG7Æ2G<ÇG4Ç3G4Ç<Hc                 ó  — t        j                  g d¢«      }t        j                  g d¢«      }i }| j                  dk(  rddi}t        | |||f||d dœ|¤Ž t        j                  g d¢|¬«      }t        | |||f|||dœ|¤Ž y )	Nr  ©r   rv   r   rv   r   r‡   r‰   ©rC  rD  r2  ©ç        rj   ç       @ç      ð?r—  )r{   r°   r�  rN  )rñ   rA  rB  r2  Ú	y_true_npÚ	y_pred_nprE  r2  s           r   Ú,check_array_api_binary_classification_metricrX  F  s©   € ô —‘šÓ&€IÜ—‘šÓ&€Ià€MØ‡�˜-Ò'Ø ˜ˆäØØØØð		ð
 ØØñ	ð ò	ô —H‘HÒ1¸ÔD€MäØØØØð		ð
 ØØ#ñ	ð ó	r�   c                 óv  — t        j                  g d¢«      }t        j                  g d¢«      }| j                  dk(  r#t        j                  g d¢g d¢g d¢g d¢g|¬«      }d	d
ddœ}t        | |¬«      }|D ]A  }t	        | |||f||d dœ|¤Ž t        j                  g d¢|¬«      }	t	        | |||f|||	dœ|¤Ž ŒC y )N©r   rv   r†   r7  )r   rv   r   r†   r   )çffffffæ?rc  çš™™™™™©?r\  )rj   çš™™™™™é?r\  r\  ©rj   rj   r[  rj   )r\  r\  rj   r]  r—  ©r–   r�   rŒ   ©rc  r‰   r]  )FT)rŽ   r‡   ro   ©rñ   ÚparamsrQ  rR  )r{   r°   r�  Ú(_get_metric_kwargs_for_array_api_testingrN  ©
rñ   rA  rB  r2  rV  rW  Úadditional_paramsÚmetric_kwargs_combinationsrE  r2  s
             r   Ú0check_array_api_multiclass_classification_metricrg  i  sø   € ô —‘šÓ&€IÜ—‘šÓ&€Ià‡�Ð3Ò3ä—H‘Hâ&Ú&Ú$Ú&ð	ð ô
ˆ	ð 2ØØ!ñÐô
 "JØØ ô"Ðð 4ò 
ˆÜØØØØð			
ð
 ØØñ		
ð ò		
ô Ÿ™Ò!5¸ZÔHˆäØØØØð			
ð
 ØØ'ñ		
ð ó		
ñ
r�   c                 ó4  — t        j                  ddgddgddgg|¬«      }t        j                  ddgddgddgg|¬«      }dddœ}t        | |¬«      }|D ]A  }t        | |||f||d dœ|¤Ž t        j                  g d	¢|¬«      }	t        | |||f|||	dœ|¤Ž ŒC y )
Nrv   r   r—  r_  r`  r�   ra  rQ  )rS  rj   rT  )r{   r°   rc  rN  rd  s
             r   Ú0check_array_api_multilabel_classification_metricri  ž  sí   € ô —‘˜1˜a˜& 1 a &¨1¨a¨&Ð1¸ÔD€IÜ—‘˜1˜a˜& 1 a &¨1¨a¨&Ð1¸ÔD€Ið 2ØñÐô "JØØ ô"Ðð 4ò 
ˆÜØØØØð			
ð
 ØØñ		
ð ò		
ô Ÿ™¢¸
ÔCˆäØØØØð			
ð
 ØØ'ñ		
ð ó		
ñ
r�   c           	      óÞ   — t        j                  g d¢«      }t        j                  g d¢|¬«      }t        | |||||d ¬«       t        j                  g d¢|¬«      }t        | ||||||¬«       y )N©rv   r   rv   r   ©r‰   rc  r[  ç333333ã?r—  rQ  ©rv   r†   r7  rv   ©r{   r°   rN  ©rñ   rA  rB  r2  rV  Ú	y_prob_npr2  s          r   Ú7check_array_api_binary_continuous_classification_metricrr  Æ  so   € ô —‘šÓ&€IÜ—‘Ò-°ZÔ@€IäØØØØØØØõô —H‘Hš\°Ô<€MÜØØØØØØØ#ör�   c           	      óò   — t        j                  g d¢«      }t        j                  g d¢g d¢g d¢g d¢g|¬«      }t        | |||||d ¬«       t        j                  g d¢|¬«      }t        | ||||||¬«       y )	NrZ  ©r‰   rc  rc  rj   ©çš™™™™™Ù?rv  rj   rj   r^  ©rj   rc  rm  rj   r—  rQ  rn  ro  rp  s          r   Ú;check_array_api_multiclass_continuous_classification_metricrx  â  s„   € ô —‘šÓ&€IÜ—‘â Ú Ú Ú ð		
ð ô€Iô ØØØØØØØõô —H‘Hš\°Ô<€MäØØØØØØØ#ör�   c           	      ó
  — t        j                  g d¢g d¢g d¢g d¢g|¬«      }t        j                  g d¢g d¢g d¢g d	¢g|¬«      }t        | |||||d ¬
«       t        j                  g d¢|¬«      }t        | ||||||¬
«       y )Nr  rk  )r   rv   r   r   ry  r—  )g333333Ã?gHáz®GÑ?gq=
×£pÝ?g¸…ëQ¸¾?)g…ëQ¸Õ?gR¸…ëQØ?ç¸…ëQ¸®?gq=
×£pÍ?)rz  gìQ¸…ëÑ?g¸…ëQ¸ž?g)\�Âõ(ä?)gìQ¸…ëÁ?g×£p=
×Ó?g¤p=
×£Ð?g�Âõ(\�Ò?rQ  rn  ro  )rñ   rA  rW   r2  rV  rq  r2  s          r   Ú;check_array_api_multilabel_continuous_classification_metricr{  	  sœ   € ô —‘âÚÚÚð		
ð ô€Iô —‘â$Ú$Ú$Ú$ð		
ð ô€Iô ØØØØØØØõô —H‘Hš\°Ô<€MäØØØØØØØ#ör�   c                 óî  — t        | t        «      r| j                  j                  n| j                  }|dk(  r't        t        d«      k  rt        j                  d«       t        j                  g d¢|¬«      }t        j                  g d¢|¬«      }i }t        | «      j                  }d|v rd |d<   t        | |||f||dœ|¤Ž d|v r/t        j                  g d	¢|¬«      |d<   t        | |||f||dœ|¤Ž y y )
Nr+   z1.14.0zJmean_poisson_deviance's dependency `xlogy` is available as of scipy 1.14.0)rT  rj   rU  ç      @r—  )r‰   r‰   r†   r†   r2  ©rC  rD  )rj   rT  ç      ø?r‰   )r‹  r   Úfuncr�  ra   r`   r  Úskipr{   r°   r   r"  rN  )	rñ   rA  rB  r2  Ú	func_namerV  rW  rE  Úmetric_paramss	            r   Ú!check_array_api_regression_metricr„  4	  s  € Ü(2°6¼7Ô(C�—‘×$Ò$ÈÏÉ€IØÐ+Ò+´
¼]È8Ó=TÒ0TÜ�‰ØXô	
ô —‘Ò-°ZÔ@€IÜ—‘Ò)°Ô<€Ià€MÜ˜fÓ%×0Ñ0€Mà˜-Ñ'Ø)-ˆ�oÑ&äØØØØð	ð
 Øñð òð ˜-Ñ'Ü)+¯©Ú ¨
ô*
ˆ�oÑ&ô 	ØØØØð		
ð
 Øñ	
ð ó	
ð (r�   c                 óh  — t        j                  g d¢g d¢g|¬«      }t        j                  g d¢g d¢g|¬«      }t        | |||||d ¬«       t        j                  ddg|¬«      }t        | ||||||¬«       t        | |||||t        j                  g d	¢|¬«      ¬
«       t        | |||||d¬
«       y )N)rv   r7  r†   )rv   r†   r†   r—  )rv   rn  rn  )rv   rv   rv   rQ  rj   rT  )rj   rd  r[  )rC  rD  rf   Ú
raw_valuesro  )rñ   rA  rB  r2  rV  rW  r2  s          r   Ú-check_array_api_regression_metric_multioutputr‡  ^	  sÇ   € ô —‘š)¢YÐ/°zÔB€IÜ—‘š)¢YÐ/°zÔB€IäØØØØØØØõô —H‘H˜c 3˜Z¨zÔ:€MäØØØØØØØ#õô ØØØØØØÜ—H‘Hš_°JÔ?õô ØØØØØØØ ör�   c                 ó  — t        j                  g d¢g d¢g|¬«      }t        j                  g d¢g d¢g|¬«      }i }dt        | «      j                  v rd|d<   t	        | |||f||dœ|¤Ž d	|d<   t	        | |||f||dœ|¤Ž y )
Nrb  )rv  r‰   rm  r—  )rc  rd  rv  )r‰   rm  r[  Údense_outputFr~  T)r{   r°   r   r"  rN  )rñ   rA  rB  r2  ÚX_npÚY_nprE  s          r   Úcheck_array_api_metric_pairwiserŒ  �	  s°   € Ü�8‰8’_¢oÐ6¸jÔI€DÜ�8‰8’_¢oÐ6¸jÔI€Dà€MØœ 6Ó*×5Ñ5Ñ5Ø(-ˆ�nÑ%ÜØØØØð		
ð
 Øñ	
ð ò	
ð )-ˆ�nÑ%äØØØØð	ð
 Øñð ór�   g      à¿r  c              #   óV   K  — | j                  «       D ]  \  }}|D ]  }||f–— Œ
 Œ y ­wrÔ   )Úitems)Úmetric_checkersrñ   ÚcheckersÚcheckers       r   Ú!yield_metric_checker_combinationsr’  Y
  s<   è ø€ Ø+×1Ñ1Ó3ò "Ñˆ�Øò 	"ˆGØ˜'�/Ó!ñ	"ñ"ùs   ‚')z(array_namespace, device_name, dtype_namezmetric, check_funcc                 ó   —  || |||«       y rÔ   rÛ   )rñ   rA  rB  r2  Ú
check_funcs        r   Útest_array_api_compliancer•  _
  s   € ñ ˆv�¨°ZÕ@r�   c                 ó  — t        | t        «      rt        |t        «      sJ ‚y t        | d«      r;t        |d«      sJ ‚t        |«      d   |k(  sJ ‚t	        |«      t	        |«      k(  sJ ‚y t        | t
        «      rt        |t
        «      sJ ‚y y )Nr  r   )r‹  ru   ÚhasattrrR   Úarray_api_deviceÚstr)Úout_npÚout_xpÚxp_toÚy2_xps       r   Ú_check_outputrž  j
  s†   € Ü�&œ%Ô Ü˜&¤%Ô(Ð(Ñ(Ü	�˜Ô	!Ü�v˜wÔ'Ð'Ð'Ü˜VÓ$ QÑ'¨5Ò0Ð0Ð0Ü Ó'Ô+;¸EÓ+BÒBÐBÑBä	�FœCÔ	 Ü˜&¤#Ô&Ð&Ñ&ð 
!r�   z)other_ns_and_device, y_pred_ns_and_deviceÚidc           	      óp  — t        |j                  |j                  ¬«      \  }}t        |j                  |j                  ¬«      \  }}t        |    }g d¢g d¢fg d¢g d¢fg d¢gg d¢gfg d¢g d¢fg d¢g d	¢fd
œ}g d¢}	d„ }
| t        v rdg}n,| i t
        ¥t        ¥v r| t        vrdg}ndg}n| t        v rddg}t        d¬«      5  D ]×  }||   \  }} |
|||«      }|j                  |||¬«      }i x}}| t        vr0t        j                  |	«      }d|i}|j                  ||¬«      }d|i} |
|||«      }|j                  |||¬«      } |||fi |¤Ž} |||fi |¤Ž}t        |t        «      r#t!        ||«      D ]  \  }}t#        ||||«       Œ ŒÊt#        ||||«       ŒÙ 	 ddd«       y# 1 sw Y   yxY w)aÚ  Check `y_true` and `sample_weight` follows `y_pred` for mixed namespace inputs.

    Compares the output for all-numpy vs mixed-type inputs.
    If the output is a float, checks that both all-numpy and mixed-type inputs return
    a float.
    If output is an array, checks it is of the same namespace and device as `y_pred`
    (`y_pred_ns_and_device`).
    If the output is a tuple, checks that each element, whether float or array,
    is correct, as detailed above.
    )rB  r  rP  rk  rl  )r†   rv   r7  rn  )r†   rv   r†   r†   )gÍÌÌÌÌÌ @rU  g      @r}  )gš™™™™™@gš™™™™™ñ?rT  rT  )ÚbinaryÚbinary_continuousÚlabel_indicator_continuousÚregression_integerÚregression_continuous)rv   rv   r†   r†   c                 ó`   — t        | d   t        «      rt        ||«      }|S |j                  }|S )Nr   )r‹  ru   rQ   Úint64)Údatar,  rW   r˜  s       r   Ú
_get_dtypezCtest_mixed_array_api_namespace_input_compliance.<locals>._get_dtypež
  s3   € ä�d˜1‘gœuÔ%Ü.¨r°6Ó:ˆEð ˆð —H‘HˆEØˆr�   r¡  r¢  r£  r¤  r¥  Tr:  )rW   r˜  r2  rV   N)rX   r,  rW   rÚ   rF  rØ   r÷  rê   ÚREGRESSION_METRICSr	   r.  ÚMETRICS_WITHOUT_SAMPLE_WEIGHTr{   r°   r‹  r   r6  rž  )r  Úother_ns_and_deviceÚy_pred_ns_and_deviceÚ	xp_y_predÚdevice_y_predÚxp_otherÚdevice_otherrñ   Údata_allr2  r©  Ú
data_casesÚ	data_caserÍ   rÎ   r˜  Úy1_xpÚmetric_kwargs_xpÚmetric_kwargs_npÚsample_weight_npÚsample_weight_xpr�  rJ  rH  rš  r›  s                             r   Ú/test_mixed_array_api_namespace_input_compliancerº  v
  s9  € ô*  4Ø×ÑÐ-A×-HÑ-Hô Ñ€Iˆ}ô 2Ø×ÑÐ,?×,FÑ,FôÑ€Hˆlô ˜Ñ%€Fò  ¢Ð.Ú*Ò,@ÐAÚ(4 ~Ò8LÐ7MÐ&NÚ+ª\Ð:Ú"6Ò8LÐ!Mñ€Hò !€Mòð Ô,Ñ,ð �Z‰
Ø	ÐNÔ<ÐNÄÐNÑ	NØÔ5Ñ5Ø-Ð.‰Jà6Ð7‰JØ	Ô*Ñ	*Ø*Ð,CÐDˆ
ä	¨4Ô	0ñ FØ#ò 	FˆIØ˜iÑ(‰FˆB�á˜r 8¨\Ó:ˆEØ×$Ñ$ R°ÀEÐ$ÓJˆEà24Ð4ÐÐ/ØÔ"?Ñ?ä#%§8¡8¨MÓ#:Ð Ø$3Ð5EÐ#FÐ Ø#+×#3Ñ#3Ø$¨\ð $4ó $Ð ð %4Ð5EÐ#FÐ á˜r 9¨mÓ<ˆEØ×%Ñ% b°ÀeÐ%ÓLˆEá˜u eÑ@Ð/?Ñ@ˆIÙ˜r 2Ñ:Ð)9Ñ:ˆIä˜)¤UÔ+Ü&)¨)°YÓ&?ò D‘N�F˜FÜ! &¨&°)¸UÕCñDô ˜i¨°I¸uÕEñ5	F÷F÷ Fñ Fús   ÃCF,Æ,F5c                 óp  — t         |    }t        j                  g d¢«      }t        j                  g d¢«      }i }| t        v rd|d<   t	        d¬«      5   |||fi |¤Ž}ddd«       t	        d¬«      5   |||fi |¤Ž}ddd«       t        t        |«      d	   |«       y# 1 sw Y   ŒCxY w# 1 sw Y   Œ0xY w)
a|  Check string inputs accepted with array API dispatch enabled.

    All thresholded classification metrics that do not require label indicator format
    input should work when both inputs (e.g.,`y_true` and `y_pred`) are string (numpy
    namespace only) and dispatch is enabled.
    Note thresholded classification metrics do not support mixed string and numeric
    inputs.
    ©r`  ra  r`  r`  )r`  ra  ra  r`  r`  rA  Tr:  NFr   )rÚ   r{   r°   rG  r	   rž  rR   )r  rñ   rí   rî   r~   Úmetric_enabledÚmetric_disableds          r   Ú*test_array_api_classification_string_inputr¿  Ô
  s¼   € ô" ˜Ñ%€FÜ�X‰XÒ*Ó+€FÜ�X‰XÒ*Ó+€Fà€FØÔ,Ñ,Ø!ˆˆ{Ñä	¨4Ô	0ñ :Ù ¨Ñ9°&Ñ9ˆ÷:ô 
¨5Ô	1ñ ;Ù  ¨Ñ:°6Ñ:ˆ÷;ô �. /´=ÀÓ3HÈÑ3KÈVÕT÷:ð :ú÷;ð ;ús   ÁB Á2B,Â B)Â,B5c                 óZ  — t        |||«      \  }}t        |    }t        j                  g d¢«      }t        j                  g d¢|¬«      }|j	                  ||¬«      }	i }
| t
        v rd|
d<   t        d¬«      5   |||fi |
¤Ž} |||	fi |
¤Ž}t        |t        «      r#t        ||«      D ]  \  }}t        ||||	«       Œ nt        ||||	«       d	d	d	«       | t        vr¶t        j                  g d
¢«      }t        j                  g d¢g d¢g d¢g d¢g|¬«      }|j	                  ||¬«      }	t        d¬«      5   |||«      } |||	«      }t        |t        «      r#t        ||«      D ]  \  }}t        ||||	«       Œ nt        ||||	«       d	d	d	«       y	y	# 1 sw Y   ŒÈxY w# 1 sw Y   y	xY w)a=  Check string inputs and numeric inputs from mixed namespace and devices accepted.

    Non-thresholded (aka continuous/ranking) classification metrics should accept
    a mix of string and numeric inputs (numeric input should be able to be of
    any supported namespace/device), with array API dispatch enabled.
    r¼  rl  r—  rV   r`  rA  Tr:  N)r`  ra  ÚcÚdrt  ru  r^  rw  )rX   rÚ   r{   r°   r.  rG  r	   r‹  r   r6  rž  ÚMETRIC_UNDEFINED_MULTICLASS)r  rA  rB  r2  r,  rW   rñ   rí   rq  Ú	y_prob_xpr~   rH  rJ  rš  r›  s                  r   Ú8test_array_api_classification_mixed_string_numeric_inputrÅ  ö
  sÇ  € ô4 & o°{ÀJÓO�J€BˆÜ˜Ñ%€Fô �X‰XÒ*Ó+€FÜ—‘Ò-°ZÔ@€IØ—
‘
˜9¨V�
Ó4€Ià€FØÔ,Ñ,Ø!ˆˆ{Ñä	¨4Ô	0ñ ?Ù˜6 9Ñ7°Ñ7ˆ	Ù˜6 9Ñ7°Ñ7ˆ	ä�i¤Ô'Ü"% i°Ó";ò =‘�˜Ü˜f f¨b°)Õ<ñ=ô ˜) Y°°IÔ>÷?ð Ô5Ñ5Ü—‘Ò.Ó/ˆÜ—H‘Hâ$Ú$Ú$Ú$ð	ð ô
ˆ	ð —J‘J˜y°�JÓ8ˆ	ä¨tÔ4ñ 	CÙ˜v yÓ1ˆIÙ˜v yÓ1ˆIä˜)¤UÔ+Ü&)¨)°YÓ&?ò A‘N�F˜FÜ! &¨&°"°iÕ@ñAô ˜i¨°B¸	ÔB÷	Cð 	Cð 6÷?ð ?ú÷0	Cð 	Cús   Á8AFÄ7AF!ÆFÆ!F*Údf_lib_nameÚpandasÚpolarsc                 óL  — t        j                  |«      }|j                  g d¢«      }|j                  g d¢«      }t        |    }	  ||j	                  «       |j	                  «       «      }t         |||«      «       y # t
        $ r t        j                  | › d�«       Y Œ7w xY w)N)rS  rU  r   rU  )rU  rS  rS  rS  z can not deal with 1d inputs)r  ÚimportorskipÚSeriesrÚ   Úto_numpyrø   r�  rY   )r  rÆ  Údf_librî   rí   rñ   Úexpected_metrics          r   Útest_metrics_dataframe_seriesrÏ  ?  s–   € ô × Ñ  Ó-€Fà�]‰]Ò-Ó.€FØ�]‰]Ò/Ó0€Fä˜Ñ%€FðBÙ  §¡Ó!2°F·O±OÓ4EÓFˆô ‘F˜6 6Ó*¨OÕ<øô ò BÜ�‰�{�mÐ#?Ð@ÖAðBús   Á%A? Á?!B#Â"B#c                 óÜ   — i g}|j                  «       D ]U  \  }}|t        | «      j                  vrŒg }|D ]/  }|D ](  }|j                  «       }|||<   |j	                  |«       Œ* Œ1 |}ŒW |S )zÂHelper function to enable specifying a variety of additional params and
    their corresponding values, so that they can be passed to a metric function
    when testing for array api compliance.)rŽ  r   r"  rß  Úappend)	rñ   rb  rf  Úparamri  Únew_combinationsr~   ÚvalueÚ
new_kwargss	            r   rc  rc  P  s’   € ð #% ÐØŸ™›ò 6‰ˆˆvØœ	 &Ó)×4Ñ4Ñ4ØàÐØ0ò 	4ˆFØò 4�Ø#Ÿ[™[›]�
Ø$)�
˜5Ñ!Ø ×'Ñ'¨
Õ3ñ4ð	4ð &6Ñ"ð6ð &Ð%r�   c                 óZ  — t         j                  j                  d«      }|j                  ddd¬«      }|j                  ddd¬«      }| t        v rt        ||«      \  }}| t        v r(|j                  ddd¬«      }|j                  ddd¬«      }t        |    } |||«      }t        |t        t         j                  t        f«      sJ ‚t        |t         j                  t         j                  f«      rJ ‚t        |t        «      r(t        d„ |D «       «      st        d„ |D «       «      sJ ‚yyy)	zÈEnsure that the returned values of all metrics are consistent.

    It can either be a float, a numpy array, or a tuple of floats or numpy arrays.
    It should not be a numpy float64 or float32.
    r   r†   rß   rá   rÏ  c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrÔ   )r‹  ru   ©Ú.0Úvs     r   ú	<genexpr>z2test_returned_value_consistency.<locals>.<genexpr>  s   è ø€ Ò7¨A”:˜a¤×'Ñ7ùs   ‚c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrÔ   )r‹  r{   r=  rØ  s     r   rÛ  z2test_returned_value_consistency.<locals>.<genexpr>  s    è ø€ ò ?
Ø*+ŒJ�qœ"Ÿ*™*×%ñ?
ùs   ‚$&N)r{   rÜ  rÝ  rç   rè   rÐ   rê   rÚ   r‹  ru   r=  r@  r²   Úfloat32rZ  )rÝ   râ  rí   rî   rñ   r  s         r   Útest_returned_value_consistencyrÞ  e  s  € ô �)‰)×
Ñ
 Ó
"€CØ�[‰[˜˜A Eˆ[Ó*€FØ�[‰[˜˜A Eˆ[Ó*€FàÔ)Ñ)Ü2°6¸6ÓB‰ˆ�àÔ&Ñ&Ø—‘˜Q ¨�Ó0ˆØ—‘˜Q ¨�Ó0ˆä˜Ñ€FÙ�6˜6Ó"€Eä�eœe¤R§Z¡Z´Ð7Ô8Ð8Ð8Ü˜%¤"§*¡*¬b¯j©jÐ!9Ô:Ð:Ð:ä�%œÔÜÑ7°Ô7Ô7¼3ñ ?
Ø/4ô?
ô <
ð 	
ð 
ð <
Ð7ð  r�   rÔ   )çr  r+  Ú	functoolsr   Úinspectr   Ú	itertoolsr   r   r   Útypingr   Únumpyr{   r  Úsklearn._configr	   Úsklearn.datasetsr
   Úsklearn.exceptionsr   Úsklearn.metricsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   Úsklearn.metrics._baser<   Úsklearn.metrics.pairwiser=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   Úsklearn.preprocessingrN   Úsklearn.utilsrO   Úsklearn.utils._array_apirP   rQ   rR   rS   rT   rU   rW   r˜  Úsklearn.utils._testingrX   rY   rZ   r[   r\   r]   r^   Úsklearn.utils.fixesr_   r`   ra   Úsklearn.utils.multiclassrb   Úsklearn.utils.validationrc   rd   rª  rF  r¸   r÷  rØ   ÚdictrÚ   Úupdaterê   rÃ  ÚunionrÙ   rÀ  rÁ  rG  rI  ÚMETRICS_WITH_NORMALIZE_OPTIONr  rë   r  rÕ   rÖ   r«  rà  rè   ré   Ú"METRICS_SUPPORTING_MIXED_NAMESPACErÐ   rÒ   rÜ   ÚmarkÚparametrizeÚsortedrò   rý   r  r×   r  r  r)  ÚCLASSIFICATION_METRICS_REPORTri  r.  r<  rR  rT  r:  r³   Úinvalids_nan_infrV  r^  re  rl  rq  Úfilterwarningsru  rw  r{  r�  r”  r›  r¤  r©  Úintersectionr¬  r¼  rÂ  rÇ  rÌ  rÒ  rÖ  rÙ  rð  ró  Úthread_unsaferõ  rù  rü  r   r  r  r  r  r  r°   r–  r  r™  r(  rN  rX  rg  ri  rr  rx  r{  r„  r‡  rŒ  Úarray_api_metric_checkersr’  r•  rž  rÒ  rº  rø  r¿  rÅ  rÏ  rc  rÞ  )r}   s   0r   ú<module>rÿ     s‹  ðÛ Û 	Ý Ý ß 2Ñ 2Ý ã Û å *Ý ;Ý 5÷1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1ó 1õd 8÷÷ ÷ ÷ õ õ& 1Ý !÷÷ õ÷÷ ñ ÷ JÑ IÝ 3ß EðJØ�ðàÐ.ðð Ð,ðð Ð4ð	ð
 Ð*ðð Ð2ðð %Ð&Dðð Ð 8ðð ‘˜Ð.AÔBðð Ð6ðð "Ð#>ðð ™GÐ$9ÀÔCðð Ð2ðð Ð.ðð %¡gÐ.CÈ3Ô&Oðð  Ð2ð!ð" ™Ð 0¸Ô<ð#ð$ )ñ #Ð#3¸3Ô?Ù"Ð#3¸3Ô?Ø6ò1Ð ð62Ø�nð2àÐ6ð2ð '©Ð0GÐRVÔ(Wð2ð "¡7¨>ÀUÔ#Kð	2ð
 Ð(ð2ð "ñ $ð2ð "Ð#>ð2ð )©'Ø#°ô+ð2ð �Lð2ð �]ð2ð  !¡'¨-À5Ô"Ið!2ð$ �]ð%2ð& �ð'2ð( �Lð)2ð* �ð+2ð, ‘˜¨!Ô,ð-2ð. ‘'˜+¨CÔ0ñ/2ð0 Ð0ð12ð2 ™7 ;¸
ÈÔMð32ð4 ™ °:Ô>ð52ð6 ™ °jÀqÔIð72ð8 ¡¨ÀÔ Lð92ð: ™W \¸:ÔFð;2ð< ™g m¸ZÔHð=2ð> ™ °WÀ3ÔGð?2ð@ ‘g˜h°Ô8ðA2ðB ‘g˜k°7ÀÔCðC2ðD ™W _¸gÔFðE2ðF ™' ,¸Ô@ðG2ðH ™7 =¸'ÔBðI2ðJ ™ °WÀ3ÔGðK2ðL ‘g˜h°Ô8ðM2ðN ‘g˜k°7ÀÔCðO2ðP ™W _¸gÔFñQ2ñR " ,¸Ô@Ù" =¸'ÔBÙ! +°yÀsÔKÙ °)Ô<Ù °YÀQÔGÙ& À	ÔJÙ# L¸)ÔDÙ$ ]¸IÔFØ*òc2Ð òjð@ 'EØØFØñ	€ð"%Ø�nð"%àÐ,ð"%ð �ð"%ð ™W X¸Ô?ð	"%ð
 �*ð"%ð Ð(ð"%ð �]ð"%ð ™ °zÔBð"%ð ‘w˜}°iÔ@ð"%ð ‘W˜]°GÔ<ð"%ð ‘7˜=°'ÀuÔMð"%ð ™GØ˜z°uôð"%ð ‘7˜=°'ÀuÔMð"%ð  ™GØ˜z°uôð!"%ð& ‘w˜}°cÔ:ð'"%ð( Ð6ð)"%ð* '©Ø¨ô)ð+"%ñ0 (/Ø¨ô(ñ &-Ð-DÈgÔ%VØ-RØØØ0Ø$Ø*òC"%Ð !ñH ‹f€Ø × Ñ Ð4Ô 5Ø × Ñ Ð)Ô *Ø × Ñ Ð%Ô &Ø × Ñ �=Ô !òÐ ò Ð ð* &=×%BÒ%BØó&Ð "ò
Ð ò4Ð 0òÐ ò,"Ð òJ!Ð ò!Ð ò.Ð òDÐ ò&!Ð òJ#Ð òN!Ð ò"Ð òÐ ð Ø!ðÐ ò!&Ð "òHòò	@ð ‡‚×Ò˜¡Ð(9Ó!:Ó;ñ
ó <ð
ðB ‡‚×Ò˜¡Ð(=Ó!>Ó?ñ:ó @ð:ò4'ð  ‡‚×ÒØ
‰F‘3�{Ó#Ð&HÑHÓIóñ
óð
ò**
ðZ ‡‚×ÒØ
‰F‘3�{Ó#Ð&HÑHÓIóñ{+óð{+ð|!Øð!àÐ2ñ!Ð ð ‡‚×Ò˜Ð#@×#GÒ#GÓ#IÓJñ+ó Kð+ð ‡‚×Ò˜Ð#9×#@Ò#@Ó#BÓCñ4ó Dð4ð> ‡‚×ÒØ
‰F‘3Ð-Ó.Ð1SÑSÓTóñ2óð2ðj ‡‚×Ò˜Ð!BÓCñ(/ó Dð(/ðX ˆ€Vˆb�fŠf�b—f’fÐÐØˆ€Vˆb�fŠf�b—f’fÐÐØˆ€Vˆb�fŠf�b—f’fÐÐØˆ€Vˆb�fŠf�aˆ[ÐØˆ€Vˆb�fŠf�aˆ[ÐðÐ ð ‡‚×ÒØÙ	Ð
+×
2Ò
2Ó
4Ð6H×6OÒ6OÓ6QÓRóð ‡‚×ÒÐ*Ð,<Ó=ñ ó >ó	ð
 ð ‡‚×Ò˜Ð#9×#@Ò#@Ó#BÓCØ‡‚×ÒØØð �&Š&�!�QˆšÐ#Ø
�&Š&�!�QˆšÐ#ðñóñ óó Dð ð, ‡‚×Ò˜Ð#9×#@Ò#@Ó#BÓCñ ó Dð òò$7ð ‡‚×Ò˜HÓ%Ø‡‚×ÒØ
Ù
ÙˆKÓð -ñ	-ñ Ð/Ó
0ñ		1óó	ñó	ó &ðð
 ‡‚×Ò˜HÓ%Ø‡‚×Ò˜¡Ð(;Ð>QÑ(QÓ!RÓSñ*ó Tó &ð*ð ‡‚×Ò˜¡Ð(;Ó!<Ó=ñó >ðð ‡‚×Ò˜¡Ð(;Ó!<Ó=ñ
ó >ð
ð$ ‡‚×ÒÐOÓPØ‡‚×Ò˜¨.Ó9ñH
ó :ó QðH
ðV ‡‚×Ò˜¡Ð(;Ó!<Ó=ñó >ðð  ‡‚×Ò˜¡Ð(EÓ!FÓGñó Hðð8 ‡‚×Ò˜¡Ð(EÓ!FÓGñó Hðð< ‡‚×ÒØ
‰FÐ0×=Ò=Ð>QÓRÓSóñ,óð,ò^32òlOð" ‡‚×Ò˜¡Ð(>Ó!?Ó@ñUó AðUð ‡‚×ÒØ
Ù
Ð!Ð$TÑTÓUóñUó	ðUð$ ‡‚×Ò˜¡Ð(>Ó!?Ó@ñUó AðUòð& ‡‚×Ò˜¡Ð(>Ó!?Ó@ñUó AðUóePðP ‡‚×ÒØ
Ù
ÙˆKÓ×%Ò%¡cÐ*<Ó&=Ó>Ø
'ñ	(óóñ	Póð	Pð ‡‚×ÒØ‡‚×ÒØ
Ù
ÙˆKÓ×%Ò%¡cÐ*<Ó&=Ó>Ø
'ñ	(óóñ<óó ð<ð@ ‡‚×ÒØ
Ù
ÙˆKÓÙ
Ð Ó
!ñ	"à
'ñ	(ð "ñ	"óóñEóðEð ‡‚×ÒØ
Ù
ÙˆKÓÙ
Ð Ó
!ñ	"à
'ñ	(ð -ñ	-óóñEóðEð" ‡‚×ÒØ
Ù
Ø	Ð<Ñ	<Ø
'ñ	(óóñEóðEð. ‡‚×ÒØ
Ù
ÐÐ!>Ñ>Ó?óñAó	ðAòDð2 ‡‚×ÒØ
‰FÐ&Ð*GÐ)HÑHÓIóñ2óð2ð$ ‡‚×ÒØ
‰FÐ0Ð3FÑFÓGóñ6óð6ðB ‡‚×ÒØ
Ù
‰3Ð0Ó1Ð4VÑVÓWóñ2ó	ð2ð* ‡‚×ÒØàˆ�Š�&�˜A‘  ¨1¡Ñ,°FÔ;Øˆ�Š�&�˜A‘  ¨1¡Ñ,Ó-Øˆ�Š�&�˜A‘  ¨1¡Ñ,Ó-ðóð ‡‚×Ò˜Ð(>Ó?ñ
4ó @óð
4ð ‡‚×ÒØà	  $Ð'Ø	˜4Ð Ø	�5ÐÙ	� 1Ô	% uÐ-Ø	˜ÐØ	 Ð&Ø	˜%Ð Ø	�uÐØ	�DÐð
óð ‡‚×Ò˜¨¨f¨Ó6ñó 7óðò4LHò^ òF2
òj%
òPò8"òJ*òZ'
òT.òbð:jØØ4Ø8Ø8ððjð Ø4Ø8Ø8ððjð Ø4Ø8ððjð Ø4Ø8ððjð& Ø4Ø8ðð'jð. Ð<Ð=ð/jð0 Ø4Ø8Ø8ðð1jð: Ø4Ø8Ø8ðð;jðD Ø4Ø8Ø8ððEjðN  Ø4Ø8Ø8ð"ðOjðX Ø4Ø8Ø8ððYjðb ÐIÐJðcjðd Ø4Ø8Ø8ððejðn Ø4Ø8Ø8ððojðx Ø4Ø8Ø8ððyjðB Ø?ØCØCððCjðL Ø?ØCØCðñMjðV Ø?ØCØCððWjð` Ø?ØCØCððajðj Ð=Ð>ðkjñl Ð!¨Ô.Ð1RÐ0Sðmjñn Ð!¨Ô-Ð0QÐ/Rðojðp Ø)Ø5ððqjðx Ð7Ð8ðyjðz Ø)Ø5ðð{jðB Ø)Ø5ððCjðJ Ø)Ø5ððKjðR Ø)Ø5ððSjðZ Ø)Ø5ðð[jðb Ø)Ø5ððcjðj Ø)Ø5ððkjðr Ø)Ø5ððsjñz Ð CÔ(Ø)Ø5ð+ð{jñB Ð CÔ(Ø)Ø5ð+òCjðJ Ø)ððKjðP Ð=Ð>ðQjðR Ð=Ð>ðSjðT Ð:Ð;ðUjðV Ð;Ð<ðWjðX Ð1Ð2ðYjðZ #Ø)Ø5ð%ð[jðb Ð1Ð2ðcjðd Ð!@Ð Aðejðf Ð!@Ð Aðgjðh Ð6Ð7ðijðj Ð9Ð:ðkjðl Ð9Ð:ðmjðn Ð3Ð4ðojðp Ð6Ð7ðqjðr Ð7Ð8ðsjðt Ð0Ð1ñujðv Ø)Ø5ðð  Ø)Ø5ð"ð Ð4Ð5ØÐ6Ð7ØØ4ðð Ð8Ð9ØÐ ?Ð@ñSjÐ ðZ 7Pó "ð ‡‚×ÒØ.Ù-Ó/óð ‡‚×ÒÐ-Ñ/PÓ/RÓSñAó Tó	ð
Aò	'ð ‡‚×ÒØ/ñ =Ó>öàð 	ˆ�Š�d˜2˜A�hÐ+ 4¨¡7Ó+òóð ‡‚×Ò˜©Ð/QÓ(RÓSñPFó TóðPFðl ‡‚×ÒØÙ
ÙÐ.Ó/ÙÐ%×*Ò*Ó,Ó-Ð0GÑGñ	Ióóð )ñUó )óðUð4 ‡‚×ÒØ.Ù-Ó/óð ‡‚×ÒØÙ
ÙÐ.Ó/áÐ2×7Ò7Ó9Ó:¹SÀ×ASÒASÓAUÓ=VÑVØ%ñ&ñ	
óó	ñ5Có	óð"5Cðp ‡‚×Ò˜¨°8Ð(<Ó=Ø‡‚×Ò˜©¨{Ó(;Ó<ñ=ó =ó >ð=ò&ð* ‡‚×Ò˜¡¨Ó!4Ó5ñ
ó 6ñ
ùò]s   ü AB6
