`L iN zddlZddlZddlmZddlmZmZmZddlZ ddl Z ddl m Z ddl mZddlmZddlmZmZddlmZdd lmZdd lmZmZmZmZmZmZm 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.dd l/m0Z0m1Z1dd l2m3Z3dd l4m5Z5m6Z6ddl7m8Z8ddl9m:Z:ddl;mZ>m?Z?m@Z@ddlAmBZBddlCmDZDmEZEddlFmGZGddZHdZIdZJe jjdddde jgdZNe jjddgdfddgdfgddfgdZOd ZPd!ZQe jjd"d#ZSe jjd"d$ZTe jjd"d%ZUd&ZVe jjd'gd(e jgd)gd*gd+gd,gfgd-gd.fgd/ZXe jjd'gd0e jgd,gd,gd1gd1gd2gfgd3gd4fgd5ZYd6ZZd7Z[d8Z\d9Z]e jjd:eDe jjd;eEd<Z^d=Z_e jjd>gd?d@Z`dAZadBZbe jjdCe jgdDe jgdDdEdFfe jgdDe jgdGdEdHfe jgdDe jgdIdEdJfe jgdGe jgdDdEdKfgdLZce jjdMe jgdNe jgdOdEdPfgdQZddRZee jjdSddgdTZfdUZge jjdVdWdXidYdXidZdXd[d\d]d[dXdXd[d\d^d[gd_Zhe jjd`d\d\d[d\fe jdXd[e jfd^dXd[d^fe je jd[e jfe je jfgdaZje jjd`d\d\d[d\fe jdXd[dXfe jdbd[dbfe je jd[e jfe je jfgdcZkddZldeZme jjddde jge jjdfdgdgfge jjdge"ee#dhe,e-gdiZne jjdfdgdgfge jjdge"ee#dhe,e-gdjZodkZpdlZqdmZrdnZse jjdodpdqgdrZtdsZue jjdtgdudvZvdwZwdxZxdyZye jjdzgd{fd|d}gd~fgddgdZze jjddddggdfgddZ{dZ|e jjdgddZ}dZ~dZdZdZdZdZdZdZdZe jjd"dZdZdZdZdZdZdZdZe jjdddgdZe jjd"dZe jjd"dZe jjd"e jjdddde je jfgdZe jjddge jjdtgde jjddde jgdZe jjdtgddZe jjddde jgdZdZdZe jjddde jgdZe jjdddde jgdZe jjdddde jgdZe jjdddde jgdZdZdZdZdZdZdZdZdZdZdZdZe jjde jNe jPe jRgdZe jjde jNe jPe jRgdZe jjdfgdgdfgdddgddgddggfgdgdgdgdgfgdZdZd„ZdÄZdĄZdńZdƄZdDŽZe jjdgdɢgdʢfgdˢgdʢfgdʢgdˢfgd̄Ze jjdge&e"ee#dbhe+e,e-ege jjdgd΢dτZe jjde jddge jddgdXfe jddge jddgd\fe jddge jddgdXfe jddge jddgd\fgdфZe jjde(e"e jӫe(e#de jիe(e,e jӫe(e-e jӫgdքZdׄZd؄ZdلZdڄZy)N)partial)chain permutationsproduct)linalg)hamming) bernoulli)datasetssvm)make_multilabel_classification)UndefinedMetricWarning)accuracy_scoreaverage_precision_scorebalanced_accuracy_scorebrier_score_lossclass_likelihood_ratiosclassification_reportcohen_kappa_scoreconfusion_matrixf1_score fbeta_score hamming_loss hinge_loss jaccard_scorelog_loss make_scorermatthews_corrcoefmultilabel_confusion_matrixprecision_recall_fscore_supportprecision_score recall_score zero_one_loss)_check_targetsd2_log_loss_score)cross_val_score)LabelBinarizerlabel_binarize)DecisionTreeClassifier) MockDataFrame)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalignore_warnings) _nanaverage)CSC_CONTAINERSCSR_CONTAINERS)check_random_stateFc|tj}|j}|j}|r||dk||dk}}|j\}}t j |}td}|j|||||}}t|dz }t jjd}t j||j|d|zf}tjddd} | j!|d||d|j#||d} |r | ddd f} | j%||d} ||d} | | | fS) 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%rlinearT)kernel probability random_state)r load_irisdatatargetshapenparanger2shuffleintrandom RandomStatec_randnr SVCfit predict_probapredict) datasetbinaryXy n_samples n_featuresprnghalfclf y_pred_probay_predy_trues o/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_classification.pymake_predictionrZ:sN$$& AA Qx1q51GGIz )A R CKKN Q41qA y1} D ))   "C a9cJ&6778A ''t! DC771Ud8QuX.<gd}gd}t|tjd}t|tjd}||f||fg}t|D]\}\}}t ||gdd}t gd|t ||gdd}t tj gd|d D]5}|d k(r|d k(rtt ||gd|t ||d|7d D]}tjt5t ||tjd |dddtjt5t ||tjdd|dddtjgdgdg}tjgdgdg}t||d d dg\}} } } ttj|| | gtjgdy#1swYxYw#1swY(xYw)N)r;rr4)r;r;rr4rclasses)rr;r4rrrpr)rrrrrmacro)microweightedsamplesrr)Nrrrrrrr;rrr;r;r;rr;rrp)?r;竪?) r'r@rA enumerater!r,meanr+rraises ValueErrorrr) rXrW y_true_bin y_pred_binr=iactualrrRrrrxs rY$test_precision_recall_f_extra_labelsr3sF F ! =J ! =J V z:6 7D( FFff_dS!";VDff_gV!"''*C"DfM8 G)#Q VVOWUVVD'J  (7 ]]: & W Z ! g V W ]]: &  JryyQ/?   XXy), -F XXy), -F0 1a&JAq!Q!Q+RXX6G-HI W W  s#H$HH H cgd}gd}t|tjd}t|tjd}||f||fg}t|D]\}\}}t t ||ddg}t t ||d}t dd g|d td |d td |d td |d dD]}|| || k7rJy)N)r;r;r4r)r;rrrrrr;rrprrrrrUUUUUU?rr)rrr)r'r@rArrr!r,r+) rXrWrrr=r recall_13 recall_allrs rY&test_precision_recall_f_ignored_labelsrasF F ! =J ! =J V z:6 7D( M FFL&&!QH \66$G !3*i.EFOYw-GH3Yz5RSGYw%?@6 MGW-G1LL LL M Mr[c  tjgdgdgdgdgdgdg}tjgdgdgdgd gd gd g}d }tjt| 5t ||ddddy#1swYyxYw)z:Test multiclass-multiouptut for `average_precision_score`.)r4r4r;r;r4rrr;r4r;)r4rr;ffffff?皙?皙?皙?333333?rrrrrrr)rrr)rrrz.multiclass-multioutput format is not supportedmatchr4 pos_labelN)r@rrrrr)rXy_scoreerr_msgs rY-test_average_precision_score_non_binary_classrxs XX         Fhh         G?G z 1>1=>>>s ,BB zy_true, y_scorerrr;r4rrrr) rrrrr;r;r;r;r;r;r;) rrrrr333333?rrerer;r;c&t||dk(sJy)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;NrrXrs rY-test_average_precision_score_duplicate_valuesrs8 #67 3q 88 8r[)r4r4r;r;r)rrr)rrrr)rrrc&t||dk7sJy)Nrrrs rY(test_average_precision_score_tied_valuesrs: #67 3s :: :r[cd}tjt|5tgdgddddddy#1swYyxYw)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.rrr;r4r4r4rrr)rwarns UserWarningrrs rY(test_precision_recall_f_unused_pos_labelrsB   k - ' yAw    s ;Ac td\}}}d}|||||Dcgc] }t|c}|Dcgc] }t|c}ycc}wcc}w)NTrc<t||}t|ddgddgg|j\}}}}||z||zz }tj||z||zz||zz||zz}|dk(rdn||z } t ||} t | | dt | ddy) Nrrr4decimal= ףp=?)rr-flattenr@sqrtrr,) rXrWcmtpfpfntnnumdentrue_mccmccs rYtestz*test_confusion_matrix_binary..tests ff -2Q!R12BB2gRggrBw27+rBw727CDq1cCi/!#x;!#tQ7r[rZrrXrWrxrrOs rYtest_confusion_matrix_binaryrsR't4FFA 8 & !Q#a& !F#;qCF#;< !#; AA c td\}}}d}|||||Dcgc] }t|c}|Dcgc] }t|c}ycc}wcc}w)NTrcPt||}t|ddgddggddgddgggy)Nrrrrrr-)rXrWr s rYrz5test_multilabel_confusion_matrix_binary..tests7 ( 82"a1b' 2b!Wq"g4FGHr[rrs rY'test_multilabel_confusion_matrix_binaryrsS't4FFAI & !Q#a& !F#;qCF#;< !#;rc td\}}}dd}|||||Dcgc] }t|c}|Dcgc] }t|c}dycc}wcc}w)NFrc Pt||}t|ddgddggddgddggd d gd d ggg|rgd ngd}t|||}t|ddgddggd d gd d ggddgddggg|rgdngd}t|||}t|ddgddggd d gd d ggddgddggddgddgggy)N/rr&rrrr4)021rr4r;r)r%r&r'3)rr4r;rrhrr)rXrW string_typer rps rYrz9test_multilabel_confusion_matrix_multiclass..tests ( 8 2q'Ar7#r1gAw%72r(QG9LM %0Y ( G 2q'Ar7#r2hB%8B7RG:LM *5%, ( G a1b'"bAr7#a2q'"a1a&!   r[T)r*)Frrs rY+test_multilabel_confusion_matrix_multiclassr+sT'u5FFA 6 & !Q#a& !F#;qCF#;N !#;s AA csc_container csr_containerctjgdgdgdg}tjgdgdgdg}||}||}||}||}tjgd}dd gddggdd gddggd d gdd ggg} |||g} |||g} | D]!} | D]} t| | }t|| #t||d }t|dd gddggddgd dggd dgd d gggt||d d g }t|d d gdd ggdd gddgggt||d d gd }t|d d gddggddgd d ggd dgdd gggt|||d }t|d d gd d ggddgd dggd dgdd gggy)Nrrr;rr;r;rrrr)r4r;rr;rr4T samplewiser)rpr2) sample_weightr2rr)r@rrr-)r,r-rXrW y_true_csr y_pred_csr y_true_csc y_pred_cscr3real_cmtruespreds y_true_tmp y_pred_tmpr s rY+test_multilabel_confusion_matrix_multilabelr=&s XXy)Y7 8F XXy)Y7 8Fv&Jv&Jv&Jv&JHHY'MAA1a&1a&!1QFQF3CDG Z ,E Z ,E,  ,J,ZDB r7 + ,, %VV EBraVaV,1v1v.>!Q!Q@PQR %VVQF CBraVaV,1v1v.>?@ %VVQFt TBraVaV,1v1v.>!Q!Q@PQR %m BraVaV,1v1v.>!Q!Q@PQRr[c tjgdgdgdg}tjgdgdgdg}tjtd5t ||d d g dddtjtd 5t ||gd gdgdg dddd}tjt|5t ||dgdddd}tjt|5t ||dgdddtjtd5t gdgdddddd}tjt|5t gdgdggdgdgdddy#1swY$xYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw#1swYyxYw)Nrr/r0rrrinconsistent numbers of samplesrr;r4r3zshould be a 1d arrayr;r4r)r4rr)rrrz%All labels must be in \[0, n labels\)rrrzSamplewise metricsrrTr1z'multiclass-multioutput is not supported)r4r;rr;rr4)r@rrrrr)rXrWrs rY'test_multilabel_confusion_matrix_errorsrCPs XXy)Y7 8F XXy)Y7 8F z)J KJ#FF1a&IJ z)? @ # F9i*K  7G z 1A#FFB4@A6G z 1@#FFA3?@ z)= >K#IyTJK8G z 1T#Y $:Y F01F<)G FF!$F-0F9<GGz%normalize, cm_dtype, expected_results))truerTUU?)predrrE)allrgeq?)Nrr4cgddz}tttgd}t|||}t |||j j |k(sJy)Nrr normalize)listrrrr*dtypekind)rJcm_dtypeexpected_resultsy_testrWr s rYtest_confusion_matrix_normalizerQnsP]F %i01 2F &&I >BB() 88==H $$ $r[cgd}gd}t||d}|jtjdk(sJt j 5t j dtt||d}dddjtjdk(sJt j 5t j dtt||ddddy#1swYwxYw#1swYyxYw) N)rrrrr;r;r;r;)rrrrrrrrrDrI@rrFr)rsumrrrrrRuntimeWarning)rPrWcm_truecm_preds rY,test_confusion_matrix_normalize_single_classrXs %F %Fvv@G ;;=FMM#. .. .  "Eg~6"66VDE ;;=FMM#. .. .  ";g~66:;; EE ;;s)C2)C>2C;>Dcgd}gd}tjtd5t||dddy#1swYyxYw)z8Test `confusion_matrix` warns when only one label found.rrrrzA single label was found inrN)rrrr)rPrWs rY"test_confusion_matrix_single_labelr[s: F F k)F G)()))s :Azparams, warn_msg)r;r;r;rrrrXrWz?`positive_likelihood_ratio` is ill-defined and set to `np.nan`.)rrrrrrzdNo samples were predicted for the positive class and `positive_likelihood_ratio` is set to `np.nan`.rrrr;r;r;z?`negative_likelihood_ratio` is ill-defined and set to `np.nan`.z9No samples of the positive class are present in `y_true`.cztjt|5tdi|dddy#1swYyxYwNrr)rrrr)paramswarn_msgs rYtest_likelihood_ratios_warningsrbs3X k 2*)&)*** 1:zparams, err_msg)rr;rr;rr;r;rrr4zeclass_likelihood_ratios only supports binary classification problems, got targets of type: multiclasscztjt|5tdi|dddy#1swYyxYwr_)rrrr)r`rs rYtest_likelihood_ratios_errorsrfs2$ z 1*)&)***rcc tjdgdzdgdzz}tjdgdzdgdzzdgdzz}t||\}}t|dt|d t||\}}t |tj dzt|tj dd tjd gd zdgdzz}t|||\}}t|dt|dy)Nr;rrrr4 rg?g_B{ %?g-q=)rtolrrrr@gUUUUUU@gqq?)r@rrr*r-rr)rXrWposnegr3s rYtest_likelihood_ratiosrmsXXqcAgb( )F XXqcAgb(A372 3F&vv6HCC!C!'vv6HCsBFFQJ'C!51 HHcURZ3%!)34M&vv]SHCC C!r[ raise_warningctjddg}tjddg}d}tjt|5t |||dddy#1swYyxYw)zaTest that class_likelihood_ratios raises a `FutureWarning` when `raise_warning` param is set.r;rzI`raise_warning` was deprecated in version 1.7 and will be removed in 1.9.r)rnN)r@rrr FutureWarningr)rnrXrWrs rY0test_likelihood_ratios_raise_warning_deprecationrqs`XXq!f F XXq!f F UC m3 /MmLMMM A$$A-chtjgd}tjgd}t||d\}}|tjdk(sJtjgd}tjgd}t||d\}}|tjdk(sJy)zTest that class_likelihood_ratios returns the worst scores `1.0` for both LR+ and LR- when `replace_undefined_by=1` is set.r0rr;replace_undefined_byrrN)r@rrrr)rXrWpositive_likelihood_ratiorxnegative_likelihood_ratios rY1test_likelihood_ratios_replace_undefined_by_worstrxs XXi F XXi F#:Q$ q % c(: :: :XXi F XXi F#:Q$ A  % c(: :: :r[ruLR+rLR-g)ryrzrrrSctjddg}tjddg}d}tjt|5t |||dddy#1swYyxYw)zTest that class_likelihood_ratios raises a `ValueError` if the input dict for `replace_undefined_by` is in the wrong format or contains impossible values.r;rzGThe dictionary passed as `replace_undefined_by` needs to be in the formrrtN)r@rrrrr)rurXrWrs rY6test_likelihood_ratios_wrong_dict_replace_undefined_byr|s`XXq!f F XXq!f F SC z -  F1E    rrzreplace_undefined_by, expectedctjgd}tjgd}t|||\}}tj|rtj|sJy|t j |k(sJy)zTest that the `replace_undefined_by` param returns the right value for the positive_likelihood_ratio as defined by the user.r0rrtNr@rrisnanrr)ruexpectedrXrWrvrxs rY0test_likelihood_ratios_replace_undefined_by_0_fpr7spXXi F XXi F#:-A$ q xxxx1222(FMM(,CCCCr[rctjgd}tjgd}t|||\}}tj|rtj|sJy|t j |k(sJy)zTest that the `replace_undefined_by` param returns the right value for the negative_likelihood_ratio as defined by the user.rrrtNr~)rurrXrWrxrws rY0test_likelihood_ratios_replace_undefined_by_0_tnrSspXXi F XXi F#:-A$ A  xxxx1222(FMM(,CCCCr[ctjdgdzdgdzz}tjdgdzdgdzzdgdzzdgdzz}t||}t|dd |t||k(sJtj|d gd z}tj|d gd z}t||ddg |k(sJtt||dtjdgdzdgdzzd gdzz}tjdgdzdgdzzd gdzz}tt||dd tjdgdzdgdzzd gdzz}tjdgdzdgdzzd gdzz}tt||dd tt||ddd tt||ddd y)Nr(r;<rgrh2gʡE?rrr4rrr.,4 g??g+?r7weightsg_vO? quadraticg#?)r@rrr+append)rrkappas rYtest_cohen_kapparos 1#(aS2X% &B 1#(aS2X%b0A38; xYw)zmCheck the behaviour of `zero_division` when setting to 0, 1 or np.nan. No warnings should be raised. rrN)rrrr@r)r|rXrWrresults rY!test_zero_division_nan_no_warningrss  "Eg&mDE xx xx&&&EEs !A33A<ctjt5|||d}ddddk(sJy#1swYxYw)ztCheck the behaviour of `zero_division` when setting to "warn". A `UndefinedMetricWarning` should be raised. rrNr)rrr )r|rXrWrs rYtest_zero_division_nan_warningrs@ , ->f=> S==>>s 6?ctjj|}|jddd}|jddd}t t ||tj ||ddy)Nrr4rgsizerr;rh)r@rDrErandintr+rcorrcoef)global_random_seedrSrXrWs rY-test_matthews_corrcoef_against_numpy_corrcoefrse ))   2 3C [[AB[ 'F [[AB[ 'F&&)2;;vv+Ft+Lbr[ctjj|}|jddd}|jddd}|j d}t |||}t |}tt|D cgc]A}t|D]1}t|D]!} |||f||| fz|| |f|||fzz #3Cc} }}} tt|D cgc]c}|dd|fjtjt|D cgc]} t|D]} | |k7s || | f!c} } zec} } }} tjt|D cgc]c}||ddfjtjt|D cgc]} t|D]} | |k7s || | f!c} } zec} } }}| tj| |zz }t|||}t||dycc} }}wcc} } wcc} } }wcc} } wcc} } }w)Nrr4rgrr@rh) r@rDrErrandrrsrTranger rr+)rrSrXrWr3CNkmlcov_ytyprgcov_ytytcov_ypyp mcc_jurmanmcc_ourss rY%test_matthews_corrcoef_against_jurmanrs< ))   2 3C [[AB[ 'F [[AB[ 'FHHRLM}EA AA1X  1X 1X   adGa1g !Q$!AqD' 1 1 1 1 H1X   adGKKMffuQxL!qLAQ!Va1gLgLM N Hvv1X   adGKKMffuQxL!qLAQ!Va1gLgLM N HBGGHx$788J }MH*b11 M M sCAH )8H- !H': H' H- 88H: 0H4 H4 H: 'H- 4H: c tjj|}|jdddDcgc] }|dk(rdnd }}t t ||d|Dcgc] }|dk(rdnd }}t t ||dt |ddg }tj|dd}t t ||dt t gd gd d t t |dgt|zd gd }gd }t t ||d dgdzdgdzz}tjt5t t |||d dddycc}wcc}w#1swYyxYw)Nrr4rgrrrrrrrZr)r;rr;r;rr;r;r;rr;r;r;r;r;r;r;rr;r;r;)r;r;r;rrr;r;r;r;rr;r;r;rr;r;r;rr;r;r;rhr@) r@rDrErr+rr'wherersrrAssertionError) rrSrrX y_true_inv y_true_inv2y_1y_2masks rYtest_matthews_corrcoefrst ))   2 3C.1kk!QRk.H IQ!Vc$ IF I)&&93?5;;qc#s*;J;)&*=rB #sC), EsK)&3%#f+2EFL GC FC)#s3S9 38qcBh D ~ &R-c3dKSQRR;J <.RRsE)"E.E33E<ctjj|}td}d}|j d|dDcgc]}t ||z}}t t||dgd}gd}t t||d gd}gd }t t||d tjd z gd }gd}t t||dgd}gd }t t||dgd} gd} t t| | dgd}gd}gd} t t||| dgd}gd}gd} t t||| dycc}w)Nrrrrgrr)rrr;r;r4r4)r4r4rrr;r;g)r;r;rrrriir)rrrr rr;r4rr;r4rr;r4) r;r;r;r4r4r4rrr)rrr;r;r4rdr;r;r;r;rr@rrr;r;rr) r@rDrEordrchrr+rr ) rrSord_a n_classesrrX y_pred_bad y_pred_minrWrrr3s rY!test_matthews_corrcoef_multiclassrs\ ))   2 3C HEI&)kk!YRk&H Ic%!)n IF I)&&93? F#J)&*=tD F#J)&*=sRWWWEU?UVF F)&&93?F F)&&93? &C %C)#s3S9 F F#M&& F F F M&& F_JsE%n_pointsdi'ctjj|d}fd}tjddg|}t t ||dtjgd|}t t ||d||\}}t t ||dt t |||||y)Nct||}|d}|d}|d}t|}||z|z }||z|z }||z ||zz } ||zd|z zd|z z} | tj| z S)Nr;r;)r;rrr;)rrsr@r ) rXrW conf_matrixtrue_pos false_pos false_negrpos_rateactivity mcc_numeratormcc_denominators rYmcc_safez1test_matthews_corrcoef_overflow..mcc_safeVs&vv6 t$% % v;y(H4y(H4 8+h.AA "X-X>!h,Orww777r[cvj|}|dj|dz zz}|dkD}|dkD}||fS)Nrr) random_sample)rx_truex_predrXrWrSs rY random_ysz2test_matthews_corrcoef_overflow..random_ysbsN""8,#!2!28!<J &I/2I;>J Jr)rrrrNctjgdg}tjgdg}t||gdg|\}}}}t|dt|dt|d|t|gdyy)Nrrrr;r;)rrr;r4)rpwarn_forrrrr;r;r)r@rrr-)rrXrWrRrrrs rY;test_precision_refcall_f1_score_multilabel_unordered_labelsrsuXX|n %F XX|n %F0|b'JAq!Qq!q!q!1l+r[c@tjgd}tjgd}t||d\}}}}t||d\}}}}|tj|k(sJ|tj|k(sJ|tj|k(sJt||d\}}}}tj|} |tj || k(sJ|tj || k(sJ|tj || k(sJy)N)rr;rrr;r;rr;rrr;rr;rr;)r;r;rr;rr;r;r;r;rr;rr;rr;rrrr)r@rrrbincountr) rXrWrrrrxrRrrrbs rY.test_precision_recall_f1_score_binary_averagedrs XXC DF XXC DF4FFDQMBB0QJAq!Q         0TJAq!Qkk&!G  2w/ // /  2w/ // /  2w/ // /r[ctjd} tjgd}tjgd}tt ||dddtt ||dddtt ||dddtjd i|y#tjd i|wxYw) Nraise)rG)rr;r4rr;r4)r4rr;r;r4rrrrr4r)r@seterrrr+r r!r)old_error_settingsrXrWs rYtest_zero_precision_recallrsw/ (,-,-OFFGLcSTULI3PQRHVVWEsAN '&' '&'s A9B''B>c td\}}}t||ddg}t|ddgddggt||d dg}t|d d gd dggtj|dz}t||d |g}t|d dgddggy) NFrrr;rr rrr4r$r^)rZrr-r@max)rXrWrxr  extra_labels rY.test_confusion_matrix_multiclass_subset_labelsrs'u5FFA &&!Q 8BrRGaV,- &&!Q 8BrRGb!W-.&&.1$K &&![1A BBrRGaV,-r[zlabels, err_msgz,'labels' should contains at least one label.rrz.At least one label specified must be in y_truez empty listzunknown labels)idsctd\}}}tjt|5t |||dddy#1swYyxYw)NFrrr)rZrrrr)rprrXrWrxs rYtest_confusion_matrix_errorrsD(u5FFA z 187888s AA rp)NonerM multiclassc|r t|nd}tj||ft}t gg|}t ||y)NrrLr)rsr@rrCrr-)rpexpected_n_classesrr s rY*test_confusion_matrix_on_zero_length_inputrsA)/VAxx+-?@LH "b 0Br8$r[c gd}tjt|}t||}|jtj k(sJtj tjtjfD]@}t|||j|d}|jtj k(r@JtjtjdtfD]@}t|||j|d}|jtjk(r@Jtjt|dtj}t|||}|ddk(sJ|dd k(sJtjt|d tj }t|||}|dd k(sJ|dd k(sJy) NrF)copyr@lrrrrll)r@onesrsrrLint64bool_int32uint64astypefloat32float64objectfulluint32)rOweightr rLs rYtest_confusion_matrix_dtyper s|A WWSV_F !Q B 88rxx  ((BHHbii0$ a&--E-2R Sxx288###$**bjj$7& a&--E-2R Sxx2::%%%& WWSVZryy 9F !Qf 5B d8z !! ! d8z !! !WWSV0 AF !Qf 5B d8* ** * d8r>>r[rL)Int64Float64booleanctjd}tjgd}|j ||}|j gdd}t ||}t ||}t ||y)zkChecks that confusion_matrix works with pandas nullable dtypes. Non-regression test for gh-25635. pandas) r;rrr;rr;r;rr;r) rrr;r;rr;r;r;r;rN)r importorskipr@rSeriesrr-)rLpd y_ndarrayrX y_predictedoutputexpected_outputs rY%test_confusion_matrix_pandas_nullabler$sj   X &B45I YYyY .F))7w)GK fk 2F&y+>Ov/r[c tj}t|d\}}}d}t||t j t |j|j}||k(sJy)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 rprqr r<rZrr@rArsrqrwrXrWrxryrzs rY%test_classification_report_multiclassr 6sl    D'UCFFA O#yyT../0&& F _ $$ $r[c>gdgd}}d}t||}||k(sJy)N) rrrr;r;r;r4r4r4ra| 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)rXrWryrzs rY.test_classification_report_multiclass_balancedr"Ps/02MFF O#66 2F _ $$ $r[cxtj}t|d\}}}d}t||}||k(sJy)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<rZrrs rY:test_classification_report_multiclass_with_label_detectionr$bsF    D'UCFFA O#66 2F _ $$ $r[c tj}t|d\}}}d}t||t j t |j|jd}||k(sJy)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)rprqdigitsrrs rY1test_classification_report_multiclass_with_digitsr'vso    D'UCFFA O#yyT../0&& F _ $$ $r[ctd\}}}tjgd|}tjgd|}d}t||}||k(sJd}t||gd}||k(sJy)NFr)bluegreenreda| 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 rrqrZr@rr)rXrWrxryrzs rY7test_classification_report_multiclass_with_string_labelr.s'u5FFA XX. / 7F XX. / 7F O#66 2F _ $$ $ O#66 PF _ $$ $r[ctd\}}}tjgd}||}||}d}t||}||k(sJy)NFr)ublue¢ugreen¢ured¢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 r-rXrWrxrpryrzs rY8test_classification_report_multiclass_with_unicode_labelr1sW'u5FFA XX: ;F F^F F^F O#66 2F _ $$ $r[ctd\}}}tjgd}||}||}d}t||}||k(sJy)NFr)r)greengreengreengreengreenr+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 r-r0s rYpos_label=2 is not a valid label. It should be one of \[0, 1\]rrMr4rrrrrrTarget is multilabel-indicator but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted', 'samples'\].r)rr;r;rr4rTarget is multiclass but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted'\].rzJSamplewise metrics are not available outside of multilabel classification.rzNote 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.rr)r@rrrrrrr)rXrWrmsg1msg2msg3rs rYtest_jaccard_score_validationrM:s XXo &F XXo &FOG z 1Effh!DEXXy), -F XXy), -F 6 z .Fffh"EFXXo &F XXo &F  z .8ffh78 WD z .9ffi89  k -DffgCDDAEEFF8899DDs< F7F(F4GG F%(F14F=G  Gc tjgdgdg}tjgdgdg}t||ddk(sJt||ddk(sJt||ddk(sJt|tj|ddk(sJt|tj|ddk(sJt|tj|j ddk(sJt|tj|j ddk(sJtjgdgd g}tjgd gdg}t t||d d t t||d dt t||ddt t||dddgdt t||dddgdtt||dtjgdtjgdgdg}tjgd gdg}t t||d dt t||ddd}tjt|5t||dgd dddd}tjt|5t||dgd dddd}tjt|5ttjddggtjddggd dk(sJ dddd}tjt|5ttjddgddggtjddgddggddk(sJ dddt|rJy#1swY xYw#1swYxYw#1swYxYw#1swY 2rrrz Got -1 < 0rzXJaccard 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.)r@rrrrr?r+r-rrrrr rK)recwarnrrrXrWrKrLrs rYtest_multilabel_jaccard_scorerPbsw 9i( )B 9i( )B R 3t ;; ; R 3q 88 8 R 3q 88 8 R^^B/ Cq HH H R^^B/ Cq HH H RXXbhh/ Cq HH H RXXbhh/ Cq HH H XXy), -F XXy), -F ffgFP ffgFP ffiH(SffiAGffiAGffd3RXX>U5VXXy), -F XXy), -F ffgFP ffjI7S D z .CffaS'BC D z .DffbT7CD - ,C 8 "((QF8,bhhAx.@' R     , ,C 8 1a&1a&)*1a&1a&)*!       G} }ACCDD    s2N/6N<,AOAO/N9<OOOc gd}gd}gd}t}|j||j|}|j|}tt||}tt||}ddgddgddgdgdgdgdg} ddgdd gd dgdgdgd gdg} d D]2} t | | D]!\} } t || | || | #4tjddgddgddgg}tjddgddgddgg}t5t ||d dk(sJ dddt|rJy#1swYxYw)N)antrRcatrSrRrSbirdrT)rSrRrSrSrRrTrTrS)rRrTrSrRrTrSrr;r4)rrrNrrr) r&rI transformrrzipr+r@rr.rK)rOrXrWrplbrrmulti_jaccard_scorebin_jaccard_scoremulti_labels_listbin_labels_listrm_labelb_labels rYtest_multiclass_jaccard_scorer^s GF GF #F  BFF6Nf%Jf%J!-@ z:F       1v1v1vsQC!dCO8 #$5 G  GW #GGD!''B  XX1v1v1v. /F XX1v1v1v. /F  FVVZ@AEEEFG} }FFs D88Ectdgdgddk(sJd}tjt|5tddgddgddk(sJ dddtdgdgddd k(sJt j gd }t j gd }t t||dd t t||dd dt|rJy#1swYxYw)Nr;rrMrrzOJaccard is ill-defined and being set to 0.0 due to no true or predicted samplesrrr)r;rr;r;r)r;rr;r;r;rrGr)rrrr r@rr+rK)rOrrXrWs rY!test_average_binary_jaccard_scorer`s !qc8 4 ;; ; ' ,C 8FaVaVX>#EEEF !qcQ AS HH H XXo &F XXo &F ffhGQffh!DgG} }FFs CC c(tjgdgdg}tjgdgdg}d}tjt|5t ||dd}|tj dk(sJ dddy#1swYyxYw) NrrrrzJaccard 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.rrrrrr)r@rrrr rr)rXrWrscores rY(test_jaccard_score_zero_division_warningresXXy), -F XXy), -F C ,C 8+ffivV c****+++s *BBzzero_division, expected_scorer)r;rcHtjgdgdg}tjgdgdg}tj5tjdt t ||d|}dddtj|k(sJy#1swY$xYw)Nrrbrrrc) r@rrrrr rrr)rexpected_scorerXrWrds rY*test_jaccard_score_zero_division_set_valuerhsXXy), -F XXy), -F  " g'=> FI]  FMM.1 11 1   s *BB!chtjgdgdgdg}tjgdgdgdg}t||d\}}}}t|gddt|gddt|gd dt|gd dt ||dd }|}t|gd dt||d \}}}}t |dt |dt |d|Jt t ||dd tj |t||d\}}}}t |dt |dt |d|Jt t ||dd d|z|zd|z|zz t||d\}}}}t |dt |dt |d|Jt t ||dd tj||t||d\}}}}t |dt |dt |d|Jt t ||dd dy)Nr;rrrrr;rrr)r;rr;rr)rrrrr4)rrrr)rrr;r)r;r;r;r;rr)rrr;rrg?rg?rrrrrrr@rrr,rr+rrrXrWrRrrrf2rbs rY+test_precision_recall_f1_score_multilabel_1rps$ XX|\<@ AF XX|\<@ AF0NJAq!Qa!5q9a!5q9a!7;aq1 VV!T :BGb/151QJAq!Q7#3+, 99FFGr[z%zero_division, zero_division_expected)rrrc tjgdgdgdg}tjgdgdgdg}t||d|\}}}}t||dddgd t|dd d|gd d }t||d d |gd t|gdd t ||d d|} |} t| |dd |gd t||d|\}}}}tj |rd n|} dtj | z} t |d | z| z t |d| z| z d}t |||Jt t ||d d|t| dt||d|\}}}}t |d t |d t |d|Jt t ||d d|d|z|zd|z|zz t||d|\}}}}t ||d k(rdndt |d d} t |d| z |Jt t ||d d|t| | t||d\}}}}t |dt |dt |d|Jd } t t ||d d|| d y)!NrkrjrrZrrrcrrr4rrrr;rsrrrrtrr?g?rrrfrrrrg@rrrcgZd;O?)r@rrr,rrr+r/)rzero_division_expectedrXrWrRrrr expected_frorb value_to_sumvalues_to_averageexpected_results rY7test_precision_recall_f1_score_with_an_empty_predictionrsXX|\<@ AF XX|\<@ AF 1MJAq!Qa"8#sC!H!La#sC1G!H!LJa*gq*!EqIaq1 VV!T WBGb:tQ "CQG0}JAq!Q!781>TL*@!AABA ,0AABC,.2CCD J:& 99  '   B% 1}JAq!Q5!301 99 FG=  ! a1q519% 1 -JAq!Q$:a$?5SI3M->>? 99 FJm  B( 1SJAq!Q5!5!5! 99O FI]   r[r)rrrrctjd}tj|}tj5tj dt |||||\}}}}t|||||} dddJtj|r# fD]} tj| rJyt|}t|t|t|t t|y#1swYxYw)Nrgrrrrrrx) r@rrBrrrrrrrvr+) rrrrXrWrRrrrfbetar|s rY"test_precision_recall_f1_no_labelsrs XXg F ]]6 "F  " g&4  '  1a  '   " 99 xx !Q& $F88F# ## $-(M=)=)=)u]34=  s ;DD ctjd}tj|}t}t j t 5||||d\}}}}dddtdtdtdJt j t 5t|||d}dddtdy#1swYoxYw#1swY"xYw)Nrrrr) r@rrBrrrr r+r) rrXrWfuncrRrrrrs rY1test_precision_recall_f1_no_labels_check_warningsrs XXg F ]]6 "F *D , -E&&'D 1aE111 99 , -GFFG#FGq!EEGGs C %C CCctjd}tj|}tj5tj dt ||dd|\}}}}t||dd|}dddtj|}t|||gdt|||gdt|||gdtgddt|||gdy#1swYnxYw)Nrrrrrxr4rb) r@rrBrrrrrr r,)rrXrWrRrrrrs rY/test_precision_recall_f1_no_labels_average_noner*s XXg F ]]6 "F  "  g&4  '  1a Fd-   JJ}-Ma- !NPQRa- !NPQRa- !NPQRaA.em]M%RTUV)   s ;C''C0ctjd}tj|}tjt 5t ||dd\}}}}dddtgddtgddtgddtgddtjt 5t||dd}dddtgddy#1swYxYw#1swY%xYw)Nrr;rrbr4rl) r@rrBrrr rr,r)rXrWrRrrrrs rY4test_precision_recall_f1_no_labels_average_none_warnrNs XXg F ]]6 "F , - 4 FDq 1a aA.aA.aA.aA. , -BFFDABeY2  BBsC6C*C'*C3c tt}}dD]d}d}tj||5|gdgd|dddd}tj||5|gdgd|dddfd}tj||5|t j d d gd d ggt j d d gd d ggd dddd }tj||5|t j d d gd d ggt j d d gd d ggd dddd }tj||5|t j d d gd d ggt j d d gd d ggddddd}tj||5|t j d d gd d ggt j d d gd d ggddddd }tj||5|d d gddgddddd}tj||5|ddgd d gddddt jd5}t jdtd d gd d gdd}t|jj|k(sJd}t|jj|k(sJd }t|jj|k(sJ dddy#1swYxYw#1swY"xYw#1swYixYw#1swYxYw#1swYxYw#1swYsxYw#1swYOxYw#1swY+xYw#1swYyxYw)NNrrzPrecision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.rrr;r;r4rzRecall 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;rrzRecall 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.rzRecall is ill-defined and being set to 0.0 due to no true samples. Use `zero_division` parameter to control this behavior.rrMTralwaysF-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.) rr rrr@rrrrrpopr)rrDrrrs rYtest_prf_warningsrjs *,BqA.5  \\!3 ' 5 iG 4 5  \\!3 ' 5 iG 4 5 5!5*  as #U "((QFQF# $bhhAA/?&@)TU  as #U "((QFQF# $bhhAA/?&@)TU   as #S "((QFQF# $bhhAA/?&@'RS  as #S "((QFQF# $bhhAA/?&@'RS   as #. 1a&2r(H-.  as #. 2r(QFH-.   -0h''AAI  6::<''(C///  6::<''(C///  6::<''(C///-00K 5 5 5 5UUUUSSSS....00slLL'>L4.>M >M,>M M(<M5*B&NL$ 'L1 4L>M MM%(M25M?N c tj5tjddD](}tgdgd||tgdgd||*tt j ddgddggt j ddgddggd|tt j ddgddggt j ddgddggd|tt j ddgddggt j ddgddggd |tt j ddgddggt j ddgddggd |tddgd d gd |td d gddgd |dddtjd 5}tjdtddgddgd |t |dk(sJ dddy#1swYbxYw#1swYyxYw)Nrrrrrcr;rrrrrMTrr)rrrrr@rrs)rrrs rY)test_prf_no_warnings_if_zero_division_setrs  "2 g&3 G +9g]  ,9g]    ( HHq!fq!f% & HHq!fq!f% &'   ( HHq!fq!f% & HHq!fq!f% &'   ( HHq!fq!f% & HHq!fq!f% &'   ( HHq!fq!f% & HHq!fq!f% &'   ( FRHhm  ( Hq!fhm a2 h   - h'' FQFHM 6{a   i2 2 h  sE-G# 9G/#G,/G8c tj5tjdtt j ddgddggt j ddgddggd|dddtjd5}tjdtt j ddgddggt j ddgddggd||d k(r(t |jjd k(sJt|dk(sJtddgddg|d k(r(t |jjd k(sJdddy#1swYxYw#1swYyxYw) Nrr;rrrcTrrrr) rrrr!r@rrrrrsrrs rYtest_recall_warningsr ss  " g& HHq!fq!f% & HHq!fq!f% &'      -h' HHq!fq!f% & HHq!fq!f% &'  F "FJJL(()."" " v;!# ##aVaV$ F "FJJL(()."" "+  sAE$ CE0$E-0E9c tjd5}tjdtt j ddgddggt j ddgddggd||dk(r(t |jjd k(sJt|dk(sJtddgddg|dk(r(t |jjd k(sJdddtj5tjd tt j ddgddggt j ddgddggd|dddy#1swY}xYw#1swYyxYw) NTrrr;rrrcrrr) rrrr r@rrrrrsrs rYtest_precision_warningsr8 ss   -h' HHq!fq!f% & HHq!fq!f% &'  F "FJJL(()."" " v;!# ##AA' F "FJJL(()."" "+6  " g& HHq!fq!f% & HHq!fq!f% &'    76  sCE$AE0$E-0E9c tjd5}tjdtt t dfD]}|t jddgddggt jddgddggd| t|dk(sJ|t jddgddggt jddgddggd| t|dk(sJ|t jddgddggt jddgddggd| |d k(r*t|jjd k(r Jt|dk(rJ dddy#1swYyxYw) NTrrr4rr;rrrcrr) rrrrrrr@rrsrrr)rrrds rYtest_fscore_warningsr` s~   -"(h' ! <= (E 1a&1a&)*1a&1a&)*+   v;!# ## 1a&1a&)*1a&1a&)*+   v;!# ## 1a&1a&)*1a&1a&)*+   & ,,-2--- 6{a'''? ("("("(sD6E.E.!E..E7cxgd}gd}d}tjgdgdgdg}tjgdgdgdg}d}|||f|||ffD]Y\}}}tttt t d fD]/} tjt| 5| ||ddd1[y#1swY>xYw) N)r;r4rr)r;r4rr;rIrrrr/rHr4rr) r@rr r!rrrrrr) y_true_mc y_pred_mcmsg_mc y_true_ind y_pred_indmsg_indrXrWrr|s rY'test_prf_average_binary_data_non_binaryr sII 1 9i; %K(* **%%l3||u,,,||u,,,"5"**R.9"5"**R.9z* ,r#2w+ , ,A!,H ) B B 3 z -r2S .u -H . ' '++ // , ,sN2L2 M  M% M#M0 M=2MM M M #M- 0M: =Nc<ddg}ddg}t||ddk(sJy)Nrr;rr)r#r\s rYAtest__check_targets_multiclass_with_both_y_true_and_y_pred_binaryr s.VFWF && )! , << ?HHq!fq!fq!fq!fq!fq!fqRSfUVM F  z=)A BN& fMNN??NNsC+C7+C47Dc tjgdgdgdgdgdg}tjgd}tjgd}tjd|ddz |ddzd|ddz |ddzd|ddz |dd zd|d dz |d dzd|d dz |d d zg}tj|dd| tj|}t ||| |k(sJy) Nr皙rrrr)rr;r4r;r4)rr;r4rr;rr4rrrrrrrXrprrs rY.test_hinge_loss_multiclass_with_missing_labelsra s5HH ( ( ( ( (  MXXo &F XXl #F88 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  LGGL!T|4ww|, fmF ;?O OO Or[c tjgdgdgdgdgdg}tjgd}tjgd}tjd|ddz |ddzd|dd z |ddzd|d d z |d dzd|d dz |d d zd|d d z |d dzg}tj|dd| tj|}t t ||| |y)N)rrr)g333333ÿrr)rrr)rg(\gzGڿ)rr4r4rr4rr;rr4rrrr)r@rrrr+rrs rY@test_hinge_loss_multiclass_missing_labels_only_two_unq_in_y_truer{ s6 HH ! ! ! ! !  MXXo &F XXi F88 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  LGGL!T|4ww|,6=8:Jr[c gd}gdgdgdgdgdgdg}tjd|ddz |ddzd|ddz |ddzd|ddz |dd zd|d dz |d dzd|d d z |d dzd|d dz |d d zg}tj|dd| tj|}t |||k(sJy) N)r)r*r+r*whiter+rrrrr;rr4rrrrr)rXrrrs rY+test_hinge_loss_multiclass_invariance_listsr s6?F$$$$$$ M88 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   LGGL!T|4ww|, fm ,0@ @@ @r[c &gd}tjddgddgddgddgddgd d gg}t||}tjt j tj|d k(|ddd f }t ||gd }gdgdgdg}t||d}t |d|dz}|dz}t||d}t |dgd }ddgddgddgg}tjt5t||dddgd}gdgdgdg}gd}d }tjttj|!5t|||"dddgd#}ddgddgddgddgg}t||}t |d$ddg}d%d&gddgg}tjddgddgg}d'}tjttj|!5t||dddd%d&gddgddgg}d(}tjttj|!5t||dddtjtj|ddd f }t||d dg"}t ||gd)}gd*gdgd+g} t|| gd,"}t |tjd y#1swYxYw#1swYxYw#1swYxYw#1swYxYw)-Nnorryesrrrrre{Gz?Gz?rrugMbP?g+?rr;rBrrrrrrrrrTrIg躕ʀ?r4Fg.L`@rrrrr)rerr)rrerrrr)rrrzPy_true contains values {'b'} not belonging to the passed labels ['a', 'c', 'd'].rrhamspamrrCT?rrzy_true contains only one label (2). Please provide the list of all expected class labels explicitly through the labels argument.zBFound input variables with inconsistent numbers of samples: [3, 2]r)rrrrrrrA) r@rrrr logpmfr*rrrrrlog) rXrWloss loss_truerp error_strr true_log_losscalculated_log_lossy_score2s rY test_log_lossr s  4F XX sc3Z$SzD$<%QVXF FF #D))"((6*:e*CVAqD\RSSID)$F @F FFd 3DD)$ aKF aKF FFe 4DD-(FCj3*sCj 1F z "! !F @F F " z9)= >0/0,FCj3*sCj3* =F FF #DD)$VFCj3* %Fhhc S#J/0G H z9)= >! !Cj3*sCj 1FTI z9)= >! ! WWRVVGAqDM233M"67Aq6B'7F/BH FHY 7DD266#;,'_!!00$!! !!s0 K!K.0 K; L!K+.K8;LLctjddg|}tjddg|}t||}tj|sJy)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 rr;rN)r@rrisfinite)rLrXrWrs rYtest_log_loss_epsr sJXXq!fE *F XXq!fE *F FF #D ;;t  r[ctjgd}tjddgddgddgddgg|}tjtd 5t ||d d d y #1swYy xYw) zGCheck that log_loss raises a warning when y_pred values don't sum to 1.rrrrrrrrz$The y_prob values do not sum to one.rN)r@rrrrr)rLrXrWs rY'test_log_loss_not_probabilities_warningr siXXl #F XXSzC:SzC:Fe TF k)O P! !!!rr/rrcLt||tjdk(sJy)z6Check that log_loss returns 0 for perfect predictions.rN)rrrr\s rY!test_log_loss_perfect_predictionsr s" FF #v}}Q'7 77 7r[cHtjgd}tjddgddgddgddgg}ttfg} ddlm}m}|j ||f|D]-\}}||||}}t||} t| d/y#t$rY>wxYw) Nrrrrrr) DataFramerr) r@rr)rrrr ImportErrorrr*) y_try_prtypesrr TrueInputType PredInputTyperXrWrs rYtest_log_loss_pandas_inputr ) s 882 3D 88c3Z#sc3Z#sD ED] + ,E , fi()).)$ }&t,mD.A'i( )    sB B! B!ctjd}tjt|5t gdgdgdgdggddddy#1swYyxYw NzLabels passed were ['spam', 'eggs', 'ham']. But this function assumes labels are ordered lexicographically. Pass the ordered labels=['eggs', 'ham', 'spam'] and ensure that the columns of y_prob correspond to this ordering.reggsrrrr/r)rrrr)rrrrrrexpected_messages rYtest_log_loss_warningsr; sTyy = k)9 :  #  9 -*    AActjgd}tjgd}tj||z dzt |z }t t ||dt t |||t t d|z||t t d|zdz ||tjd|z |f}tjd|z |f}t t |||t t |||t t ||d|t t ||d |t t ||d d|zt t d gd gd t t dgd gd t t dgd gdt t dgd gdd t t dgd gddy)Nrr;r;rr;r;rrrerrgffffff?r4rrr;auto) scale_by_halfTFrrg|Gz?rrfoobarr)r@rrnormrsr+r column_stack)rXy_prob true_scorey_prob_reshapedy_true_reshapeds rYtest_brier_score_loss_binaryr#J s XX( )F XX5 6FVf_-2S[@J(8#>(8*E(vv> K(Va@*Mooq6z6&:;Oooq6z6&:;O(A:N(/JJWv> t(!se4f=(!se4nE(%3%5I6R%3%59r[c ttgdgdgdgdggddttgdgdgd gd gd ttgd gd gdgdgdttgd gdgd gd gdy)Nrrjrk)rrryamsrrrBrrrg t?r)rrr)rrr)rrrrr4)r+rrr[rY test_brier_score_loss_multiclassr&q s # < 62   /J    /J   /J  r[c&tjgd}tjgd}tjt5t ||dddddtjt5t ||dzdddtjt5t ||dz dddtjgd}tjgdgdgdg}tjt5t ||dddddtjt5t ||dzdddtjt5t ||dz dddtjgd }tjgd }t jd }tjt| 5t ||dddgd }ddgddgddgg}d}tjtt j| 5t ||dddgd}gdgdgdg}gd}d}tjtt j| 5t |||ddddg}ddgg}d}tjtt j| 5t ||dddtt ||ddgdy#1swYxYw#1swYxYw#1swYuxYw#1swYxYw#1swYxYw#1swYxYw#1swYnxYw#1swY'xYw#1swYxYw#1swYxYw)Nrrr;rrBrrr)rr;r4r)rrrrzpThe type of the target inferred from y_true is multiclass but should be binary according to the shape of y_prob.rrrzy_true and y_prob contain different number of classes: 3 vs 2. Please provide the true labels explicitly through the labels argument. Classes found in y_true: [0 1 2]rrr/)rrrr%zwThe number of classes in labels is different from that in y_prob. Classes found in labels: ['eggs' 'ham' 'spam' 'yams']rrrerzy_true contains only one label (eggs). Please provide the list of all expected class labels explicitly through the labels argument.rr) r@rrrrrrrr+)rXrrrps rY$test_brier_score_loss_invalid_inputsr( s XX( )F XX5 6F z "-,- z "/#./ z "/#./ XXi F XXI JF z "-,- z "/#./ z "/#./ XXl #F XX* +FII AM z 7)()F!fq!fq!f %F  z=)A B)()%FI .F ,F / z=)A B878XFCj\F  z=)A B)()(PRVWK--////--////))))88))sxL9L *L-L:M2M( M!< M.M;# NL L*-L7:MMM!M+.M8;NNctjd}tjt|5t gdgdgdgdggddddy#1swYyxYwr)rrrrrrrs rYtest_brier_score_loss_warningsr* sZyy = k)9 :   #  +     rcd}tjt|5tgdgddddy#1swYyxYw)Nz%y_pred contains classes not in y_truerrbr)rrrrrs rY#test_balanced_accuracy_score_unseenr, s4 1C k -6 95666s 8Az y_true,y_pred)rrrr)rrrr)rrrrcTt||dtj|}t5t ||}dddt j |k(sJt ||d}t |tj||d}|||z d|z z k(sJy#1swYexYw)NrrT)adjustedrr;)r!r@uniquer.rrr full_like)rXrW macro_recallbalancedr.chances rYtest_balanced_accuracy_scorer4 s  &0AL  ;*66:; v}}\2 22 2&vvEH $VR\\&&)-L MF 6)a&j9 99 9 ;;s BB'r))FTr)rr)zeroonec8tjjd}d|d}}|j||d}|tur|j |}n|j }||||}tjtj|rJy) 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. *rhrT)rreplacerrN) r@rDrEchoiceruniformranyr)r|rrSrPrrXrWrs rY*test_classification_metric_pos_label_typesr= s* ))   #Cwr{yI ZZiZ >F !!), FFi 8Fvvbhhv&'' ''r[zy_true, y_pred, expected_scorecPt||dtj|k(sJy)zCheck the behaviour of `zero_division` for f1-score. Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/26965 rrN)rrr)rXrWrgs rY2test_f1_for_small_binary_inputs_with_zero_divisionr?/ s$ FF# 6&--:W WW Wr[scoringrr4)rrctjd\}}tddj||}t ||||ddy) aZCheck 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:r4r)r@n_jobs error_scoreN)r make_classificationr(rIr%)r@rNrO classifiers rY9test_classification_metric_division_by_zero_nan_validatonrGA sC&  ' 'Q 7DAq'!!DHHANJJ1gaWUr[c gd}gd}tjddgddgddgddgdd gd d gg}tjddgddgddgddgddgddgg}t|| }t||d }t||d }d||z z }|t j |k(sJtjgd}|ddj |j z |dddf<|ddj |j z |dddf<t|||}t|||d }t|||d }d||z z }|t j |k(sJtjddgddgddgddgddgddgg}t||}d|cxkrdksJJt||} | t j |k(sJtjddgddgddgddgddgddgg}t||}|dksJt||} | t j |k(sJgd}tjddgddgddgddgddgddgg}t||}|dk(sJt||} | dk(sJgd}gd}tjddgddgddgddgg}t||}|dk(sJt||} | dk(sJgd}t|||} | dk(sJgd}gd}tjgd gd gd!gd"g}t||}d|cxkrdksJJt|||}d|cxkrdksJJtjgd#gd$gd"gd%g}t||}|dksJt|||}|dksJy)&Nr]rrrerrrgffffff?g?rrr\F)rXrWrJr;)r4r;rrrr;rr)rXrWr3)rXrWr3rJrrrrru)rr;r;r;)rrrr)r4r4r4r4r@)highrIlowneutral)ffffff?rrr)rrrrr)rrrrr)r@rr$rrrrT) rX y_true_stringrW y_pred_nulld2_scorelog_likelihoodlog_likelihood_null d2_score_truer3d2_score_stringd2_score_with_sample_weights rYtest_d2_log_loss_scorerUY s F;M XX #J #J #J #J 4L 4L   F(( #J #J #J #J #J #J   K!v>HVFeLN"&PUV)<<O fmmH5 55 5XX #J #J #J #J 4L #J   F!0H a<<' v>O fmmH5 55 5 F XX #J #J #J #J #J #J   F!0H q==' v>O a  F/M XXd|dD\D$<$N OF 0H q==' v>O a   M"3m# '! ++ +0F(M XX      F!0H  C    }MH  C    XX      F!0H a<< }MH a<r{s  22 8!!;5.N3@/0.>7 )(`>DBW<61a*@A B T{aVUOi=OP))( 7DPQR$PQ*JR*JZPQMRM,>6  BHH####    . = (9)(9  BHH#####      *;+*;  =* = OF.9.9%S::%SPT<+%%;&) #"((#56""((#56  N  #"((#56""((#56  B #"((#56""((#56  N  #"((#56""((#56  H  ;$'P*Q'P*#"((?3""((?3  <  **"44-8M9M;0   S!E"C C       $S !3' $bff-S !3' '0   D D$$S !3' $c* $c* '0   D D$>11a.9)aS1#J<8  !$  '9: ')aS1#J<8  !$ 9$2N RF5pc5\2U3UB7(t$ST ,U ,0"(".& ;< QAB '( 88  taVY'-M%%6"AB0C0"%4%$%(%6 %F%,%.X IPQ%R%< 6B(%DPJZ"J. +868:LM 2N 2PQ?UR?UDPQ=R=@PQ+&&266266"23[ R [|!%$MN1a.9"5:O&"5J$MN"O"&1a.9 W: WF38e0P1a.9: :: z61a*@A$B$N61a*@A$ B$ N61a*@A#(B#(L'>_D=8A6*"N8P4@A8I(X2::rzz2::"FG H 2::rzz2::"FG!H! I aVaVaV,- Y 95688 )$  $N FIXX &6  34 34 34 : :  #&'  C( ($$ 1a& 8288QF+S1 1a& 8288QF+S1 1a& 8288QF+S1 1a& 8288QF+S1 XX HBFF3Karvv>O266:L7  V VSl1:..9r[