
    lri                     (   d dl 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mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZ d d
lmZm Z  d dl!m"Z"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZDmEZE  ejF                    ZGejH        I                    d           ZJeJK                    eGjL        jM                  ZNeGjO        eN         eG_O        eGjL        eN         eG_L        dZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWejX        Y                    de@e?z   e>z   eAz   eBz             d              ZZd! Z[d" Z\d# Z]d$ Z^d% Z_d& Z`d' Zad( Zbd) Zcd* Zdd+ Zed, Zfd- Zgd. Zhd/ Zid0 Zjd1 Zkd2 Zld3 Zmd4 Znd5 Zod6 Zpd7 Zqd8 Zrd9 Zsd: Ztd; Zud< ZvejX        Y                    d=e?          d>             Zwd? Zxd@ ZyejX        Y                    dAe&e%g          dB             ZzejX        Y                    dAe&e%g          dC             Z{ejX        Y                    dAe&e%g          dD             Z|ejX        Y                    dEej}        ej~        g          dF             ZdG ZdH ZdS )I    )escapeN)assert_allclose)datasetssvm)BaseEstimatorClassifierMixin)load_breast_cancer)NotFittedError)SimpleImputer)
ElasticNetLassoLinearRegressionLogisticRegression
PerceptronRidgeSGDClassifier)precision_scorerecall_score)GridSearchCVcross_val_score)OneVsOneClassifierOneVsRestClassifierOutputCodeClassifier)MultinomialNB)KNeighborsClassifier)Pipelinemake_pipeline)SVC	LinearSVC)DecisionTreeClassifierDecisionTreeRegressor)check_arrayshuffle)CheckingClassifier)assert_almost_equalassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)check_classification_targetstype_of_target   c                  *   t          t          d                    } t          j        t                    5  |                     g            d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        ddgddgg          }t          j        ddgddgg          }t          t                                
                    ||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        ddgddgg          }t          j        dd	gd
dgg          }t          t                                
                    ||           d d d            d S # 1 swxY w Y   d S )Nr   random_statez@Multioutput target data is not supported with label binarizationmatch      r.   g      ?g333333@g@皙?)r   r   pytestraisesr
   predict
ValueErrornparrayr   fit)ovrmsgXys       }/var/www/html/bestrading.cuttalo.com/services/ml-inference/venv/lib/python3.11/site-packages/sklearn/tests/test_multiclass.pytest_ovr_exceptionsrC   9   s1   
iQ777
8
8C 
~	&	&  B               MC	z	-	-	- 7 7Hq!fq!f%&&Hq!fq!f%&&MOO,,00A6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 
z	-	-	- 7 7Hq!fq!f%&&HsCj3*-..MOO,,00A6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s7   AA AA$C11C58C5A$FFFc                      t          j        g d          } t          |           }t          j        t
          |          5  t          |            d d d            d S # 1 swxY w Y   d S )N)        g?       @g      @r2   )r;   r<   r-   r7   r8   r:   r,   )rA   r?   s     rB   !test_check_classification_targetsrG   M   s    
%%%&&A


C	z	-	-	- ( ($Q'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   AA"%A"c                  z    G d dt                     } t          j        dgdgdgdgg          }t          j        g d          }t           |                                           ||          }t          |                    |          t          j        |                    |          d                     dS )zbCheck that ties-breaking matches np.argmax behavior

    Non-regression test for issue #14124
    c                       e Zd Zd Zd ZdS )test_ovr_ties.<locals>.Dummyc                     | S N selfr@   rA   s      rB   r=   z test_ovr_ties.<locals>.Dummy.fit\   s    K    c                 D    t          j        t          |                    S rL   )r;   zeroslen)rO   r@   s     rB   decision_functionz.test_ovr_ties.<locals>.Dummy.decision_function_   s    8CFF###rP   N)__name__
__module____qualname__r=   rT   rM   rP   rB   DummyrJ   [   s2        	 	 		$ 	$ 	$ 	$ 	$rP   rX   r   )r   r4   r5   r.   r4   axisN)	r   r;   r<   r   r=   r&   r9   argmaxrT   )rX   r@   rA   clfs       rB   test_ovr_tiesr]   U   s    $ $ $ $ $ $ $ $ 	1#sQC!%&&A
A
eegg
&
&
*
*1a
0
0Cs{{1~~ry1F1Fq1I1IPQ'R'R'RSSSSSrP   c                  ^   t          t          d                    } |                     t          j        t          j                                      t          j                  }t          | j                  t          k    sJ t          d          }|                    t          j        t          j                                      t          j                  }t          j        t          j        |k              t          j        t          j        |k              k    sJ t          t                                } |                     t          j        t          j                                      t          j                  }t          j        t          j        |k              dk    sJ d S )Nr   r0   ?)r   r   r=   irisdatatargetr9   rS   estimators_	n_classesr;   meanr   )r>   predr\   pred2s       rB   test_ovr_fit_predictrh   h   s(   
iQ777
8
8C7749dk**2249==Ds9,,,,

#
#
#CGGDIt{++33DI>>E74;$&''274;%3G+H+HHHHH moo
.
.C7749dk**2249==D74;$&''$......rP   c                     t          t          j        t          j        d          \  } }t	          t                                }|                    | d d         |d d         t          j        |                     |                    | dd          |dd                     |	                    |           }t	          t                                }|
                    | |          	                    |           }t          ||           t          |j                  t          t          j        |                    k    sJ t          j        ||k              dk    sJ t          j        t          j                            dd                    } g d}t	          t%          dd d	d
                    }|                    | d d         |d d         t          j        |                     |                    | dd          |dd                     |	                    |           }t	          t%          dd d	d
                    }|
                    | |          	                    |           }t          j        ||k              t          j        ||k              k    sJ t	          t'                                }t)          |d          rJ d S )Nr   r0   d   r_      r5   r4   r4   r4   r4   r5   r.   r.   r   r   r5   r.   r4   r5   r.   r4   F)max_itertolr#   r1      partial_fit)r#   r`   ra   rb   r   r   rp   r;   uniquer9   r=   r%   rS   rc   re   absrandomrandnr   r   hasattr)r@   rA   r>   rf   ovr2rg   ovr1pred1s           rB   test_ovr_partial_fitry   x   sl   49dk:::DAq
moo
.
.COOAdsdGQttWbill333OOAcddGQsttW%%%;;q>>D}//DHHQNN""1%%Ee$$$s3ry||#4#44444719$$$$ 	ryr1%%&&A222A
qdEJJJ C OOAbqbE1RaR5")A,,///OOAabbE1QRR5!!!;;q>>DqdEJJJ D HHQNN""1%%E7419!!4!44444 cee
$
$CsM*******rP   c                     t          t                                } t          j        t          j                            dd                    }g d}|                     |d d         |d d         t          j        |                     dg|dd         z   }d}t          j	        t          |          5  |                     |dd          |	           d d d            d S # 1 swxY w Y   d S )
Nrk   r5   rl   ro      zAMini-batch contains \[.+\] while classes must be subset of \[.+\]r2   )r@   rA   )r   r   r;   rr   rs   rt   rp   rq   r7   r8   r:   )r>   r@   rA   y1r?   s        rB   test_ovr_partial_fit_exceptionsr~      s   
moo
.
.C
ryr1%%&&A222AOOAbqbE1RaR5")A,,/// q2wB
NC	z	-	-	- ' '!ABB%2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   6 C##C'*C'c                  V   t          t                                } |                     t          j        t          j                                      t          j                  }t          | j                  t          k    sJ t          t          j        |          g d           t          j        |t          j        k              dk    sJ t          t                                } |                     t          j        t          j                                      t          j                  }t          | j                  t          t          dz
  z  dz  k    sJ t          t          j        |          g d           t          j        |t          j        k              dk    sJ d S )N)r   r4   r5   ?r4   r5   )r   r!   r=   r`   ra   rb   r9   rS   rc   rd   r&   r;   rq   re   r   )r>   rf   s     rB   test_ovr_ovo_regressorr      s@    355
6
6C7749dk**2249==Ds9,,,,ry			222744;&''#----
244
5
5C7749dk**2249==Ds9	A#>#BBBBBry			222744;&''#------rP   sparse_containerc           	         t          d          }t          j        ddddddd	
          \  }}|d d         |d d         }}|dd          }t          |                              ||          }|                    |          }t          |                              | | |                    }	|	                    |          }
|j        sJ t          j        |
          sJ t          |

                                |           |	                    |          }|dk    }t          ||

                                           t          j                    }t          |                              | | |                    }	|	                    |          d	k                        t                     }t          ||	                    |          
                                           d S )Nr4   alpharj      r{   r.   2   Tr   	n_samples
n_featuresrd   n_labelslengthallow_unlabeledr1   P         ?)r   r   make_multilabel_classificationr   r=   r9   multilabel_spissparser&   toarraypredict_probar   r   rT   astypeint)r   base_clfr@   YX_trainY_trainX_testr\   Y_predclf_sprsY_pred_sprsY_probarf   dec_preds                 rB   test_ovr_fit_predict_sparser      s   
 1%%%H2  DAq "vq"vWGrssVF
h
'
'
+
+GW
=
=C[[  F"8,,00:J:J7:S:STTH""6**K?;{#####{**,,f555 $$V,,G S=Dt[0022333 '))C"3''++G5E5Eg5N5NOOH**622Q6>>sCCHx!1!1&!9!9!A!A!C!CDDDDDrP   c                     t          j        d          } d| d dd d f<   t          j        d          }d|dd df<   d|d d df<   d|d d df<   t          t	                                }d}t          j        t          |          5  |                    | |           d d d            n# 1 swxY w Y   |	                    |           }t          t          j        |          t          j        |                     |                    |           }t          j        |d d d	d f                   dk    sJ |                    |           }t          |d d d
f         t          j        | j        d                              t          j        d          }d|dd df<   t          t	                                }d}t          j        t          |          5  |                    | |           d d d            n# 1 swxY w Y   |                    |           }t          |d d d
f         t          j        | j        d                              d S )N
   r5   r   r{   )r   r.   r4   r5   z,Label .+ is present in all training examplesr2   r|   z/Label not 1 is present in all training examples)r;   onesrR   r   r   r7   warnsUserWarningr=   r9   r&   r<   rT   rq   r   shape)r@   rA   r>   r?   y_preds        rB   test_ovr_always_presentr      s    	AAbqb!!!eH 	AAabb!eHAaaadGAaaadG
022
3
3C
9C	k	-	-	-  1              [[^^Frx''!555""1%%F9VAAArssF^$$))))q!!Fvaaae}bgagaj&9&9::: 	AAabb!eH
022
3
3C
<C	k	-	-	-  1              q!!Fvaaae}bhqwqz&:&:;;;;;s$   B**B.1B.G==HHc                     t          j        g dg dg dg dg dg          } g d}t          j        g dg dg d	g dg d	g          }t          d
                                          }t	                      t          d          t                      t                      t                      fD ]}t          |          
                    | |          }t          |j                  |k    sJ |                    t          j        g dg                    d         }t          |dg           t          |          
                    | |          }|                    g dg          d         }t          |g d           d S )Nr   r   r{   r   r{   r   r.   r   r   r   r      r   r   r   )eggsspamhamr   r   )r   r   r4   r   r4   r   r4   r   r   zham eggs spamr   r0   r   r      r   )r;   r<   setsplitr   r   r   r   r   r   r=   classes_r9   r&   )r@   rA   r   classesr   r\   r   s          rB   test_ovr_multiclassr     s   
)))YYY			999iiiHIIA...A
)))YYY			999iiiHIIA/''))**G 	q!!! . . "(++//1553<  G++++RXyyyk2233A66F8,,, "(++//155iii[))!,6999----. .rP   c                     t          j        g dg dg dg dg dg          g dt          j        g dg          j        t          d                                          dfd
	} t          d          t                      t                      t                      fD ]} | |           t                      t          d          t                      fD ]} | |d           d S )Nr   r   r   r   r   )r   r   r   r   r   )r   r4   r4   r   r4   z	eggs spamFc                     t          |                               
          }t          |j                  	k    sJ |                    t          j        g dg                    d         }t          |dg           t          | d          r"|	                              }|j
        dk    sJ |rt          j        g dg          }|                    |          }dt          |d                   k    sJ |j        t          j        |d                   |                    |          k    sJ t          |                                         }|                    g d	g          d         }|dk    sJ d S )
Nr   r   r   rT   )r{   r5   r4   rY   r   )r   r=   r   r   r9   r;   r<   r&   ru   rT   r   r   rS   r[   )r   test_predict_probar\   r   decr   probabilitiesr@   r   r   rA   s          rB   conduct_testz%test_ovr_binary.<locals>.conduct_test.  s{   !(++//1553<  G++++RXyyyk2233A66F8,,,8011 	%''**C9$$$$ 	YXyyyk**F--f55MM!,------<	-a @ @ @AS[[QWEXEXXXXX "(++//155iii[))!,{{{{{{rP   r   r0   Tprobability)r   )F)r;   r<   Tr   r   r   r   r   r   r   r   r   )r   r   r@   r   r   rA   s     @@@@rB   test_ovr_binaryr   &  s9   
)))YYY			999iiiHIIA000A
///"##%A+##%%&&G        * 	q!!!	   	X"__cd&;&;&;=O=Q=QR 8 8X$777778 8rP   c                     t          j        g dg dg dg dg dg          } t          j        g dg dg dg d	g d
g          }t                      t          d          t	                      t                      t                      t          d          fD ]^}t          |          	                    | |          }|
                    g dg          d         }t          |g d           |j        sJ _d S )N)r   r   r{   r   )r.   r.   r.   )r   r   r   r   )r   r4   r4   r   )r4   r4   r4   )r4   r   r4   r   r   r0   r   r   )r   r   r   )r;   r<   r   r   r   r   r   r   r   r=   r9   r&   r   )r@   rA   r   r\   r   s        rB   test_ovr_multilabelr   N  s   
)))YYY			999iiiHIIA
)))YYY			999iiiHIIA 	q!!!C   "(++//155iii[))!,6999--- rP   c                  .   t          t          j                              } |                     t          j        t          j                   t          | j                  dk    sJ | 	                    t          j        t          j                  dk    sJ d S )Nr.   r   )
r   r   r   r=   r`   ra   rb   rS   rc   score)r>   s    rB   test_ovr_fit_predict_svcr   a  sq    
cgii
(
(CGGDIt{###s1$$$$99TY,,s222222rP   c            
         t          d          } t          ddd          D ]\  }}}t          j        dddd	d
|d          \  }}|d d         |d d         }}|dd          |dd          }	}t	          |                               ||          }
|
                    |          }|
j        sJ t          t          |	|d          |d	           t          t          |	|d          |d	           d S )Nr4   r   )TF)RQ?gQ?)r   r6   rj   r   r{   r5   r   r   r   r   micro)average)decimal)r   zipr   r   r   r=   r9   r   r%   r   r   )r   auprecrecallr@   r   r   r   r   Y_testr\   r   s               rB   test_ovr_multilabel_datasetr   h  s?   1%%%H|\JJ 
 
D&6
 
 
1 SbS61SbS6233233!(++//AAV$$FFG<<<dA	
 	
 	
 	
 	99961	
 	
 	
 	
 	
'
 
rP   c            
         t          d          } dD ]}t          j        ddddd|d	
          \  }}|d d         |d d         }}|dd          }t          |                               ||          }t          t          j                                                  ||          }t          |d          rJ t          t          j        d                    }t          |d          rJ |                    ||           t          |d          rJ t          |d          sJ t          t          j        d          ddgi          }	t          |	          }
t          |
d          rJ |
                    ||           t          |
d          sJ |
                    |          }|                    |          }|dk    }t          ||           d S )Nr4   r   )FTrj   r   r{   r.   r   r   r   r   r   Fr   rT   r   T)
param_gridr   )r   r   r   r   r=   r   SVRru   r   r   r9   r   r&   )r   r   r@   r   r   r   r   r\   decision_onlygsproba_after_fitr   r   rf   s                 rB   !test_ovr_multilabel_predict_probar     s   1%%%H () ()6
 
 
1 SbS61SbS6233!(++//AA ,CGII66::7GLL=/::::: ,CG,F,F,FGG=/:::::'7+++=/:::::}&9::::: G&&&MD63J
 
 
 .b11?O<<<<<GW---88888V$$##F++ }4((((Q() ()rP   c                  ^   t          d          } t          j        t          j        }}|d d         |d d         }}|dd          }t	          |                               ||          }t	          t          j                                                  ||          }t          |d          rJ |	                    |          }|
                    |          }	t          |	                    d          d           |	                    d          }
|
|z
                                  rJ d S )Nr4   r   r   r   rY         ?)r   r`   ra   rb   r   r=   r   r   ru   r9   r   r%   sumr[   any)r   r@   r   r   r   r   r\   r   r   r   rf   s              rB   #test_ovr_single_label_predict_probar     s   1%%%H9dkqA"vq"vWGrssVF
h
'
'
+
+GW
=
=C (		2266wHHM}o66666[[  F''G++S111 >>q>!!Dv""$$$$$$$rP   c                      G d dt           t                    }  |             }t          j        t          j        }}t          |                              ||          }|                    |          }t          |d           dS )zmCheck that predic_proba returns all zeros when the base estimator
    never predicts the positive class.
    c                       e Zd Zd Zd ZdS )Gtest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifierc                 8    t          j        |          | _        | S rL   )r;   rq   r   rN   s      rB   r=   zKtest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifier.fit  s    IaLLDMKrP   c                 ^    t          j        t          |          df          }d|d d df<   |S )Nr5   r   r4   )r;   r   rS   )rO   r@   probas      rB   r   zUtest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifier.predict_proba  s1    GSVVQK((EE!!!Q$KLrP   N)rU   rV   rW   r=   r   rM   rP   rB   NaiveBinaryClassifierr     s2        	 	 		 	 	 	 	rP   r   rE   N)	r   r   r`   ra   rb   r   r=   r   r   )r   r   r@   rA   r\   y_probas         rB   (test_ovr_single_label_predict_proba_zeror     s    
	 	 	 	 	 	 	 	 %$&&H9dkqA
h
'
'
+
+Aq
1
1C""GGS!!!!!rP   c            	         t          j        ddddddd          \  } }| d d	         |d d	         }}| d	d          }t          t          j                                                  ||          }t          |                    |          dk                        t                    |
                    |                     d S )
Nrj   r   r{   r.   r   Tr   r   r   )r   r   r   r   r   r=   r&   rT   r   r   r9   r@   r   r   r   r   r\   s         rB   %test_ovr_multilabel_decision_functionr     s    2  DAq "vq"vWGrssVF
cgii
(
(
,
,Wg
>
>C			v	&	&	*22377V9L9L    rP   c                  v   t          j        ddd          \  } }| d d         |d d         }}| dd          }t          t          j                                                  ||          }t          |                    |                                          dk    |	                    |                     d S )Nrj   r   r   )r   r   r1   r   )
r   make_classificationr   r   r   r=   r&   rT   ravelr9   r   s         rB   'test_ovr_single_label_decision_functionr     s    '#"STUUUDAq"vq"vWGrssVF
cgii
(
(
,
,Wg
>
>Cs,,V44::<<q@#++fBUBUVVVVVrP   c                      t          t          d                    } g d}t          | d|i          }|                    t          j        t          j                   |j        j        d         j	        }||v sJ d S Nr   r0   )皙?r   r6   estimator__C)
r   r   r   r=   r`   ra   rb   best_estimator_rc   C)r>   Cscvbest_Cs       rB   test_ovr_gridsearchr     ss    
iQ777
8
8C	B	cNB/	0	0BFF49dk"""+A.0FR<<<<<<rP   c                     t          dt                      fg          } t          |           }|                    t          j        t          j                   t          t                                }|                    t          j        t          j                   t          |                    t          j                  |                    t          j                             d S )Ntree)	r   r    r   r=   r`   ra   rb   r&   r9   )r\   ovr_piper>   s      rB   test_ovr_pipeliner     s     V35567
8
8C"3''HLLDK(((
466
7
7CGGDIt{###s{{49--x/?/?	/J/JKKKKKrP   c                      t          t          d                    } t          j        t                    5  |                     g            d d d            d S # 1 swxY w Y   d S Nr   r0   )r   r   r7   r8   r
   r9   ovos    rB   test_ovo_exceptionsr    s    
YA666
7
7C	~	&	&  B                    AA!Ac                     t          t          d                    } |                     t          j        t          j                                      t          j                  }d t          j        D             }|                     |t          t          j                                                |          }t          ||           d S )Nr   r0   c                 ,    g | ]}t          |          S rM   )list).0as     rB   
<listcomp>z(test_ovo_fit_on_list.<locals>.<listcomp>  s    111!d1gg111rP   )	r   r   r=   r`   ra   rb   r9   r  r&   )r  prediction_from_arrayiris_data_listprediction_from_lists       rB   test_ovo_fit_on_listr    s     YA666
7
7CGGDIt{;;CCDINN11ty111N77>43D3DEEMM  ,.BCCCCCrP   c                  F   t          t          d                    } |                     t          j        t          j                                      t          j                   t          | j                  t          t          dz
  z  dz  k    sJ t          t                                } |                     t          j        t          j                                      t          j                   t          | j                  t          t          dz
  z  dz  k    sJ d S )Nr   r0   r4   r5   )r   r   r=   r`   ra   rb   r9   rS   rc   rd   r   r  s    rB   test_ovo_fit_predictr    s    
YA666
7
7CGGDIt{##++DI666s9	A#>#BBBBB ]__
-
-CGGDIt{##++DI666s9	A#>#BBBBBBBrP   c                     t          j                    } | j        | j        }}t	          t                                }|                    |d d         |d d         t          j        |                     |                    |dd          |dd                     |	                    |          }t	          t                                }|
                    ||           |	                    |          }t          |j                  t          t          dz
  z  dz  k    sJ t          j        ||k              dk    sJ t          ||           t	          t                                }|                    |d d         |d d         t          j        |                     |                    |dd          |dd                     |	                    |          }t	          t                                }|
                    ||          	                    |          }t          ||           t          |j                  t          t          j        |                    k    sJ t          j        ||k              dk    sJ t	          t                                }t          j                            dd          }g d}|                    |d d         |d d         g d	           |                    |dd          |dd                     |	                    |          }t	          t                                }|
                    ||          	                    |          }t          ||           t	          t                                }g d
}	t%          d                    t          j        |	          t          j        |                              }
t)          j        t,          |
          5  |                    |d d         |	t          j        |                     d d d            n# 1 swxY w Y   t	          t/                                }t1          |d          rJ d S )Nrj   r4   r5   r_   <   rk   )r4   r4   r5   r.   r.   r   r   r   r   r   r   r   r5   r5   ro   )r   r4   r5   r.   r   )r   r4   r5   r.   r   r{   r5   z6Mini-batch contains {0} while it must be subset of {1}r2   rp   )r   	load_irisra   rb   r   r   rp   r;   rq   r9   r=   rS   rc   rd   re   r%   rs   randr   formatr7   r8   r:   r   ru   )tempr@   rA   ovo1rx   ovo2rg   r  rf   error_y
message_rer>   s               rB   test_ovo_partial_fit_predictr   *  s   D9dkqAmoo..DQttWagry||444QsttWag&&&LLOOEmoo..DHHQNNNLLOOEt  IQ$?!$CCCCC71:%%%%u%%% moo..DQssVQssVRYq\\222QrssVQrssV$$$LLOOEmoo..DHHQNN""1%%Eu%%%t  C	!$5$5555571:%%%%
]__
-
-C
	r1A222AOOAbqbE1RaR5///222OOAabbE1QRR5!!!;;q>>Dmoo..DHHQNN""1%%Ee$$$ ]__
-
-C###G@GGIg	!	
 	
 J
 
z	4	4	4 6 6"1"w	!5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 SUU
#
#CsM*******s   2QQ	Qc                     t           j        j        d         } t          t	          d                    }|                    t           j        t           j        dk               |                    t           j                  }|j        | fk    sJ |                    t           j        t           j                   |                    t           j                  }|j        | t          fk    sJ t          |
                    d          |                    t           j                             t          j        | t          f          }d}t          t                    D ]x}t          |dz   t                    D ]]}|j        |                             t           j                  }||dk    |fxx         dz  cc<   ||dk    |fxx         dz  cc<   |dz  }^yt          |t          j        |                     t          t                    D ]p}t#          |d d |f                                       t#          g d                    sJ t'          t          j        |d d |f                             dk    sJ qd S )Nr   r0   r4   rY   )rE   r   rF      )r`   ra   r   r   r   r=   rb   rT   rd   r&   r[   r9   r;   rR   rangerc   roundr   issubsetrS   rq   )	r   ovo_clf	decisionsvoteskijrf   	class_idxs	            rB   test_ovo_decision_functionr-  _  sX   	"I !:!:!:;;GKK	4;!+,,,))$)44I?yl**** KK	4;'''))$)44I?y)44444y''Q'//1K1KLLL Hi+,,E	A9  q1ui(( 	 	A&q)11$)<<D$!)Q,1$$!)Q,1$FAA		 ubhy112229%% = =	 5I&''00___1E1EFFFFF 29Yqqq)|45566<<<<<= =rP   c                      t          t          d                    } g d}t          | d|i          }|                    t          j        t          j                   |j        j        d         j	        }||v sJ d S r   )
r   r   r   r=   r`   ra   rb   r   rc   r   )r  r   r   r   s       rB   test_ovo_gridsearchr/    ss    
YA666
7
7C	B	cNB/	0	0BFF49dk"""+A.0FR<<<<<<rP   c                  F   t          j        ddgddgddgddgg          } t          j        g d          }t          t          ddd                     }|                    | |                              |           }|                    |           }t          j        |          }||z
  }t          |d	d d f         d           t          t          j	        |dd          d
          |dd                     |d	         |d	         	                                k    sJ d S )Nr4   r5   r   r|   r5   r   r4   r5   Fr   r#   rm   rn   r   rY   )
r;   r<   r   r   r=   r9   rT   r$  r&   r[   )r@   rA   	multi_clfovo_predictionovo_decisionr(  normalized_confidencess          rB   test_ovo_tiesr7    s'    	1a&1a&2q'B8455A
A":eaT#R#R#RSSI]]1a((0033N..q11L H\""E)E1 uQT{A&&&ryqrr333^ABB5GHHH! 6q 9 @ @ B BBBBBBBrP   c                  X   t          j        ddgddgddgddgg          } t          j        g d          }t          d          D ]c}||z   dz  }t          t	          ddd 	                    }|                    | |                              |           }|d
         |dz  k    sJ dd S )Nr4   r5   r   r|   r1  r.   Fr   r2  r   )r;   r<   r#  r   r   r=   r9   )r@   y_refr*  rA   r3  r4  s         rB   test_ovo_ties2r:    s    
1a&1a&2q'B8455AH\\\""E 1XX * *QY!O&z%!QU'V'V'VWW	"q!,,44Q77a AE)))))	* *rP   c                     t          j        d          } t          j        g d          }t          t	                                }|                    | |           t          ||                    |                      d S )Nr   )r  bcd)r;   eyer<   r   r   r=   r&   r9   )r@   rA   r  s      rB   test_ovo_string_yr@    sg    
q		A
%%%&&A
Y[[
)
)CGGAqMMMq#++a..)))))rP   c                  ,   t          j        d          } t          j        dgdz            }t          t	                                }d}t          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r  zwhen only one classr2   )	r;   r?  r<   r   r   r7   r8   r:   r=   r@   rA   r  r?   s       rB   test_ovo_one_classrC    s    
q		A
#A
Y[[
)
)C
C	z	-	-	-  1                 s   %B		BBc                     t           j        } t           j        d d df         }t          t                                }d}t	          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S Nr   zUnknown label typer2   )r`   ra   r   r   r7   r8   r:   r=   rB  s       rB   test_ovo_float_yrF    s    	A	!!!Q$A
Y[[
)
)C
C	z	-	-	-  1                    A??BBc                      t          t          d                    } t          j        t                    5  |                     g            d d d            d S # 1 swxY w Y   d S r  )r   r   r7   r8   r
   r9   ecocs    rB   test_ecoc_exceptionsrK    s    	q 9 9 9::D	~	&	&  R                 r	  c                  &   t          t          d          dd          } |                     t          j        t          j                                      t          j                   t          | j                  t          dz  k    sJ t          t                      dd          } |                     t          j        t          j                                      t          j                   t          | j                  t          dz  k    sJ d S )Nr   r0   r5   )	code_sizer1   )r   r   r=   r`   ra   rb   r9   rS   rc   rd   r   rI  s    rB   test_ecoc_fit_predictrN    s    	q 9 9 9QUVWWWDHHTY$$,,TY777t  IM1111  11MMMDHHTY$$,,TY777t  IM111111rP   c                      t          t          d          d          } g d}t          | d|i          }|                    t          j        t          j                   |j        j        d         j	        }||v sJ d S r   )
r   r   r   r=   r`   ra   rb   r   rc   r   )rJ  r   r   r   s       rB   test_ecoc_gridsearchrP    sx    	q 9 9 9JJJD	B	d^R0	1	1BFF49dk"""+A.0FR<<<<<<rP   c                     t           j        } t           j        d d df         }t          t                                }d}t	          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S rE  )r`   ra   r   r   r7   r8   r:   r=   rB  s       rB   test_ecoc_float_yrR    s    	A	!!!Q$A
y{{
+
+C
C	z	-	-	-  1                 rG  csc_containerc                    t           j        t           j        }} | |          }t          t          ddd          }t          |d          }t          j        t          d          5  |	                    ||           d d d            n# 1 swxY w Y   |	                    ||           t          j        t          d          5  |
                    |           d d d            n# 1 swxY w Y   t          t          d                    }|	                    ||          
                    |           t          |j                  d	k    sJ d S )
NTF)	ensure_2daccept_sparse)check_Xcheck_X_paramsr   r0   zSparse data was passedr2   r   )r`   ra   rb   r$   r"   r   r7   r8   	TypeErrorr=   r9   r   rS   rc   )rS  r@   rA   X_spbase_estimatorrJ  s         rB   (test_ecoc_delegate_sparse_base_estimatorr\    s    9dkqA=D (%)EBB  N  Q???D	y(@	A	A	A  q               	HHQNNN	y(@	A	A	A  T                	q 9 9 9::DHHT1d###t  A%%%%%%s$   )BBBC**C.1C.c                  l   t          j        d          } t          j        t          j        }}t          |           }t          j        ||j                  }|	                    ||           t          |j                  }|j        }|D ])}|j        d         |z  |dz
  z  |j        d         k    sJ *d S )Nprecomputedkernelr   r4   )r   r   r`   ra   rb   r   r;   dotr   r=   rS   rc   pairwise_indices_r   )clf_precomputedr@   rA   	ovr_falselinear_kerneln_estimatorsprecomputed_indicesidxs           rB   test_pairwise_indicesri    s    g]333O9dkqA"?33IF1acNNMMM-###y,--L#5" 
 
IaL<'<!+;<@STU@VVVVVV
 
rP   c                     t           j        t           j        }} |d         dk    sJ | dd         } |dd         }| j        dk    sJ t	          j        d                              | |          }|j        dk    sJ t          |                              | |          }|j        dk    sJ |j	        D ]}|j        dk    sJ t          |                              | |          }|j        dk    sJ |j        dk    sJ t          |j	                  dk    sJ |j	        D ]}|j        dk    sJ | | j        z  }|j        d	k    sJ t	          j        d
                              ||          }|j        dk    sJ t          |                              ||          }|j        dk    sJ |j        dk    sJ t          |j	                  dk    sJ |j	        D ]}|j        dk    sJ t          |                              ||          }	|	j        dk    sJ |j        dk    sJ t          |j	                  dk    sJ |	j	        d         j        dk    sJ |	j	        d         j        dk    sJ |	j	        d         j        dk    sJ dS )a  Check the n_features_in_ attributes of the meta and base estimators

    When the training data is a regular design matrix, everything is intuitive.
    However, when the training data is a precomputed kernel matrix, the
    multiclass strategy can resample the kernel matrix of the underlying base
    estimator both row-wise and column-wise and this has a non-trivial impact
    on the expected value for the n_features_in_ of both the meta and the base
    estimators.
    r|   r   N)   r   linearr_  r   r.   )rk  rk  r^  rk  c   r4   r5   rj   )r`   ra   rb   r   r   r   r=   n_features_in_r   rc   r   
n_classes_rS   r   )
r@   rA   clf_notprecomputedovr_notprecomputedestovo_notprecomputedKrc  ovr_precomputedovo_precomputeds
             rB   test_pairwise_n_features_inrw  .  s    9dkqA R5A::::	#2#A	#2#A 7h11155a;;,1111,-?@@DDQJJ,1111!- ' '!Q&&&&&+,>??CCAqII,1111(A----!-..!3333!- ' '!Q&&&&& 	
ACA7j    g]333771==O)S0000)/::>>q!DDO)S0000%*****++q0000* ) )!S((((( )99==aCCO)S0000%*****++q0000&q)8B>>>>&q)8B>>>>&q)8C??????rP   MultiClassClassifierc                    t          j        d          }t          j                    } | |          }|                                j        j        rJ  | |          }|                                j        j        sJ d S )Nr^  r_  )r   r   __sklearn_tags__
input_tagspairwise)rx  rc  rp  rd  ovr_trues        rB   test_pairwise_tagr~  s  s     g]333O$$%788I))++6????##O44H$$&&1::::::rP   c                 V   t          j        d          }t          j        d          }t          j        t          j        }} | |          } | |          }t          j        ||j                  }t          |||d          }t          |||d          }	t          |	|           d S )Nr^  r_  rl  raise)error_score)
r   r   r`   ra   rb   r;   ra  r   r   r&   )
rx  rc  rp  r@   rA   multiclass_clf_notprecomputedmulticlass_clf_precomputedre  score_not_precomputedscore_precomputeds
             rB   test_pairwise_cross_val_scorer    s     g]333O1119dkqA$8$89K$L$L!!5!5o!F!FF1acNNM+%q!   ("M1'   (*?@@@@@rP   c                    t           j                            d          }t          j        t          j        }}t          j        |          }|                    ddg|j        ddg          	                    t                    }t           j        ||<   t          t                      t          |                    } | |                              ||                              ||           d S )N*   r4   r   r   r   )pr0   )r;   rs   RandomStater`   ra   rb   copychoicer   r   boolnanr   r   r   r=   r   )rx  rngr@   rA   masklrs         rB   test_support_missing_valuesr    s     )


#
#C9dkqA


A::q!fag#s:44;;DAADfAdG	}(:(L(L(L	M	MB  A&&,,Q22222rP   make_yc                 \   t          j        d          } | dt           j                  }t          t	                                }|                    ||           |                    |          }t          j        |j        d         df          }d|dddf<   t          ||           dS )zUCheck that constant y target does not raise.

    Non-regression test for #21869
    r   )r   r4   )dtyper   r5   r4   N)
r;   r   int32r   r   r=   r   rR   r   r   )r  r@   rA   r>   r   expecteds         rB   test_constant_int_targetr    s     	Awbh'''A
022
3
3CGGAqMMMq!!FxQ((HHQQQTNFH%%%%%rP   c                  0   t          d          \  } }t          dd          }t          |          }|                    | |           |                    | |           t	          |                    |           |                    |                      dS )z^Check that ovo is consistent with binary classifier.

    Non-regression test for #13617.
    T)
return_X_y   distance)n_neighborsweightsN)r	   r   r   r=   r&   r9   )r@   rA   r\   r  s       rB   )test_ovo_consistent_binary_classificationr    s    
 ...DAq
1j
A
A
AC
S
!
!CGGAqMMMGGAqMMMs{{1~~s{{1~~66666rP   c                     t          j                    } t          t          d                    }d}d}t	          j        t          |          5 }|                    | j        | j	                   ddd           n# 1 swxY w Y   t          |j        j        t                    sJ |t          |j        j                  v sJ dS )a  Check that we raise the proper AttributeError when the final estimator
    does not implement the `partial_fit` method, which is decorated with
    `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    r  r0   )	estimatorz9This 'OneVsRestClassifier' has no attribute 'partial_fit'z:'LogisticRegression' object has no attribute 'partial_fit'r2   N)r   r  r   r   r7   r8   AttributeErrorrp   ra   rb   
isinstancevalue	__cause__str)r`   r\   	outer_msg	inner_msg	exec_infos        rB   )test_multiclass_estimator_attribute_errorr    s     D (:(K(K(K
L
L
LCKILI	~Y	7	7	7 09	4;///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0io/@@@@@IO566666666s   !A>>BB)rer   numpyr;   r7   scipy.sparsesparser   numpy.testingr   sklearnr   r   sklearn.baser   r   sklearn.datasetsr	   sklearn.exceptionsr
   sklearn.imputer   sklearn.linear_modelr   r   r   r   r   r   r   sklearn.metricsr   r   sklearn.model_selectionr   r   sklearn.multiclassr   r   r   sklearn.naive_bayesr   sklearn.neighborsr   sklearn.pipeliner   r   sklearn.svmr   r   sklearn.treer    r!   sklearn.utilsr"   r#   sklearn.utils._mockingr$   sklearn.utils._testingr%   r&   sklearn.utils.fixesr'   r(   r)   r*   r+   sklearn.utils.multiclassr,   r-   r  r`   rs   r  r  permutationrb   sizepermra   rd   rC   rG   r]   rh   ry   r~   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r-  r/  r7  r:  r@  rC  rF  rK  rN  rP  rR  r\  ri  rw  r~  r  r  r   rR   r  r  r  rM   rP   rB   <module>r     s                    ) ) ) ) ) ) ! ! ! ! ! ! ! ! 7 7 7 7 7 7 7 7 / / / / / / - - - - - - ( ( ( ( ( (                  : 9 9 9 9 9 9 9 A A A A A A A A         
 . - - - - - 2 2 2 2 2 2 4 4 4 4 4 4 4 4 & & & & & & & & F F F F F F F F        6 5 5 5 5 5 J J J J J J J J              R Q Q Q Q Q Q QxiA
t{'((IdO	k$	7 7 7(( ( (T T T&/ / / !+ !+ !+H
' 
' 
'. . .$ ^#n4~EV &E &E	 &ER!< !< !<H. . .4%8 %8 %8P  &3 3 3
 
 
4*) *) *)Z% % %*" " "2  $W W W  	L 	L 	L  	D 	D 	D	C 	C 	C2+ 2+ 2+j,= ,= ,=^  C C C0
* 
* 
** * *      	2 	2 	2     .99& & :9&4
 
 
"B@ B@ B@J 02DE ; ; ; 02DE A A A& 02DE 
3 3 
3 BGRX#677& & 87& 7 7 7 7 7 7 7 7rP   