
    Ug                    Z   d dl Z d dl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 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. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZC d dlDmEZEmFZF d dlGmHZH ddZId ZJd ZKe
jL        M                    ddd de	jN        g          d             ZOe
jL        M                    dd gdfd dgdfg ddfg          d             ZPd  ZQd! ZReAd"             ZSeAd#             ZTeAd$             ZUd% ZVe
jL        M                    d&g d' e	jW        g d(g d)g d*g d+g          fg d,g d-fg          d.             ZXe
jL        M                    d&g d/ e	jW        g d+g d+g d0g d0g d1g          fg d2g d3fg          d4             ZYd5 ZZd6 Z[d7 Z\d8 Z]e
jL        M                    d9eE          e
jL        M                    d:eF          d;                         Z^d< Z_e
jL        M                    d=g d>          d?             Z`d@ ZadA Zbe
jL        M                    dB e	jW        g dC           e	jW        g dC          dDdEf e	jW        g dF           e	jW        g dF          dDdGf e	jW        g dF           e	jW        g dC          dDdHf e	jW        g dF           e	jW        g dI          dDdJf e	jW        g dC           e	jW        g dF          dDdKfg          dL             Zce
jL        M                    dM e	jW        g dN           e	jW        g dO          dDdPfg          dQ             ZddR ZedS ZfdT Zge
jL        M                    dd de	jN        g          e
jL        M                    dUd gd gfg g fg          e
jL        M                    dVe" ee#dW          e,e-g          dX                                     Zhe
jL        M                    dUd gd gfg g fg          e
jL        M                    dVe" ee#dW          e,e-g          dY                         ZidZ Zjd[ Zkd\ Zld] Zme
jL        M                    d^d_d`g          da             Zndb Zoe
jL        M                    dcg dd          de             Zpdf Zqdg Zrdh Zse
jL        M                    dig djfdkdlgdmfgdndogp          dq             Zte
jL        M                    drdd dgg dfg dsp          dt             Zudu Zve
jL        M                    dvg dw          dx             Zwdy Zxdz Zyd{ Zzd| Z{d} Z|d~ Z}d Z~d Zd ZeAd             Zd Zd Zd Zd Zd Zd Zd Ze
jL        M                    dddg          d             ZeAd             ZeAd             ZeAe
jL        M                    dddde	jN        e	jN        fg          d                         Ze
jL        M                    ddg          e
jL        M                    dcg d          e
jL        M                    dd de	jN        g          d                                     Ze
jL        M                    dcg d          d             Ze
jL        M                    dd de	jN        g          d             Zd Zd Ze
jL        M                    dd de	jN        g          d             Ze
jL        M                    ddd de	jN        g          d             Ze
jL        M                    ddd de	jN        g          d             Ze
jL        M                    ddd de	jN        g          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze
jL        M                    dve	j        e	j        e	j        g          d             Ze
jL        M                    dve	j        e	j        e	j        g          d             Ze
jL        M                    dUg dg dfg ddd gd dgdd ggfg dg dg dg dgfg          d             Zd Zd Zd Ze
jL        M                    dg dg dfg dg dfg dg dfg          d             Ze
jL        M                    dVe&e" ee#dW          e+e,e-eg          e
jL        M                    dg d          d                         Ze
jL        M                    d e	jW        d dg           e	jW        dd g          df e	jW        d dg           e	jW        d dg          df e	jW        d dg           e	jW        d d g          df e	jW        d d g           e	jW        d d g          dfg          d             Ze
jL        M                    d e(e"e	jN                   e(e#de	jN        æ           e(e,e	jN                   e(e-e	jN                  g          dĄ             Zdń ZdƄ ZdǄ ZdS )    N)partial)chainpermutationsproduct)linalg)hamming)	bernoulli)datasetssvm)make_multilabel_classification)UndefinedMetricWarning)accuracy_scoreaverage_precision_scorebalanced_accuracy_scorebrier_score_lossclass_likelihood_ratiosclassification_reportcohen_kappa_scoreconfusion_matrixf1_scorefbeta_scorehamming_loss
hinge_lossjaccard_scorelog_lossmake_scorermatthews_corrcoefmultilabel_confusion_matrixprecision_recall_fscore_supportprecision_scorerecall_scorezero_one_loss)_check_targetsd2_log_loss_score)cross_val_score)LabelBinarizerlabel_binarize)DecisionTreeClassifier)MockDataFrame)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_no_warningsignore_warnings)_nanaverage)CSC_CONTAINERSCSR_CONTAINERS)check_random_stateFc                    | t          j                    } | j        }| j        }|r||dk              ||dk              }}|j        \  }}t          j        |          }t          d          }|                    |           ||         ||         }}t          |dz            }t
          j
                            d          }t
          j        ||                    |d|z            f         }t          j        ddd          }	|	                    |d|         |d|                                       ||d                   }
|r|
ddd	f         }
|	                    ||d                   }||d         }|||
fS )
zMake some classification predictions on a toy dataset using a SVC

    If binary is True restrict to a binary classification problem instead of a
    multiclass classification problem
    N   %   r      linearT)kernelprobabilityrandom_state   )r
   	load_irisdatatargetshapenparanger3   shuffleintrandomRandomStatec_randnr   SVCfitpredict_probapredict)datasetbinaryXy	n_samples
n_featuresprnghalfclfy_pred_probay_predy_trues                h/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/metrics/tests/test_classification.pymake_predictionr[   ;   sz    $&&AA "Qx1q51GIz
	)A
R
 
 CKKNNNQ41qAy1}D )


"
"C
a9cJ&67778A 't!
D
D
DC771UdU8QuuX..<<QtuuXFFL * $AAAqD)[[455""FtuuXF6<''    c            
         t          j                    } t          | d          \  }}}ddddddd	d
ddddddddddddddddddd}t          ||t	          j        t          | j                            | j        d          }|                                |                                k    sJ |D ]}|dk    r2t          ||         t                    sJ ||         ||         k    sJ :||                                         ||                                         k    sJ ||         D ]*}t          ||         |         ||         |                    +t          |d         d         t                    sJ t          |d         d         t                    sJ t          |d         d         t                    sJ t          |d         d         t                    sJ d S ) NFrM   rN   g7Mo?gUUUUUU?ghQ?   )	precisionrecallf1-scoresupportUUUUUU?gc1Ƹ?g433333?   g)k??$I$I?   gCFQ?gc?gƢ?K   rb   r`   ra   rc   g?gD~WG?g]3p?)setosa
versicolor	virginica	macro avgaccuracyweighted avgT)labelstarget_namesoutput_dictro   rk   r`   rn   rc   )r
   r=   r[   r   rA   rB   lenrr   keys
isinstancefloatr+   rD   )irisrY   rX   _expected_reportreportkeymetrics           rZ   ,test_classification_report_dictionary_outputr~   k   sd   D'UCCCFFA
 -)*	
 
 -*+	
 
 -)+	
 
 ++'	
 
 '++(	
 
5   OD #yT.//00&  F ;;==O00222222 W W*fSk511111#;/#"666666#;##%%)=)B)B)D)DDDDD)#. W W#OC$8$@&+fBUVVVVW oh/<eDDDDDok2;?GGGGGoh/	:C@@@@@ok29=sCCCCCCCr\   c                     t          g g d          } dt          j        t          j        t          j        ddt          j        t          j        t          j        ddd}t          | t                    sJ |                                 |                                k    sJ |D ]}|dk    r2t          | |         t                    sJ | |         ||         k    sJ :| |                                         ||                                         k    sJ ||         D ]*}t          ||         |         | |         |                    +d S )NT)rY   rX   rs           r   rj   )ro   rn   rp   ro   )r   rA   nanrv   dictru   rw   r+   )r{   rz   r|   r}   s       rZ   2test_classification_report_output_dict_empty_inputr      so   ""RTJJJFf	
 
 f	
 
 O fd#####;;==O00222222 W W*fSk511111#;/#"666666#;##%%)=)B)B)D)DDDDD)#. W W#OC$8$@&+fBUVVVVWW Wr\   zero_divisionwarnr<   c                    g dg d}}t          j        d          5 }t          ||| d           | dk    r5t          |          dk    sJ |D ]}d}|t	          |j                  v sJ n|rJ d d d            d S # 1 swxY w Y   d S )	Nabc)r   r   dTrecord)r   rs   r   r<   z7Use `zero_division` parameter to control this behavior.)warningscatch_warningsr   rt   strmessage)r   rY   rX   r   itemmsgs         rZ   0test_classification_report_zero_division_warningr      s   $__oooFF		 	-	-	- 
F-T	
 	
 	
 	
 F""v;;???? 0 0Oc$,///////0 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA>>BBzlabels, show_micro_avgTr   r<   r5   c                 t    ddgddg}}t          ||| d          }|rd|v sJ d|vsJ dS d|v sJ d|vsJ dS )a3  Check the behaviour of passing `labels` as a superset or subset of the labels.
    WHen a superset, we expect to show the "accuracy" in the report while it should be
    the micro-averaging if this is a subset.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27927
    r   r<   T)rq   rs   z	micro avgro   Nr   )rq   show_micro_avgrY   rX   r{   s        rZ   1test_classification_report_labels_subset_supersetr      s     VaVFF"66&dSSSF )f$$$$''''''V####&((((((r\   c                  F   t          j        g dg dg          } t          j        g dg dg          }t          | |          dk    sJ t          | |           dk    sJ t          ||          dk    sJ t          |t          j        |                    dk    sJ t          | t          j        |                     dk    sJ t          | t          j        | j                            dk    sJ t          |t          j        | j                            dk    sJ d S )Nr   r<   r<   r<   r   r<   r   r   r<         ?r<   r   )rA   arrayr   logical_notzerosr@   y1y2s     rZ   .test_multilabel_accuracy_score_subset_accuracyr      s)   	999iii(	)	)B	999iii(	)	)B"b!!S(((("b!!Q&&&&"b!!Q&&&&"bnR0011Q6666"bnR0011Q6666"bhrx0011Q6666"bhrx0011Q666666r\   c                  L   t          d          \  } }}t          | |d           \  }}}}t          |ddgd           t          |ddgd           t          |d	d
gd           t          |ddg           i t          fddit          ffD ]\  }} |t
          | |fi |}	t          |	dd            |t          | |fi |}
t          |
dd            |t          | |fi |}t          |d
d           t           |t          | |fddi|d|	z  |
z  d|	z  |
z   z  d           d S )NTrN   averageg\(\?g333333?r5   g)\(?g(\?皙?gRQ?   r   rN   beta      )
r[   r   r,   r-   r.   r    r!   r   r+   r   )rY   rX   ry   rS   rfskwargs	my_assertpsrsfss               rZ   %test_precision_recall_f1_score_binaryr      s   't444FFA 1NNNJAq!Qa$q111a$q111a$q111q2r(### 
 
X	 23 
 
	 YAA&AA!"dA...Y|VV>>v>>!"dA...Yx::6::!"dA...Ik66DDDVDDOb D2IN3	
 	
 	
 	

 
r\   c                  f   dt          ddgddg          k    sJ dt          ddgddg          k    sJ dt          ddgddg          k    sJ dt          ddgddgd          k    sJ dt          ddgddg          k    sJ dt          ddgddg          k    sJ dt          ddgddg          k    sJ dt          ddgddgt	          d                    k    sJ t          ddgddgt	          d                    t          j        t          ddgddgd                    k    sJ d S )	N      ?r<   r   r   r   infg     j@)r    r!   r   r   rw   pytestapprox r\   rZ   +test_precision_recall_f_binary_single_classr   !  s   
 /1a&1a&111111,1v1v......(Aq6Aq6******+q!fq!f15555555/2r(RH555555,Bx"b222222(B8b"X......+r2hRuU||DDDDDDDBx"be===RHr2hS111B B      r\   c                     g d} g d}t          | t          j        d                    }t          |t          j        d                    }| |f||fg}t          |          D ]\  }\  } }t	          | |g dd           }t          g d|           t	          | |g dd          }t          t          j        g d          |           d	D ]C}|d
k    r|dk    rt          t	          | |g d|          t	          | |d |                     DdD ]}t          j	        t                    5  t	          ||t          j        d          |           d d d            n# 1 swxY w Y   t          j	        t                    5  t	          ||t          j        dd          |           d d d            n# 1 swxY w Y   t          j        g dg dg          } t          j        g dg dg          }t          | |d
ddg          \  }}	}
}t          t          j        ||	|
g          t          j        g d                     d S )N)r<      r   r5   )r<   r<   r   r5   r   classes)r   r<   r5   r   r   rq   r   )r   r   r   r   r   macro)microweightedsamplesr   r   )Nr   r   r      r   r   r   r<   r   r   r<   r<   r<   r   r<   r   rq   )      ?r<   竪?)r'   rA   rB   	enumerater!   r,   meanr+   r   raises
ValueErrorr   r   )rY   rX   
y_true_bin
y_pred_binr>   iactualr   rS   r   r   ry   s               rZ   $test_precision_recall_f_extra_labelsr   4  s.    \\F\\F	!===J	!===JVz:67D(  FFff___dSSS!";";";VDDD ff___gVVV!"'*C*C*C"D"DfMMM 8 	 	G)##QVVOOOWUUUVVD'JJJ   	 7  ]:&& 	W 	WZ	!gVVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W]:&& 	 	JryQ/?/?   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Xyyy))),--FXyyy))),--F0	1a&  JAq!Q !Q++RX6G6G6G-H-HIIIIIs$   2&E$$E(	+E(	'F;;F?	F?	c                  \   g d} g d}t          | t          j        d                    }t          |t          j        d                    }| |f||fg}t          |          D ]\  }\  } }t	          t
          | |ddg          }t	          t
          | |d           }t          dd	g |d 
                     t          d |d
                     t          d |d
                     t          d |d
                     dD ]} ||
           ||
          k    sJ d S )N)r<   r<   r5   r   )r<   r   r   r   r   r   r<   r   rq   r   r   r   r   r   UUUUUU?r   r   )r   r   r   )r'   rA   rB   r   r   r!   r,   r+   )	rY   rX   r   r   r>   r   	recall_13
recall_allr   s	            rZ   &test_precision_recall_f_ignored_labelsr   b  s{    \\F\\F	!===J	!===JVz:67D( M MFFL&&!QHHH	\66$GGG
!3*ii.E.E.EFFFOYYw-G-G-GHHH3YYz5R5R5RSSSGYYw%?%?%?@@@ 6 	M 	MG9W---G1L1L1LLLLLL	MM Mr\   c            	      .   t          j        g dg dg dg dg dg dg          } t          j        g dg dg dg d	g d
g dg          }d}t          j        t          |          5  t          | |d           ddd           dS # 1 swxY w Y   dS )z:Test multiclass-multiouptut for `average_precision_score`.)r5   r5   r<   r<   r5   r   r   r<   r5   r<   )r5   r   r<   ffffff?皙?皙?皙?333333?r   r   r   r   r   r   r   )r   r   r   )r   r   r   z.multiclass-multioutput format is not supportedmatchr5   	pos_labelN)rA   r   r   r   r   r   )rY   y_scoreerr_msgs      rZ   -test_average_precision_score_non_binary_classr   y  s   XIIIIIIIIIIII	
	 	F hOOOOOOOOOOOO	
	 	G ?G	z	1	1	1 > >1====> > > > > > > > > > > > > > > > > >s   *B

BBzy_true, y_scorer   r   r<   r5   r   r   r   r   )r   r   r   r   r<   r<   r<   r<   r<   r<   r<   )r   r   r   r   r   333333?r   rf   rf   r<   r<   c                 2    t          | |          dk    sJ dS )a(  
    Duplicate values with precision-recall require a different
    processing than when computing the AUC of a ROC, because the
    precision-recall curve is a decreasing curve
    The following situation corresponds to a perfect
    test statistic, the average_precision_score should be 1.
    r<   Nr   rY   r   s     rZ   -test_average_precision_score_duplicate_valuesr     s%    8 #6733q888888r\   )r5   r5   r<   r<   r   )r   r   r   )r   r   r   r   )r   r   r   c                 2    t          | |          dk    sJ d S )Nr   r   r   s     rZ   (test_average_precision_score_tied_valuesr     s%    : #6733s::::::r\   c                      d} t          j        t          |           5  t          g dg ddd           d d d            d S # 1 swxY w Y   d S )NzNote that pos_label \(set to 2\) is ignored when average != 'binary' \(got 'macro'\). You may use labels=\[pos_label\] to specify a single positive class.r   r   r<   r5   r5   r5   r   r   r   )r   warnsUserWarningr   r   s    rZ   (test_precision_recall_f_unused_pos_labelr     s    
	  
k	-	-	- 
 
'IIyyyAw	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA
Ac                      t          d          \  } }}d } || |            |d | D             d |D                        d S )NTr   c                 n   t          | |          }t          |ddgddgg           |                                \  }}}}||z  ||z  z
  }t          j        ||z   ||z   z  ||z   z  ||z   z            }|dk    rdn||z  }	t          | |          }
t          |
|	d           t          |
dd           d S )	N   r         r   r5   decimal=
ףp=?)r   r-   flattenrA   sqrtr   r,   )rY   rX   cmtpfpfntnnumdentrue_mccmccs              rZ   testz*test_confusion_matrix_binary.<locals>.test  s    ff--2Q!R1222BB2gRgrBw27+rBw727CDDq11cCi//!#x;;;;!#tQ777777r\   c                 ,    g | ]}t          |          S r   r   .0rP   s     rZ   
<listcomp>z0test_confusion_matrix_binary.<locals>.<listcomp>      	!	!	!Q#a&&	!	!	!r\   c                 ,    g | ]}t          |          S r   r  r  s     rZ   r  z0test_confusion_matrix_binary.<locals>.<listcomp>      #;#;#;qCFF#;#;#;r\   r[   rY   rX   ry   r  s       rZ   test_confusion_matrix_binaryr    sr    't444FFA8 8 8 	DD	!	!&	!	!	!#;#;F#;#;#;<<<<<r\   c                      t          d          \  } }}d } || |            |d | D             d |D                        d S )NTr   c                 b    t          | |          }t          |ddgddggddgddggg           d S )Nr  r  r   r  r   r-   )rY   rX   r  s      rZ   r  z5test_multilabel_confusion_matrix_binary.<locals>.test  sF    (882"a1b' 2b!Wq"g4FGHHHHHr\   c                 ,    g | ]}t          |          S r   r  r  s     rZ   r  z;test_multilabel_confusion_matrix_binary.<locals>.<listcomp>  r  r\   c                 ,    g | ]}t          |          S r   r  r  s     rZ   r  z;test_multilabel_confusion_matrix_binary.<locals>.<listcomp>  r  r\   r  r  s       rZ   'test_multilabel_confusion_matrix_binaryr%    su    't444FFAI I I 	DD	!	!&	!	!	!#;#;F#;#;#;<<<<<r\   c                      t          d          \  } }}dd} || |            |d | D             d |D             d           d S )	NFr   c           	         t          | |          }t          |ddgddggddgddggd	d
gddggg           |rg dng d}t          | ||          }t          |ddgddggd	d
gddggddgddggg           |rg dng d}t          | ||          }t          |ddgddggd	d
gddggddgddggddgddggg           d S )N/   r   r      &   r      r      r   r5      )021r   r5   r<   r   )r.  r/  r0  3)r   r5   r<   r   ri   r   r"  )rY   rX   string_typer  rq   s        rZ   r  z9test_multilabel_confusion_matrix_multiclass.<locals>.test  s[   (882q'Ar7#r1gAw%72r(QG9LM	
 	
 	

 %0>YYY(GGG2q'Ar7#r2hB%8B7RG:LM	
 	
 	

 *5F%%%%,,,(GGGa1b'"bAr7#a2q'"a1a&!		
 	
 	
 	
 	
r\   c                 ,    g | ]}t          |          S r   r  r  s     rZ   r  z?test_multilabel_confusion_matrix_multiclass.<locals>.<listcomp>$  r  r\   c                 ,    g | ]}t          |          S r   r  r  s     rZ   r  z?test_multilabel_confusion_matrix_multiclass.<locals>.<listcomp>$  r  r\   T)r3  )Fr  r  s       rZ   +test_multilabel_confusion_matrix_multiclassr6    s|    'u555FFA
 
 
 
6 	DD	!	!&	!	!	!#;#;F#;#;#;NNNNNNr\   csc_containercsr_containerc                 J   t          j        g dg dg dg          }t          j        g dg dg dg          } ||          } ||          } | |          } | |          }t          j        g d          }dd	gddggdd	gddggd	d
gdd	ggg}	|||g}
|||g}|
D ]'}|D ]"}t          ||          }t          ||	           #(t          ||d          }t          |dd	gddggddgd	dggd	dgd
d	ggg           t          ||d
d	g          }t          |d	d
gdd	ggdd	gddggg           t          ||d
d	gd          }t          |d	d	gddggddgd	d	ggd	dgdd	ggg           t          |||d          }t          |d
d	gd
d
ggddgd	dggd	dgdd	ggg           d S )Nr   r   r<   r   r<   r<   r   r   r   r   )r5   r<   r   r<   r   r5   T
samplewiser   )rq   r=  )sample_weightr=  r   r   )rA   r   r   r-   )r7  r8  rY   rX   
y_true_csr
y_pred_csr
y_true_csc
y_pred_cscr>  real_cmtruespreds
y_true_tmp
y_pred_tmpr  s                  rZ   +test_multilabel_confusion_matrix_multilabelrH  '  s   
 Xyyy)))YYY788FXyyy)))YYY788Fv&&Jv&&Jv&&Jv&&J HYYY''MAA1a&1a&!1QFQF3CDGZ,EZ,E , ,
 	, 	,J,ZDDBr7++++	,
 
%VV	E	E	EBraVaV,1v1v.>!Q!Q@PQRRR 
%VVQF	C	C	CBraVaV,1v1v.>?@@@ 
%VVQFt	T	T	TBraVaV,1v1v.>!Q!Q@PQRRR 
%m
 
 
B raVaV,1v1v.>!Q!Q@PQRRRRRr\   c            	         t          j        g dg dg dg          } t          j        g dg dg dg          }t          j        t          d          5  t          | |d	d
g           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | |g dg dg dg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          | |dg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          | |dg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dg dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg dgg dg dg           d d d            d S # 1 swxY w Y   d S )Nr   r:  r;  r   r   r   inconsistent numbers of samplesr   r<   r5   r>  zshould be a 1d arrayr<   r5   r   )r5   r   r   )r   r   r   z%All labels must be in \[0, n labels\)r   r   r   zSamplewise metricsr   r   Tr<  z'multiclass-multioutput is not supported)r5   r<   r   r<   r   r5   )rA   r   r   r   r   r   )rY   rX   r   s      rZ   'test_multilabel_confusion_matrix_errorsrN  Q  s   Xyyy)))YYY788FXyyy)))YYY788F 
z)J	K	K	K J J#FF1a&IIIIJ J J J J J J J J J J J J J J	z)?	@	@	@ 
 
#F999iii*K	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 7G	z	1	1	1 A A#FFB4@@@@A A A A A A A A A A A A A A A6G	z	1	1	1 @ @#FFA3????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
z)=	>	>	> K K#IIIyyyTJJJJK K K K K K K K K K K K K K K 8G	z	1	1	1 T T#YYY			$:YYY			<RSSST T T T T T T T T T T T T T T T T Tsl   A77A;>A;CC	C	-DDD5EEE;FF"%F"G00G47G4z%normalize, cm_dtype, expected_results))truer   TUU?)predr   rP  )allr   geq?)Nr   r5   c                     g ddz  }t          t          t          g d                     }t          |||           }t	          ||           |j        j        |k    sJ d S )Nr   r   	normalize)listr   r   r   r*   dtypekind)rU  cm_dtypeexpected_resultsy_testrX   r  s         rZ   test_confusion_matrix_normalizer\  o  so     YY]F%iii00122F	&&I	>	>	>BB()))8=H$$$$$$r\   c                  H   g d} g d}t          | |d          }|                                t          j        d          k    sJ t	          j                    5  t	          j        dt                     t          | |d          }d d d            n# 1 swxY w Y   |                                t          j        d          k    sJ t	          j                    5  t	          j        dt                     t          || d           d d d            d S # 1 swxY w Y   d S )	N)r   r   r   r   r<   r<   r<   r<   )r   r   r   r   r   r   r   r   rO  rT         @errorrQ  r   )r   sumr   r   r   r   simplefilterRuntimeWarning)r[  rX   cm_truecm_preds       rZ   ,test_confusion_matrix_normalize_single_classre    s   %%%F%%%Fvv@@@G;;==FM#...... 
	 	"	" E Eg~666"66VDDDE E E E E E E E E E E E E E E ;;==FM#......		 	"	" ; ;g~6666::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s$   -BBB-DDDc                      g d} g d}t          j        t          d          5  t          ||            ddd           dS # 1 swxY w Y   dS )z8Test `confusion_matrix` warns when only one label found.r   r   r   r   zA single label was found inr   N)r   r   r   r   )r[  rX   s     rZ   "test_confusion_matrix_single_labelrh    s    \\F\\F	k)F	G	G	G ) )((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   AA	Azparams, warn_msg)r   r   r   r   r   r   rY   rX   z2samples of only one class were seen during testing)r<   r<   r<   r   r   r   z:positive_likelihood_ratio ill-defined and being set to nanz+no samples predicted for the positive classr   r   r   r<   r<   r<   z:negative_likelihood_ratio ill-defined and being set to nanz@no samples of the positive class were present in the testing setc                     t          j        t          |          5  t          di |  d d d            d S # 1 swxY w Y   d S Nr   r   )r   r   r   r   )paramswarn_msgs     rZ   test_likelihood_ratios_warningsro    s    b 
k	2	2	2 * *))&)))* * * * * * * * * * * * * * * * * *   6::zparams, err_msg)r   r<   r   r<   r   r<   r<   r   r   r5   zeclass_likelihood_ratios only supports binary classification problems, got targets of type: multiclassc                     t          j        t          |          5  t          di |  d d d            d S # 1 swxY w Y   d S rl  )r   r   r   r   )rm  r   s     rZ   test_likelihood_ratios_errorsrs    s    $ 
z	1	1	1 * *))&)))* * * * * * * * * * * * * * * * * *rp  c                  F   t          j        dgdz  dgdz  z             } t          j        dgdz  dgdz  z   dgdz  z             }t          | |          \  }}t          |d           t          |d	           t          | |           \  }}t	          |t           j        dz             t          |t          j        d          d
           t          j        dgdz  dgdz  z             }t          | ||          \  }}t          |d           t          |d           d S )Nr<   r   r   r  r5   
   r  g?g_B{	%?g-q=)rtolr      r   r   rK  gUUUUUU@gqq?)rA   r   r   r*   r-   r   r   )rY   rX   posnegr>  s        rZ   test_likelihood_ratiosrz    s*    XqcAgb())FXqcAgb(A37233F&vv66HCC!!!C!!! 'vv66HCsBFQJ'''C!51111
 HcURZ3%!)344M&vv]SSSHCC   C!!!!!r\   c                     t          j        dgdz  dgdz  z             } t          j        dgdz  dgdz  z   dgdz  z   dgdz  z             }t          | |          }t          |dd	
           |t          ||           k    sJ t          j        | dgdz            } t          j        |dgdz            }t          | |ddg          |k    sJ t          t          | |           d           t          j        dgdz  dgdz  z   dgdz  z             } t          j        dgdz  dgdz  z   dgdz  z             }t          t          | |          dd
           t          j        dgdz  dgdz  z   dgdz  z             } t          j        dgdz  dgdz  z   dgdz  z             }t          t          | |          dd
           t          t          | |d          dd
           t          t          | |d          dd
           d S )Nr   (   r<   <   rh   ru  2   gʡE?r   r  r5   r   r   r   .   ,   4          g??g+?r8   weightsg_vO?	quadraticg#?)rA   r   r   r+   append)r   r   kappas      rZ   test_cohen_kappar     sV    
1#(aS2X%	&	&B	1#(aS2X%b0A38;	<	<Bb"%%Eua0000%b"------ 
2sQw		B	2sQw		BRQF333u<<<<)"b113777 
1#(aS2X%b0	1	1B	1#(aS2X%b0	1	1B)"b1161EEEE 
1#(aS2X%b0	1	1B	1#(aS2X%b0	1	1B)"b1161EEEE)"b(CCCVUVWWWW"b+666     r\   c                  j    t          dgdg          dk    sJ t          ddgddg          dk    sJ d S )Nr   r<   r   )r   r   r\   rZ   test_matthews_corrcoef_nanr    sJ    aS1#&&#----aVaV,,333333r\   zy_true, y_predr}   r   c                    t          j                    5  t          j        d            | |||          }ddd           n# 1 swxY w Y   t          j        |          rt          j        |          sJ dS ||k    sJ dS )zmCheck the behaviour of `zero_division` when setting to 0, 1 or np.nan.
    No warnings should be raised.
    r_  r   N)r   r   ra  rA   isnan)r}   rY   rX   r   results        rZ   !test_zero_division_nan_no_warningr  $  s     
	 	"	" E Eg&&&mDDDE E E E E E E E E E E E E E E 
x 'x&&&&&&s   #AA
Ac                     t          j        t                    5   | ||d          }ddd           n# 1 swxY w Y   |dk    sJ dS )ztCheck the behaviour of `zero_division` when setting to "warn".
    A `UndefinedMetricWarning` should be raised.
    r   r  Nr   )r   r   r   )r}   rY   rX   r  s       rZ   test_zero_division_nan_warningr  =  s     
,	-	- > >f===> > > > > > > > > > > > > > >S======s   599c                     t           j                            d          } |                     ddd          }|                     ddd          }t	          t          ||          t          j        ||          d         d           d S )Nr   r5   rh   sizer   r<   ru  )rA   rE   rF   randintr+   r   corrcoef)rT   rY   rX   s      rZ   -test_matthews_corrcoef_against_numpy_corrcoefr  P  s    
)


"
"C[[AB[''F[[AB[''F&&))2;vv+F+Ft+Lb    r\   c                    	
 t           j                            d          } |                     ddd          }|                     ddd          }|                     d          }t          |||          	t          	          
t          	
fdt          
          D                       }t          	
fdt          
          D                       }t          j        	
fdt          
          D                       }|t          j	        ||z            z  }t          |||          }t          ||d	           d S )
Nr   r5   rh   r  rK  c           	          g | ]Q}t                    D ]?}t                    D ]-}||f         ||f         z  ||f         ||f         z  z
  .@RS r   range)r  kmlCNs       rZ   r  z9test_matthews_corrcoef_against_jurman.<locals>.<listcomp>f  s     	
 	
 	
1XX	
 	
 1XX		
 	
  adGa1g!Q$!AqD' 11	
 	
 	
 	
 	
r\   c           	          g | ]Pd d f                                          t          j         fdt                    D                       z  QS )Nc                 T    g | ]$}t                    D ]}|k    ||f         %S r   r  r  r   gr  r  r  s      rZ   r  zDtest_matthews_corrcoef_against_jurman.<locals>.<listcomp>.<listcomp>p  8    LLL!qLLAQ!VVa1gVVVVr\   r`  rA   r  r  r  r  r  s    @rZ   r  z9test_matthews_corrcoef_against_jurman.<locals>.<listcomp>n  st     	
 	
 	
  aaadGKKMMfLLLLLLuQxxLLLMMN	
 	
 	
r\   c           	          g | ]Pd d f                                          t          j         fdt                    D                       z  QS )Nc                 T    g | ]$}t                    D ]}|k    ||f         %S r   r  r  s      rZ   r  zDtest_matthews_corrcoef_against_jurman.<locals>.<listcomp>.<listcomp>w  r  r\   r  r  s    @rZ   r  z9test_matthews_corrcoef_against_jurman.<locals>.<listcomp>u  st     	
 	
 	
  adGKKMMfLLLLLLuQxxLLLMMN	
 	
 	
r\   ru  )rA   rE   rF   r  randr   rt   r`  r  r
  r   r+   )rT   rY   rX   r>  cov_ytypcov_ytytcov_ypyp
mcc_jurmanmcc_oursr  r  s            @@rZ   %test_matthews_corrcoef_against_jurmanr  Z  s    )


"
"C[[AB[''F[[AB[''FHHRLLM}EEEAAA	
 	
 	
 	
 	
1XX	
 	
 	
 H 	
 	
 	
 	
 	
 1XX	
 	
 	
 H v	
 	
 	
 	
 	
 1XX	
 	
 	
 H BGHx$7888J }MMMH*b11111r\   c            	      R   t           j                            d          } d |                     ddd          D             }t	          t          ||          d           d |D             }t	          t          ||          d           t          |d	d
g          }t          j        |d	d
          }t	          t          ||          d           t	          t          g dg d          d           t	          t          |d	gt          |          z            d           g d}g d}t	          t          ||          d           dgdz  dgdz  z   }t          j
        t                    5  t	          t          |||          d           d d d            d S # 1 swxY w Y   d S )Nr   c                 "    g | ]}|d k    rdndS )r   r   r   r   r  r   s     rZ   r  z*test_matthews_corrcoef.<locals>.<listcomp>  s$    IIIQ!VVccIIIr\   r5   rh   r  r   c                 "    g | ]}|d k    rdnd S )r   r   r   r  s     rZ   r  z*test_matthews_corrcoef.<locals>.<listcomp>  s$    ;;;qc##s;;;r\   r   r   r   r   rg  r   )r<   r   r<   r<   r   r<   r<   r<   r   r<   r<   r<   r<   r<   r<   r<   r   r<   r<   r<   )r<   r<   r<   r   r   r<   r<   r<   r<   r   r<   r<   r<   r   r<   r<   r<   r   r<   r<   r<   ru  rK  )rA   rE   rF   r  r+   r   r'   wherert   r   r   AssertionError)rT   rY   
y_true_invy_true_inv2y_1y_2masks          rZ   test_matthews_corrcoefr    s   
)


"
"CIIckk!QRk.H.HIIIF )&&993??? <;F;;;J)&*==rBBB #s<<<K(;S11K)&+>>CCC ),,,EEsKKK )&3%#f++2EFFLLL G
F
FC
F
F
FC)#s33S999 38qcBhD 
~	&	& R R-c3dKKKSQQQR R R R R R R R R R R R R R R R R Rs   .!FF #F c                  B  	 t           j                            d          } t          d          	d}	fd|                     d|d          D             }t          t          ||          d           g d}g d	}t          t          ||          d
           g d}g d}t          t          ||          dt          j        d          z             g d}g d}t          t          ||          d           g d}g d}t          t          ||          d           g d}g d}t          t          ||          d           g d}g d}g d}t          t          |||          d           g d}g d}g d}t          t          |||          d           d S )Nr   r   r   c                 4    g | ]}t          |z             S r   )chr)r  r   ord_as     rZ   r  z5test_matthews_corrcoef_multiclass.<locals>.<listcomp>  s#    IIIc%!)nnIIIr\   rh   r  r   )r   r   r<   r<   r5   r5   )r5   r5   r   r   r<   r<   g      )r<   r<   r   r   r   r   ii  r   )r   r   r   r   	r   r<   r5   r   r<   r5   r   r<   r5   )	r<   r<   r<   r5   r5   r5   r   r   r   )r   r   r<   r<   r5   rq  r<   r<   r<   r<   r   rK  r   r   r<   r<   r   r   )rA   rE   rF   ordr  r+   r   r
  )
rT   	n_classesrY   
y_pred_bad
y_pred_minrX   r  r  r>  r  s
            @rZ   !test_matthews_corrcoef_multiclassr    s   
)


"
"CHHEIIIIIckk!YRk&H&HIIIF )&&993???  F###J)&*==tDDD  F###J)&*==sRWWEUEU?UVVV YYFYYF)&&993??? YYFYYF)&&993??? &
%
%C
%
%
%C)#s33S999 __F__F#OOM&&FFF   \\F\\F LLM&&FFF    r\   n_pointsd   i'  c                    t           j                            d          d }fd}t          j        ddg|           }t	          t          ||          d           t          j        g d|           }t	          t          ||          d            ||           \  }}t	          t          ||          d           t	          t          ||           |||                     d S )Ni3c                     t          | |          }|d         }|d         }|d         }t          |           }||z   |z  }||z   |z  }||z  ||z  z
  }	||z  d|z
  z  d|z
  z  }
|	t          j        |
          z  S )Nr<   r<   )r<   r   r  r<   )r   rt   rA   r
  )rY   rX   conf_matrixtrue_pos	false_pos	false_negr  pos_rateactivitymcc_numeratormcc_denominators              rZ   mcc_safez1test_matthews_corrcoef_overflow.<locals>.mcc_safe  s    &vv66t$%	%	v;;y(H4y(H4 8+h.AA"X-X>!h,Orw7777r\   c                                          |           }|d                     |           dz
  z  z   }|dk    }|dk    }||fS )Nr   r   )random_sample)r  x_truex_predrY   rX   rT   s        rZ   	random_ysz2test_matthews_corrcoef_overflow.<locals>.random_ys  sT    ""8,,#!2!28!<!<s!BCC##v~r\   r   r   )r   r   r^  )rA   rE   rF   repeatr+   r   )r  r  r  arrrY   rX   rT   s         @rZ   test_matthews_corrcoef_overflowr    s     )


)
)C
8 
8 
8     )S#J
)
)C)#s33S999
)OOOX
.
.C)#s33S999Yx((NFF)&&993???)&&9988FF;S;STTTTTr\   c                  N   t          d          \  } }}t          | |d           \  }}}}t          |g dd           t          |g dd           t          |g dd           t          |g d           t	          | |d	d
          }t          |dd           t          | |d
          }t          |dd           t          | |d
          }	t          |	dd           t	          | |d          }t          |dd           t          | |d          }t          |dd           t          | |d          }	t          |	dd           t	          | |d          }t          |dd           t          | |d          }t          |dd           t          | |d          }	t          |	dd           t          j        t                    5  t	          | |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          | |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          | |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          | |dd           d d d            n# 1 swxY w Y   t          | |g dd           \  }}}}t          |g dd           t          |g dd           t          |g dd           t          |g d           d S )NFr   r   )(\?Q?gzG?r5   )HzG?g
ףp=
?rf   )Q?333333?r  )r_   re   rh   r<   r   r   g(\?r   r   gRQ?r   gGz?r   r   r   r   r1  r   )r  g=
ףp=?r  )r  rf   r   )r  r  r  )r_   rh   re   )r[   r   r,   r-   r    r!   r   r   r   r   r   )
rY   rX   ry   rS   r   r   r   r   r   r   s
             rZ   )test_precision_recall_f1_score_multiclassr    s}   'u555FFA 1NNNJAq!Qa!3!3!3Q777a!3!3!3Q777a!3!3!3Q777q,,,''' 
1g	F	F	FBb$***	ffg	6	6	6Bb$***	&&'	2	2	2Bb$***		9	9	9Bb$***	ffg	6	6	6Bb$***	&&'	2	2	2Bb$***		<	<	<Bb$***	ffj	9	9	9Bb$***	&&*	5	5	5Bb$***	z	"	" ; ;	::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z	"	" 8 8VVY77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	z	"	" 4 433334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	"	" A AFFIC@@@@A A A A A A A A A A A A A A A 1yyy$  JAq!Q a!3!3!3Q777a!3!3!3Q777a!3!3!3Q777q,,,'''''sH   G++G/2G/H..H25H2I11I58I5J55J9<J9r   )r   r   r   r   Nc                 $   t          j        g dg          }t          j        g dg          }t          ||g dg |           \  }}}}t          |d           t          |d           t          |d           | t          |g d           d S d S )Nr  r   r   r<   r<   )r   r   r<   r5   )rq   warn_forr   r   r   r<   r<   r   )rA   r   r   r-   )r   rY   rX   rS   r   r   r   s          rZ   ;test_precision_refcall_f1_score_multilabel_unordered_labelsr  8  s     X|||n%%FX|||n%%F0|||b'  JAq!Q q!q!q!1lll+++++ r\   c                  T   t          j        g d          } t          j        g d          }t          | |d           \  }}}}t          | |d          \  }}}}|t          j        |          k    sJ |t          j        |          k    sJ |t          j        |          k    sJ t          | |d          \  }}}}t          j        |           }	|t          j        ||	          k    sJ |t          j        ||	          k    sJ |t          j        ||	          k    sJ 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<   r   r<   r   r<   r   r<   r   r   r   r  )rA   r   r   r   bincountr   )
rY   rX   r   r   r   ry   rS   r   r   rc   s
             rZ   .test_precision_recall_f1_score_binary_averagedr  G  sD   XCCCDDFXCCCDDF 4FFDQQQMBB0QQQJAq!Q0TTTJAq!Qk&!!G
2w///////
2w///////
2w/////////r\   c                     t          j        d          } 	 t          j        g d          }t          j        g d          }t          t	          ||d          dd           t          t          ||d          dd           t          t          ||d          dd           t          j        d	i |  d S # t          j        d	i |  w xY w)
Nraise)rR  )r   r<   r5   r   r<   r5   )r5   r   r<   r<   r5   r   r   r   r   r5   r   )rA   seterrr   r+   r    r!   r   )old_error_settingsrY   rX   s      rZ   test_zero_precision_recallr  X  s     w///	(,,,--,,,--OFFGLLLcSTUUULIII3PQRRRHVVWEEEsANNN 		''&'''''	''&''''s   BB9 9Cc                  X   t          d          \  } }}t          | |ddg          }t          |ddgddgg           t          | |d	dg          }t          |d
d	gddgg           t          j        |           dz   }t          | |d	|g          }t          |d
dgddgg           d S )NFr   r   r<   r   r)  r   r   r5   r-  r_   )r[   r   r-   rA   max)rY   rX   ry   r  extra_labels        rZ   .test_confusion_matrix_multiclass_subset_labelsr  i  s    'u555FFA 
&&!Q	8	8	8BrRGaV,--- 
&&!Q	8	8	8BrRGb!W-... &..1$K	&&![1A	B	B	BBrRGaV,-----r\   zlabels, err_msgz,'labels' should contains at least one label.r   r   z.At least one label specified must be in y_truez
empty listzunknown labels)idsc                     t          d          \  }}}t          j        t          |          5  t	          |||            d d d            d S # 1 swxY w Y   d S )NFr   r   r   )r[   r   r   r   r   )rq   r   rY   rX   ry   s        rZ   test_confusion_matrix_errorr  |  s     (u555FFA	z	1	1	1 8 877778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   AAArq   )NonerN   
multiclassc                     | rt          |           nd}t          j        ||ft                    }t	          g g |           }t          ||           d S )Nr   rW  r   )rt   rA   r   rD   r   r-   )rq   expected_n_classesexpectedr  s       rZ   *test_confusion_matrix_on_zero_length_inputr    s^     )/5VAx+-?@LLLH	"b	0	0	0Br8$$$$$r\   c            	         g d} t          j        t          |                     }t          | |           }|j        t           j        k    sJ t           j        t           j        t           j        fD ]@}t          | | |	                    |d                    }|j        t           j        k    sJ At           j
        t           j        d t          fD ]@}t          | | |	                    |d                    }|j        t           j        k    sJ At          j        t          |           dt           j                  }t          | | |          }|d         dk    sJ |d         d	k    sJ t          j        t          |           d
t           j                  }t          | | |          }|d         d
k    sJ |d         dk    sJ d S )Nr   F)copyrK  l    r   r   r   r  l    l    )rA   onesrt   r   rW  int64bool_int32uint64astypefloat32float64objectfulluint32)rP   weightr  rW  s       rZ   test_confusion_matrix_dtyper    s   		AWSVV__F	!Q		B8rx(BHbi0 $ $a&--E-2R2RSSSx28#####*bj$7 & &a&--E-2R2RSSSx2:%%%%% WSVVZry999F	!Qf	5	5	5Bd8z!!!!d8z!!!! WSVV0AAAF	!Qf	5	5	5Bd8*****d8r>>>>>>r\   rW  )Int64Float64booleanc                    t          j        d          }t          j        g d          }|                    ||           }|                    g dd          }t          ||          }t          ||          }t          ||           dS )zkChecks that confusion_matrix works with pandas nullable dtypes.

    Non-regression test for gh-25635.
    pandas)	r<   r   r   r<   r   r<   r<   r   r<   r   )	r   r   r<   r<   r   r<   r<   r<   r<   r	  N)r   importorskiprA   r   Seriesr   r-   )rW  pd	y_ndarrayrY   y_predictedoutputexpected_outputs          rZ   %test_confusion_matrix_pandas_nullabler!    s     
	X	&	&B44455IYYyY..F))777w)GGKfk22F&y+>>Ov/////r\   c            	          t          j                    } t          | d          \  }}}d}t          ||t	          j        t          | j                            | j                  }||k    sJ d S )NFr^   a|                precision    recall  f1-score   support

      setosa       0.83      0.79      0.81        24
  versicolor       0.33      0.10      0.15        31
   virginica       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
rq   rr   r
   r=   r[   r   rA   rB   rt   rr   rx   rY   rX   ry   rz   r{   s         rZ   %test_classification_report_multiclassr&    s    D'UCCCFFA
O #yT.//00&	  F _$$$$$$r\   c                  J    g dg d}} d}t          | |          }||k    sJ d S )N)	r   r   r   r<   r<   r<   r5   r5   r5   r  a|                precision    recall  f1-score   support

           0       0.33      0.33      0.33         3
           1       0.33      0.33      0.33         3
           2       0.33      0.33      0.33         3

    accuracy                           0.33         9
   macro avg       0.33      0.33      0.33         9
weighted avg       0.33      0.33      0.33         9
r   )rY   rX   rz   r{   s       rZ   .test_classification_report_multiclass_balancedr(    sG    0002M2M2MFF
O #6622F_$$$$$$r\   c                      t          j                    } t          | d          \  }}}d}t          ||          }||k    sJ d S )NFr^   a|                precision    recall  f1-score   support

           0       0.83      0.79      0.81        24
           1       0.33      0.10      0.15        31
           2       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
)r
   r=   r[   r   r%  s         rZ   :test_classification_report_multiclass_with_label_detectionr*    sX    D'UCCCFFA
O #6622F_$$$$$$r\   c            	          t          j                    } t          | d          \  }}}d}t          ||t	          j        t          | j                            | j        d          }||k    sJ d S )NFr^   a|                precision    recall  f1-score   support

      setosa    0.82609   0.79167   0.80851        24
  versicolor    0.33333   0.09677   0.15000        31
   virginica    0.41860   0.90000   0.57143        20

    accuracy                        0.53333        75
   macro avg    0.52601   0.59615   0.50998        75
weighted avg    0.51375   0.53333   0.47310        75
r   )rq   rr   digitsr$  r%  s         rZ   1test_classification_report_multiclass_with_digitsr-    s    D'UCCCFFA
O #yT.//00&  F _$$$$$$r\   c                     t          d          \  } }}t          j        g d          |          } t          j        g d          |         }d}t          | |          }||k    sJ d}t          | |g d          }||k    sJ d S )NFr   )bluegreenreda|                precision    recall  f1-score   support

        blue       0.83      0.79      0.81        24
       green       0.33      0.10      0.15        31
         red       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
a|                precision    recall  f1-score   support

           a       0.83      0.79      0.81        24
           b       0.33      0.10      0.15        31
           c       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
r   rr   r[   rA   r   r   )rY   rX   ry   rz   r{   s        rZ   7test_classification_report_multiclass_with_string_labelr4    s    'u555FFAX...//7FX...//7F
O #6622F_$$$$
O #66PPPF_$$$$$$r\   c                      t          d          \  } }}t          j        g d          }||          } ||         }d}t          | |          }||k    sJ d S )NFr   )u   blue¢u   green¢u   red¢u                precision    recall  f1-score   support

       blue¢       0.83      0.79      0.81        24
      green¢       0.33      0.10      0.15        31
        red¢       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
r3  rY   rX   ry   rq   rz   r{   s         rZ   8test_classification_report_multiclass_with_unicode_labelr7  ?  sp    'u555FFAX:::;;FF^FF^F
O #6622F_$$$$$$r\   c                      t          d          \  } }}t          j        g d          }||          } ||         }d}t          | |          }||k    sJ d S )NFr   )r/  greengreengreengreengreenr1  a                             precision    recall  f1-score   support

                     blue       0.83      0.79      0.81        24
greengreengreengreengreen       0.33      0.10      0.15        31
                      red       0.42      0.90      0.57        20

                 accuracy                           0.53        75
                macro avg       0.53      0.60      0.51        75
             weighted avg       0.51      0.53      0.47        75
r3  r6  s         rZ   <test_classification_report_multiclass_with_long_string_labelr:  U  sp    'u555FFAX22233FF^FF^F
O #6622F_$$$$$$r\   c                      g d} g d}g d}d}t          j        t          |          5  t          | |ddg|           d d d            d S # 1 swxY w Y   d S )	Nr   r   r5   r   r   r   r5   r5   r   r   zclass 0zclass 1zclass 2z6labels size, 2, does not match size of target_names, 3r   r   r5   r#  )r   r   r   r   )rY   rX   rr   r   s       rZ   =test_classification_report_labels_target_names_unequal_lengthr?  l  s    __F__F444L
BC	k	-	-	- X XffaV,WWWWX X X X X X X X X X X X X X X X X Xs   AAAc                      g d} g d}g d}d}t          j        t          |          5  t          | ||           d d d            d S # 1 swxY w Y   d S )Nr<  r=  r>  zaNumber of classes, 2, does not match size of target_names, 3. Try specifying the labels parameterr   r2  )r   r   r   r   )rY   rX   rr   r   s       rZ   @test_classification_report_no_labels_target_names_unequal_lengthrA  v  s    __F__F444L	. 
 
z	1	1	1 I Iff<HHHHI I I I I I I I I I I I I I I I I Is   A

AAc                      d} d}t          d|| d          \  }}t          d|| d          \  }}d}t          ||          }||k    sJ d S )Nr   r~  r<   r   )rR   rQ   r  r;   a                precision    recall  f1-score   support

           0       0.50      0.67      0.57        24
           1       0.51      0.74      0.61        27
           2       0.29      0.08      0.12        26
           3       0.52      0.56      0.54        27

   micro avg       0.50      0.51      0.50       104
   macro avg       0.45      0.51      0.46       104
weighted avg       0.45      0.51      0.46       104
 samples avg       0.46      0.42      0.40       104
)r   r   )r  rQ   ry   rY   rX   rz   r{   s          rZ   %test_multilabel_classification_reportrC    s    II.	YQ  IAv /	YQ  IAvO #6622F_$$$$$$r\   c                  F   t          j        g dg dg          } t          j        g dg dg          }t          | |          dk    sJ t          | |           dk    sJ t          ||          dk    sJ t          |t          j        |                    dk    sJ t          | t          j        |                     dk    sJ t          | t          j        | j                            dk    sJ t          |t          j        | j                            dk    sJ d S )Nr   r   r   r   r   r<   )rA   r   r"   r   r   r@   r   s     rZ   $test_multilabel_zero_one_loss_subsetrE    s)   	999iii(	)	)B	999iii(	)	)BR  C''''R  A%%%%R  A%%%%R^B//00A5555R^B//00A5555RXbh//00A5555RXbh//00A555555r\   c                  h   t          j        g dg dg          } t          j        g dg dg          }t          j        ddg          }t          | |          dk    sJ t          | |           dk    sJ t          ||          dk    sJ t          |d|z
            dk    sJ t          | d| z
            dk    sJ t          | t          j        | j                            dk    sJ t          |t          j        | j                            d	k    sJ t          | ||
          dk    sJ t          | d|z
  |
          dk    sJ t          | t          j        |           |
          dk    sJ t          | d         |d                   t          | d         |d                   k    sJ d S )Nr   r   r   r<   r   UUUUUU?r   r   r   rK  gUUUUUU?gUUUUUU?)rA   r   r   r   r@   
zeros_like
sp_hamming)r   r   ws      rZ   test_multilabel_hamming_lossrK    s   	999iii(	)	)B	999iii(	)	)B
!QAB5((((B1$$$$B1$$$$AF##q((((AF##q((((BHRX..//58888BHRX..//36666Ba000H<<<<AF!444	AAAABM"--Q???7JJJJ1r!u%%BqE2a5)A)AAAAAAAr\   c                     t          j        g d          } t          j        g d          }d}t          j        t          |          5  t          | |dd           d d d            n# 1 swxY w Y   t          j        g dg dg          } t          j        g d	g d
g          }d}t          j        t          |          5  t          | |dd           d d d            n# 1 swxY w Y   t          j        g d          } t          j        g d          }d}t          j        t          |          5  t          | |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          | |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          | |dd           d d d            d S # 1 swxY w Y   d S )N)r   r<   r   r<   r<   z>pos_label=2 is not a valid label. It should be one of \[0, 1\]r   rN   r5   r   r   r   r   r   r   Target is multilabel-indicator but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted', 'samples'\].r   )r   r<   r<   r   r5   r  Target is multiclass but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted'\].r   zJSamplewise metrics are not available outside of multilabel classification.r   zNote that pos_label \(set to 3\) is ignored when average != 'binary' \(got 'micro'\). You may use labels=\[pos_label\] to specify a single positive class.r   r   )rA   r   r   r   r   r   r   r   )rY   rX   r   msg1msg2msg3r   s          rZ   test_jaccard_score_validationrS    s~   Xooo&&FXooo&&FOG	z	1	1	1 E Effh!DDDDE E E E E E E E E E E E E E E Xyyy))),--FXyyy))),--F	6 	
 
z	.	.	. F Fffh"EEEEF F F F F F F F F F F F F F F Xooo&&FXooo&&F	 	
 
z	.	.	. 8 8ffh77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8WD	z	.	.	. 9 9ffi88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	  
k	-	-	- D DffgCCCCD D D D D D D D D D D D D D D D D DsZ   
A**A.1A.C&&C*-C*:EE EF  F$'F$G))G-0G-c           	         t          j        g dg dg          }t          j        g dg dg          }t          ||d          dk    sJ t          ||d          dk    sJ t          ||d          dk    sJ t          |t          j        |          d          dk    sJ t          |t          j        |          d          dk    sJ t          |t          j        |j                  d          dk    sJ t          |t          j        |j                  d          dk    sJ t          j        g dg d	g          }t          j        g d
g dg          }t          t          ||d          d           t          t          ||d          d           t          t          ||d          d           t          t          ||dddg          d           t          t          ||dddg          d           t          t          ||d           t          j        g d                     t          j        g dg dg          }t          j        g d
g dg          }t          t          ||d          d           t          t          ||d          d           d}t          j	        t          |          5  t          ||dgd           d d d            n# 1 swxY w Y   d}t          j	        t          |          5  t          ||dgd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          t          j        ddgg          t          j        ddgg          d          dk    sJ 	 d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          t          j        ddgddgg          t          j        ddgddgg          d          dk    sJ 	 d d d            n# 1 swxY w Y   t          |           rJ d S )Nr   r   r   r   r   r   r<   r   r   r   r   r   r   r   g?r5   r   r   )r   r   r   r   r   g      ?z	Got 4 > 2r   r   r   z
Got -1 < 0r   zXJaccard is ill-defined and being set to 0.0 in labels with no true or predicted samples.zXJaccard is ill-defined and being set to 0.0 in samples with no true or predicted labels.)rA   r   r   r   r   r@   r+   r-   r   r   r   r   r   rV  )recwarnr   r   rY   rX   rQ  rR  r   s           rZ   test_multilabel_jaccard_scorerV    s   	999iii(	)	)B	999iii(	)	)B
 R333t;;;;R333q8888R333q8888R^B//CCCqHHHHR^B//CCCqHHHHRXbh//CCCqHHHHRXbh//CCCqHHHHXyyy))),--FXyyy))),--FffgFFFPPPffgFFFPPPffiHHH(SSSffiAGGG   ffiAGGG   ffd333RX>U>U>U5V5V   Xyyy))),--FXyyy))),--FffgFFFPPPffjIII7SSSD	z	.	.	. C CffaS'BBBBC C C C C C C C C C C C C C CD	z	.	.	. D DffbT7CCCCD D D D D D D D D D D D D D D	- 
 
,C	8	8	8 
 
"(QF8,,bhAx.@.@'RRR    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	, 
 
,C	8	8	8 
 
1a&1a&)**1a&1a&)**!  
     
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 G}}sJ   K//K36K3L88L<?L< AN00N47N4A	P..P25P2c           	         g d}g d}g d}t                      }|                    |           |                    |          }|                    |          }t          t          ||          }t          t          ||          }ddgddgddgdgdgdgd g}	ddgdd	gd	dgdgdgd	gd g}
d
D ]>}t          |	|
          D ]+\  }}t           |||           |||                     ,?t          j        ddgddgddgg          }t          j        ddgddgddgg          }t                      5  t	          ||d          dk    sJ 	 d d d            n# 1 swxY w Y   t          |           rJ d S )N)antrX  catrY  rX  rY  birdrZ  )rY  rX  rY  rY  rX  rZ  rZ  rY  )rX  rZ  rY  rX  rZ  rY  r   r<   r5   )r   r   r   Nr   r   r   )r&   rJ   	transformr   r   zipr+   rA   r   r/   rV  )rU  rY   rX   rq   lbr   r   multi_jaccard_scorebin_jaccard_scoremulti_labels_listbin_labels_listr   m_labelb_labels                 rZ   test_multiclass_jaccard_scorerd  :  sA   GGGFGGGF###F			BFF6NNNf%%Jf%%J!-@@z:FF						 1v1v1vsQC!dCO 8   #$5 G G 	 	GW##GGDDD!!''BBB   	 X1v1v1v.//FX1v1v1v.//F			 F FVVZ@@@AEEEEEF F F F F F F F F F F F F F F G}}s   3EE Ec                    t          dgdgd          dk    sJ d}t          j        t          |          5  t          ddgddgd          dk    sJ 	 d d d            n# 1 swxY w Y   t          dgdgdd          d	k    sJ t	          j        g d
          }t	          j        g d          }t          t          ||d          d           t          t          ||dd          d           t          |           rJ d S )Nr<   r   rN   r   r   zOJaccard is ill-defined and being set to 0.0 due to no true or predicted samplesr   r   r   )r<   r   r<   r<   r   )r<   r   r<   r<   r<   r   rM  r   )r   r   r   r   rA   r   r+   rV  )rU  r   rY   rX   s       rZ   !test_average_binary_jaccard_scorerf  _  s   !qc8444;;;;	'  
,C	8	8	8 F FaVaVX>>>#EEEEEF F F F F F F F F F F F F F F !qcQAAASHHHHXooo&&FXooo&&FffhGGGQQQffh!DDDg   G}}s   A""A&)A&c                  6   t          j        g dg dg          } t          j        g dg dg          }d}t          j        t          |          5  t          | |dd          }|t          j        d          k    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   zJaccard is ill-defined and being set to 0.0 in samples with no true or predicted labels. Use `zero_division` parameter to control this behavior.r   r   r   r   r   r   )rA   r   r   r   r   r   r   )rY   rX   r   scores       rZ   (test_jaccard_score_zero_division_warningrk  v  s     Xyyy))),--FXyyy))),--F	C 
 
,C	8	8	8 + +ffivVVVc*******+ + + + + + + + + + + + + + + + + +s   .BBBzzero_division, expected_scorer  )r<   r   c                 R   t          j        g dg dg          }t          j        g dg dg          }t          j                    5  t          j        dt
                     t          ||d|           }d d d            n# 1 swxY w Y   |t          j        |          k    sJ d S )Nr   rh  r_  r   ri  )	rA   r   r   r   ra  r   r   r   r   )r   expected_scorerY   rX   rj  s        rZ   *test_jaccard_score_zero_division_set_valuern    s     Xyyy))),--FXyyy))),--F		 	"	" 
 
g'=>>>FI]
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 FM.11111111s   .BB	Bc                  Z   t          j        g dg dg dg          } t          j        g dg dg dg          }t          | |d           \  }}}}t          |g dd           t          |g dd           t          |g d	d           t          |g d
d           t	          | |dd           }|}t          |g dd           t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          t          j        |                     t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          d|z  |z  d|z  |z   z             t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          t          j        ||                     t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          d           d S )Nr<   r   r   r   r   r<   r   r   r  )r<   r   r<   r   r   )r   r   r   r   r5   )r   r   r   r   )r   r   r<   r   )r<   r<   r<   r<   r   r   )r   r  r<   r   r   g      ?r   g?r   r   r   r   r  r   rA   r   r   r,   r   r+   r   r   rY   rX   rS   r   r   r   f2rc   s           rZ   +test_precision_recall_f1_score_multilabel_1rv    s$   
 X|||\\\<<<@AAFX|||\\\<<<@AAF0NNNJAq!Q a!5!5!5q999a!5!5!5q999a!7!7!7;;;aq111	VV!T	:	:	:BGb///1555 1QQQJAq!Q7###3+,,,999FFG<<<bgbkk  
 1QQQJAq!Q333999FFG<<<	!a1q519%   1TTTJAq!Q7###3+,,,999FFJ???

2w'''   1SSSJAq!Q333999FFINNNPSTTTTTr\   c                  \   t          j        g dg dg dg          } t          j        g dg dg dg          }t          | |d           \  }}}}t          |g dd           t          |g d	d           t          |g d
d           t          |g dd           t	          | |dd           }|}t          |g dd           t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          d|z  |z  d|z  |z   z             t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          t          j        |                     t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          t          j        ||                     t          | |d          \  }}}}t          |d           t          |d           t          |d           |J t          t	          | |dd          dd           d S )Nrp  rq  r  r   r   r   r<   r  r   )r   r   r   r   r5   )r   r   r   r   )r   gQ?r   r   r<   r5   r<   r   rr  )r   皙?r   r   r         ?r   r   r   g      ?rG  r   r   rd   r  r   g&S?rs  rt  s           rZ   +test_precision_recall_f1_score_multilabel_2r|    s/    X|||\\\<<<@AAFX|||\\\<<<@AAF 1NNNJAq!Qa!5!5!5q999a!5!5!5q999a!6!6!6:::aq111	VV!T	:	:	:BGb///15550QQQJAq!Q4   4   0111999FFG<<<	!a1q519%  
 1QQQJAq!Q4   5!!!6"""999FFG<<<bgbkk   1TTTJAq!Q5!!!5!!!=)))999FFJ???

2w'''  
 1SSSJAq!Q 5!!!5!!!=)))999FFI>>>    r\   z%zero_division, zero_division_expected)r   r   r  c           	         t          j        g dg dg dg          }t          j        g dg dg dg          }t          ||d |           \  }}}}t          ||dddgd	           t          |dd
d|gd	           d}t          ||dd|gd	           t          |g dd	           t	          ||d	d |           }	|}
t          |	|dd|gd	           t          ||d|           \  }}}}t          j        |          rdn|}dt          j        |           z   }t          |d	|z   |z             t          |d|z   |z             d}t          ||           |J t          t	          ||d	d|           t          |	d                      t          ||d|           \  }}}}t          |d           t          |d
           t          |d           |J t          t	          ||d	d|           d|z  |z  d|z  |z   z             t          ||d|           \  }}}}t          ||dk    rdnd           t          |d
           d}t          |d|z             |J t          t	          ||d	d|           t          |	|
                     t          ||d          \  }}}}t          |d           t          |d           t          |d           |J d }t          t	          ||d	d|           |d	           d S )!Nrq  rp  r  rg  rx  ri  r   r   r5   r   r   r   r<   ry  r   r   r   rz  r   r         ?g?r  r   rg   r   r   r   r   g@r   r   rd   gZd;O?)rA   r   r   r,   r   r  r+   r0   )r   zero_division_expectedrY   rX   rS   r   r   r   
expected_fru  rc   value_to_sumvalues_to_averageexpected_results                 rZ   7test_precision_recall_f1_score_with_an_empty_predictionr    s    X|||\\\<<<@AAFX|||\\\<<<@AAF 1M  JAq!Q a"8#sC!H!LLLa#sC1G!H!LLLJa*gq*!EqIIIaq111	VV!T	W	W	WBGb:tQ
"CQGGG0}  JAq!Q !788T11>TL*@!A!AABA,0AABBBC,.2CCDDD J:&&&999'	
 	
 	
 	B%%%	 	 	 1}  JAq!Q 5!!!30111999FG=	
 	
 	
 
!a1q519%	   1
-  JAq!Q $:a$?$?55SIII3M->>???999FJm	
 	
 	
 	B(((	   1SSSJAq!Q 5!!!5!!!5!!!999OFI]	
 	
 	
 		    r\   r   )r   r   r   r   c                    t          j        d          }t          j        |          }t          t          |||| |          \  }}}}t          t
          ||| ||          }	|J t          j        |          r!||||	fD ]}
t          j        |
          sJ d S t          |          }t          ||           t          ||           t          ||           t          |	t          |                     d S )Nrh   r   r   r   r   r~  )	rA   r   rH  r.   r   r   r  rw   r+   )r   r   r   rY   rX   rS   r   r   r   fbetar}   s              rZ   "test_precision_recall_f1_no_labelsr  y  s(    XgF]6""F#'#  JAq!Q #  E 999 
x !Q& 	$ 	$F8F######-((M=)))=)))=)))u]3344444r\   c                    t          j        d          }t          j        |          }t          }t	          j        t                    5   |||| d          \  }}}}d d d            n# 1 swxY w Y   t          |d           t          |d           t          |d           |J t	          j        t                    5  t          ||| d          }d d d            n# 1 swxY w Y   t          |d           d S )Nr  r   r  r   )	rA   r   rH  r   r   r   r   r+   r   )	r   rY   rX   funcrS   r   r   r   r  s	            rZ   1test_precision_recall_f1_no_labels_check_warningsr    s   XgF]6""F*D	,	-	- E ET&&'DDD
1aE E E E E E E E E E E E E E E 111999	,	-	- G GFFG#FFFG G G G G G G G G G G G G G G q!!!!!s$   	A**A.1A.C""C&)C&c                    t          j        d          }t          j        |          }t          t          ||d d|           \  }}}}t          t
          ||dd |           }t          j        |           } t          || | | gd           t          || | | gd           t          || | | gd           t          |g dd           t          || | | gd           d S )Nr  r   r  r~  r5   rh  )rA   r   rH  r.   r   r   r  r,   )r   rY   rX   rS   r   r   r   r  s           rZ   /test_precision_recall_f1_no_labels_average_noner    s   XgF]6""F $'#  JAq!Q VV#t=  E J}--Ma-!NPQRRRa-!NPQRRRa-!NPQRRRaA...em]M%RTUVVVVVr\   c                  .   t          j        d          } t          j        |           }t          j        t
                    5  t          | |d d          \  }}}}d d d            n# 1 swxY w Y   t          |g dd           t          |g dd           t          |g dd           t          |g dd           t          j        t
                    5  t          | |dd           }d d d            n# 1 swxY w Y   t          |g dd           d S )Nr  r<   r  rh  r5   rr  )	rA   r   rH  r   r   r   r   r,   r   )rY   rX   rS   r   r   r   r  s          rZ   4test_precision_recall_f1_no_labels_average_none_warnr    s   XgF]6""F 
,	-	- 
 
4FDq
 
 

1a
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 aA...aA...aA...aA...	,	-	- B BFFDAAAB B B B B B B B B B B B B B B eYYY22222s$   A''A+.A+C77C;>C;c            	      r   t           t          }} dD ]}d}t          j        ||          5   | g dg d|           d d d            n# 1 swxY w Y   d}t          j        ||          5   | g dg d|           d d d            n# 1 swxY w Y   d}t          j        ||          5   | t	          j        d	d
gd	d
gg          t	          j        d	d
gd
d
gg          d           d d d            n# 1 swxY w Y   d}t          j        ||          5   | t	          j        d	d
gd
d
gg          t	          j        d	d
gd	d
gg          d           d d d            n# 1 swxY w Y   d}t          j        ||          5   | t	          j        d	d	gd	d	gg          t	          j        d
d
gd
d
gg          d           d d d            n# 1 swxY w Y   d}t          j        ||          5   | t	          j        d
d
gd
d
gg          t	          j        d	d	gd	d	gg          d           d d d            n# 1 swxY w Y   d}t          j        ||          5   | d	d	gddgd           d d d            n# 1 swxY w Y   d}t          j        ||          5   | ddgd	d	gd           d d d            n# 1 swxY w Y   t          j        d          5 }t          j        d           t          d
d
gd
d
gd           d}t          |
                                j                  |k    sJ d}t          |
                                j                  |k    sJ d}t          |
                                j                  |k    sJ 	 d d d            d S # 1 swxY w Y   d S )NNr   r   zPrecision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.r   r   r<   r<   r5   r   zRecall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.zPrecision is ill-defined and being set to 0.0 in samples with no predicted labels. Use `zero_division` parameter to control this behavior.r<   r   r   zRecall is ill-defined and being set to 0.0 in samples with no true labels. Use `zero_division` parameter to control this behavior.Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.r   zRecall is ill-defined and being set to 0.0 due to no true samples. Use `zero_division` parameter to control this behavior.r   rN   Tr   alwaysF-score is ill-defined and being set to 0.0 due to no true nor predicted samples. Use `zero_division` parameter to control this behavior.)r   r   r   r   rA   r   r   r   ra  r   popr   )r   rJ  r   r   r   s        rZ   test_prf_warningsr    s   *,BqA. 5 5 	 \!3''' 	5 	5AiiiG4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	 \!3''' 	5 	5AiiiG4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
	  
as	#	#	# U U	"(QFQF#
$
$bhAA/?&@&@)TTTTU U U U U U U U U U U U U U U	  
as	#	#	# U U	"(QFQF#
$
$bhAA/?&@&@)TTTTU U U U U U U U U U U U U U U
	  
as	#	#	# S S	"(QFQF#
$
$bhAA/?&@&@'RRRRS S S S S S S S S S S S S S S	  
as	#	#	# S S	"(QFQF#
$
$bhAA/?&@&@'RRRRS S S S S S S S S S S S S S S
	  
as	#	#	# . .	1a&2r(H----. . . . . . . . . . . . . . .	  
as	#	#	# . .	2r(QFH----. . . . . . . . . . . . . . . 
	 	-	-	- 0h''''AAIIII 	
 6::<<'((C//// 	 6::<<'((C//// 	 6::<<'((C/////-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   A

A	A	-BB	B	0?C;;C?C??E))E-0E-?GGG:?II	I	(JJJ*K		KK)B5N,,N03N0c           	         t           }dD ]2}t          |g dg d||            t          |g dg d||            3t          |t          j        ddgddgg          t          j        ddgddgg          d|            t          |t          j        ddgddgg          t          j        ddgddgg          d|            t          |t          j        ddgddgg          t          j        ddgddgg          d|            t          |t          j        ddgddgg          t          j        ddgddgg          d|            t          |ddgd	d	gd
|            t          |d	d	gddgd
|            t	          j        d          5 }t	          j        d           t          ddgddgd
|            t          |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   r  ri  r<   r   r   r   r   rN   Tr   r  )r   r.   rA   r   r   r   ra  rt   )r   r   r   r   s       rZ   )test_prf_no_warnings_if_zero_division_setr  Y  s    	(A. 
 
yyy)))WM	
 	
 	
 	
 	yyy)))WM	
 	
 	
 	
 	

 	
1a&1a&!""
1a&1a&!""#    	
1a&1a&!""
1a&1a&!""#    	
1a&1a&!""
1a&1a&!""#    	
1a&1a&!""
1a&1a&!""#    	Aq6B8X]    	B8aVX]    
	 	-	-	-  h''''FQFHM	
 	
 	
 	
 6{{a                                   s   AG!!G%(G%c           	         t          t          t          j        ddgddgg          t          j        ddgddgg          d|            t	          j        d          5 }t	          j        d           t          t          j        ddgddgg          t          j        ddgddgg          d|            | dk    r-t          |                                j	                  d	k    sJ nt          |          dk    sJ t          ddgddg           | dk    r,t          |                                j	                  d	k    sJ d d d            d S # 1 swxY w Y   d S )
Nr<   r   r   ri  Tr   r  r   r  )r.   r!   rA   r   r   r   ra  r   r  r   rt   r   r   s     rZ   test_recall_warningsr    s   
1a&1a&!""
1a&1a&!""#    
	 	-	-	- h'''Hq!fq!f%&&Hq!fq!f%&&'		
 	
 	
 	
 F""FJJLL()) ." " " " " " v;;!####aVaV$$$F""FJJLL()) ." " " " "+                 s   C&EEEc           	         t          j        d          5 }t          j        d           t          t	          j        ddgddgg          t	          j        ddgddgg          d|            | dk    r-t          |                                j                  d	k    sJ nt          |          dk    sJ t          ddgddg           | dk    r,t          |                                j                  d	k    sJ d d d            n# 1 swxY w Y   t          t          t	          j        ddgddgg          t	          j        ddgddgg          d|            d S )
NTr   r  r<   r   r   ri  r   r  )r   r   ra  r    rA   r   r   r  r   rt   r.   r  s     rZ   test_precision_warningsr    s   		 	-	-	- h'''Hq!fq!f%&&Hq!fq!f%&&'		
 	
 	
 	
 F""FJJLL()) ." " " " " " v;;!####AA'''F""FJJLL()) ." " " " "+              6 
1a&1a&!""
1a&1a&!""#     s   C&DDDc           
      0   t          j        d          5 }t          j        d           t          t	          t
          d          fD ]3} |t          j        ddgddgg          t          j        ddgddgg          d| 	           t          |          dk    sJ  |t          j        ddgddgg          t          j        ddgddgg          d| 	           t          |          dk    sJ  |t          j        ddgddgg          t          j        ddgddgg          d| 	           | d
k    r.t          |
                                j                  dk    sJ t          |          dk    sJ 5	 d d d            d S # 1 swxY w Y   d S )NTr   r  r5   r   r<   r   r   ri  r   r  )r   r   ra  r   r   r   rA   r   rt   r   r  r   )r   r   rj  s      rZ   test_fscore_warningsr    s6   		 	-	-	- "(h'''! < < <= 	( 	(EE1a&1a&)**1a&1a&)**+	    v;;!####E1a&1a&)**1a&1a&)**+	    v;;!####E1a&1a&)**1a&1a&)**+	    &&

,-- 2- - - - - - 6{{a'''''?	("( "( "( "( "( "( "( "( "( "( "( "( "( "( "( "( "( "(s   E'FFFc                     g d} g d}d}t          j        g dg dg dg          }t          j        g dg dg dg          }d}| ||f|||ffD ]q\  }}}t          t          t          t          t          d	
          fD ]A}	t          j        t          |          5   |	||           d d d            n# 1 swxY w Y   Brd S )N)r<   r5   r   r   )r<   r5   r   r<   rO  r   r   r   r:  rN  r5   r   r   )
rA   r   r    r!   r   r   r   r   r   r   )
	y_true_mc	y_pred_mcmsg_mc
y_true_ind
y_pred_indmsg_indrY   rX   r   r}   s
             rZ   'test_prf_average_binary_data_non_binaryr  	  sV   II	1 
 999iii;<<J999iii;<<J	<  
Iv&	Z)  ' '
 Ka(((	
 	' 	'F z555 ' 'vv&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	'	' 's   B66B:=B:c                     d} d}d}d}d}d}| t          j        g dg dg d	g          f| t          j        d
dgdd
gddgg          f|g df|g df|g df|t          j        dgdgdgg          f|t          j        d
gdgdgg          f|t          j        dgdgdgg          f|t          j        d
dgddgddgg          f|t          j        ddgddgddgg          fg
}i | | f| ||f|||f||| fd || fd ||f|||fd ||fd ||fd | |fd ||fd ||fd ||fd ||fd | |fd ||fd ||fd ||fd | |fd ||fd ||fd i}t          |d          D ]\  \  }}	\  }
}	 |||
f         }n# t          $ r ||
|f         }Y nw xY w|t	          j        t                    5  t          |	|           d d d            n# 1 swxY w Y   ||
k    rZd                    ||
          }t	          j        t          |          5  t          |	|           d d d            n# 1 swxY w Y   |||| fvrXd                    |          }t	          j        t          |          5  t          |	|           d d d            n# 1 swxY w Y   7t          |	|          \  }}}||k    sJ |	                    d          r|j        dk    sJ |j        dk    sJ nDt          |t          j        |	                     t          |t          j        |                     t	          j        t                    5  t          |	d d         |           d d d            n# 1 swxY w Y   ddg}	d d!g}d"}t	          j        t          |          5  t          |	|           d d d            d S # 1 swxY w Y   d S )#Nzmultilabel-indicatorr  rN   
continuouszmulticlass-multioutputzcontinuous-multioutputr   r   r   r   r<   )r5   r   r<   )r   r  r   r5   r   r   r  r   r   r^  g?g      @)r  z@Classification metrics can't handle a mix of {0} and {1} targetsr   z{0} is not supported
multilabelcsrr   )r<   r5   )r   r5   r   )r5   )r   r5   zYou appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead - the MultiLabelBinarizer transformer can convert to this format.)rA   r   r   KeyErrorr   r   r   r#   format
startswithr-   squeeze)INDMCBINCNTMMCMCNEXAMPLESEXPECTEDtype1r   type2r   r  r   merged_typey1outy2outr   s                     rZ   test__check_targetsr  *	  sj    !C	B
C
C
"C
"C 
bh			999iii899:	bhAAA/001	YYY	iii	ooo	RXsQC!o&&'	bhaS1#''(	bhuse,--.	bhAAA/001	bhc
S#Jc
;<<=H	c
C	R" 
c
C 
S	4	
 
c
D 
b	2 
c
D 
c
D 
c
D 
c
D 
S	4 
c
D 
c
D 
c
D  
c
D!" 
S	4#$ 
c
D%& 
c
D	c
D	S	4	c
D- H2 %,HQ$?$?$? !, !, [eR	.u-HH 	. 	. 	.u-HHH	.z** ' 'r2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ~~--3VE5-A-A  ]:W=== + +"2r***+ + + + + + + + + + + + + + + b#..4;;EBBGzAAA / /&r2.../ / / / / / / / / / / / / / / )7r2(>(>%K(****%%l33 :|u,,,,|u,,,,,"5"*R..999"5"*R..999z** , ,r#2#w+++, , , , , , , , , , , , , , , )	B
B	3  
z	-	-	-  r2                 sl   .
E99FF/GG	G	H++H/	2H/	.JJ	J	M&&M*	-M*	N66N:=N:c                  N    ddg} ddg}t          | |          d         dk    sJ d S )Nr   r<   r   r  )r#   ri  s     rZ   Atest__check_targets_multiclass_with_both_y_true_and_y_pred_binaryr  	  s:    VFWF&&))!,<<<<<<r\   c                     t          j        g d          } t          j        g d          }t          | |          dk    sJ t          j        g d          } t          j        g d          }t          | |          dk    sJ d S )N)r   r<   r<   r   )g      !r   r  g333333ӿr   )r   r5   r5   r   )rA   r   r   rY   pred_decisions     rZ   test_hinge_loss_binaryr  	  s    Xnnn%%FH33344Mfm,,7777Xlll##FH33344Mfm,,777777r\   c            
         t          j        g dg dg dg dg dg dg          } t          j        g d          }t          j        d| d         d         z
  | d         d         z   d| d         d         z
  | d         d	         z   d| d	         d	         z
  | d	         d
         z   d| d
         d         z
  | d
         d	         z   d| d         d
         z
  | d         d	         z   d| d         d	         z
  | d         d
         z   g          }t          j        |dd |           t          j        |          }t	          ||           |k    sJ d S )N
ףp=
?(\ſ(\gGz)HzGgGz׿Q޿r  333333r  RQؿr  )r  r  r  r  gzGgHzGgHzGѿgQ?)r   r<   r5   r<   r   r5   r<   r   r5   r   r   r   outrA   r   clipr   r   )r  rY   dummy_lossesdummy_hinge_losss       rZ   test_hinge_loss_multiclassr  	  s   H((((((((((((((((((	
	 	M X((())F8a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99	
	 	L GL!T|4444w|,,fm,,0@@@@@@@r\   c                      t          j        g d          } t          j        g dg dg dg dg          }d}t          j        t          |          5  t          | |           d d d            d S # 1 swxY w Y   d S )N)r   r<   r5   r5   )gRQ?g rh?g(\gffffffr  r  zDPlease include all labels in y_true or pass labels as third argumentr   )rA   r   r   r   r   r   )rY   r  error_messages      rZ   :test_hinge_loss_multiclass_missing_labels_with_labels_noner  	  s    Xlll##FH((((((((((((		
 M 	O  
z	7	7	7 * *6=)))* * * * * * * * * * * * * * * * * *   A22A69A6c            
         t          j        g d          } t          j        g d          }d}t          j        t          t          j        |                    5  t          | |           d d d            n# 1 swxY w Y   t          j        ddgddgddgddgddgddgddgg          }g d	}d
}t          j        t          t          j        |                    5  t          | ||           d d d            d S # 1 swxY w Y   d S )N)r5   r<   r   r<   r   r<   r<   )r   r<   r5   r<   r   r5   r<   zThe shape of pred_decision cannot be 1d arraywith a multiclass target. pred_decision shape must be (n_samples, n_classes), that is (7, 3). Got: (7,)r   r  r   r<   r5   r   zThe shape of pred_decision is not consistent with the number of classes. With a multiclass target, pred_decision shape must be (n_samples, n_classes), that is (7, 3). Got: (7, 2))rY   r  rq   )rA   r   r   r   r   reescaper   )rY   r  r  rq   s       rZ   <test_hinge_loss_multiclass_no_consistent_pred_decision_shaper  	  s    X+++,,FH22233M	  
z=)A)A	B	B	B ? ?&>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Hq!fq!fq!fq!fq!fq!fqRSfUVVMYYF	  
z=)A)A	B	B	B N N&fMMMMN N N N N N N N N N N N N N N N N Ns$   A::A>A>!DDDc            	         t          j        g dg dg dg dg dg          } t          j        g d          }t          j        g d          }t          j        d| d         d         z
  | d         d         z   d| d         d         z
  | d         d         z   d| d         d         z
  | d         d	         z   d| d	         d         z
  | d	         d         z   d| d
         d         z
  | d
         d	         z   g          }t          j        |dd |           t          j        |          }t	          || |          |k    sJ d S )Nr  皙r  r  r  r  )r   r<   r5   r<   r5   )r   r<   r5   r   r<   r   r5   r   r   r  r   r  r  rY   rq   r  r  s        rZ   .test_hinge_loss_multiclass_with_missing_labelsr  	  sz   H(((((((((((((((	
 M Xooo&&FXlll##F8a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99	
 L GL!T|4444w|,,fmF;;;?OOOOOOOr\   c            	         t          j        g dg dg dg dg dg          } t          j        g d          }t          j        g d          }t          j        d| d         d         z
  | d         d         z   d| d         d	         z
  | d         d         z   d| d	         d	         z
  | d	         d         z   d| d
         d         z
  | d
         d	         z   d| d         d	         z
  | d         d         z   g          }t          j        |dd |           t          j        |          }t	          t          || |          |           d S )N)r  r  r  )g333333ÿr  r  )r  r  r  )r  g(\gzGڿ)r   r5   r5   r   r5   r   r<   r   r5   r   r   r  r   )rA   r   r  r   r+   r   r  s        rZ   @test_hinge_loss_multiclass_missing_labels_only_two_unq_in_y_truer  	  s   
 H!!!!!!!!!!!!!!!	
 M Xooo&&FXiii  F8a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99	
 L GL!T|4444w|,,6=888:J    r\   c            
      V   g d} g dg dg dg dg dg dg}t          j        d|d         d         z
  |d         d         z   d|d         d         z
  |d         d         z   d|d         d         z
  |d         d	         z   d|d	         d         z
  |d	         d         z   d|d
         d	         z
  |d
         d         z   d|d         d         z
  |d         d	         z   g          }t          j        |dd |           t          j        |          }t	          | |          |k    sJ d S )N)r/  r0  r1  r0  whiter1  r  r  r  r  r<   r   r5   r   r   r   r  r  )rY   r  r  r  s       rZ   +test_hinge_loss_multiclass_invariance_listsr  
  sw    ?>>F$$$$$$$$$$$$$$$$$$M 8a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99a ##mA&6q&99	
	 	L GL!T|4444w|,,fm,,0@@@@@@@r\   c            	         g d} t          j        ddgddgddgddgddgd	d
gg          }t          | |          }t          j        t	          j        t          j        |           dk    |d d df                              }t          ||           g d} g dg dg dg}t          | |d          }t          |d           | dz  } |dz  }t          | |d          }t          |d           g d} ddgddgddgg}t          j        t                    5  t          | |           d d d            n# 1 swxY w Y   g d} ddgddgddgddgg}t          | |          }t          |d           ddg} ddgddgg}t          j        ddgddgg          }d}t          j        t          |           5  t          | |           d d d            n# 1 swxY w Y   ddgddgddgg}d!}t          j        t          |           5  t          | |           d d d            n# 1 swxY w Y   t          j        t          j
        |d d df                              }t          | |ddg"          }t          ||           g d#} g d$g dg d%g}t          | |g d&"          }t          |t          j
        d                      d S )'Nnor  r  yesr  r  r   r   rf   {Gz?Gz?r   r{  gMbP?g+?r  r<   rM  r   r   r   )r   r   r   )r   r   r   TrT  g躕ʀ?r5   Fg.L`@r   r   r   r   hamspamr  r  CT?r   r   zly_true contains only one label \(2\). Please provide the true labels explicitly through the labels argument.r   zDFound input variables with inconsistent numbers of samples: \[3, 2\]r   r   )r   r   r   r   r   r   rL  )rA   r   r   r   r	   logpmfr*   r   r   r   log)	rY   rX   loss	loss_truer   	error_strtrue_log_losscalculated_log_lossy_score2s	            rZ   test_log_lossr   ;
  s   444FX
sc3Z$SzD$<%QVX F FF##D)"(6*:*:e*CVAAAqD\RRSSSID)$$$ YYFoo@FFFd333DD)$$$ aKF
aKFFFe444DD-((( YYFCj3*sCj1F	z	"	" ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ,++FCj3*sCj3*=FFF##DD)$$$ VFCj3*%Fhc
S#J/00G	C  
z	3	3	3 ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Cj3*sCj1FWI	z	3	3	3 ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
 WRVGAAAqDM22333M"67Aq6BBB'777 YYF///BHFHYYY777DD26#;;,'''''s6   D55D9<D95GGGH""H&)H&c                     t          j        ddg|           }t          j        ddg|           }t          ||          }t          j        |          sJ dS )zCheck the behaviour internal eps that changes depending on the input dtype.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/24315
    r   r<   r   N)rA   r   r   isfinite)rW  rY   rX   r  s       rZ   test_log_loss_epsr  |
  s_     Xq!fE***FXq!fE***FFF##D;tr\   c                     t          j        g d          }t          j        ddgddgddgddgg|           }t          j        t          d	
          5  t          ||           ddd           dS # 1 swxY w Y   dS )zGCheck that log_loss raises a warning when y_pred values don't sum to 1.r  r   r   r   r   r   r   r   z$The y_pred values do not sum to one.r   N)rA   r   r   r   r   r   )rW  rY   rX   s      rZ   'test_log_loss_not_probabilities_warningr  
  s     Xlll##FXSzC:SzC:FeTTTF	k)O	P	P	P ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !r  r:  r   r   c                 V    t          | |          t          j        d          k    sJ dS )z6Check that log_loss returns 0 for perfect predictions.r   N)r   r   r   ri  s     rZ   !test_log_loss_perfect_predictionsr  
  s/     FF##v}Q'7'7777777r\   c                  n   t          j        g d          } t          j        ddgddgddgddgg          }t          t          fg}	 ddlm}m} |                    ||f           n# t          $ r Y nw xY w|D ];\  }} ||            ||          }}t          ||          }	t          |	d           <d S )	Nr  r   r   r   r   r   )	DataFramer  r  )
rA   r   r)   r  r	  r  r  ImportErrorr   r*   )
y_try_prtypesr	  r  TrueInputTypePredInputTyperY   rX   r  s
             rZ   test_log_loss_pandas_inputr  
  s   822233D8c3Z#sc3Z#sDEED]+,E,,,,,,,,fi())))   (- ) )$}&t,,mmD.A.A''i((((	) )s   A' '
A43A4c                     t          j        g d          } t          j        g d          }t          j        | |z
            dz  t	          |           z  }t          t          | |           d           t          t          | |          |           t          t          d| z   |          |           t          t          d| z  dz
  |          |           t          j        t                    5  t          | |dd                     d d d            n# 1 swxY w Y   t          j        t                    5  t          | |dz              d d d            n# 1 swxY w Y   t          j        t                    5  t          | |dz
             d d d            n# 1 swxY w Y   t          j        g d          } t          j        g d          }d	}t          j        t          |
          5  t          | |           d d d            n# 1 swxY w Y   t          t          dgdg          d           t          t          dgdg          d           t          t          dgdg          d           t          t          dgdgd          d           t          t          dgdgd          d           d S )Nr   r<   r<   r   r<   r<   r   r   rf   r   r   gffffff?r5   r   r   r<   )r   r<   r5   r   )r   r   r   r   zMOnly binary classification is supported. The type of the target is multiclassr   r   r   g{Gz?r   r  foobarr   )
rA   r   r   normrt   r+   r   r   r   r   )rY   rX   
true_scorer  s       rZ   test_brier_score_lossr  
  s   X((())FX55566FVf_--2S[[@J(88#>>>(88*EEE(vv>>
KKK(Va@@*MMM	z	"	" - -,,,- - - - - - - - - - - - - - -	z	"	" / /#.../ / / / / / / / / / / / / / /	z	"	" / /#.../ / / / / / / / / / / / / / / Xlll##FX***++FW  
z	7	7	7 ) )((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ("u55t<<<(!se44d;;;(!se44d;;;(%3%5III4PPP(%3%5III4PPPPPsH   1DDD:EE!E>FF"%F"2HHHc                      d} t          j        t          |           5  t          g dg d           d d d            d S # 1 swxY w Y   d S )Nz%y_pred contains classes not in y_truer   rh  r   )r   r   r   r   r   s    rZ   #test_balanced_accuracy_score_unseenr  
  s    
1C	k	-	-	- 6 6			9995556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A  AAzy_true,y_pred)r   r   r   r   )r   r   r   r   )r   r   r   r   c                    t          | |dt          j        |                     }t                      5  t	          | |          }d d d            n# 1 swxY w Y   |t          j        |          k    sJ t	          | |d          }t	          | t          j        | | d                             }|||z
  d|z
  z  k    sJ d S )Nr   r   T)adjustedr   r<   )r!   rA   uniquer/   r   r   r   	full_like)rY   rX   macro_recallbalancedr  chances         rZ   test_balanced_accuracy_scorer"  
  s     	&0A0A  L 
		 ; ;*66::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; v}\222222&vvEEEH$VR\&&)-L-LMMF6)a&j9999999s   AAAr   r   ))FTr  )r   r   )zeroonec                 \   t           j                            d          }d|d         }}|                    ||d          }| t          u r|                    |          }n|                                } | |||          }t          j        t          j        |                    rJ dS )	zCheck that the metric works with different types of `pos_label`.

    We can expect `pos_label` to be a bool, an integer, a float, a string.
    No error should be raised for those types.
    *   ru  r   T)r  replacer  r   N)	rA   rE   rF   choicer   uniformr  anyr  )r}   r   rT   rQ   r   rY   rX   r  s           rZ   *test_classification_metric_pos_label_typesr+  
  s    * )


#
#Cwr{yIZZiZ>>F!!!),,VFFi888Fvbhv&&'''''''r\   zy_true, y_pred, expected_scorer   r   c                 Z    t          | |d          t          j        |          k    sJ dS )zCheck the behaviour of `zero_division` for f1-score.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26965
    r   r  N)r   r   r   )rY   rX   rm  s      rZ   2test_f1_for_small_binary_inputs_with_zero_divisionr-    s4     FF#666&-:W:WWWWWWWr\   scoringr  r5   )r   r   c                     t          j        d          \  }}t          dd                              ||          }t	          |||| dd           dS )	aZ  Check that we validate `np.nan` properly for classification metrics.

    With `n_jobs=2` in cross-validation, the `np.nan` used for the singleton will be
    different in the sub-process and we should not use the `is` operator but
    `math.isnan`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27563
    r   )r;   r   )	max_depthr;   r5   r  )r.  n_jobserror_scoreN)r
   make_classificationr(   rJ   r%   )r.  rO   rP   
classifiers       rZ   9test_classification_metric_division_by_zero_nan_validatonr5  %  s^    & 'Q777DAq'!!DDDHHANNJJ1gaWUUUUUUr\   c                  z   t          j        g d          } t          j        g d          }d}t          j        t          |          5  t          | |           ddd           n# 1 swxY w Y   d}t          j        t          |          5  t          | ||           ddd           dS # 1 swxY w Y   dS )	z)Check the message for future deprecation.r  r  z$y_prob was deprecated in version 1.5r   )y_probNz/`y_prob` and `y_proba` cannot be both specified)r7  y_proba)rA   r   r   r   FutureWarningr   r   r   )rY   rX   rn  	error_msgs       rZ   )test_brier_score_loss_deprecation_warningr;  >  s]    X((())FX55566F5H	m8	4	4	4 
 
	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 BI	z	3	3	3 
 
	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   
A((A,/A,B00B47B4c            	         g d} g d}t          j        ddgddgddgddgdd	gd
dgg          }t          j        ddgddgddgddgddgddgg          }t          | |          }t          | |d          }t          | |d          }d||z  z
  }|t	          j        |          k    sJ t          j        g d          }|d d                                         |                                z  |d d df<   |dd                                          |                                z  |d d df<   t          | ||          }t          | ||d          }t          | ||d          }d||z  z
  }|t	          j        |          k    sJ t          j        ddgddgddgddgddgddgg          }t          | |          }d|cxk     rdk     sn J t          ||          }	|	t	          j        |          k    sJ t          j        ddgddgddgddgddgddgg          }t          | |          }|dk     sJ t          ||          }	|	t	          j        |          k    sJ g d} t          j        ddgddgddgddgddgddgg          }t          | |          }|dk    sJ t          ||          }	|	dk    sJ g d} g d}t          j        ddgddgddgddgg          }t          | |          }|dk    sJ t          ||          }	|	dk    sJ g d}t          | ||          }
|
dk    sJ g d} g d}t          j        g d g d g d!g d"g          }t          | |          }d|cxk     rdk     sn J t          | ||          }d|cxk     rdk     sn J t          j        g d#g d$g d"g d%g          }t          | |          }|dk     sJ t          | ||          }|dk     sJ d S )&Nrj  r  r   rf   r   r   r   gffffff?g?r  r  ri  F)rY   rX   rU  r<   )r5   r<   r   r   r   r<   r   r   )rY   rX   r>  )rY   rX   r>  rU  r   r   r   r   r{  )r   r<   r<   r<   )r  r  r  r  )r5   r5   r5   r5   rK  )highr=  lowneutral)gffffff?r   r   r   )r   r   r   r   )r   r   r   )r   r   r   r  r  )rA   r   r$   r   r   r   r`  )rY   y_true_stringrX   y_pred_nulld2_scorelog_likelihoodlog_likelihood_nulld2_score_truer>  d2_score_stringd2_score_with_sample_weights              rZ   test_d2_log_loss_scorerH  T  s   F;;;MX#J#J#J#J4L4L	
	 	F (#J#J#J#J#J#J	
	 	K !v>>>HVFeLLLN"&PUVVV)<<<Mv}]333333 H///00M%bqb)--//-2C2C2E2EEK1%abb)--//-2C2C2E2EEK1 fM  H #	  N ##	   )<<<Mv}]333333 X#J#J#J#J#J#J	
	 	F !00HC'v>>OfmH555555 X#J#J#J#J4L#J	
	 	F !00Ha<<<<'v>>OfmH555555  FX#J#J#J#J#J#J	
	 	F !00Hq===='v>>Oa \\F///MXd|dD\D$<$NOOF 00Hq===='v>>Oa LLM"3m# # # '!++++ 0//F(((MXOOOOOOOO		
 F !00HC }MMMHCXOOOOOOOO		
 F !00Ha<<<< }MMMHa<<<<<<r\   c                     g d} ddgddgddgg}d}t          j        t          |          5  t          | |           d	d	d	           n# 1 swxY w Y   g d
} ddgddgddgg}g d}d}t          j        t          |          5  t          | ||           d	d	d	           n# 1 swxY w Y   g d} g dg dg}d}t          j        t          |          5  t          | |           d	d	d	           n# 1 swxY w Y   dg} ddgg}d}t          j        t
          |          5  t          | |           d	d	d	           n# 1 swxY w Y   g d} ddgddgddgg}d}t          j        t          |          5  t          | |           d	d	d	           n# 1 swxY w Y   g d} dg}ddgddgddgg}d}t          j        t          |          5  t          | ||           d	d	d	           d	S # 1 swxY w Y   d	S )zPTest that d2_log_loss_score raises the appropriate errors on
    invalid inputs.r   r   r   r   r   r   z#contain different number of classesr   Nr   z(number of classes in labels is differentr   )r   r   r   )r   r   r   rJ  r<   zscore is not well-definedr   r   zy_true contains only one labelz.The labels array needs to contain at least two)r   r   r   r$   r   r   )rY   rX   errrq   s       rZ   test_d2_log_loss_score_raisesrK    s    YYFCj3*sCj1F
/C	z	-	-	- * *&&)))* * * * * * * * * * * * * * *
 __FCj3*sCj1FYYF
4C	z	-	-	- 9 9&&88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 YYFoo/F
+C	z	-	-	- * *&&)))* * * * * * * * * * * * * * * SFCj\F
%C	,C	8	8	8 * *&&)))* * * * * * * * * * * * * * * YYFCj3*sAh/F
*C	z	-	-	- * *&&)))* * * * * * * * * * * * * * *
 YYFSFCj3*sAh/F
:C	z	-	-	- 9 9&&88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9sk   A

AAB$$B(+B(C55C9<C9%EE	E9FFFG00G47G4)NF)r  r   	functoolsr   	itertoolsr   r   r   numpyrA   r   scipyr   scipy.spatial.distancer   rI  scipy.statsr	   sklearnr
   r   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"   sklearn.metrics._classificationr#   r$   sklearn.model_selectionr%   sklearn.preprocessingr&   r'   sklearn.treer(   sklearn.utils._mockingr)   sklearn.utils._testingr*   r+   r,   r-   r.   r/   sklearn.utils.extmathr0   sklearn.utils.fixesr1   r2   sklearn.utils.validationr3   r[   r~   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r%  r6  rH  rN  r\  re  rh  ro  rs  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r&  r(  r*  r-  r4  r7  r:  r?  rA  rC  rE  rK  rS  rV  rd  rf  rk  rn  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  float16r  r  r  r  r  r  r"  r+  r-  r5  r;  rH  rK  r   r\   rZ   <module>rb     s   				        2 2 2 2 2 2 2 2 2 2            8 8 8 8 8 8 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ; ; ; ; ; ; 5 5 5 5 5 5                                             . N M M M M M M M 3 3 3 3 3 3 @ @ @ @ @ @ @ @ / / / / / / 0 0 0 0 0 0                . - - - - - > > > > > > > > 7 7 7 7 7 7)( )( )( )(`>D >D >DBW W W< 61a*@AA  BA T{aVUOiii=OP ) ) )(7 7 7
 
 
D   $ *J *J *JZ M M M,> > >6  LLBH#OO#OO#OO#OO	 
	
 .--===	
 (9 9) (9  OOBH#OO#OO#OO#OO#OO 	
 IIOO	
 *; ;+ *;
 
 
 = = =*	= 	= 	= O  O  OF .99.99%S %S :9 :9%SPT T T< +   % % %; ; ;&) ) ) 
 #"(#5#5#566""(#5#5#566  A	
 #"(#5#5#566""(#5#5#566  I	
 #"(#5#5#566""(#5#5#566  :	
 #"(#5#5#566""(#5#5#566  I	
 #"(#5#5#566""(#5#5#566  O	
E), ,Z* *[, ,Z*  #"(???33""(???33 
<		
 * * *" " "2  >4 4 4
 1a.99)aS1#JR+ABB!$$$	 ' '  CB :9' )aS1#JR+ABB!$$$	    CB  $2 $2 $2N R  R  RF5 5 5p c5\22U U 32UB7( 7( 7(t $S$S$STT, , UT,0 0 0"( ( (". . .& 	;<
QAB 
'(   8 8 8 taVYYY'-M-M-M   % % %  6 "A"A"ABB0 0 CB0"% % %4% % %$% % %(% % %6 %  %  %F% % %,% % %.X X XI I I % % %<6 6 6B B B(%D %D %DPJ J JZ" " "J  .+ + + 868:LMM	2 	2 NM	2 ?U ?U ?UD = = =@ +&&2626"23 [ [	  
[| !%%$M$M$MNN1a.99!5 !5 :9 ON &%!5H $M$M$MNN" " ON"& 1a.99W W :9W@3 3 38e0 e0 e0P 1a.99<  <  :9< ~ 61a*@AA! ! BA!H 61a*@AA" " BA"J 61a*@AA#( #( BA#(L' ' '>_ _ _D= = =8 8 8A A A6* * *"N N N8P P P4  @A A A8>( >( >(B 2:rz2:"FGG
 
 HG
 2:rz2:"FGG! ! HG! 	III	aVaVaV,-	YYY			99956 8 8 8) ) )$ Q  Q  QF6 6 6 			3334			3334			3334 
: 
: 
: #&&&'  CCC ( (  ($ $	1a&		828QF++S1	1a&		828QF++S1	1a&		828QF++S1	1a&		828QF++S1	 X X X HBF333Karv>>>O26:::L777	 V V V 
 
 
,S S Sl.9 .9 .9 .9 .9r\   