a
    �ù»j™# ã                :   @   s‚  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	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,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d d	l?m@Z@ d d
lAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZN d dlOmPZP d dlQmRZRmSZSmTZT d dlUmVZVmWZWmXZXmYZYmZZZm[Z[ d dl\m]Z]m^Z^m_Z_ d dl`maZa d dlbmcZcmdZd e)e*e/e0e-e2e+eee7dd�e;e<ee1d d�e.e,ee1dd�eedd�eedœZeeeeedd�eedd�edd„ e3ee3dd�e"e>ee>dd�e$e6e8e ee!dd�ee!d d�e(ee!d!d d"�ee d!d#�ee!d!dd"�ee6d!d#�ee8d!d#�ee$d!d#�ee!d$d d"�ee d$d#�ee!d$dd"�ee6d$d#�ee8d$d#�ee$d$d#�ee!d%d d"�ee d%d#�ee!d%dd"�ee6d%d#�ee8d%d#�ee$d%d#�ee!d&d d"�ee d&d#�ee!d&dd"�ee6d&d#�ee8d&d#�ee$d&d#�ed'œ+Zfd(d)„ Zge:eged*œZhee&e'ee'dd�e#ee9ee9d!d#�ee9d&d#�ee9d$d#�ee9d%d+d,�ee9d!d+d,�ee9d%d-d,�ee9d!d-d,�ee9d d.�eeed!d#�eed&d#�eed$d#�e%e4ee=d/œZiejƒ Zkek lei¡ ek lef¡ ek lee¡ ek leh¡ h d0£Zmh d1£Znem oen¡Zph d2£Zqh d3£Zrh d4£Zsh d5£Zth d6£Zuh d7£Zvh d8£Zwh d9£Zxh d:£Zyh d;£Zzh d<£Z{h d=£Z|d>d?hZ}d@dA„ Z~dBdC„ ZdDdE„ Z€ej� ‚dFeƒeyƒ¡dGdH„ ƒZ„ej� ‚dFeƒezƒ¡dIdJ„ ƒZ…ej� ‚dFeƒe†ekƒep ƒ¡dKdL„ ƒZ‡dMdN„ Zˆej� ‚dFeƒe†ekƒep ƒ¡dOdP„ ƒZ‰ej� ‚dFeƒe†efƒep ƒ¡dQdR„ ƒZŠej� ‚dFei¡dSdT„ ƒZ‹d dUge
jŒe
jŒgfd dUge
j�e
j�gfd dUge
j�e
jŒgfd dUge
jŒdUgfd dUge
j�dUgfgZŽej� ‚dVeei �¡ ee �¡ ƒ¡ej� ‚dWeŽ¡dXdY„ ƒƒZ�ej� ‚dVef �¡ ¡ej� ‚dWeŽe
j�dUdgg dZ¢fe
jŒdUdgg dZ¢fg ¡d[d\„ ƒƒZ‘ej� ‚dVef �¡ ¡d]d^„ ƒZ’d_d`„ Z“dadb„ Z”ej� •dc¡ej� ‚dFeƒe†ekƒep e†eiƒ ƒ¡ddde„ ƒƒZ–ej� •dc¡ej� ‚dFeƒexewB ƒ¡dfdg„ ƒƒZ—ej� ‚dFeƒexƒ¡dhdi„ ƒZ˜ej� ‚dFeƒexƒ¡djdk„ ƒZ™ej� •dl¡ej� ‚dme]¡dndo„ ƒƒZšej� ‚dFeƒewƒ¡dpdq„ ƒZ›ej� ‚dFeƒeuƒ¡drds„ ƒZœej� ‚dFeƒeuƒ¡dtdu„ ƒZ�ej� ‚dFeƒeu žew¡ƒ¡dvdw„ ƒZŸdxdy„ Z dzd{„ Z¡ej� ‚dFeƒeqƒ¡d|d}„ ƒZ¢ej� ‚dFeƒeqerB ƒ¡d~d„ ƒZ£ej� ‚dFeƒeqƒ¡d€d�„ ƒZ¤d‚dƒ„ Z¥ej� ‚dFeƒeqƒ¡d„d…„ ƒZ¦d†d‡„ Z§ej� ‚dFeƒe†ekƒ že†eeƒ¡e{ ƒ¡dˆd‰„ ƒZ¨ej� ‚dFeƒe†ekƒe†eeƒ e{ em ƒ¡dŠd‹„ ƒZ©ej� ‚dFeƒe†ekƒe†eeƒ e{ ep ƒ¡dŒd�„ ƒZªej� ‚dFeƒewevB exB e{ ƒ¡dŽd�„ ƒZ«d�d‘„ Z¬ej� ‚dFeƒewd’h ƒ¡d“d”„ ƒZ­ej� ‚dFeƒevexB ƒ¡d•d–„ ƒZ®ej� ‚dFeƒe†eiƒep ƒ¡d—d˜„ ƒZ¯ej� ‚d™ef¡dšd›„ ƒZ°ej� ‚dœedfedfe dfee!dUd�dfe$dfe5dfe6dfe8dfe:dfg	¡ej� ‚d�e±e²g¡dždŸ„ ƒƒZ³d d¡„ Z´d¢d£„ Zµd¤d¥„ Z¶d¦d§„ Z·d¨d©„ Z¸dªd«„ Z¹d¬d­„ Zºeeµe¶e·ge eµe¶e·ge3eµe¶e·ge>eµe¶e·ge1e¸gee1d®d�e¸gee1d¯d�e¸ge7e¸e¹geEeºge*e¸e¹ge/e¸e¹ge0e¸e¹gee¸geHeºge.e¸geBeºge,e¸ge)e¸ge+e¸e¹geCeºgeIeºgeDeºgeFeºgeGeºgeJeºgeKeºge;e¸e¹ge<e¸e¹geLeºgiZ»e»fd°d±„Z¼ej� ‚d²eTƒ ¡ej� ‚d³e¼ƒ ¡d´dµ„ ƒƒZ½ej� ‚d¶d·d¸g¡ej� ‚d™eƒekƒ¡d¹dº„ ƒƒZ¾d»d¼„ Z¿dS )½é    N)Úpartial)Ú	signature)ÚchainÚpermutationsÚproduct)Úconfig_context)Úmake_multilabel_classification)ÚUndefinedMetricWarning),Úaccuracy_scoreÚaverage_precision_scoreÚbalanced_accuracy_scoreÚbrier_score_lossÚcohen_kappa_scoreÚconfusion_matrixÚcoverage_errorÚd2_absolute_error_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Úlinear_kernelÚpaired_cosine_distancesÚpaired_euclidean_distancesÚpolynomial_kernelÚ
rbf_kernelÚsigmoid_kernel)ÚLabelBinarizer)Úshuffle)Ú_atol_for_typeÚ_convert_to_numpyÚ)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsÚassert_allcloseÚassert_almost_equalÚassert_array_equalÚassert_array_lessÚignore_warnings)ÚCOO_CONTAINERSÚparse_versionÚ
sp_version)Útype_of_target)Ú_num_samplesÚcheck_random_stateZvariance_weighted)Úmultioutput)Úpowergffffffö?)r    r!   r&   r'   r$   r)   r"   r   r.   r2   r3   Úmean_normal_deviancer%   r#   Úmean_compound_poisson_deviancer   r   r   T)ÚadjustedF©Ú	normalizec                  O   s8   t | i |¤Ž d¡t | i |¤Žjdd�d d …tjf  S )NÚfloaté   ©Úaxis)r   ÚastypeÚsumÚnpZnewaxis)ÚargsÚkwargs© rc   úGE:\soccer\ml_env\Lib\site-packages\sklearn/metrics/tests/test_common.pyÚ<lambda>›   s    "ÿre   )Z
samplewiseé   )Úbetaç      à?Úweighted)Úaveragerg   ©rj   ÚmicroÚmacroÚsamples)+r
   r   Ú adjusted_balanced_accuracy_scoreÚunnormalized_accuracy_scoreÚunnormalized_confusion_matrixÚnormalized_confusion_matrixÚ(unnormalized_multilabel_confusion_matrixÚ/unnormalized_multilabel_confusion_matrix_sampler   r5   Úunnormalized_zero_one_lossr   r-   r/   r   Úf2_scoreú
f0.5_scoreÚmatthews_corrcoef_scoreúweighted_f0.5_scoreÚweighted_f1_scoreÚweighted_f2_scoreÚweighted_precision_scoreÚweighted_recall_scoreÚweighted_jaccard_scoreúmicro_f0.5_scoreÚmicro_f1_scoreÚmicro_f2_scoreÚmicro_precision_scoreÚmicro_recall_scoreÚmicro_jaccard_scoreúmacro_f0.5_scoreÚmacro_f1_scoreÚmacro_f2_scoreÚmacro_precision_scoreÚ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               
   O   sR   t | i |¤Ž\}}}t|ƒt|ƒ }t ||tj| tj¡d|fdtjgd�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 an 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   Zconstant)Z	pad_widthÚmodeZconstant_values)r,   Úlenr`   ÚarrayÚpadr^   Úfloat64Únan)ra   rb   Ú	precisionZrecallZ
thresholdsZpad_threshholdsrc   rc   rd   Ú(precision_recall_curve_padded_thresholdsÊ   s    
üýÿr˜   )r1   r,   r   Zovr)rj   Zmulti_classZovo)Zmax_fpr)r   r   r   Úunnormalized_log_lossr   r   r0   Úweighted_roc_aucÚsamples_roc_aucÚmicro_roc_aucZovr_roc_aucZweighted_ovr_roc_aucÚovo_roc_aucÚweighted_ovo_roc_aucÚpartial_roc_aucr   Ú weighted_average_precision_scoreÚsamples_average_precision_scoreÚmicro_average_precision_scorer   r+   r   r4   >   r   r�   r   r‹   r�   rt   r�   rŒ   r   rŽ   r+   r   >   r›   r,   rv   r   r0   rœ   r/   r   rw   r1   rš   rŸ   r   r   r-   >   rv   r   r/   rw   r-   r   >   r0   rŸ   r   >   r¢   r,   r   rv   r   r/   r   rw   r   r1   r-   r¡   r    r   >    ry   r{   r~   rw   r/   r‚   rƒ   r   r   rv   r}   rq   rˆ   r-   r,   r�   rs   r†   r   rt   r…   r‡   rz   r€   rr   r   r„   r1   r|   r‰   r   rŠ   >   r4   r
   r5   >   r   r¢   r   r™   rœ   r0   r   r   rš   r    r   r   r+   r¡   rŸ   r›   >   ry   r{   r~   r‚   ru   rƒ   r}   r‹   rp   r�   rˆ   r�   r�   rs   r†   r   r�   r5   r…   r‡   rŒ   rŽ   rz   r   r€   r„   r|   r‰   r
   rŠ   >   r"   r2   r&   r)   r3   r   r   r.   r!   r$   r'   r   >   r    r‚   ru   r!   rƒ   r   r   r}   rp   r�   r2   r)   r�   r†   r   r5   r'   r   r&   r€   r3   r„   r   rU   rx   r$   r
   rŠ   >   r"   ry   r{   r~   r   rw   r/   rV   ro   r   rv   rq   rˆ   r-   r,   r   rs   r   r%   r…   r‡   rz   r#   rr   r   r   r.   r1   r|   r‰   r   >   r�   r    r)   rž   >   rV   r   r%   r#   r'   r3   c                 C   s2   t t|  ¡ | ¡ ƒƒd }| |7 } ||7 }| |fS )zMake targets strictly positiver[   )ÚabsÚmin©Úy1Úy2Úoffsetrc   rc   rd   Ú_require_positive_targets?  s    r©   c                 C   sJ   t t|  ¡ | ¡ ƒƒd }|  tj¡} | tj¡}| |7 } ||7 }| |fS )z$Make targets strictly larger than -1g®Gáz®ï?)r£   r¤   r^   r`   r•   r¥   rc   rc   rd   Ú_require_log1p_targetsG  s    rª   c                   C   s6   t tB ttƒB tB ttƒks J ‚t t@ tƒ ks2J ‚d S ©N)ÚSYMMETRIC_METRICSÚNOT_SYMMETRIC_METRICSÚsetÚTHRESHOLDED_METRICSÚ"METRIC_UNDEFINED_BINARY_MULTICLASSÚALL_METRICSrc   rc   rc   rd   Útest_symmetry_consistencyQ  s    ÿþýûr²   Únamec                 C   sÞ   t dƒ}|jdddd�}|jdddd�}| tv r@t||ƒ\}}n| tv rVt||ƒ\}}|jdddd�}|jdddd�}t|  }| tv r¼| tv r®t	|||ƒ|||ƒd|  d� qÚdsÚJ d	ƒ‚nt	|||ƒ|||ƒd|  d� d S )
Nr   rf   ©é   ©Úsize©rµ   é   z%s is not symmetric©Úerr_msgFz This case is currently unhandled)
rR   ÚrandintÚMETRICS_REQUIRE_POSITIVE_Yr©   ÚMETRICS_WITH_LOG1P_Yrª   r±   ÚMETRIC_UNDEFINED_BINARYÚMULTILABELS_METRICSrH   )r³   Úrandom_stateÚy_trueÚy_predZ
y_true_binZ
y_pred_binÚmetricrc   rc   rd   Útest_symmetric_metric]  s.    ýýrÅ   c                 C   s–   t dƒ}|jdddd�}|jdddd�}| tv r>t||ƒ\}}t|  }t t¡�2 t|||ƒ|||ƒƒ t	d|  ƒ‚W d   ƒ n1 sˆ0    Y  d S )Nr   rf   r´   r¶   z%s seems to be symmetric)
rR   r¼   r½   r©   r±   ÚpytestÚraisesÚAssertionErrorrJ   Ú
ValueError)r³   rÁ   rÂ   rÃ   rÄ   rc   rc   rd   Útest_not_symmetric_metric  s    rÊ   c                 C   s¸   t dƒ}|jdddd�}|jdddd�}| tv r@t||ƒ\}}n| tv rVt||ƒ\}}t||dd�\}}tƒ �6 t|  }t	|||ƒ|||ƒd|  d� W d   ƒ n1 sª0    Y  d S )Nr   rf   r´   r¶   ©rÁ   ú %s is not sample order invariantrº   )
rR   r¼   r½   r©   r¾   rª   rC   rL   r±   rH   )r³   rÁ   rÂ   rÃ   Úy_true_shuffleÚy_pred_shufflerÄ   rc   rc   rd   Útest_sample_order_invariance‘  s    ýrÏ   c            	      C   s  t dƒ} | jdddd�}| jdddd�}| j|jd�}||jddd� }t|||dd�\}}}tD ]*}t| }t|||ƒ|||ƒd	| d
� qbt	D ]*}t| }t|||ƒ|||ƒd	| d
� q’t
D ]H}t| }t|||ƒ|||ƒd	| d
� t|||ƒ|||ƒd	| d
� qÂd S )Nr   rf   r¸   r¶   r[   T©r]   ZkeepdimsrË   rÌ   rº   )rR   r¼   ÚuniformÚshaper_   rC   rÀ   r±   rH   ÚTHRESHOLDED_MULTILABEL_METRICSÚMULTIOUTPUT_METRICS)	rÁ   rÂ   rÃ   Úy_scorerÍ   rÎ   Zy_score_shuffler³   rÄ   rc   rc   rd   Ú7test_sample_order_invariance_multilabel_and_multioutput©  sD    ÿýýýýrÖ   c              	   C   s¶  t dƒ}|jdddd�}|jdddd�}| tv r@t||ƒ\}}n| tv rVt||ƒ\}}t|ƒ}t|ƒ}t |¡t |¡ }}t	|j
dƒ t	|j
dƒ t |d¡}t |d¡}	t |d¡}
t |d¡}tƒ ��Ô t|  }|||ƒ}t|||ƒ|d|  d	� t|||ƒ|d
|  d	� t|||	ƒ|d|  d	� t|||ƒ|d|  d	� t|||ƒ|d|  d	� t|||	ƒ|d|  d	� t|||ƒ|d|  d	� t|||	ƒ|d|  d	� t|||ƒ|d|  d	� t t¡� |||ƒ W d   ƒ n1 �sä0    Y  t t¡� ||
|ƒ W d   ƒ n1 �s0    Y  t t¡� |||ƒ W d   ƒ n1 �sP0    Y  t t¡� ||
|ƒ W d   ƒ n1 �s†0    Y  t t¡� |||ƒ W d   ƒ n1 �s¼0    Y  t t¡� ||
|	ƒ W d   ƒ n1 �sò0    Y  | ttB tB v�r’d| v �r\t t¡�& t ||
|ƒ¡�s:J ‚W d   ƒ n1 �sP0    Y  n6t t¡� ||
|ƒ W d   ƒ n1 �sˆ0    Y  W d   ƒ n1 �s¨0    Y  d S )Nr   rf   r´   r¶   r[   )éÿÿÿÿr[   )r[   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-columnZroc_auc)rR   r¼   r½   r©   r¾   rª   Úlistr`   r“   rJ   ÚndimÚreshaperL   r±   rH   rÆ   rÇ   rÉ   rÔ   rÓ   rÀ   Zwarnsr	   ÚmathÚisnan)r³   rÁ   r¦   r§   Zy1_listZy2_listZy1_1dZy2_1dZ	y1_columnZ	y2_columnZy1_rowZy2_rowrÄ   Úmeasurerc   rc   rd   Ú&test_format_invariance_with_1d_vectorsÖ  sÀ    

ýýýÿýÿýüý
üý
ýý	ýý
******
ÿ
8rÞ   c                 C   sT  t dƒ}|jdddd�}|jdddd�}t ddg¡| }t ddg¡| }d}ddg}tƒ �à t|  }|||ƒ}	|}
| tv rŠt|
|d�}
|
||ƒ}t|	|d 	| ¡d	� |
| 
d
¡| 
d
¡ƒ}t|	|d 	| ¡d	� | tv �r0t|
|d�}
|
||ƒ}t|	|d 	| ¡d	� |
| 
d
¡| 
d
¡ƒ}t|	|d 	| ¡d	� W d   ƒ n1 �sF0    Y  d S )Nr   rf   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)rR   r¼   r`   r“   rL   ÚCLASSIFICATION_METRICSÚMETRICS_WITH_POS_LABELr   rJ   Úformatr^   ÚMETRICS_WITH_LABELS)r³   rÁ   r¦   r§   Úy1_strZy2_strÚpos_label_strZ
labels_strrÄ   Úmeasure_with_numberÚ
metric_strÚmeasure_with_strÚmeasure_with_strobjrc   rc   rd   Ú7test_classification_invariance_string_vs_numbers_labelsW  sN    

ýý

ýýrñ   c              	   C   sP  t dƒ}|jdddd�}|jdddd�}t ddg¡| }d}tƒ �ö t|  }| tvr¼|}| tv rnt||d�}|||ƒ}|||ƒ}	t	||	d 
| ¡d	� || d
¡|ƒ}
t	||
d 
| ¡d	� npt t¡� |||ƒ W d   ƒ n1 sæ0    Y  t t¡�  || d
¡|ƒ W d   ƒ n1 �s"0    Y  W d   ƒ n1 �sB0    Y  d S )Nr   rf   r´   r¶   rß   rà   rá   rã   rº   rä   rå   )rR   r¼   r`   r“   rL   r¯   r¿   rè   r   rJ   ré   r^   rÆ   rÇ   rÉ   )r³   rÁ   r¦   r§   rë   rì   rÄ   rî   rí   rï   rð   rc   rc   rd   Ú4test_thresholded_invariance_string_vs_numbers_labels�  s<    

ýÿý	(rò   r[   rÄ   zy_true, y_scorec                 C   sP   | t kr|g}|g}tjtdd�� | ||ƒ W d   ƒ n1 sB0    Y  d S )Nzcontains (NaN|infinity)©Úmatch)r   rÆ   rÇ   rÉ   )rÄ   rÂ   rÕ   rc   rc   rd   Ú)test_regression_thresholded_inf_nan_inputÃ  s
    rõ   )r[   rf   é   c                 C   s”   t  |¡ ¡ s,d}t  |¡ ¡ r&d}qHd}nd}t  |¡ ¡ rDd}nd}d|› d|› �}tjt|d�� | ||ƒ W d  ƒ n1 s†0    Y  dS )	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Õ   Z
input_nameZunexpected_valuer»   rc   rc   rd   Ú!test_classification_inf_nan_inputÐ  s    rû   c                 C   sR   g d¢g d¢ }}d}t jt|d�� | ||ƒ W d  ƒ n1 sD0    Y  dS )zocheck that classification metrics raise a message of mixed type data
    with continuous/binary target vectors.)ÚaÚbrü   ©çš™™™™™¹?çš™™™™™É?ç333333Ó?zJClassification metrics can't handle a mix of binary and continuous targetsró   N)rÆ   rÇ   rÉ   )rÄ   rÂ   rÕ   r»   rc   rc   rd   Ú+test_classification_binary_continuous_inputò  s
    ÿr  c                 C   s\   t |  }| tv rddg}n| tv r,ddg}nddg}t|dd�D ]\}}||g|gƒ q@d S )Nr[   rf   gffffffæ¿r   ©Úrepeat)r±   r½   r¾   r   )r³   rÄ   ÚvaluesÚiÚjrc   rc   rd   Úcheck_single_sampleþ  s    

r  c                 C   sL   t |  }tddgdd�D ].\}}}}|t ||gg¡t ||gg¡ƒ qd S )Nr   r[   é   r  )r±   r   r`   r“   )r³   rÄ   r  r  ÚkÚlrc   rc   rd   Úcheck_single_sample_multioutput  s    r  Úignorec                 C   s   t | ƒ d S r«   )r  ©r³   rc   rc   rd   Útest_single_sample  s    r  c                 C   s   t | ƒ d S r«   )r  r  rc   rc   rd   Útest_single_sample_multioutput'  s    r  c                 C   sx   t  g d¢g d¢g d¢g¡}t  ddgddgddgg¡}t|  }t t¡� |||ƒ W d   ƒ n1 sj0    Y  d S )N)r[   r   r   r[   )r   r[   r[   r[   )r[   r[   r   r[   r   r[   ©r`   r“   r±   rÆ   rÇ   rÉ   )r³   rÂ   rÃ   rÄ   rc   rc   rd   Ú(test_multioutput_number_of_output_differ-  s
    r  c                 C   sŒ   t dƒ}|jdddd�}|jdddd�}t|  }|||ƒ}tdƒD ]D}| |jd ¡}t||d d …|f |d d …|f ƒ|d|  d� qBd S )	Nr   rf   )rµ   é   r¶   rö   r[   z'%s is not dimension shuffling invariantrº   )rR   rÑ   r±   ÚrangeZpermutationrÒ   rH   )r³   rÁ   rÂ   rÃ   rÄ   ÚerrorÚ_Úpermrc   rc   rd   Ú=test_multioutput_regression_invariance_to_dimension_shuffling7  s    
 ýr  z1ignore::sklearn.exceptions.UndefinedMetricWarningÚcoo_containerc                 C   s  d}d}t d|d|dd�\}}t d|d|dd�\}}t |dg| gg¡}t |dg| gg¡}| |ƒ}| |ƒ}t|ƒ}t|ƒ}	dd„ |D ƒ}
d	d„ |	D ƒ}tD ]t}t| }t|tƒrÂd
|_||_	|||ƒ}t
|||ƒ|d| d� t||
|ƒ|d| d� t|||	ƒ|d| d� q d S )Nr	  é2   r[   r   T©Ú
n_featuresÚ	n_classesrÁ   Ú	n_samplesÚallow_unlabeledc                 S   s   g | ]}t |ƒ‘qS rc   ©rØ   ©Ú.0rü   rc   rc   rd   Ú
<listcomp>j  ó    z=test_multilabel_representation_invariance.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS rc   r   r!  rc   rc   rd   r#  k  r$  Ú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__rH   rI   )r  r  r  r  r¦   r§   Zy1_sparse_indicatorZy2_sparse_indicatorZy1_list_array_indicatorZy2_list_array_indicatorZy1_list_list_indicatorZy2_list_list_indicatorr³   rÄ   rÝ   rc   rc   rd   Ú)test_multilabel_representation_invarianceJ  sf    û
û
	

üý	ûý
ûýr*  c              	   C   s€   dgdgddggg d¢g gdgt jg ddggdd�g}t|  }|D ]8}t t¡� |||ƒ W d   ƒ qB1 sp0    Y  qBd S )Nr[   rf   r   )rc   rf   )r   r[   rc   Úobject©Údtyper  )r³   Zmultilabel_sequencesrÄ   Úseqrc   rc   rd   Ú+test_raise_value_error_multilabel_sequences—  s    ûr/  c                 C   s¤   d}d}t dƒ}|jd||fd�}|jd||fd�}|j|jd�}t|  }| tv rV|n|}|||dd�}	|||dd�}
td|	 dd	d
� t|	|
| d| › �d
� d S )Nrf   rµ   r   r¶   TrX   Fç      ð¿ú0We failed to test correctly the normalize optionrº   úFailed with )rR   r¼   ÚnormalrÒ   r±   r¯   rK   rH   ©r³   r  r  rÁ   rÂ   rÃ   rÕ   ÚmetricsÚpredÚmeasure_normalizedÚmeasure_not_normalizedrc   rc   rd   Ú+test_normalize_option_binary_classification¨  s(    ýýr9  c                 C   s¦   d}d}t dƒ}|jd||fd�}|jd||fd�}|j||fd�}t|  }| tv rX|n|}|||dd�}	|||dd�}
td|	 dd	d
� t|	|
| d| › �d
� d S )Nr	  rµ   r   r¶   TrX   Fr0  r1  rº   r2  )rR   r¼   rÑ   r±   r¯   rK   rH   r4  rc   rc   rd   Ú/test_normalize_option_multiclass_classificationÅ  s(    ýýr:  c                 C   sÈ   d}d}t dƒ}td|dd|d�\}}td|dd|d�\}}|j|jd�}|dg| 7 }|dg| 7 }t|  }| tv rz|n|}	|||	dd�}
|||	d	d�}td
|
 ddd� t|
|| d| › �d� d S )Nr	  éd   r   r[   T)r  r  rÁ   r  r  r¶   rX   Fr0  r1  rº   r2  )rR   r   rÑ   rÒ   r±   r¯   rK   rH   )r³   r  r  rÁ   r  rÂ   rÃ   rÕ   r5  r6  r7  r8  rc   rc   rd   Ú/test_normalize_option_multilabel_classificationâ  sD    û
û
ýýr<  c                    sˆ  ˆj \}}ˆ ||d d�}t|‡ ‡‡fdd„t|ƒD ƒƒ ˆ ||dd�}	t|	ˆ ˆ ¡ ˆ ¡ ƒƒ ˆ ||dd�}
t|
t |¡ƒ tjˆdtd�}t |¡dkr¾ˆ ||dd�}t|tj||d	�ƒ nˆ ||dd�}t|dƒ |�rˆ ||d
d�}t|t ‡ ‡‡fdd„t|ƒD ƒ¡ƒ t	 
t¡� ˆ ||dd� W d   ƒ n1 �s@0    Y  t	 
t¡� ˆ ||dd� W d   ƒ n1 �sz0    Y  d S )Nrk   c                    s.   g | ]&}ˆ ˆd d …|f ˆd d …|f ƒ‘qS r«   rc   ©r"  r  ©rÄ   Úy_pred_binarizeÚy_true_binarizerc   rd   r#    s   ÿz$_check_averaging.<locals>.<listcomp>rl   rm   r   )r]   r-  ri   )Úweightsrn   c                    s   g | ]}ˆ ˆ| ˆ| ƒ‘qS rc   rc   r=  r>  rc   rd   r#  =  s   ÿÚunknownÚgarbage)rÒ   rH   r  Zravelr`   Úmeanr_   Úintrj   rÆ   rÇ   rÉ   )rÄ   rÂ   rÃ   r@  r?  Úis_multilabelr  r  Zlabel_measureZmicro_measureZmacro_measurerA  Zweighted_measureZsample_measurerc   r>  rd   Ú_check_averaging  sD    
þþ	ÿ
þÿþ
.rG  c                 C   sZ   t |ƒ d¡}t|  }| tv r2t||||||ƒ n$| tv rNt||||||ƒ ntdƒ‚d S )NZ
multilabelz2Metric is not recorded as having an average option)rP   Ú
startswithr±   ÚMETRICS_WITH_AVERAGINGrG  Ú"THRESHOLDED_METRICS_WITH_AVERAGINGrÉ   )r³   rÂ   r@  rÃ   r?  rÕ   rF  rÄ   rc   rc   rd   Úcheck_averagingJ  s    ÿÿrK  c           
      C   sz   d\}}t dƒ}|jd||fd�}|jd||fd�}|j||fd�}tƒ  |¡}| |¡}| |¡}	t| ||||	|ƒ d S )N)r  rö   r   r¶   )rR   r¼   rÑ   rB   ÚfitZ	transformrK  )
r³   r  r  rÁ   rÂ   rÃ   rÕ   Zlbr@  r?  rc   rc   rd   Útest_averaging_multiclass[  s    

rM  c           
      C   sh   d\}}t d|d|dd�\}}|d d… }|dd … }tdƒjd|fd�}|}|}	t| ||||	|ƒ d S )	N)é(   r  r[   r  Fr  rµ   r   r¶   )r   rR   r3  rK  )
r³   r  r  r  ÚyrÂ   rÃ   rÕ   r@  r?  rc   rc   rd   Útest_averaging_multilabelj  s    û
rP  c                 C   s<   t  d¡}t  d¡}t  d¡}|}|}t| |||||ƒ d S ©N©rµ   rö   )r`   ÚzerosrK  ©r³   rÂ   rÃ   rÕ   r@  r?  rc   rc   rd   Ú$test_averaging_multilabel_all_zeroes  s    


rU  c                  C   s>   t  d¡} t  d¡}| }|}ddd„}t|| |||dd� d S )NrR  rm   c                 S   s   t t| ||ƒS r«   )r6   r-   )rÂ   rÕ   rj   rc   rc   rd   re   �  s   ÿz=test_averaging_binary_multilabel_all_zeroes.<locals>.<lambda>T)rF  )rm   )r`   rS  rG  )rÂ   rÃ   r@  r?  Zbinary_metricrc   rc   rd   Ú+test_averaging_binary_multilabel_all_zeroesŠ  s    


úrV  c                 C   s<   t  d¡}t  d¡}t  d¡}|}|}t| |||||ƒ d S rQ  )r`   ÚonesrK  rT  rc   rc   rd   Ú"test_averaging_multilabel_all_ones�  s    


rX  c                 C   s<  t j d¡}|jddt|ƒd�}| dkr4t|dd�n|}|||d d�}t||||t jt|ƒd�d�d	|  d
� ||||d�}t 	t
¡�, t||ƒ td||| f ƒ‚W d   ƒ n1 s¸0    Y  |||| ¡ d�}t||d||| f d
� |t j||dd�t j||dd�d d�}	t||	d|  d
� |dd d… }
t  |¡}d|d d d…< |dd d… }|dd d… }||||
d�}||||d�}t||d||| f d
� |  d¡�sÒdD ]&}t|||||| d�d|  d
� �qªd t|ƒt|ƒt|ƒd ¡}tj	t|d��( |||t  ||g¡d� W d   ƒ n1 �s.0    Y  d S )Nr   r[   é
   r¶   r4   )r
  )Úsample_weight)rÒ   zAFor %s sample_weight=None is not equivalent to sample_weight=onesrº   zQUnweighted and weighted scores are unexpectedly almost equal (%s) and (%s) for %szVWeighted scores for array and list sample_weight input are not equal (%s != %s) for %sr\   z.Weighting %s is not equal to repeating samplesrf   zeZeroing weights does not give the same result as removing the corresponding samples (%s != %s) for %sZunnormalized)rf   r  z/%s sample_weight is not invariant under scalingzJFound input variables with inconsistent numbers of samples: \[{}, {}, {}\]ró   )r`   ÚrandomÚRandomStater¼   r’   r   rH   rW  rÆ   rÇ   rÈ   rÉ   Útolistr  ÚcopyrH  ré   rQ   Zhstack)r³   rÄ   r¦   r§   ÚrngrZ  Zunweighted_scoreZweighted_scoreZweighted_score_listZrepeat_weighted_scoreZsample_weight_subsetZsample_weight_zeroedZ	y1_subsetZ	y2_subsetZweighted_score_subsetZweighted_score_zeroedZscalingÚerror_messagerc   rc   rd   Úcheck_sample_weight_invariance¨  s„    ÿý
þÿ"üýýý
ÿüý
ý
	þÿra  c                 C   sB   d}t dƒ}|j|fd�}|j|fd�}t|  }t| |||ƒ d S )Nr  r   r¶   )rR   Úrandom_sampler±   ra  )r³   r  rÁ   rÂ   rÃ   rÄ   rc   rc   rd   Ú(test_regression_sample_weight_invariance	  s    rc  c                 C   sp   d}t dƒ}|jdd|fd�}|jdd|fd�}|j|fd�}t|  }| tv r^t| |||ƒ nt| |||ƒ d S )Nr  r   rf   r¶   )rR   r¼   rb  r±   r¯   ra  )r³   r  rÁ   rÂ   rÃ   rÕ   rÄ   rc   rc   rd   Ú$test_binary_sample_weight_invariance  s    rd  c           	      C   s–   d}t dƒ}|jdd|fd�}|jdd|fd�}|j|dfd�}t|  }| tv r„t | ¡}||jdd� dd¡ }t	| |||ƒ nt	| |||ƒ d S )Nr  r   r  r¶   r×   r\   r[   )
rR   r¼   rb  r±   r¯   r`   Úexpr_   rÚ   ra  )	r³   r  rÁ   rÂ   rÃ   rÕ   rÄ   ÚtempZy_score_normrc   rc   rd   Ú(test_multiclass_sample_weight_invariance1  s    rg  c           	      C   s¢   t dƒ}tdddddd�\}}tdddddd�\}}t ||g¡}t ||g¡}|j|jd�}||jddd	� }t|  }| tv r�t	| |||ƒ nt	| |||ƒ d S )
Nr   r[   rY  r  Fr  r¶   TrÐ   )
rR   r   r`   r&  rÑ   rÒ   r_   r±   r¯   ra  )	r³   rÁ   r  ZyaZybrÂ   rÃ   rÕ   rÄ   rc   rc   rd   Ú(test_multilabel_sample_weight_invarianceK  s    	
ÿ

ÿ
rh  c                  C   sØ   t  g d¢g d¢g¡} t  g d¢g d¢g¡}t  g d¢¡}t  g d¢¡}t  g d¢¡}t j|dd�\}}tD ]f}||g| |gfD ]P\}}	|tvrœ|	jd	krœq€t| }
|
||	|d d
�}|
||	d d�}t||| ƒ q€qld S )N)r[   r[   r   r   ©r   r   r[   r[   )r   r[   r[   r   )r   r[   rf   )r   rf   rö   )rö   r   r[   rf   T)Zreturn_inverser[   )ræ   rj   rk   )r`   r“   ÚuniquerI  rÀ   rÙ   r±   rJ   )Zy_true_multilabelZy_pred_multilabelZy_true_multiclassZy_pred_multiclassræ   r  Zinverse_labelsr³   rÂ   rÃ   rÄ   Zscore_labelsÚscorerc   rc   rd   Útest_no_averaging_labelsi  s     þrl  rs   c                 C   s–   t dƒ}d\}}|jdd||fd�}|jdd||fd�}t|  }|||ƒ}tt|ƒ|ƒD ]8}|d d …|f }	|d d …|f }
||
|	ƒ}t||ƒ qXd S )Nr   ©rµ   r	  rf   r¶   )rR   r¼   r±   r   r  rI   ©r³   rÁ   r  r  rÂ   rÕ   rÄ   rk  r  Úy_score_permÚy_true_permÚcurrent_scorerc   rc   rd   Ú-test_multilabel_label_permutations_invariance‚  s    

rr  c                 C   sò   t dƒ}d\}}|jdd||fd�}|j|jd�}||jddd� }d|| d¡dkdf< d|| d¡dkdf< t|  }|||ƒ}tt|ƒ|ƒD ]\}|d d …|f }	|d d …|f }
||
|	ƒ}|tkrât	 
|¡sÔJ ‚|d	ksìJ ‚q�t||ƒ q�d S )
Nr   rm  rf   r¶   r[   TrÐ   r	  g    €„.A)rR   r¼   rÑ   rÒ   r_   r±   r   r  r"   r`   rø   rI   rn  rc   rc   rd   Ú?test_thresholded_multilabel_multioutput_permutations_invariance—  s"    

rs  c                 C   sÊ   d\}}t dƒ}| ||¡}t | ¡}||jdd� dd¡ }|jd||d�}t|  }|||ƒ}tt	|ƒ|ƒD ]T}	tj
|td�}
t |¡|
t|	ƒ< |d d …|
f }t |	|¡}|||ƒ}t||ƒ qpd S )N)r;  rö   r   r×   r\   r[   r¶   r,  )rR   Zrandr`   re  r_   rÚ   r¼   r±   r   r  rS  rE  ZarangerØ   ZtakerI   )r³   r  r  rÁ   rÕ   rf  rÂ   rÄ   rk  r  Zinverse_permro  rp  rq  rc   rc   rd   Ú.test_thresholded_metric_permutation_invariance»  s    

rt  Úmetric_namec                 C   s€   t j d¡}t jdgd dgd  td�}|jdd|jd�}d	}tjt	|d
�� t
|  ||ƒ W d   ƒ n1 sr0    Y  d S )Né*   rà   rö   rß   rf   r,  r   r¶   z7Labels in y_true and y_pred should be of the same type.ró   )r`   r[  r\  r“   r+  r¼   r·   rÆ   rÇ   Ú	TypeErrorrç   )ru  r_  r¦   r§   r»   rc   rc   rd   Ú"test_metrics_consistent_type_errorÓ  s    rx  zmetric, y_pred_thresholdÚdtype_y_strc           
      C   sº   t j d¡}t jdgd dgd  |d�}|jdd|jd�}|sVt jddg|d�| }d	}d
}t| ƒjd j}|dkrz|n|}	t	j
t|	d�� | ||ƒ W d   ƒ n1 s¬0    Y  d S )Nrv  rà   rö   rß   rf   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 explicitzHpos_label=1 is not a valid label. It should be one of \['eggs', 'spam'\]râ   r[   ró   )r`   r[  r\  r“   r¼   r·   r   Ú
parametersÚdefaultrÆ   rÇ   rÉ   )
rÄ   Zy_pred_thresholdry  r_  r¦   r§   Zerr_msg_pos_label_NoneZerr_msg_pos_label_1Zpos_label_defaultr»   rc   rc   rd   Ú test_metrics_pos_label_error_strà  s    ÿÿr|  c                 K   sŠ  t ||ƒ}|j||d�}|j||d�}	| ||fi |¤Ž}
| d¡d ur\|j|d |d�|d< | d¡}t|tjƒr„|j||d�|d< zt |¡ t |	¡ d}W n ty¶   d}Y n0 |�r*| ||	fi |¤Ž}t||
t|ƒd� | ||	fi |¤Ž}t||
t|ƒd� | ||fi |¤Ž}t||
t|ƒd� t	dd��@ | ||	fi |¤Ž}tt
| |¡|ƒ|
t|ƒd� W d   ƒ n1 �s|0    Y  d S )N)ÚdevicerZ  rS   TF)Zatol)Zarray_api_dispatch)rG   ZasarrayÚgetr'  r`   Zndarrayrw  rH   rD   r   rE   )rÄ   Úarray_namespacer}  Ú
dtype_nameÚa_npÚb_npÚmetric_kwargsZxpZa_xpZb_xpZ	metric_nprS   Znumpy_as_array_worksZ	metric_xpZmetric_xp_mixed_1Zmetric_xp_mixed_2rc   rc   rd   Úcheck_array_api_metric	  sV    
ÿ




ýýýýr„  c              	   C   s^   t  g d¢¡}t  g d¢¡}t| |||||d d� t jg d¢|d�}t| ||||||d� d S )Nri  )r   r[   r   r[   ©r�  r‚  rZ  ©ç        rÿ   ç       @ç      ð?r,  ©r`   r“   r„  ©rÄ   r  r}  r€  Ú	y_true_npÚ	y_pred_nprZ  rc   rc   rd   Ú,check_array_api_binary_classification_metricH  s*    ù
ùrŽ  c           
      C   sŒ   t  g d¢¡}t  g d¢¡}ddi}t| |d�}|D ]R}t| |||f||d dœ|¤Ž t jg d¢|d�}	t| |||f|||	dœ|¤Ž q4d S )	N)r   r[   rf   rö   )r   r[   r   rf   rj   ©rl   rm   ri   ©rÄ   Úparamsr…  r†  r,  ©r`   r“   Ú(_get_metric_kwargs_for_array_api_testingr„  ©
rÄ   r  r}  r€  rŒ  r�  Zadditional_paramsÚmetric_kwargs_combinationsrƒ  rZ  rc   rc   rd   Ú0check_array_api_multiclass_classification_metrice  sD    ÿþüùøüùør–  c           
      C   s°   t jddgddgddgg|d�}t jddgddgddgg|d�}ddi}t| |d�}|D ]R}t| |||f||d dœ|¤Ž t jg d¢|d�}	t| |||f|||	dœ|¤Ž qXd S )	Nr[   r   r,  rj   r�  r�  r…  )r‡  rÿ   rˆ  r’  r”  rc   rc   rd   Ú0check_array_api_multilabel_classification_metricŒ  sD      ÿþüùøüùør—  c           	      C   sÒ   t | tƒr| jjn| j}|dkr6ttdƒk r6t d¡ tj	g d¢|d�}tj	g d¢|d�}i }t
| ƒj}d|v rxd |d< t| |||f||dœ|¤Ž d|v rÎtj	g d	¢|d�|d< t| |||f||dœ|¤Ž d S )
Nr%   z1.14.0zJmean_poisson_deviance's dependency `xlogy` is available as of scipy 1.14.0)rˆ  rÿ   r‰  g      @r,  )rh   rh   rf   rf   rZ  ©r�  r‚  )rÿ   rˆ  ç      ø?rh   )r'  r   Úfuncr)  rO   rN   rÆ   Úskipr`   r“   r   rz  r„  )	rÄ   r  r}  r€  Ú	func_namerŒ  r�  rƒ  Zmetric_paramsrc   rc   rd   Ú!check_array_api_regression_metric³  sJ    ÿ
üúù
ÿ
üúùr�  c                 C   s°   t jg d¢g d¢g|d�}t jg d¢g d¢g|d�}t| |||||d d� t jddg|d�}t| ||||||d� t| |||||t jg d	¢|d�d
� t| |||||dd
� d S )N)r[   rö   rf   )r[   rf   rf   r,  )r[   r	  r	  )r[   r[   r[   r…  rÿ   rˆ  )rÿ   r  çffffffæ?)r�  r‚  rS   Z
raw_valuesrŠ  r‹  rc   rc   rd   Ú-check_array_api_regression_metric_multioutputÝ  sN    ù
ù
ù
ùrŸ  c                 C   s’   t jg d¢g d¢g|d�}t jg d¢g d¢g|d�}i }dt| ƒjv rrd|d< t| |||f||dœ|¤Ž d	|d< t| |||f||dœ|¤Ž d S )
Nrþ   )çš™™™™™Ù?rh   ç333333ã?r,  )r   r  r   )rh   r¡  rž  Zdense_outputFr˜  T)r`   r“   r   rz  r„  )rÄ   r  r}  r€  ZX_npZY_nprƒ  rc   rc   rd   Úcheck_array_api_metric_pairwise  s8    üúù	üúùr¢  g      à¿r™  c                 c   s*   |   ¡ D ]\}}|D ]}||fV  qqd S r«   )Úitems)Zmetric_checkersrÄ   ZcheckersÚcheckerrc   rc   rd   Ú!yield_metric_checker_combinationst  s    r¥  z#array_namespace, device, dtype_namezmetric, check_funcc                 C   s   || |||ƒ d S r«   rc   )rÄ   r  r}  r€  Z
check_funcrc   rc   rd   Útest_array_api_compliancez  s    r¦  Údf_lib_nameZpandasZpolarsc                 C   s|   t  |¡}| g d¢¡}| g d¢¡}t|  }z|| ¡ | ¡ ƒ}W n" tyf   t  | › d�¡ Y n0 t|||ƒ|ƒ d S )N)r‡  r‰  r   r‰  )r‰  r‡  r‡  r‡  z can not deal with 1d inputs)rÆ   ZimportorskipZSeriesr±   Zto_numpyrÉ   r›  rH   )ru  r§  Zdf_librÃ   rÂ   rÄ   Zexpected_metricrc   rc   rd   Útest_metrics_dataframe_series‚  s    
r¨  c           	      C   sb   i g}|  ¡ D ]N\}}|t| ƒjvr&qg }|D ](}|D ]}| ¡ }|||< | |¡ q6q.|}q|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   rz  r^  Úappend)	rÄ   r‘  r•  Úparamr  Znew_combinationsrb   ÚvalueZ
new_kwargsrc   rc   rd   r“  “  s    r“  )ÀrÛ   Ú	functoolsr   Úinspectr   Ú	itertoolsr   r   r   Únumpyr`   rÆ   Zsklearn._configr   Zsklearn.datasetsr   Zsklearn.exceptionsr	   Z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-   r.   r/   r0   r1   r2   r3   r4   r5   Zsklearn.metrics._baser6   Zsklearn.metrics.pairwiser7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Zsklearn.preprocessingrB   Zsklearn.utilsrC   Zsklearn.utils._array_apirD   rE   rF   Zsklearn.utils._testingrG   rH   rI   rJ   rK   rL   Zsklearn.utils.fixesrM   rN   rO   Zsklearn.utils.multiclassrP   Zsklearn.utils.validationrQ   rR   ZREGRESSION_METRICSrç   r˜   ZCURVE_METRICSr¯   Údictr±   Úupdater¿   ZMETRIC_UNDEFINED_MULTICLASSÚunionr°   rI  rJ  rè   rê   ZMETRICS_WITH_NORMALIZE_OPTIONrÓ   rÀ   rÔ   r¬   r­   ZMETRICS_WITHOUT_SAMPLE_WEIGHTr½   r¾   r©   rª   r²   ÚmarkZparametrizeÚsortedrÅ   rÊ   r®   rÏ   rÖ   rÞ   rñ   rò   Úinfr–   Zinvalids_nan_infr  rõ   rû   r  r  r  Úfilterwarningsr  r  r  r  r*  r/  r9  r:  Úintersectionr<  rG  rK  rM  rP  rU  rV  rX  ra  rc  rd  rg  rh  rl  rr  rs  rt  rx  Ústrr+  r|  r„  rŽ  r–  r—  r�  rŸ  r¢  Zarray_api_metric_checkersr¥  r¦  r¨  r“  rc   rc   rc   rd   Ú<module>   s  ¸.4 $



î

ÿ


















Ë9 ý



ÿÿ
ÿÿ
á"



ÿ
$"$$	þ

!
ÿ
-ÿ
~ÿ
5
+û	ÿ	þüþ

ýüÿþ


	

K


ÿ
/6
ÿ




aÿÿþ

ÿþýÿþ	
ÿþýÿþ	

ÿÿþ
ÿ
ÿ
!ÿ

÷þ?''*1ýýýýþþþþÿþþþ¼Hÿ