
    0Ph                    v   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 i de)de*de/de0de-de2de+ded ee7d          de;de<d ee1d            d!e.d"e,d# ee1d$           d% eed$           d&ed'eiZei d(ed)ed* eed+,          d- eed./          d0ed1d2 d3e3d4 ee3d+5          d6e"d7e>d8 ee>d./          d9e$d:e6d;e8d<e d= ee!d>?          d@ ee!dA?          i dBe(dC ee!dDdAE          dF ee dDG          dH ee!dDd>E          dI ee6dDG          dJ ee8dDG          dK ee$dDG          dL ee!dMdAE          dN ee dMG          dO ee!dMd>E          dP ee6dMG          dQ ee8dMG          dR ee$dMG          dS ee!dTdAE          dU ee dTG          dV ee!dTd>E          dW ee6dTG           ee8dTG           ee$dTG           ee!dXdAE           ee dXG           ee!dXd>E           ee6dXG           ee8dXG           ee$dXG          edY	ZfdZ Zge:eged[Zhi d\ed]e&d^e'd_ ee'd./          d`e#daedbe9dc ee9dDG          dd ee9dXG          de ee9dMG          df ee9dTdgh          di ee9dDdgh          dj ee9dTdkh          dl ee9dDdkh          dm ee9dAn          doedp eedDG           eedXG           eedMG          e%e4ee=dqZi ej            Zkekl                    ei           ekl                    ef           ekl                    ee           ekl                    eh           h drZmh dsZnemo                    en          Zph dtZqh duZrh dvZsh dwZth dxZuh dyZvh dzZwh d{Zxh d|Zyh d}Zzh d~Z{h dZ|ddhZ}d Z~d Zd Zej                            d eey                    d             Zej                            d eez                    d             Zej                            d e eek          epz
                      d             Zd Zej                            d e eek          epz
                      d             Zej                            d e eef          epz
                      d             Zej                            dei          d             Zd dge
j        e
j        gfd dge
j        e
j        gfd dge
j        e
j        gfd dge
j        dgfd dge
j        dgfgZej                            d eei                                ee                                                    ej                            de          d                         Zej                            def                                          ej                            dee
j        dd>gg dfe
j        dd>gg dfgz             d                         Zej                            def                                          d             Zd Zd Zej                            d          ej                            d e eek          epz
   eei          z
                      d                         Zej                            d          ej                            d eexewz                      d                         Zej                            d eex                    d             Zej                            d eex                    d             Zej                            d          ej                            de]          d                         Zej                            d eew                    d             Zej                            d eeu                    d             Zej                            d eeu                    d             Zej                            d eeu                    ew                              d             Zd Zd Zej                            d eeq                    d             Zej                            d eeqerz                      d             Zej                            d eeq                    d             Zd Zej                            d eeq                    d             Zd Zej                            d e eek                               eee                    e{z
                      d             Zej                            d e eek           eee          z
  e{z
  emz
                      d             Zej                            d e eek           eee          z
  e{z
  epz
                      d             Zej                            d eewevz  exz  e{z
                      d             Zd Zej                            d eewd3hz
                      d             Zej                            d eevexz                      d             Zej                            d e eei          epz
                      d             Zej                            def          d             Zej                            ded+fed+fe d.f ee!d?          d.fe$d.fe5d+fe6d.fe8d.fe:d+fg	          ej                            deeg          d                         Zd Zd Zd Zd Zd Zd Zd Zi eeeege eeege3eeege>eeege1eg ee1d           eg ee1d           ege7eegeEege*eege/eege0eegeegeHege.egeBege,ege)ege+eegeCegeIegeDegeFegeGegeJegeKege;eege<eegeLegiZefdZej                            d eT                      ej                            d e                      d                         Zej                            dddg          ej                            d eek                    dń                         ZdƄ Zd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_stater!   r"   r'   r(   r%   r*   r#   r   r/   variance_weighted)multioutputr3   r4   mean_normal_deviance)powerr&   r$   mean_compound_poisson_deviancegffffff?r   r   r   r   r    adjusted_balanced_accuracy_scoreT)adjustedunnormalized_accuracy_scoreF	normalizeunnormalized_confusion_matrixnormalized_confusion_matrixc                      t          | i |                    d          t          | i |                    d          d d t          j        f         z  S )Nfloat   axis)r   astypesumnpnewaxis)argskwargss     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/metrics/tests/test_common.py<lambda>rl      s[    $)&))0099
D
+F
+
+
/
/Q
/
7
72:
F	G     (unnormalized_multilabel_confusion_matrix/unnormalized_multilabel_confusion_matrix_sample)
samplewiser   r6   unnormalized_zero_one_lossr   r.   r0   r   f2_score   )beta
f0.5_score      ?matthews_corrcoef_scoreweighted_f0.5_scoreweighted)averagert   weighted_f1_scorerz   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        |                    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 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   constant)	pad_widthmodeconstant_values)r-   lenrg   arraypadre   float64nan)ri   rj   	precisionrecall
thresholdspad_threshholdss         rk   (precision_recall_curve_padded_thresholdsr      s     %;D$KF$K$K!Ivz)nns:6O8F!!"*--o.!#	  		
  rm   )r2   r-   r   r   r   r   unnormalized_log_lossr   r   r1   weighted_roc_aucsamples_roc_aucmicro_roc_aucovr_roc_aucovr)rz   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   r,   r   r5   >   r   r,   r   r   r   r   r   r   r   r   ro   r   >   r   rr   r   r2   r0   r   r   r1   r   r.   r   r   r   r-   ru   >   r   rr   r0   r   r.   ru   >   r1   r   r   >   r   rr   r   r2   r0   r   r.   r   r-   r   r   r   r   ru   >    r   rr   r   r2   r0   r   r   r   r   r   r.   r   r{   r}   r   r   r   r   r   r   r   r-   r   r~   r_   r^   rn   ro   ru   r   r   rx   >   r6   r   r5   >   r   r   r,   r   r1   r   r   r   r   r   r   r   r   r   r   r   >   r   r6   r   r   r   r   r   r   r   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r~   rq   r[   rn   r   r   r   rx   >   r/   r   r%   r'   r"   r*   r(   r   r3   r   r4   r#   >   r   r!   r   r   r6   r   r   r   r   r   r%   r'   r   r   r"   r   rV   r*   r   r   r   r(   rw   r3   rq   r4   r[   r   >   rr   r/   r   r2   r   r0   r   r.   r   r   r{   r}   r   r$   r   r&   r-   r   r   r   r   r~   r_   r^   r#   rX   rY   rn   ru   r   rx   >   r!   r   r   r*   >   r   r$   r&   rX   c                     t          t          |                                 |                                                    dz   }| |z  } ||z  }| |fS )zMake targets strictly positiverb   )absminy1y2offsets      rk   _require_positive_targetsr   ?  sI    RVVXXrvvxx(())A-F&LB&LBr6Mrm   c                 "   t          t          |                                 |                                                    dz
  }|                     t          j                  } |                    t          j                  }| |z  } ||z  }| |fS )z$Make targets strictly larger than -1gGz?)r   r   re   rg   r   r   s      rk   _require_log1p_targetsr   G  so    RVVXXrvvxx(())D0F	2:		B	2:		B&LB&LBr6Mrm   c                      t           t          z  t          t                    z  t          z  t          t
                    k    sJ t           t          z  t                      k    sJ d S N)SYMMETRIC_METRICSNOT_SYMMETRIC_METRICSsetTHRESHOLDED_METRICS"METRIC_UNDEFINED_BINARY_MULTICLASSALL_METRICS rm   rk   test_symmetry_consistencyr   Q  sn     	
	 
!
"
"	# -	- 
[		     55#%%??????rm   namec                 P   t          d          }|                    ddd          }|                    ddd          }| t          v rt          ||          \  }}n| t          v rt          ||          \  }}|                    ddd          }|                    ddd          }t          |          }| t          v r>| t          v r+t           |||           |||          d| z             d S J d	            t           |||           |||          d| z             d S )
Nr   rs      sizer      z%s is not symmetricerr_msgFz This case is currently unhandled)
rS   randintMETRICS_REQUIRE_POSITIVE_Yr   METRICS_WITH_LOG1P_Yr   r   METRIC_UNDEFINED_BINARYMULTILABELS_METRICSrI   )r   random_statey_truey_pred
y_true_bin
y_pred_binmetrics          rk   test_symmetric_metricr   ]  sz    &a((L!!!QU!33F!!!QU!33F)))266BB	%	%	%/??%%a%::J%%a%::JF&&&&&&z:..z:..-4      =<<<<F66""F66"")D0	
 	
 	
 	
 	
 	
rm   c                    t          d          }|                    ddd          }|                    ddd          }| t          v rt          ||          \  }}t          |          }t          j        t                    5  t           |||           |||                     t          d| z            # 1 swxY w Y   d S )Nr   rs   r   r   z%s seems to be symmetric)
rS   r   r   r   r   pytestraisesAssertionErrorrK   
ValueError)r   r   r   r   r   s        rk   test_not_symmetric_metricr     s     &a((L!!!QU!33F!!!QU!33F)))266BBF 
~	&	& < <66&&1166&&3I3IJJJ3d:;;;< < < < < < < < < <s   7B99B= B=c                    t          d          }|                    ddd          }|                    ddd          }| t          v rt          ||          \  }}n| t          v rt          ||          \  }}t          ||d          \  }}t                      5  t          |          }t           |||           |||          d| z             d d d            d S # 1 swxY w Y   d S )Nr   rs   r   r   r    %s is not sample order invariantr   )
rS   r   r   r   r   r   rD   rM   r   rI   )r   r   r   r   y_true_shuffley_pred_shuffler   s          rk   test_sample_order_invariancer     sU    &a((L!!!QU!33F!!!QU!33F)))266BB	%	%	%/??%,VV!%L%L%L"NN			 
 
T"F66""F>>226=	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   7C  C$'C$c                     t          d          } |                     ddd          }|                     ddd          }|                     |j                  }||                    dd          z  }t          |||d          \  }}}t          D ]8}t          |         }t           |||           |||          d	|z  
           9t          D ]8}t          |         }t           |||           |||          d	|z  
           9t          D ]a}t          |         }t           |||           |||          d	|z  
           t           |||           |||          d	|z  
           bd S )Nr   rs   r   r   rb   Trd   keepdimsr   r   r   )rS   r   uniformshaperf   rD   r   r   rI   THRESHOLDED_MULTILABEL_METRICSMULTIOUTPUT_METRICS)	r   r   r   y_scorer   r   y_score_shuffler   r   s	            rk   7test_sample_order_invariance_multilabel_and_multioutputr     s   %a((L !!!QX!66F!!!QX!66F"""55G w{{D{111G6=a7 7 73NNO $ 
 
T"F66""F>>226=	
 	
 	
 	
 	
 / 
 
T"F67##F>?336=	
 	
 	
 	
 	
 $ 
 
T"F67##F>?336=	
 	
 	
 	

 	F66""F>>226=	
 	
 	
 	
 	

 
rm   c                 b	   t          d          }|                    ddd          }|                    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            n# 1 swxY w Y   t          j        t"                    5   ||
|           d d d            n# 1 swxY w Y   t          j        t"                    5   |||           d d d            n# 1 swxY w Y   t          j        t"                    5   ||
|           d d d            n# 1 swxY w Y   t          j        t"                    5   |||           d d d            n# 1 swxY w Y   t          j        t"                    5   ||
|	           d d d            n# 1 swxY w Y   | t$          t&          z  t(          z  vrd| v rSt          j        t,                    5  t/          j         ||
|                    sJ 	 d d d            n# 1 swxY w Y   n=t          j        t"                    5   ||
|           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r   r   rb   )rb   )rb   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)rS   r   r   r   r   r   listrg   r   rK   ndimreshaperM   r   rI   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                 rk   &test_format_invariance_with_1d_vectorsr    s    &a((L			a		/	/B			a		/	/B)))*2r22BB	%	%	%'B//B2hhG2hhG8B<<"5Euz1%%%uz1%%%
5'**I
5'**IZw''FZw''F			 f+ f+T"&R..F7G$$BTI	
 	
 	
 	
 	F5%  IDP	
 	
 	
 	
 	F9i((MPTT	
 	
 	
 	
 	F5'""V	
 	
 	
 	
 	F7E""V	
 	
 	
 	
 	F5)$$2 		
 	
 	
 	
 	F9e$$2 		
 	
 	
 	
 	F7I&&V	
 	
 	
 	
 	F9g&&V	
 	
 	
 	
 ]:&& 	" 	"F5&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]:&& 	" 	"F65!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]:&& 	$ 	$F7F###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]:&& 	$ 	$F67###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]:&& 	& 	&F9f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&]:&& 	& 	&F69%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
 "@@CVV
 
 D   \"899 > >:ffVV&<&<======> > > > > > > > > > > > > > > ]:.. + +F66***+ + + + + + + + + + + + + + +Kf+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+ f+s3  E
R$J."R$.J2	2R$5J2	6R$K+R$+K/	/R$2K/	3R$L(R$(L,	,R$/L,	0R$M%R$%M)	)R$,M)	-R$	N"R$"N&	&R$)N&	*R$OR$O#	#R$&O#	'9R$ !QR$Q	R$Q	R$3R R$R	R$R	R$$R(+R(c                    t          d          }|                    ddd          }|                    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	                    |           	            |
|
                    d
          |
                    d
                    }t          |	|d	                    |           	           | t          v rt          |
|          }
 |
||          }t          |	|d	                    |           	            |
|
                    d
          |
                    d
                    }t          |	|d	                    |           	           d d d            d S # 1 swxY w Y   d S )Nr   rs   r   r   eggsspam	pos_label+{0} failed string vs number invariance testr   O2{0} failed string object vs number invariance test)labelsz,{0} failed string vs number  invariance test)rS   r   rg   r   rM   CLASSIFICATION_METRICSMETRICS_WITH_POS_LABELr   rK   formatre   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                rk   7test_classification_invariance_string_vs_numbers_labelsr  W  s   
 &a((L			a		/	/B			a		/	/BXvv&''+FXvv&''+FM&!J			 & &'-$fRnn 
))) }EEEJ%:ff55AHHNN	
 	
 	
 	
 )js););V]]3=O=OPPHOOPTUU	
 	
 	
 	
 &&& J???J)z&&99# FMMdSS    #-*V]]3-?-?sASAS"T"T##FMMdSS   E& & & & & & & & & & & & & & & & & &s   E G99G= G=c                    t          d          }|                    ddd          }|                    ddd          }t          j        ddg          |         }d}t	                      5  t
          |          }| t          vr|}| t          v rt          ||          } |||          } |||          }	t          ||	d
                    |           	            ||                    d
          |          }
t          ||
d
                    |           	           nt          j        t                    5   |||           d d d            n# 1 swxY w Y   t          j        t                    5   ||                    d
          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r   r   r	  r
  r  r  r   r  r  )rS   r   rg   r   rM   r   r   r  r   rK   r  re   r   r   r   )r   r   r   r   r  r  r   r  r  r  r  s              rk   4test_thresholded_invariance_string_vs_numbers_labelsr    s    &a((L			a		/	/B			a		/	/BXvv&''+FM			 / /$T*...J---$Z=III
"(&R..)z&"55# ELLTRR    #-*V]]3-?-?"D"D##LSS      z** # #vr"""# # # # # # # # # # # # # # #z** / /v}}S))2.../ / / / / / / / / / / / / / /9/ / / / / / / / / / / / / / / / / /s[   ,CF;:EF;E	F;E	F;7 F#F;#F'	'F;*F'	+F;;F?F?rb   r   zy_true, y_scorec                     | t           k    r|g}|g}t          j        t          d          5   | ||           d d d            d S # 1 swxY w Y   d S )Nzcontains (NaN|infinity)match)r   r   r   r   )r   r   r   s      rk   )test_regression_thresholded_inf_nan_inputr#    s     )	z)C	D	D	D    vw                                   s   AAA)rb   rs      c                    t          j        |                                          s.d}t          j        |                                          rd}n0d}n-d}t          j        |                                          rd}nd}d| d| }t          j        t          |          5   | ||           ddd           dS # 1 swxY w 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)rg   isfiniteallr   anyr   r   r   )r   r   r   
input_nameunexpected_valuer   s         rk   !test_classification_inf_nan_inputr,    s*    ;v""$$ ?
8F!! 	?$>
8G  "" 	?$>?z??-=??G	z	1	1	1    vw                                   s   %B??CCc                     g dg d}}d}t          j        t          |          5   | ||           ddd           dS # 1 swxY w 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   s       rk   +test_classification_binary_continuous_inputr4    s     &ooGFT  
z	1	1	1    vw                                   s   A  A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           d S )Nrb   rs   gffffffr   repeat)r   r   r   r   )r   r   valuesijs        rk   check_single_sampler;    s    
 F )))Q	%	%	%Qq)))  1sQC rm   c                     t           |          }t          ddgd          D ]=\  }}}} |t          j        ||gg          t          j        ||gg                     >d S )Nr   rb      r6  )r   r   rg   r   )r   r   r9  r:  kls         rk   check_single_sample_multioutputr@    ss    Fq!fQ/// 7 7
1arx!Q!!28aVH#5#566667 7rm   ignorec                 $    t          |            d S r   )r;  r   s    rk   test_single_samplerD    s     rm   c                 $    t          |            d S r   )r@  rC  s    rk   test_single_sample_multioutputrF  '  s     $D)))))rm   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            d S # 1 swxY w Y   d S )N)rb   r   r   rb   )r   rb   rb   rb   )rb   rb   r   rb   r   rb   rg   r   r   r   r   r   )r   r   r   r   s       rk   (test_multioutput_number_of_output_differrI  -  s    X|||\\\<<<@AAFX1v1v1v.//FF	z	"	"  vv                 s   !A;;A?A?c           	         t          d          }|                    ddd          }|                    ddd          }t          |          } |||          }t          d          D ]U}|                    |j        d                   }t           ||d d |f         |d d |f                   |d| z             Vd S )	Nr   rs   )r      r   r$  rb   z'%s is not dimension shuffling invariantr   )rS   r   r   rangepermutationr   rI   )r   r   r   r   r   error_perms           rk   =test_multioutput_regression_invariance_to_dimension_shufflingrQ  7  s     &a((L!!!QW!55F!!!QW!55FFF66""E1XX 
 
''Q88F6!!!T'?F111d7O44=F	
 	
 	
 	
 	

 
rm   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 |D             }
d |	D             }t          D ]}t
          |         }t          |t                    rd	|_        ||_	         |||          }t           |||          |d
|z             t           ||
|          |d|z             t           |||	          |d|z             d S )Nr=  2   rb   r   T
n_features	n_classesr   	n_samplesallow_unlabeledc                 ,    g | ]}t          |          S r   r   .0r.  s     rk   
<listcomp>z=test_multilabel_representation_invariance.<locals>.<listcomp>j      GGG!d1ggGGGrm   c                 ,    g | ]}t          |          S r   r[  r\  s     rk   r^  z=test_multilabel_representation_invariance.<locals>.<listcomp>k  r_  rm   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	   rg   vstackr   r   r   
isinstancer   
__module____name__rI   rJ   )rR  rW  rX  rO  r   r   y1_sparse_indicatory2_sparse_indicatory1_list_array_indicatory2_list_array_indicatory1_list_list_indicatory2_list_list_indicatorr   r   r  s                  rk   )test_multilabel_representation_invariancerl  J  s
    II*  EAr +  EAr 
B!y)*	+	+B	B!y)*	+	+B'-++'-++"2hh"2hhGG/FGGGGG/FGGG# '
 '
T" fg&& 	# %F"FO&R.. 	F&(;<<6 		
 	
 	
 	
 	F)+ABB% 		
 		
 		
 		
 	F*,CDD% 		
 		
 		
 		
 		
='
 '
rm   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            n# 1 swxY w Y   @d S )Nrb   rs   r   )r   rs   )r   rb   r   objectdtyperH  )r   multilabel_sequencesr   seqs       rk   +test_raise_value_error_multilabel_sequencesrs    s     qcAq6		
"q!fX... F#  ]:&& 	 	F3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   A..A2	5A2	c                    d}d}t          d          }|                    d||f          }|                    d||f          }|                    |j                  }t          |          }| t
          v r|n|} |||d          }	 |||d          }
t          d|	z  dd	
           t          |	|
|z  d|  
           d S )Nrs   r   r   r   Tr\   F      0We failed to test correctly the normalize optionr   Failed with )rS   r   normalr   r   r   rL   rI   r   rW  rX  r   r   r   r   metricspredmeasure_normalizedmeasure_not_normalizeds              rk   +test_normalize_option_binary_classificationr~    s    II%a((L!!!Yi\!BBF!!!Yi\!BBF!!v|!44G$G11177vD >>>$WVTUCCC!!	B    *%t%%     rm   c                    d}d}t          d          }|                    d||f          }|                    d||f          }|                    ||f          }t          |          }| t          v r|n|} |||d          }	 |||d          }
t          d|	z  dd	
           t          |	|
|z  d|  
           d S )Nr=  r   r   r   Tr\   Fru  rv  r   rw  )rS   r   r   r   r   rL   rI   ry  s              rk   /test_normalize_option_multiclass_classificationr    s    II%a((L!!!Yi\!BBF!!!Yi\!BBF""I(>"??G$G11177vD >>>$WVTUCCC!!	B    *%t%%     rm   c                    d}d}t          d          }t          d|dd|          \  }}t          d|dd|          \  }}|                    |j                  }|dg|z  z  }|dg|z  z  }t          |          }| t
          v r|n|}	 |||	d          }
 |||	d	          }t          d
|
z  dd           t          |
||z  d|             d S )Nr=  d   r   rb   T)rV  rW  r   rY  rX  r   r\   Fru  rv  r   rw  )rS   r	   r   r   r   r   rL   rI   )r   rW  rX  r   rO  r   r   r   rz  r{  r|  r}  s               rk   /test_normalize_option_multilabel_classificationr    sT   
 II%a((L /  IAv /  IAv """55G qcIoF
qcIoF$G11177vD >>>$WVTUCCC!!	B    *%t%%     rm   c           	      ,    j         \  }}  ||d           }t          | fdt          |          D                          ||d          }	t          |	                                                                                         ||d          }
t          |
t	          j        |                     t	          j        dt                    }t	          j        |          dk    r3  ||d          }t          |t	          j        ||                     n  ||d          }t          |d           |rK  ||d	          }t          |t	          j         fd
t          |          D                                  t          j
        t                    5    ||d           d d d            n# 1 swxY w Y   t          j
        t                    5    ||d           d d d            d S # 1 swxY w Y   d S )Nr|   c                 P    g | ]"} d d |f         d d |f                   #S r   r   r]  r9  r   y_pred_binarizey_true_binarizes     rk   r^  z$_check_averaging.<locals>.<listcomp>  sO     	
 	
 	
 F?111a4(/!!!Q$*?@@	
 	
 	
rm   r   r   r   )rd   rp  ry   )weightsr   c                 @    g | ]} |         |                   S r   r   r  s     rk   r^  z$_check_averaging.<locals>.<listcomp>=  s?        F?1-q/ABB  rm   unknowngarbage)r   rI   rL  ravelrg   meanrf   intrz   r   r   r   )r   r   r   r  r  is_multilabelrX  rW  label_measuremicro_measuremacro_measurer  weighted_measuresample_measures   `  ``         rk   _check_averagingr    s    +0Iy F664888M	
 	
 	
 	
 	
 	
9%%	
 	
 	
   F667;;;Mvvo33557L7L7N7NOO  
 F667;;;MM27=#9#9::: f_1C888G	vg!!6&&*EEE("*]G*T*T*TUUUU!6&&*EEE(!,,,  

	BBBG     "9--   	
 	
 	
 
z	"	" 2 2vvy11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	"	" 2 2vvy11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s$   .G		GG-H		HHc                     t          |                              d          }t          |          }| t          v rt	          ||||||           d S | t
          v rt	          ||||||           d S t          d          )N
multilabelz2Metric is not recorded as having an average option)rQ   
startswithr   METRICS_WITH_AVERAGINGr  "THRESHOLDED_METRICS_WITH_AVERAGINGr   )r   r   r  r   r  r   r  r   s           rk   check_averagingr  J  s    "6**55lCCMF%%%FFO_m	
 	
 	
 	
 	
 
3	3	3FG_g}	
 	
 	
 	
 	
 MNNNrm   c                    d\  }}t          d          }|                    d||f          }|                    d||f          }|                    ||f          }t                                          |          }|                    |          }|                    |          }	t          | ||||	|           d S )N)rT  r$  r   r   )rS   r   r   rC   fit	transformr  )
r   rX  rW  r   r   r   r   lbr  r  s
             rk   test_averaging_multiclassr  [  s     Iy%a((L!!!Yi\!BBF!!!Yi\!BBF""I(>"??G					f	%	%Bll6**Oll6**OD&/6?GTTTTTrm   c                     d\  }}t          d|d|d          \  }}|d d         }|dd          }t          d                              d|f          }|}|}	t          | ||||	|           d S )	N)(   rK  rb   rK  FrU  r   r   r   )r	   rS   rx  r  )
r   rX  rW  rO  yr   r   r   r  r  s
             rk   test_averaging_multilabelr  j  s     !Iy)  DAq ssVFrssVF ##**Y*@@GOOD&/6?GTTTTTrm   c                     t          j        d          }t          j        d          }t          j        d          }|}|}t          | |||||           d S Nr   r$  )rg   zerosr  r   r   r   r   r  r  s         rk   $test_averaging_multilabel_all_zeroesr    sW    XgFXgFhwGOOD&/6?GTTTTTrm   c                      t          j        d          } t          j        d          }| }|}dd}t          || |||d           d S )Nr  r   c                 0    t          t          | ||          S r   )r7   r.   )r   r   rz   s      rk   rl   z=test_averaging_binary_multilabel_all_zeroes.<locals>.<lambda>  s    =R'> > rm   T)r  )r   )rg   r  r  )r   r   r  r  binary_metrics        rk   +test_averaging_binary_multilabel_all_zeroesr    sp    XgFXgFOO  M      rm   c                     t          j        d          }t          j        d          }t          j        d          }|}|}t          | |||||           d S r  )rg   onesr  r  s         rk   "test_averaging_multilabel_all_onesr    sW    WWFWWFggGOOD&/6?GTTTTTrm   c                    t           j                            d          }|                    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xY w Y    ||||                                          }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| 
           |                     d          s)dD ]&}t          | |||||z            d| z  
           'd                    t#          |          t#          |          t#          |          dz            }t          j	        t          |          5   |||t          j        ||g                     d d d            d S # 1 swxY w Y   d S )Nr   rb   
   r   r5   )r>  )sample_weight)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 != rc   z.Weighting %s is not equal to repeating samplesrs   zUZeroing weights does not give the same result as removing the corresponding samples (unnormalized)rs   r3  z/%s sample_weight is not invariant under scalingzJFound input variables with inconsistent numbers of samples: \[{}, {}, {}\]r!  )rg   randomRandomStater   r   r   rI   r  r   r   r   r   tolistr7  copyr  r  rR   hstack)r   r   r   r   rngr  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error_messages                     rk   check_sample_weight_invariancer    sE   
)


"
"CKK2CGGK44M &*-C%C%CWVq!!!!F vb"D999r2RW3r77%;%;%;<<<S
    VB-@@@N 
~	&	& 
 
(.999j )((...$$@
 
 	

 
 
 
 
 
 
 
 !&R}7K7K7M7MNNN
 >>...	6    #F
	"m!,,,
	"m!,,,  
 @4G    )A.7=11 !114a4I14a4I"F9,@   #F2r9MNNN
 !  "7"7"7	?    ??>**    	 	Gr2]W-DEEEIDP    	##)6l2..]0K0Ka0O$
 $
  
z	7	7	7 P Pr2RY}/M%N%NOOOOP P P P P P P P P P P P P P P P P Ps$   )C==DD#KKKc                     d}t          d          }|                    |f          }|                    |f          }t          |          }t          | |||           d S )NrT  r   r   )rS   random_sampler   r  )r   rX  r   r   r   r   s         rk   (test_regression_sample_weight_invariancer  	  sj     I%a((L''i\'::F''i\'::FF"4@@@@@rm   c                 2   d}t          d          }|                    dd|f          }|                    dd|f          }|                    |f          }t          |          }| t          v rt          | |||           d S t          | |||           d S )NrT  r   rs   r   )rS   r   r  r   r   r  )r   rX  r   r   r   r   r   s          rk   $test_binary_sample_weight_invariancer    s     I%a((L!!!Qi\!::F!!!Qi\!::F((yl(;;GF"""&tVVWEEEEE&tVVVDDDDDrm   c                    d}t          d          }|                    dd|f          }|                    dd|f          }|                    |df          }t          |          }| t          v rVt          j        |           }||                    d                              dd          z  }t          | |||           d S t          | |||           d S )NrT  r   rK  r   r   rc   rb   )
rS   r   r  r   r   rg   exprf   r   r  )	r   rX  r   r   r   r   r   tempy_score_norms	            rk   (test_multiclass_sample_weight_invariancer  1  s     I%a((L!!!Qi\!::F!!!Qi\!::F((y!n(==GF"""vwhdhhBh//77A>>>&tVV\JJJJJ&tVVVDDDDDrm   c                    t          d          }t          ddddd          \  }}t          ddddd          \  }}t          j        ||g          }t          j        ||g          }|                    |j                  }||                    dd	          z  }t          |          }| t          v rt          | |||           d S t          | |||           d S )
Nr   rb   r  rT  FrU  r   Tr   )
rS   r	   rg   rb  r   r   rf   r   r   r  )	r   r   rO  yaybr   r   r   r   s	            rk   (test_multilabel_sample_weight_invariancer  K  s    &a((L*bRW  EAr +bRW  EAr YBx  FYBx  F"""55G w{{D{111GF"""&tVVWEEEEE&tVVVDDDDDrm   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 ]e}||g| |gfD ]Z\  }}	|t          vr|	j        d	k    rt          |         }
 |
||	|d 
          } |
||	d           }t          |||                    [fd S )N)rb   rb   r   r   r   r   rb   rb   )r   rb   rb   r   )r   rb   rs   )r   rs   r$  )r$  r   rb   rs   T)return_inverserb   )r  rz   r|   )rg   r   uniquer  r   r   r   rK   )y_true_multilabely_pred_multilabely_true_multiclassy_pred_multiclassr  rO  inverse_labelsr   r   r   r   score_labelsscores                rk   test_no_averaging_labelsr  i  sI    ,,,!=>>,,,!=>>++++Xlll##F	&>>>A~& D D 12 12
 	D 	DNFF ...6;?? &F!6&&NNNLF664888E|U>-BCCCC	DD Drm   c                 p   t          d          }d\  }}|                    dd||f          }|                    dd||f          }t          |          } |||          }t          t	          |          |          D ]6}|d d |f         }	|d d |f         }
 ||
|	          }t          ||           7d S )Nr   r   r=  rs   r   )rS   r   r   r   rL  rJ   r   r   rX  rW  r   r   r   r  rP  y_score_permy_true_permcurrent_scores               rk   -test_multilabel_label_permutations_invariancer    s     &a((L Iy!!!Qi-C!DDF""1ay).D"EEGFF67##EU9--y99 2 2qqq$w'QQQWo{L99E=11112 2rm   c                 r   t          d          }d\  }}|                    dd||f          }|                    |j                  }||                    dd          z  }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          j
        |          sJ |d	k    sJ Pt          ||           ad S )
Nr   r  rs   r   rb   Tr   r=  g    .A)rS   r   r   r   rf   r   r   rL  r#   rg   r'  rJ   r  s               rk   ?test_thresholded_multilabel_multioutput_permutations_invariancer    sq    &a((L Iy!!!Qi-C!DDF"""55G w{{D{111G %&F6::a==Aq !$%F6::a==Aq !FF67##EU9--y99 6 6qqq$w'QQQWo{L99333;}----- 3&&&&&  }55556 6rm   c                 x   d\  }}t          d          }|                    ||          }t          j        |           }||                    d                              dd          z  }|                    d||          }t          |          } |||          }t          t          |          |          D ]~}	t          j
        |t                    }
t          j        |          |
t          |	          <   |d d |
f         }t          j        |	|          } |||          }t          ||           d S )N)r  r$  r   r   rc   rb   r   ro  )rS   randrg   r  rf   r   r   r   r   rL  r  r  aranger   takerJ   )r   rX  rW  r   r   r  r   r   r  rP  inverse_permr  r  r  s                 rk   .test_thresholded_metric_permutation_invariancer    s>    "Iy%a((L	955G67(DTXX2X&&..r1555G!!!YY!??FFF67##EU9--y99 2 2x	555#%9Y#7#7T$ZZ qqq,/gdF++{L99E=11112 2rm   metric_namec                 b   t           j                            d          }t          j        dgdz  dgdz  z   t                    }|                    dd|j                  }d	}t          j        t          |
          5  t          |          ||           d d d            d S # 1 swxY w Y   d S )N*   r
  r$  r	  rs   ro  r   r   z7Labels in y_true and y_pred should be of the same type.r!  )rg   r  r  r   rn  r   r   r   r   	TypeErrorr  )r  r  r   r   r   s        rk   "test_metrics_consistent_type_errorr    s     )


#
#C	6(Q,&A-V	<	<	<B	Q	(	(BGG	y	0	0	0 4 4{+B3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s    B$$B(+B(zmetric, y_pred_thresholddtype_y_strc                    t           j                            d          }t          j        dgdz  dgdz  z   |          }|                    dd|j                  }|st          j        ddg|          |         }d	}d
}t          |           j        d         j        }|dk    r|n|}	t          j
        t          |	          5   | ||           d d d            d S # 1 swxY w Y   d S )Nr  r
  r$  r	  rs   ro  r   r   zy_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  rb   r!  )rg   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
             rk    test_metrics_pos_label_error_strr     sK   $ )


#
#C	6(Q,&A-[	A	A	AB	Q	(	(B ?Xvv&k:::2>	"  	X  "&))4[AI%6!%;%;!!AWG	z	1	1	1  r2                 s   C  C$'C$c                    t          ||          }|                    ||          }|                    ||          }	 | ||fi |}
|                    d           |                    |d         |          |d<   |                    d          }t          |t          j                  r|                    ||          |d<   	 t	          j        |           t	          j        |	           d}n# t          $ r d}Y nw xY w|r{ | ||	fi |}t          ||
t          |                      | ||	fi |}t          ||
t          |                      | ||fi |}t          ||
t          |                     t          d          5   | ||	fi |}t          t          |                    |          |          |
t          |                     d d d            d S # 1 swxY w Y   d S )N)devicer  rU   TF)atol)array_api_dispatch)rH   asarraygetrc  rg   ndarrayr  rI   rE   r   rF   )r   array_namespacer  
dtype_namea_npb_npmetric_kwargsxpa_xpb_xp	metric_nprU   numpy_as_array_works	metric_xpmetric_xp_mixed_1metric_xp_mixed_2s                   rk   check_array_api_metricr  	  s    
ov	6	6B::d6:**D::d6:**DtT33]33I))5)+/*6 *4 *
 *
o&  ##M22K+rz** N')zz+fz'M'Mm$%

4

4# % % %  %	%  
F47777	
++	
 	
 	
 	

 #F4????
++	
 	
 	
 	

 #F4????
++	
 	
 	
 	
 
4	0	0	0 
 
F47777	bjj33R88
++	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s%   *C3 3DDAG**G.1G.c           	          t          j        g d          }t          j        g d          }t          | |||||d            t          j        g d|          }t          | ||||||           d S )Nr  )r   rb   r   rb   r
  r  r          r1         @      ?ro  rg   r   r  r   r  r  r	  	y_true_np	y_pred_npr  s          rk   ,check_array_api_binary_classification_metricr   H  s     &&I&&I    H111DDDM#     rm   c                    t          j        g d          }t          j        g d          }ddi}t          | |          }|D ]B}t          | |||f||d d| t          j        g d|          }	t          | |||f|||	d| Cd S )	N)r   rb   rs   r$  )r   rb   r   rs   rz   r   r   ry   r   paramsr  r  ro  rg   r   (_get_metric_kwargs_for_array_api_testingr  
r   r  r  r	  r  r  additional_paramsmetric_kwargs_combinationsr  r  s
             rk   0check_array_api_multiclass_classification_metricr*  e  s    &&I&&I 	1 "J " " " 4 
 
			

 		
 		
 		
 		
 		
 !5!5!5ZHHH			

 '		
 		
 		
 		
 		
 		

 
rm   c                 6   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i}t          | |          }|D ]B}t          | |||f||d d| t          j        g d|          }	t          | |||f|||	d| Cd S )	Nrb   r   ro  rz   r"  r#  r  )r  r1  r  r%  r'  s
             rk   0check_array_api_multilabel_classification_metricr,    s4    1a&1a&1a&1DDDI1a&1a&1a&1DDDI 	1 "J " " " 4 
 
			

 		
 		
 		
 		
 		
 
CCC			

 '		
 		
 		
 		
 		
 		

 
rm   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 r0t          j	        g d	|          |d<   t          | |||f||d| d S d S )
Nr&   z1.14.0zJmean_poisson_deviance's dependency `xlogy` is available as of scipy 1.14.0)r  r1  r  g      @ro  )rv   rv   rs   rs   r  r
  r  )r1  r        ?rv   )rc  r   funcre  rP   rO   r   skiprg   r   r   r  r  )	r   r  r  r	  	func_namer  r  r  metric_paramss	            rk   !check_array_api_regression_metricr4    st   (267(C(CX$$I+++
]8=T=T0T0TX	
 	
 	
 ---Z@@@I)))<<<IMf%%0M-'')-o&	
      -'')+   
*
 *
 *
o& 			

 	
 	
 	
 	
 	
 	
 	
 ('rm   c                    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
           d S )N)rb   r$  rs   )rb   rs   rs   ro  )rb   r=  r=  )rb   rb   rb   r  r1  r  )r1  r3  ffffff?)r
  r  rU   
raw_valuesr  r  s          rk   -check_array_api_regression_metric_multioutputr8    s1    )))YYY/zBBBI)))YYY/zBBBI    Hc3Zz:::M#    H___J???          rm   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| d S )
Nr0  )皙?rv   333333?ro  )r2  r3  r:  )rv   r;  r6  dense_outputFr.  T)rg   r   r   r  r  )r   r  r  r	  X_npY_npr  s          rk   check_array_api_metric_pairwiser?    s    8___ooo6jIIID8___ooo6jIIIDM6**555(-n%		

 	
 	
 	
 	
 	
 )-n%	
       rm   g      r/  c              #   T   K   |                                  D ]\  }}|D ]}||fV  	d S r   )items)metric_checkersr   checkerscheckers       rk   !yield_metric_checker_combinationsrE  t  sW      +1133 " " 	" 	"G'/!!!!	"" "rm   z#array_namespace, device, dtype_namezmetric, check_funcc                 "     || |||           d S r   r   )r   r  r  r	  
check_funcs        rk   test_array_api_compliancerH  z  s     
 Jv
;;;;;rm   df_lib_namepandaspolarsc                    t          j        |          }|                    g d          }|                    g d          }t          |          }	  ||                                |                                          }n'# t
          $ r t          j        |  d           Y nw xY wt           |||          |           d S )N)r  r  r   r  )r  r  r  r  z can not deal with 1d inputs)r   importorskipSeriesr   to_numpyr   r1  rI   )r  rI  df_libr   r   r   expected_metrics          rk   test_metrics_dataframe_seriesrR    s      --F]]---..F]]///00F%FB &!2!2FOO4E4EFF B B B{@@@AAAAAB FF66**O<<<<<s   0B !B&%B&c                     i g}|                                 D ]X\  }}|t          |           j        vrg }|D ]5}|D ]0}|                                }|||<   |                    |           16|}Y|S )zHelper 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.)rA  r   r  r  append)	r   r$  r)  paramr8  new_combinationsrj   value
new_kwargss	            rk   r&  r&    s     #% 6 6v	&))4440 	4 	4F 4 4#[[]]
$)
5! ''
33334
 &6""%%rm   )r   	functoolsr   inspectr   	itertoolsr   r   r   numpyrg   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.   r/   r0   r1   r2   r3   r4   r5   r6   sklearn.metrics._baser7   sklearn.metrics.pairwiser8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   sklearn.preprocessingrC   sklearn.utilsrD   sklearn.utils._array_apirE   rF   rG   sklearn.utils._testingrH   rI   rJ   rK   rL   rM   sklearn.utils.fixesrN   rO   rP   sklearn.utils.multiclassrQ   sklearn.utils.validationrR   rS   REGRESSION_METRICSr  r   CURVE_METRICSr   dictr   updater   METRIC_UNDEFINED_MULTICLASSunionr   r  r  r  r  METRICS_WITH_NORMALIZE_OPTIONr   r   r   r   r   METRICS_WITHOUT_SAMPLE_WEIGHTr   r   r   r   r   markparametrizesortedr   r   r   r   r   r  r  r  infr   invalids_nan_infr8  r#  r,  r4  r;  r@  filterwarningsrD  rF  rI  rQ  rl  rs  r~  r  intersectionr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  strrn  r   r  r   r*  r,  r4  r8  r?  array_api_metric_checkersrE  rH  rR  r&  r   rm   rk   <module>r{     s&                2 2 2 2 2 2 2 2 2 2      * * * * * * ; ; ; ; ; ; 5 5 5 5 5 5- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\ 8 7 7 7 7 7                          1 0 0 0 0 0 ! ! ! ! ! !         
                J I I I I I I I I I 3 3 3 3 3 3 E E E E E E E EF. , 4	
 * 2 %&D  8 .ABBB 6 "#> GG$9CCC 2 . %gg.C3&O&O&O   0<<<!" (#$ 6%  *6n666 '0GRV(W(W(W6 "77>U#K#K#K	6 $%56 " $ $6 /0K6 6ww#8 8 86$ L%6& ]'6( !''-5"I"I"I)6, ]-6. /60 L162 364 !,,,566 ''+C00076 68 096: 77;
MMM;6< :>>>=6> jqIII?6@  L L LA6B WW\:FFFC6D ggmZHHHE6F W3GGGG6H ggh888I6J ggk7CCCK6L WW_gFFFM6N '',@@@O6P 77='BBBQ6R W3GGGS6T ggh888U6V ggk7CCCW6X WW_gFFFY6 6Z "',@@@"7='BBB!'+ysKKK)<<<YQGGG&w	JJJ#GL)DDD$W]IFFF*k6 6 6 r  @ F  n ,    WWX???	 
 *  (  ]  zBBB  ww}i@@@  WW]G<<<  77='uMMM  GGzu    77='uMMM   GGzu  ! & ww}c:::' ( 6) * ') ) )+ 0 (/w( ( ( &-W-Dg%V%V%V-R0?      D dff   & ' ' '   ) * * *   % & & &   = ! ! !       * &=%B%B& & "
   & & & "   (! ! ! H! ! ! " " " (   D   "      H      H! ! !     !     	@ 	@ 	@ (9!:!:;;
 
 <;
B (=!>!>??< < @?<" 
FF33{##&HHII 
 
 
**
 *
 *
Z 
FF33{##&HHII {+ {+ {+| 
FF33-..1SSTT 2 2 2j !455'/ '/ 65'/V VbfbfVbfbfVbfbfVbfa[Vbfa[  ee'..002D2K2K2M2MNN  *,<==    >=   #9#@#@#B#BCC
 &!Q#
&!Q#	
 
   
 
 DC , #9#@#@#B#BCC    DC   $7 7 7 H%%

FK -	- #!
"
"		# 	 	 	 	 &%
 H%%(;>Q(Q!R!RSS* * TS &%* (;!<!<==  >= (;!<!<==
 
 >=
$ OPP.99H
 H
 :9 QPH
V (;!<!<==  >=  (E!F!FGG  HG8 (E!F!FGG  HG8 
FF0==>QRRSS , , ,^32 32 32lO O O" (>!?!?@@U U A@U 
FF),NNOO U U U$ (>!?!?@@U U A@U  & (>!?!?@@U U A@U^P ^P ^PB 

FK%%cc*<&=&=>>
'	(  A A A 

FK
# 
!
!	"
'	( "	"  E E E 

FK
# 
!
!	"
'	( -	-  E E E" 

F	=	=@S	S
'	(  E E E.D D D2 
FF&*T)UUVV 2 2 2$ 
FF14GGHH 6 6 6B 
FF33*++.PPQQ 2 2 2* (>??	4 	4 @?	4 	 $'	4 	5	1	%	%	%u-		&	% 	u	D
  f66  76 4<
 <
 <
~  :$
 $
 $
N$
 $
 $
N'
 '
 '
T. . .b  <E488E 488E  488"E  488!E* =>+E, G!...1R0S-E. G!---0Q/R/E0 )51E8 789E: )5;EB )5CEJ )5KER )SEX =>YEZ =>[E\ :;]E^ ;<_E` 12")5% 12!@ A679:347801)5  )5" 45IE E P 7P " " " " )+T+T+V+V  -/P/P/R/RSS< < TS < 8(<=={(;(;<<= = =< >==& & & & &rm   