
    PiP              	          d Z ddlZddlZddl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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mZ ddlmZ ddlmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z( ej)        *                    d          Z+ddgddgddgddgddgddggZ,g dZ-g dZ.ddgddgddggZ/g dZ0g dZ1 ej2                    Z3e+4                    e3j5        j6                  Z7 ee3j8        e3j5        e+          \  e3_8        e3_5         ej9                    Z: ee:j8        e:j5        e+          \  e:_8        e:_5        d Z;d Z<d Z=d Z>ej?        @                    dg d          d             ZAd  ZBd! ZCd" ZDd# ZEd$ ZFd% ZGd& ZHej?        @                    d' eIg e%e&e(e$e'e%d(e&z  z                       d)             ZJej?        @                    d' eIg e%e&e(e$e'e%d(e&z  z                       d*             ZKd+ ZLd, ZMd- ZNd. ZOd/ ZPej?        @                    d0 e            e3j8        e3j5        f e            e:j8        e:j5        fg          d1             ZQd2 ZRd3 ZSdS )4z6Testing for the boost module (sklearn.ensemble.boost).    N)datasets)BaseEstimatorclone)DummyClassifierDummyRegressor)AdaBoostClassifierAdaBoostRegressor)LinearRegression)GridSearchCVtrain_test_split)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)shuffle)NoSampleWeightWrapper)assert_allcloseassert_array_almost_equalassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS      )foor   r   r   r   r   )r   r   r   r   r   r      )r   r   r   )r   r   r   random_statec                  <   t          j        t          t                              } t	                                          t          |           }t          |                    t                    t          j        t          t                    df                     d S )Nr   )nponeslenXr   fitr   predict_proba)y_tclfs     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/ensemble/tests/test_weight_boosting.pytest_oneclass_adaboost_probar-   6   sj     '#a&&//C



"
"1c
*
*Cc//22BGSVVQK4H4HIIIII    c                     t          d          } |                     t          t                     t	          |                     t                    t                     t	          t          j	        t          j
        t                              | j                   |                     t                    j        t          t                    dfk    sJ |                     t                    j        t          t                    fk    sJ d S )Nr   r!   r   )r   r(   r'   y_classr   predictT	y_t_classr$   uniqueasarrayclasses_r)   shaper&   decision_functionr+   s    r,   test_classification_toyr:   ?   s    
!
,
,
,CGGAws{{1~~y111ryI!6!677FFFQ%#a&&!4444  ##)c!ffY666666r.   c                      t          d          } |                     t          t                     t	          |                     t                    t                     d S Nr   r!   )r	   r(   r'   y_regrr   r1   r2   y_t_regrr9   s    r,   test_regression_toyr?   I   sF    

+
+
+CGGAvs{{1~~x00000r.   c                     t          j        t          j                  } t	                      }|                    t          j        t          j                   t          | |j                   |	                    t          j                  }|j
        d         t          |           k    sJ |                    t          j                  j
        d         t          |           k    sJ |                    t          j        t          j                  }|dk    sJ d|            t          |j                  dk    sJ t          t          d |j        D                                 t          |j                  k    sJ d S )Nr   g?zFailed with score = c              3   $   K   | ]}|j         V  d S Nr!   .0ests     r,   	<genexpr>ztest_iris.<locals>.<genexpr>c   %      ??3#??????r.   )r$   r4   iristargetr   r(   datar   r6   r)   r7   r&   r8   scoreestimators_set)classesr+   probarK   s       r,   	test_irisrP   P   s;   i$$G


CGGDIt{###w---di((E;q>S\\))))  ++1!4GDDDDIIdi--E3;;;1u11;;; s!####s??s?????@@CDXDXXXXXXXr.   loss)linearsquareexponentialc                    t          | d          }|                    t          j        t          j                   |                    t          j        t          j                  }|dk    sJ t          |j                  dk    sJ t          t          d |j        D                                 t          |j                  k    sJ d S )Nr   )rQ   r"   g?r   c              3   $   K   | ]}|j         V  d S rB   r!   rC   s     r,   rF   z test_diabetes.<locals>.<genexpr>q   rG   r.   )	r	   r(   diabetesrJ   rI   rK   r&   rL   rM   )rQ   regrK   s      r,   test_diabetesrY   f   s     A
6
6
6CGGHM8?+++IIhmX_55E4<<<< s!####s??s?????@@CDXDXXXXXXXr.   c                     t           j                            d          } |                     dt          j        j                  }|                     dt          j        j                  }t          d          }|	                    t          j
        t          j        |           |                    t          j
                  }d |                    t          j
                  D             }|                    t          j
                  }d |                    t          j
                  D             }|                    t          j
        t          j        |          }d |                    t          j
        t          j        |          D             }	t#          |          dk    sJ t%          ||d	                    t#          |          dk    sJ t%          ||d	                    t#          |	          dk    sJ t%          ||	d	                    t'          dd
          }|	                    t          j
        t          j        |           |                    t          j
                  }d |                    t          j
                  D             }|                    t          j
        t          j        |          }d |                    t          j
        t          j        |          D             }	t#          |          dk    sJ t%          ||d	                    t#          |	          dk    sJ t%          ||	d	                    d S )Nr   
   sizen_estimatorssample_weightc                     g | ]}|S  rc   rD   ps     r,   
<listcomp>z'test_staged_predict.<locals>.<listcomp>~   s    CCC!CCCr.   c                     g | ]}|S rc   rc   rd   s     r,   rf   z'test_staged_predict.<locals>.<listcomp>   s    DDD1QDDDr.   c                     g | ]}|S rc   rc   rD   ss     r,   rf   z'test_staged_predict.<locals>.<listcomp>   s%         r.   r   r_   r"   c                     g | ]}|S rc   rc   rd   s     r,   rf   z'test_staged_predict.<locals>.<listcomp>   s    GGG!GGGr.   c                     g | ]}|S rc   rc   ri   s     r,   rf   z'test_staged_predict.<locals>.<listcomp>   s(        	
  r.   )r$   randomRandomStaterandintrH   rI   r7   rW   r   r(   rJ   r1   staged_predictr)   staged_predict_probarK   staged_scorer&   r   r	   )
rngiris_weightsdiabetes_weightsr+   predictionsstaged_predictionsrO   staged_probasrK   staged_scoress
             r,   test_staged_predictr{   t   s   
)


"
"C;;r(9;::L{{2HO,A{BB
"
-
-
-CGGDIt{,G???++di((KCCS%7%7	%B%BCCCdi((EDD 8 8 C CDDDMIIdiLIIIE ##DIt{,#WW  M !""b((((k+=b+ABBB}####e]2%6777}####e]2%6777 !
<
<
<CGGHM8?:JGKKK++hm,,KGGS%7%7%F%FGGGIIhmX_DTIUUE !!M8?:J " 
 
  M !""b((((k+=b+ABBB}####e]2%677777r.   c                  t   t          t                                } ddd}t          | |          }|                    t          j        t          j                   t          t                      d          } ddd}t          | |          }|                    t          j        t          j                   d S )N	estimator)r   r   )r_   estimator__max_depthr   r~   r"   )
r   r   r   r(   rH   rJ   rI   r	   r   rW   )boost
parametersr+   s      r,   test_gridsearchr      s     )?)A)ABBBE & J uj
)
)CGGDIt{### (=(?(?aPPPE"(&IIJ
uj
)
)CGGHM8?+++++r.   c                  r   dd l } t                      }|                    t          j        t          j                   |                    t          j        t          j                  }|                     |          }|                     |          }t          |          |j
        k    sJ |                    t          j        t          j                  }||k    sJ t          d          }|                    t          j        t          j                   |                    t          j        t          j                  }|                     |          }|                     |          }t          |          |j
        k    sJ |                    t          j        t          j                  }||k    sJ d S r<   )pickler   r(   rH   rJ   rI   rK   dumpsloadstype	__class__r	   rW   )r   objrK   rj   obj2score2s         r,   test_pickler      sF   MMM 

CGGDIt{###IIdi--ESA<<??D::&&&&ZZ	4;//FF???? 
+
+
+CGGHM8?+++IIhmX_55ESA<<??D::&&&&ZZx77FF??????r.   c            	      *   t          j        ddddddd          \  } }t                      }|                    | |           |j        }|j        d         dk    sJ |d dt          j        f         |dd          k                                    sJ d S )Ni  r[   r    r   Fr   )	n_samples
n_featuresn_informativen_redundant
n_repeatedr   r"   )	r   make_classificationr   r(   feature_importances_r7   r$   newaxisall)r'   yr+   importancess       r,   test_importancesr      s    '  DAq 

CGGAqMMM*KQ2%%%%BJ';qrr?:??AAAAAAAr.   c                     t                      } t          j        d          }t          j        t
          |          5  |                     t          t          t          j
        dg                     d d d            d S # 1 swxY w Y   d S )Nz*sample_weight.shape == (1,), expected (6,)matchr   r`   )r   reescapepytestraises
ValueErrorr(   r'   r0   r$   r5   )r+   msgs     r,   ,test_adaboost_classifier_sample_weight_errorr      s    


C
)@
A
AC	z	-	-	- < <7"*bT*:*:;;;< < < < < < < < < < < < < < < < < <s   6BBBc                     ddl m}  t           |                       }|                    t          t
                     t          t                                }|                    t          t                     ddl m} t           |            d          }|                    t          t
                     t          t                      d          }|                    t          t
                     ddgddgddgddgg}g d}t          t                                }t          j        t          d          5  |                    ||           d d d            d S # 1 swxY w Y   d S )	Nr   )RandomForestClassifier)RandomForestRegressorr!   r   )r   barr   r   zworse than randomr   )sklearn.ensembler   r   r(   r'   r=   r   r0   r   r	   r   r   r   r   )r   r+   r   X_faily_fails        r,   test_estimatorr      s   777777 3355
6
6CGGAv
SUU
#
#CGGAw666666
1133!
D
D
DCGGAv
CEE
2
2
2CGGAv !fq!fq!fq!f-F!!!F
SUU
#
#C	z)<	=	=	=                                       s   =E!!E%(E%c                      d} t          dd          }t          j        t          |           5  |                    t
          j        t
          j                   d d d            d S # 1 swxY w Y   d S )Nz+Sample weights have reached infinite values   g      7@)r_   learning_rater   )r   r   warnsUserWarningr(   rH   rJ   rI   )r   r+   s     r,   test_sample_weights_infiniter     s    
7C
"D
A
A
AC	k	-	-	- ( (	4;'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   +A''A+.A+z(sparse_container, expected_internal_type   c                     G d dt                     }t          j        dddd          \  }}t          j        |          }t          ||d	          \  }}}} | |          }	 | |          }
t           |d
          d                              |	|          }t           |d
          d                              ||          }|                    |
          }|                    |          }t          ||           |
                    |
          }|
                    |          }t          ||           |                    |
          }|                    |          }t          ||           |                    |
          }|                    |          }t          ||           |                    |
|          }|                    ||          }t          ||           |                    |
          }|                    |          }t!          ||          D ]\  }}t          ||           |                    |
          }|                    |          }t!          ||          D ]\  }}t          ||           |                    |
          }|                    |          }t!          ||          D ]\  }}t          ||           |                    |
|          }|                    ||          }t!          ||          D ]\  }}t          ||           d |j        D             }t+          fd|D                       sJ d S )Nc                   $     e Zd ZdZd fd	Z xZS )-test_sparse_classification.<locals>.CustomSVCz8SVC variant that records the nature of the training set.Nc                 x    t                                          |||           t          |          | _        | S z<Modification on fit caries data type for later verification.r`   superr(   r   
data_type_selfr'   r   ra   r   s       r,   r(   z1test_sparse_classification.<locals>.CustomSVC.fit!  1    GGKK1MK:::"1ggDOKr.   rB   __name__
__module____qualname____doc__r(   __classcell__r   s   @r,   	CustomSVCr     C        FF	 	 	 	 	 	 	 	 	 	r.   r   r         *   )	n_classesr   r   r"   r   r!   T)probabilityr   c                     g | ]	}|j         
S rc   r   rD   is     r,   rf   z.test_sparse_classification.<locals>.<listcomp>p  s    AAAaQ\AAAr.   c                     g | ]}|k    	S rc   rc   rD   texpected_internal_types     r,   rf   z.test_sparse_classification.<locals>.<listcomp>r      ;;;++;;;r.   )r   r   make_multilabel_classificationr$   ravelr   r   r(   r1   r   r8   r   predict_log_probar)   rK   staged_decision_functionziprq   rr   rs   rL   r   )sparse_containerr   r   r'   r   X_trainX_testy_trainy_testX_train_sparseX_test_sparsesparse_classifierdense_classifiersparse_clf_resultsdense_clf_resultssparse_clf_resdense_clf_restypess    `                r,   test_sparse_classificationr     s        C    2rab  DAq 	A'711'M'M'M$GVWf%%g..N$$V,,M +)---   
c.'""  *)---   
c'7  +22=AA(0088)+<=== +<<]KK(::6BB02CDDD +<<]KK(::6BB02CDDD +88GG(66v>>02CDDD +00GG(..vv>>02CDDD +CCMRR(AA&II),-?AR)S)S A A%!.-@@@@ +99-HH(77??),-?AR)S)S : :%>=9999 +??NN(==fEE),-?AR)S)S A A%!.-@@@@ +77vNN(55ffEE),-?AR)S)S : :%>=9999 BA#4#@AAAE;;;;U;;;<<<<<<<r.   c                     G d dt                     }t          j        dddd          \  }}t          ||d	          \  }}}} | |          }	 | |          }
t	           |            d
                              |	|          }t	           |            d
                              ||          }|                    |
          }|                    |          }t          ||           |                    |
          }|                    |          }t          ||          D ]\  }}t          ||           d |j
        D             }t          fd|D                       sJ d S )Nc                   $     e Zd ZdZd fd	Z xZS ))test_sparse_regression.<locals>.CustomSVRz8SVR variant that records the nature of the training set.Nc                 x    t                                          |||           t          |          | _        | S r   r   r   s       r,   r(   z-test_sparse_regression.<locals>.CustomSVR.fit  r   r.   rB   r   r   s   @r,   	CustomSVRr     r   r.   r   r   2   r   r   )r   r   	n_targetsr"   r   r!   r   c                     g | ]	}|j         
S rc   r   r   s     r,   rf   z*test_sparse_regression.<locals>.<listcomp>  s    @@@aQ\@@@r.   c                     g | ]}|k    	S rc   rc   r   s     r,   rf   z*test_sparse_regression.<locals>.<listcomp>  r   r.   )r   r   make_regressionr   r	   r(   r1   r   rq   r   rL   r   )r   r   r   r'   r   r   r   r   r   r   r   sparse_regressordense_regressorsparse_regr_resultsdense_regr_resultssparse_regr_resdense_regr_resr   s    `                r,   test_sparse_regressionr   u  s        C    #qr  DAq (811'M'M'M$GVWf%%g..N$$V,,M )99;;QOOOSS 
 ())++ANNNRR O
 +22=AA(008813EFFF +99-HH(77??+./BDV+W+W C C'!/>BBBB@@#3#?@@@E;;;;U;;;<<<<<<<r.   c                       G d dt                     } t           |             d          }|                    t          t                     t          |j                  t          |j                  k    sJ dS )z
    AdaBoostRegressor should work without sample_weights in the base estimator
    The random weighted sampling is done internally in the _boost method in
    AdaBoostRegressor.
    c                       e Zd Zd Zd ZdS )=test_sample_weight_adaboost_regressor.<locals>.DummyEstimatorc                     d S rB   rc   )r   r'   r   s      r,   r(   zAtest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.fit  s    Dr.   c                 @    t          j        |j        d                   S )Nr   )r$   zerosr7   )r   r'   s     r,   r1   zEtest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.predict  s    8AGAJ'''r.   N)r   r   r   r(   r1   rc   r.   r,   DummyEstimatorr     s2        	 	 		( 	( 	( 	( 	(r.   r  r    r^   N)r   r	   r(   r'   r=   r&   estimator_weights_estimator_errors_)r  r   s     r,   %test_sample_weight_adaboost_regressorr    s    ( ( ( ( ( ( ( ( nn..Q???E	IIau'((C0G,H,HHHHHHHr.   c                     t           j                            d          } |                     ddd          }|                     ddgd          }|                     d          }t          t          d                    }|                    ||           |                    |           |	                    |           t          t                                }|                    ||           |                    |           dS )zX
    Check that the AdaBoost estimators can work with n-dimensional
    data matrix
    r   3   r    r   most_frequent)strategyN)r$   rn   ro   randnchoicer   r   r(   r1   r)   r	   r   )rt   r'   ycyrr   s        r,   test_multidimensional_Xr    s    
 )


"
"C		"aA	QFB		B	2BHHHIIE	IIa	MM!	n..//E	IIa	MM!r.   c                  ^   t           j        t           j        }} t          t	                                }t          |          }d                    |j        j                  }t          j
        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr}   z {} doesn't support sample_weightr   )rH   rJ   rI   r   r   r   formatr   r   r   r   r   r(   )r'   r   r~   r+   err_msgs        r,   -test_adaboostclassifier_without_sample_weightr    s    9dkqA%o&7&788I
y
1
1
1C077	8K8TUUG	z	1	1	1  1                 s   >B""B&)B&c                     t           j                            d          } t          j        ddd          }d|z  dz   |                     |j        d                   dz  z   }|                    d	d
          }|d	xx         dz  cc<   d|d	<   t          t                      d
d          }t          |          }t          |          }|
                    ||           |
                    |d d	         |d d	                    t          j        |          }d|d	<   |
                    |||           |                    |d d	         |d d	                   }|                    |d d	         |d d	                   }|                    |d d	         |d d	                   }	||k     sJ ||	k     sJ |t          j        |	          k    sJ d S )Nr   r   d     )numg?g?g-C6?r   r   r[   i'  r~   r_   r"   r`   )r$   rn   ro   linspacerandr7   reshaper	   r
   r   r(   	ones_likerK   r   approx)
rt   r'   r   regr_no_outlierregr_with_weightregr_with_outlierra   score_with_outlierscore_no_outlierscore_with_weights
             r,   $test_adaboostregressor_sample_weightr"    s    )


#
#C
As%%%A	q3388AGAJ//&89A			"aA bEEERKEEEAbE ("$$11  O _--o.. !Q#2##2#'''LOOMM"A];;;*003B33B3@@&,,QssVQssV<<(..q"vq"v>> 00000 11111v}->????????r.   c                  .   t          t          j        d          ddi\  } }}}t          d          }|                    | |           t          t          j        |                    |          d          |	                    |                     d S )NT)
return_X_yr"   r   r!   r   axis)
r   r   load_digitsr   r(   r   r$   argmaxr)   r1   )r   r   r   r   models        r,    test_adaboost_consistent_predictr*    s     (8			.	.	.(=?( ($GVWf B///E	IIgw
	%%%f--A666f8M8M    r.   zmodel, X, yc                     t          j        |          }d|d<   d}t          j        t          |          5  |                     |||           d d d            d S # 1 swxY w Y   d S )Nir   z1Negative values in data passed to `sample_weight`r   r`   )r$   r  r   r   r   r(   )r)  r'   r   ra   r  s        r,   #test_adaboost_negative_weight_errorr,    s     LOOMM"AG	z	1	1	1 5 5		!Qm	4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   AA!$A!c                     t           j                            d          } |                     d          }|                     ddgd          }t          j        |          dz  }t          dd	
          }t          |dd	          }|                    |||           t          j	        |j
                                                  dk    sJ dS )zCheck that we don't create NaN feature importance with numerically
    instable inputs.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20320
    r   )r  r[   r\   r   r   r  gtDS 'T	r[      )	max_depthr"      r  r`   N)r$   rn   ro   normalr
  r  r   r   r(   isnanr   sum)rt   r'   r   ra   tree	ada_models         r,   Ftest_adaboost_numerically_stable_feature_importance_with_small_weightsr6  '  s     )


#
#C



##A

Aq6
%%ALOOf,M!BR@@@D"TQSTTTIMM!QmM4448I2337799Q>>>>>>r.   c                 |   d}t          j        |d|           \  }}t          d|                               ||          }|                    |          }t          |                    d          dd           t          t          j	        |                    dd	|dz
  z  hk    sJ |
                    |          D ]W}t          |                    d          dd           t          t          j	        |                    dd	|dz
  z  hk    sJ X|                    d
                              ||           |                    |          }t          |                    d          dd           |
                    |          D ](}t          |                    d          dd           )dS )zCheck that the decision function respects the symmetric constraint for weak
    learners.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26520
    r    r   )r   n_clusters_per_classr"   rk   r%  r   g:0yE>)atolr   r   r^   N)r   r   r   r(   r8   r   r3  rM   r$   r4   r   
set_params)global_random_seedr   r'   r   r+   y_scores         r,   test_adaboost_decision_functionr=  8  s    I'!BT  DAq !:L
M
M
M
Q
QRSUV
W
WC##A&&GGKKQK''6666 ry!!""q"	A*>&????? //22 D D++QT:::: 29W%%&&1bIM.B*CCCCCCNNN""&&q!,,,##A&&GGKKQK''6666//22 ; ;++QT:::::; ;r.   )Tr   r   numpyr$   r   sklearnr   sklearn.baser   r   sklearn.dummyr   r   r   r   r	   sklearn.linear_modelr
   sklearn.model_selectionr   r   sklearn.svmr   r   sklearn.treer   r   sklearn.utilsr   sklearn.utils._mockingr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r   r   r   r   rn   ro   rt   r'   r0   r=   r2   r3   r>   	load_irisrH   permutationrI   r]   permrJ   load_diabetesrW   r-   r:   r?   rP   markparametrizerY   r{   r   r   r   r   r   r   r   r   r   r  r  r  r"  r*  r,  r6  r=  rc   r.   r,   <module>rP     sX   < < 				            - - - - - - - - 9 9 9 9 9 9 9 9 B B B B B B B B 1 1 1 1 1 1 B B B B B B B B                 F F F F F F F F ! ! ! ! ! ! 8 8 8 8 8 8         
              	iA 	"XBx"bAq6Aq6Aq6:
(
(
(			"X1v1vMM	:: x
t{'(( DKcJJJ 	4; "8!##!(M8?" " " x
J J J7 7 71 1 1Y Y Y, !D!D!DEE
Y 
Y FE
Y*8 *8 *8Z, , ,$  6B B B*< < <     8( ( ( .C	
	
	
 	
 		

 	
 	^++	 	 W= W= W=t .C	
	
	
 	
 		

 	
 	^++	 	 ,= ,= ,=^I I I&  *  #@ #@ #@L   				ty$+6				hmX_= 5 5 5? ? ?""; "; "; "; ";r.   