
    0Ph\                        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 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,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZB  ejC                    ZDejE        F                    d           ZGeGH                    eDjI        jJ                  ZKeDjL        eK         eD_L        eDjI        eK         eD_I        dZMd ZNd ZOd ZPd ZQd ZRd ZSejT        U                    de=e<z   e;z   e>z   e?z             d             ZVd ZWd  ZXd! ZYd" ZZd# Z[d$ Z\d% Z]d& Z^d' Z_d( Z`d) Zad* Zbd+ Zcd, Zdd- Zed. Zfd/ Zgd0 Zhd1 Zid2 Zjd3 Zkd4 Zld5 Zmd6 Znd7 Zod8 Zpd9 ZqejT        U                    d:e<          d;             Zrd< Zsd= ZtejT        U                    d>e#e"g          d?             ZuejT        U                    d>e#e"g          d@             ZvejT        U                    d>e#e"g          dA             ZwejT        U                    dBejx        ejy        g          dC             ZzdD Z{dE Z|dS )F    )escapeN)assert_allclose)datasetssvm)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/test/jupyter/venv/lib/python3.11/site-packages/sklearn/tests/test_multiclass.pytest_ovr_exceptionsrA   8   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      @r0   )r9   r:   r+   r5   r6   r8   r*   )r?   r=   s     r@   !test_check_classification_targetsrE   L   s    
%%%&&A


C	z	-	-	- ( ($Q'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   AA"%A"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   r.   ?)r   r   r;   irisdatatargetr7   lenestimators_	n_classesr9   meanr   )r<   predclfpred2s       r@   test_ovr_fit_predictrR   T   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;$&''$......    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   r.   d   rG      r3   r2   r2   r2   r2   r3   r,   r,   r   r   r3   r,   r2   r3   r,   r2   F)max_itertolr!   r/      partial_fit)r!   rH   rI   rJ   r   r   r[   r9   uniquer7   r;   r#   rK   rL   rN   absrandomrandnr   r   hasattr)r>   r?   r<   rO   ovr2rQ   ovr1pred1s           r@   test_ovr_partial_fitrd   d   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*******rS   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 )
NrV   r3   rW   rZ      zAMini-batch contains \[.+\] while classes must be subset of \[.+\]r0   )r>   r?   )r   r   r9   r]   r^   r_   r[   r\   r5   r6   r8   )r<   r>   r?   y1r=   s        r@   test_ovr_partial_fit_exceptionsri      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   r2   r3   ?r2   r3   )r   r   r;   rH   rI   rJ   r7   rK   rL   rM   r$   r9   r\   rN   r   )r<   rO   s     r@   test_ovr_ovo_regressorrl      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;&''#------rS   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 )Nr2   alpharU      rf   r,   2   Tr   	n_samples
n_featuresrM   n_labelslengthallow_unlabeledr/   P         ?)r   r   make_multilabel_classificationr   r;   r7   multilabel_spissparser$   toarraypredict_probar   r   decision_functionastypeint)rm   base_clfr>   YX_trainY_trainX_testrP   Y_predclf_sprsY_pred_sprsY_probarO   dec_preds                 r@   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DrS   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
   r3   r   rf   )r   r,   r2   r3   z,Label .+ is present in all training examplesr0   rg   z/Label not 1 is present in all training examples)r9   oneszerosr   r   r5   warnsUserWarningr;   r7   r$   r:   r   r\   r   shape)r>   r?   r<   r=   y_preds        r@   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   rf   r   rf   r   r,   r   r   r   r      r   r   r   )eggsspamhamr   r   )r   r   r2   r   r2   r   r2   r   r   zham eggs spamr   r.   r   r      r   )r9   r:   setsplitr   r   r   r   r
   r   r;   classes_r7   r$   )r>   r?   r   classesr   rP   r   s          r@   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----. .rS   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   r2   r2   r   r2   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   r   )rf   r3   r2   axisr   )r   r;   r   r   r7   r9   r:   r$   r`   r   r   r   rK   argmax)r   test_predict_probarP   r   decr   probabilitiesr>   r   r   r?   s          r@   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[))!,{{{{{{rS   r   r.   Tprobability)r   )F)r9   r:   Tr   r   r   r   r   r
   r   r   r   )r   r   r>   r   r   r?   s     @@@@r@   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 8rS   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   rf   r   )r,   r,   r,   )r   r   r   r   )r   r2   r2   r   )r2   r2   r2   )r2   r   r2   r   r   r.   rz   ro   )r   r   r   )r9   r:   r   r   r   r   r
   r   r   r;   r7   r$   r|   )r>   r?   r   rP   r   s        r@   test_ovr_multilabelr   :  s   
)))YYY			999iiiHIIA
)))YYY			999iiiHIIA 	q!!!C   "(++//155iii[))!,6999--- rS   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,   rk   )
r   r   r   r;   rH   rI   rJ   rK   rL   score)r<   s    r@   test_ovr_fit_predict_svcr   M  sq    
cgii
(
(CGGDIt{###s1$$$$99TY,,s222222rS   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 )Nr2   ro   )TF)RQ?gQ?)r   r4   rU   rq   rf   r3   rr   r   rs   ry   micro)average)decimal)r   zipr   r{   r   r;   r7   r|   r#   r   r   )r   auprecrecallr>   r   r   r   r   Y_testrP   r   s               r@   test_ovr_multilabel_datasetr   T  s?   1%%%H|\JJ 
 
D&6
 
 
1 SbS61SbS6233233!(++//AAV$$FFG<<<dA	
 	
 	
 	
 	99961	
 	
 	
 	
 	
'
 
rS   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 )Nr2   ro   )FTrU   rq   rf   r,   rr   r   rs   ry   r   Fr   r   r   T)
param_gridrz   )r   r   r{   r   r;   r   SVRr`   r   r   r7   r   r$   )r   r   r>   r   r   r   r   rP   decision_onlygsproba_after_fitr   r   rO   s                 r@   !test_ovr_multilabel_predict_probar   n  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() ()rS   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 )Nr2   ro   ry   r   r         ?)r   rH   rI   rJ   r   r;   r   r   r`   r7   r   r#   sumr   any)r   r>   r   r   r   r   rP   r   r   r   rO   s              r@   #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""$$$$$$$rS   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 )
NrU   rq   rf   r,   rr   Tr   rs   ry   )r   r{   r   r   r   r;   r$   r   r   r   r7   r>   r   r   r   r   rP   s         r@   %test_ovr_multilabel_decision_functionr     s    2  DAq "vq"vWGrssVF
cgii
(
(
,
,Wg
>
>C			v	&	&	*22377V9L9L    rS   c                  v   t          j        ddd          \  } }| d d         |d d         }}| dd          }t          t          j                                                  ||          }t          |                    |                                          dk    |	                    |                     d S )NrU   rq   r   )rt   ru   r/   ry   )
r   make_classificationr   r   r   r;   r$   r   ravelr7   r   s         r@   '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VrS   c                      t          t          d                    } g d}t          | d|i          }|                    t          j        t          j                   |j        j        d         j	        }||v sJ d S Nr   r.   )皙?rz   r4   estimator__C)
r   r   r   r;   rH   rI   rJ   best_estimator_rL   C)r<   Cscvbest_Cs       r@   test_ovr_gridsearchr     ss    
iQ777
8
8C	B	cNB/	0	0BFF49dk"""+A.0FR<<<<<<rS   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;   rH   rI   rJ   r$   r7   )rP   ovr_piper<   s      r@   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KrS   c                      t          t          d                    } t          j        t                    5  |                     g            d d d            d S # 1 swxY w Y   d S Nr   r.   )r   r   r5   r6   r   r7   ovos    r@   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   r.   c                 ,    g | ]}t          |          S  )list).0as     r@   
<listcomp>z(test_ovo_fit_on_list.<locals>.<listcomp>  s    111!d1gg111rS   )	r   r   r;   rH   rI   rJ   r7   r   r$   )r   prediction_from_arrayiris_data_listprediction_from_lists       r@   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CrS   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   r.   r2   r3   )r   r   r;   rH   rI   rJ   r7   rK   rL   rM   r   r   s    r@   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BrS   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 )NrU   r2   r3   rG   <   rV   )r2   r2   r3   r,   r,   r   r   r   r   r   r   r   r3   r3   rZ   )r   r2   r3   r,   r   )r   r2   r3   r,   r   rf   r3   z6Mini-batch contains {0} while it must be subset of {1}r0   r[   )r   	load_irisrI   rJ   r   r   r[   r9   r\   r7   r;   rK   rL   rM   rN   r#   r^   randr   formatr5   r6   r8   r   r`   )tempr>   r?   ovo1rc   ovo2rQ   r   rO   error_y
message_rer<   s               r@   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   r.   r2   r   )rC   r   rD      )rH   rI   r   r   r   r;   rJ   r   rM   r$   r   r7   r9   r   rangerL   roundr   issubsetrK   r\   )	rt   ovo_clf	decisionsvoteskijrO   	class_idxs	            r@   test_ovo_decision_functionr  2  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<<<<<= =rS   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;   rH   rI   rJ   r   rL   r   )r   r   r   r   s       r@   test_ovo_gridsearchr  a  ss    
YA666
7
7C	B	cNB/	0	0BFF49dk"""+A.0FR<<<<<<rS   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 )Nr2   r3   r   rg   r3   r   r2   r3   Fr   r!   rX   rY   r   r   )
r9   r:   r   r   r;   r7   r   r  r$   r   )r>   r?   	multi_clfovo_predictionovo_decisionr  normalized_confidencess          r@   test_ovo_tiesr  j  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BrS   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 )Nr2   r3   r   rg   r  r,   Fr   r  r   )r9   r:   r  r   r   r;   r7   )r>   y_refr  r?   r  r  s         r@   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)))))	* *rS   c                     t          j        d          } t          j        g d          }t          t	                                }|                    | |           t          ||                    |                      d S )Nr   )r   bcd)r9   eyer:   r   r   r;   r$   r7   )r>   r?   r   s      r@   test_ovo_string_yr(    sg    
q		A
%%%&&A
Y[[
)
)CGGAqMMMq#++a..)))))rS   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 classr0   )	r9   r'  r:   r   r   r5   r6   r8   r;   r>   r?   r   r=   s       r@   test_ovo_one_classr+    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 typer0   )rH   rI   r   r   r5   r6   r8   r;   r*  s       r@   test_ovo_float_yr.    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   r5   r6   r   r7   ecocs    r@   test_ecoc_exceptionsr3    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   r.   r3   )	code_sizer/   )r   r   r;   rH   rI   rJ   r7   rK   rL   rM   r   r1  s    r@   test_ecoc_fit_predictr6    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1rS   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;   rH   rI   rJ   r   rL   r   )r2  r   r   r   s       r@   test_ecoc_gridsearchr8    sx    	q 9 9 9JJJD	B	d^R0	1	1BFF49dk"""+A.0FR<<<<<<rS   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 r-  )rH   rI   r   r   r5   r6   r8   r;   r*  s       r@   test_ecoc_float_yr:    s    	A	!!!Q$A
y{{
+
+C
C	z	-	-	-  1                 r/  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   r.   zSparse data was passedr0   r   )rH   rI   rJ   r"   r    r   r5   r6   	TypeErrorr;   r7   r   rK   rL   )r;  r>   r?   X_spbase_estimatorr2  s         r@   (test_ecoc_delegate_sparse_base_estimatorrD    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   r2   )r   r   rH   rI   rJ   r   r9   dotr   r;   rK   rL   pairwise_indices_r   )clf_precomputedr>   r?   	ovr_falselinear_kerneln_estimatorsprecomputed_indicesidxs           r@   test_pairwise_indicesrQ    s    g]333O9dkqA"?33IF1acNNMMM-###y,--L#5" 
 
IaL<'<!+;<@STU@VVVVVV
 
rS   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.
    rg   r   N)   r   linearrG  r   r,   )rS  rS  rF  rS  c   r2   r3   rU   )rH   rI   rJ   r   r   r   r;   n_features_in_r   rL   r   
n_classes_rK   r   )
r>   r?   clf_notprecomputedovr_notprecomputedestovo_notprecomputedKrK  ovr_precomputedovo_precomputeds
             r@   test_pairwise_n_features_inr_    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??????rS   MultiClassClassifierc                    t          j        d          }t          j                    } | |          }|                                j        j        rJ  | |          }|                                j        j        sJ d S )NrF  rG  )r   r   __sklearn_tags__
input_tagspairwise)r`  rK  rX  rL  ovr_trues        r@   test_pairwise_tagrf  F  s     g]333O$$%788I))++6????##O44H$$&&1::::::rS   c                 V   t          j        d          }t          j        d          }t          j        t          j        }} | |          } | |          }t          j        ||j                  }t          |||d          }t          |||d          }	t          |	|           d S )NrF  rG  rT  raise)error_score)
r   r   rH   rI   rJ   r9   rI  r   r   r$   )
r`  rK  rX  r>   r?   multiclass_clf_notprecomputedmulticlass_clf_precomputedrM  score_not_precomputedscore_precomputeds
             r@   test_pairwise_cross_val_scorern  T  s     g]333O1119dkqA$8$89K$L$L!!5!5o!F!FF1acNNM+%q!   ("M1'   (*?@@@@@rS   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*   r2   r   r   rk   )pr.   )r9   r^   RandomStaterH   rI   rJ   copychoicer   r   boolnanr   r	   r   r;   r   )r`  rngr>   r?   masklrs         r@   test_support_missing_valuesrz  j  s     )


#
#C9dkqA


A::q!fag#s:44;;DAADfAdG	}(:(L(L(L	M	MB  A&&,,Q22222rS   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   r2   )dtyper   r3   r2   N)
r9   r   int32r   r   r;   r   r   r   r   )r{  r>   r?   r<   r   expecteds         r@   test_constant_int_targetr  }  s     	Awbh'''A
022
3
3CGGAqMMMq!!FxQ((HHQQQTNFH%%%%%rS   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$   r7   )r>   r?   rP   r   s       r@   )test_ovo_consistent_binary_classificationr    s    
 ...DAq
1j
A
A
AC
S
!
!CGGAqMMMGGAqMMMs{{1~~s{{1~~66666rS   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
    rp  r.   )	estimatorz9This 'OneVsRestClassifier' has no attribute 'partial_fit'z:'LogisticRegression' object has no attribute 'partial_fit'r0   N)r   r   r   r   r5   r6   AttributeErrorr[   rI   rJ   
isinstancevalue	__cause__str)rH   rP   	outer_msg	inner_msg	exec_infos        r@   )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   numpyr9   r5   scipy.sparsesparser}   numpy.testingr   sklearnr   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   rH   r^   rr  rw  permutationrJ   sizepermrI   rM   rA   rE   rR   rd   ri   rl   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r(  r+  r.  r3  r6  r8  r:  rD  rQ  r_  rf  rn  rz  r   r   r  r  r  r   rS   r@   <module>r     s                    ) ) ) ) ) ) ! ! ! ! ! ! ! ! / / / / / / - - - - - - ( ( ( ( ( (                  : 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(( ( (/ / / !+ !+ !+H
' 
' 
'. . .$ ^#n4~EV &E &E	 &ER!< !< !<H. . .4%8 %8 %8P  &3 3 3
 
 
4*) *) *)Z% % %*  $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 7rS   