`L i+VddlZddlmZddlZddlZddlmZddlm Z m Z ddl m Z ddl mZddlmZmZddlmZmZmZmZmZdd lmZdd lmZmZmZmZmZdd l m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(ejRdd gd dggZ*de*dddf<e+eezezezeze,e-ej\ej^e0ejbffdZ2ge2ejfjidjkddee-fdd gd dggdd gge2e*ee-fe2dd gd dgge2ddgddgge2dd ggdd gd dggejRdd gd dggejRddgddggeejRddgddgggdejRgdejRgdej\ejRgdej^ejRgde0ejRgdejbejRd gdgdggeejRgdgdgdejRgdejRgde6ejRgde6g gdgdgddgd d!ggejRgdgdgejRgdgdgej\ejRgdgdgej^ejRgdgdge0ejRgdgdgejbge2gdgdgeeze-ej\ej^e0ejbfejRddgd d!ggejRddgd d!ggejRddgd d!gge6ejRgdgeejRgdgdd gd d ggdgejRgd"ejRgd"e,ejRgd"ej\ejRgd"ej^ejRgd"e0ejRgd"ejbejRdgd ggeejRdgd ggd dgdd#gdgddgd$d%gejRd$d%gddgejRd$d%ge6gd&gdd'gejRdgd'ggejRdgd'ggejbgejRdd'gd'dggejRdd'gd'dggejbejRdd'ggge2dd'gd'dggeeze0ejbfe2dd'ggeeze0ejbfggejRgge6d(gejRejRgejRgd)ge6ejRgejRgd)ghd*d dhge7gd)e7d dggddd+ddigejRdejRgggejRdd gddggd,d#gd-d.gggg d/Z8ejfjidjkdddd gd dggdd gge*ddgddggdd gd dggejRdd gd dggejRddgddggeejRddgddggg gdejRgdejRgdej\ejRgdej^ejRgde0ejRgdejbejRd gdgdggeejRgdgdg gdgdgejRgdgdgejRgdgdgej\ejRgdgdgej^ejRgdgdge0ejRgdgdgejbejRgdgeejRgdggdd gd d ggdgejRgd"ejRgd"e,ejRgd"ej\ejRgd"ej^ejRgd"e0ejRgd"ejbejRdgd ggeejRdgd ggd dgdd#ggd&gdd'gejRdgd'ggejRdgd'ggejbgejRdd'gd'dggejRdd'gd'dggejbejRdd'gggggd(gejRdejRdd gddggd,d#gd-d.ggggd/Z9hd*ddd+d#gd#gd+d$e7gd)dgZ:d gdgdd gggd0ejRgd dggd1eejRgd dggd1gZ;d2Zd5Z?d6Z@ejjd7ee8d9ZCd:ZDd;ZEd<ZFd=ZGejjd>gd?d@ZHejjdAedBZIdCZJdDZKejjdEdFdGgdHZLy)IN)product)issparse)config_contextdatasets) ShuffleSplit)SVC)_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)_array_api_for_tests_convert_containerassert_allcloseassert_array_almost_equalassert_array_equal) _NotAnArray)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS) _safe_split)_ovr_decision_functioncheck_classification_targetsclass_distribution is_multilabeltype_of_target unique_labelsc P|Dcgc]}|D] }|||c}}Scc}}w)Ndtype)datasparse_containersdtypessparse_containerr s i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/utils/tests/test_multiclass.py_generate_sparser',s@!2     U+ +  s"*) r*)size)r#r$) rrr)r)rr)r/r/r/rrr)rrrr))abc)rrr)r))rr/r)r/r2r3r4d) rrrrrrrrrrabcdefgh㈵>?r!)rr)r.>rr)r.rrr/)multilabel-indicator multiclassmulticlass-multioutputbinary continuouscontinuous-multioutputunknown)r!r)r:objectc htjt5tdddt tt dt jdt tt jdt jdt tgdt jgdt tt jgdgdgdgt jdt tt jgdgdgt jdt tgdt dt jdt td d d t jdtjt5tgdt jd dddtjt5tt jd t jd dddt tt jdt jd t jdy#1swYlxYw#1swYxYw#1swYrxYw)Nr*)r/rr))rr)r/)rrr)rrr)rrrr.r6r1)r)r)r)r6r6)r6r/)r/r6) pytestraises ValueErrorrrrangenparangearrayonesr!r&test_unique_labelsrO s z "}U2Y/2?}RYYr]3RYYr]C}Y/)1DEbhh 9i@ABBIIaL}RXXy).D%EF RS U}Ya9299Q<H}Yf=ryy|L z "2i12 z "8bggforwwv78}RWWV_bggfoF RS U3(2288s# J"J3J(JJ%(J1cVtjtjddgf}d}tjt |5t |dddtjd}tj5tjdt |dddtjd}tj5tjd t t |dddy#1swYxYw#1swYmxYw#1swYyxYw) zCheck that we raise a warning when the number of unique classes is greater than 50% of the number of samples. We need to check that we don't raise if we have less than 20 samples. rzJThe number of unique classes is greater than 50% of the number of samples.matchNr*errorignore) rJhstackrKrFwarns UserWarningrwarningscatch_warnings simplefilter)ymsgs r&+test_type_of_target_too_many_unique_classesr_*s 299R=1#&'A WC k -q " A  "g&q " A  "h 4q s$ D!D&DDDD(chdD]}t|D] }t|tD]/}tjt 5t|ddd1dD]=}t|D]/}tjt 5t|ddd1?y#1swY~xYw#1swYJxYw)N)r@r>r=)rCrArBr?)EXAMPLESrNON_ARRAY_LIKE_EXAMPLESrFrGrH)formatr]exampley_types r&test_unique_labels_non_specificrfIsC&! A !   +# ]]: & # ' " # ##'  ' 'Gz* 'g& ' ' ' ' # # ' 's B B(B% (B1 c>ttdtdtdz}|D]a\}}tjt5t ||dddtjt5t ||dddctjt5t ddggddggdddtjt5t ddgdddtjt5t ddgdd ggdddtjt5t dd gdd ggdddy#1swYxYw#1swYExYw#1swYxYw#1swYxYw#1swYoxYw#1swYyxYw) Nr=r>r@rr)r2r51r.2)rrarFrGrHr)mix_clf_format y_multilabel y_multiclasss r&test_unique_labels_mixed_typesrmast'((<*@8HCU*UN'56" l ]]: & 6 , 5 6 ]]: & 6 , 5 6 66 z ".1vh#s -. z " sAh  z "*Qx!Q()* z ",SzAq6*+,, 6 6 6 6..  **,,sH E4 E"$E/E;F:FE "E, /E8;FFFctjD]9\}}|dk(}|D](}|xr t|}t|s~t|drt j |j dk(rt j |jjdvr|t j |jddkDrWttztztztzDcgc] }|| }}|D]}|t|k(rJd|d|t|r|j!}|t|k(rJd|d|<ycc}w) Nr= __array__r)biufrris_multilabel( ) should be )raitemsrhasattrrJasarrayndimr kindshaperrrrrrtoarray)groupgroup_examples dense_exprd sparse_expr%examples_sparse exmpl_sparses r&test_is_multilabelrzss!)!1#~33 % G#8x'8J -JJw',,1JJw'--22f<JJw'--a014 '()()))) ) #(%W- # #%4L%|)DD((8 ZLQD  !//+ g 66   < {C 6= # #s#Ez#array_namespace, device, dtype_name)idsct||}tjD]\}}|dk(}|D]}tj|j j dk(rtj||}ntj|}|j ||}td5|t|k(s Jd|d| dddy#1swYxYw) Nr=fr)deviceT)array_api_dispatchrqrr) r ARRAY_API_EXAMPLESrsrJrur rwrr)array_namespacer dtype_namexprzr{r|rds r&'test_is_multilabel_array_api_compliancers ov 6B!3!9!9!; ~33 % Gzz'"((--4**WJ?**W-jjj8G48  M'$::$WK|I;G:      s )CC ctjD]_}|dvr@t|D]3}d}tjt|5t |ddd5Gt|D] }t |ay#1swY\xYw)N)rCrArBzUnknown label type: rR)rakeysrFrGrHr)rerdr^s r&!test_check_classification_targetsrs--/6 H H#F+ :,]]:S9:09:: : $F+ 6,W5 66::s  A88B c tjD]3\}}|D])}t||k(rJd|d|dt|5tD]3}d}t j t |5t|ddd5tD]3}d}t j t |5t|ddd5y#1swY|xYw#1swYLxYw)Nztype_of_target(rrz, got z6Expected array-like \(array or non-string sequence\).*rRzYou 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.)rarsrrbrFrGrHMULTILABEL_SEQUENCES)rzr{rd msg_regexr^s r&test_type_of_targetrs!)!1 ~% G!'*e3 "7+  3  +$M ]]:Y 7 $ 7 # $ $$ ($ < ]]:S 1 $ 7 # $ $ $ $ $ $ $s1 C- CC C c<tjd}|jjdtj tj dtj g}d}tj t|5t|dddy#1swYyxYw)Npandasrz1y cannot be class 'SparseSeries' or 'SparseArray'rR) rF importorskiparrays SparseArrayrJnanrGrHr)pdr]r^s r&!test_type_of_target_pandas_sparsersm   X &B q"&&"&&!RVV<=A =C z -qs = BBctjd}dD]L}|jgd|}t|dk(sJ|jgd|}t|dk(rLJ|j dd gd dggd }t|d k(sJ|j d d gd d ggd}t|dk(sJ|j d dgdd ggd}t|dk(sJy)z)rrrrr@gffffff?g@rrBrrrr=r)r.r?N)rFrSeriesr DataFrame)rr y_trues r&#test_type_of_target_pandas_nullablers   X &B%2?%8f%555q.AB!)A,0B10EF!+a.2Fq2IJ!*Q-1A!1DE!,q/3Ea3HI!."35I!5LMN); ))%Wi2D )2.Z~23H3%RUQVW 1771: N!'!*.>q.AB!)A,0B10EF!+a.2Fq2IJ!*Q-1A!1DE!,q/3Ea3HI!."35I!5LMNrNct}td}tj}|j|j}}t j ||j}tdd}tt|j|\}}t||||\} } t||||\} } t| t j | | jt| | t|||||\} }t|||||\}}t|t j | | jt||y)N precomputed)kernelg?r) test_size random_state)rr load_irisr"targetrJdotTrnextitersplitrr)clfclfpirisXr]KcvtraintestX_trainy_trainK_trainy_train2X_testy_testK_testy_test2s r&'test_safe_split_with_precomputed_kernelr@s %C m $D    D 99dkkqA q!##A 1 5BtBHHQK()KE4"31e4GW#D!Q6GXgrvvgwyy'ABgx0 aD%8NFF!$1dE:OFGfbffVWYY&?@fg.rNc \tjgdgdgdgdg}tjgdgdgdgdg}d}t|||}tjgdgd gdgdg}t||d tjgd }t tj |d ||d|dkDsJt dDcgc]@}ttj||gtj||g|dB}}t||d ycc}w)N)rrr)rrr)7yArr)rrg)grg@)gg?r9r.r0)rrrr9)atol)r)rr)r)r)axis)r)r))r.r)r/rgư>)rJrLrr rargmaxrI) predictions confidencesr dec_valuesvotesexpected_predictionidec_values_ones r&test_ovr_decision_functionrVs((Iy)YGHK(( ,.>@PQKI' [)LJ HHiIyA BEE:C0 ((<0ryy!46IJ d j. .. .q    HHk!n% &+a.1A(BI  NJT:sAD) input_typelistrLctddg|}d}tjt|5t |dddy#1swYyxYw)Nabz8Support for labels represented as bytes is not supportedrR)r rFrG TypeErrorr)rrerr_msgs r&!test_labels_in_bytes_format_errorr}sD  t j 9FHG y 0vs AA )MrZ itertoolsrnumpyrJrF scipy.sparsersklearnrrsklearn.model_selectionr sklearn.svmrsklearn.utils._array_apir r sklearn.utils._testingr r r rrsklearn.utils.estimator_checksrsklearn.utils.fixesrrrrrsklearn.utils.metaestimatorsrsklearn.utils.multiclassrrrrrrrLmultilabel_explicit_zerotupleboolintint8uint8floatfloat32r'random RandomStaterandintrD frozensetrarrbrrOr_rfrmrmark parametrizerrrrrrrrrrr!rNr&r s]  !,075$288aVaV$45!"A           #rww% <&  II ! !" % - -ah - ?,6  Q!Q Q  $PSv  Aq6Aq6* + Aq6Aq6* + Aq6( #" a1b'#$ 2q'Ar7#$%& 2q'Ar7#$'( HBHHr1g2w/01). '"''*"((+%("**-1#sQC!HBHHY'(!// |$ sc3Z , -., -RWW=, -RXX>, -U;, -RZZ@  < (,~="((E2::>  3*sCj)* 3*sCj)* 3*sCj)8 )!" HBHHi[)*#( A A /0/t</rww?/rxx@/u=/rzzB1#sHBHHqcA3Z() B A  c % c %v.).  C1#u1#uRZZ0  1c(S!H%&1c(S!H%RZZ81c( XQx ,~=2::&  XJ,~=2::&  "V$ ("((2, 34FC "xrxx *+ QF 9 y!Q01 S As8$ "bAq6Aq6"aVaV$456!Iv t b!))!(); Q!Q Q Q!Q a1b'2q'Ar7#$2q'Ar7#$HBHHr1g2w/01  '"''*"((+%("**-1#sQC!HBHHY'(  |$, -., -RWW=, -RXX>, -U;, -RZZ@)HBHHi[)*  A A /0/t</rww?/rxx@/u=/rzzB1#sHBHHqcA3Z() B A"  C1#u1#uRZZ0  1c(S!H%&1c(S!H%RZZ81c(   Aq6Aq6"aVaV$456 yBL    i S1#1v BHHb1a&\*"q!fX67 V<>'0,2$N)-/'   $ 6$6>*"AB 'C '.90N:0Nf/,$;N'89:rN