
    -iM              	          S SK rS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
JrJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJrJr  S SKJrJrJr  S SKJr  S SK J!r!  S SK"J#r#J$r$J%r%J&r&  S SK'J(r(  \RR                  RU                  SSS/5      \RR                  RU                  SSS/5      \RR                  RU                  SSS/5      S 5       5       5       r+\RR                  RU                  SSS/5      \RR                  RU                  SSS/5      S 5       5       r,\RR                  RU                  SSS/5      \RR                  RU                  SSS/5      S/S j5       5       r-S r.S r/S r0\RR                  RU                  SSS/5      S 5       r1\RR                  RU                  S/ S Q5      \RR                  RU                  SSS/5      S! 5       5       r2\RR                  RU                  S"S#S$/5      S% 5       r3S& r4S' r5\RR                  RU                  S(S)S*/S)S*/4S)S*/\" S)5      \" S*5      S+.4S)S*/S, 4/5      S- 5       r6S. r7g)0    N)parallel_backend)assert_allclose)ColumnTransformer)load_diabetes	load_irismake_classificationmake_regression)DummyClassifier)RandomForestClassifierRandomForestRegressor)SimpleImputer)permutation_importance)LinearRegressionLogisticRegression)
get_scorermean_squared_errorr2_score)train_test_split)make_pipeline)KBinsDiscretizerOneHotEncoderStandardScalerscale)_convert_containern_jobs      max_samples      ?      ?sample_weightonesc                 D   [         R                  R                  S5      nSn[        SS9u  pVXcR	                  SUR
                  S   S9-   R                  SS	5      n[         R                  " XW/5      nUS
:X  a  [         R                  " U5      OUn[        SSS9n	U	R                  XV5        [        U	UUUUUU US9n
U
R                  R
                  UR
                  S	   U4:X  d   e[         R                  " U
R                  S   U
R                  S S :  5      (       d   eg )N*      T)
return_X_yMbP?r   r   sizer   r"   
   n_estimatorsrandom_state)r!   	n_repeatsr.   r   r   )nprandomRandomStater   normalshapereshapehstack	ones_liker   fitr   importancesallimportances_mean)r   r   r!   rngr/   Xyy_with_little_noiseweightsclfresults              g/var/www/html/venv/lib/python3.13/site-packages/sklearn/inspection/tests/test_permutation_importance.py9test_permutation_importance_correlated_feature_regressionrD      s    ))


#CID)DAzzAGGAJzGGPPQSUVW
		1*+A!.&!8bll1omG
Rb
ACGGAM#			F ##
I'>>>> 66&))"-0G0G0LLMMMM    c           
      j   [         R                  " S5      n[        R                  R	                  S5      nSn[        5       nUR                  UR                  pvXsR                  SUR                  S   S9-   R                  SS5      nUR                  XeR                  S	9nXS
'   [        SSS9n	U	R                  Xg5        [        U	UUUUU US9n
U
R                   R                  UR                  S   U4:X  d   e[        R"                  " U
R$                  S   U
R$                  S S :  5      (       d   eg )Npandasr$   r%   r'   r   r(   r*   r   )columnscorrelated_featurer+   r,   r/   r.   r   r   )pytestimportorskipr0   r1   r2   r   datatargetr3   r4   r5   	DataFramefeature_namesr   r8   r   r9   r:   r;   )r   r   pdr<   r/   datasetr=   r>   r?   rA   rB   s              rC   @test_permutation_importance_correlated_feature_regression_pandasrS   C   s&   
 
		X	&B ))


#CIkG<<qzzAGGAJzGGPPQSUVW 	Q 5 56A1
 br
BCGGAM#		F ##
I'>>>> 66&))"-0G0G0LLMMMMrE   c           
         [         R                  R                  U5      nSnSnSnSnSnXx-   n	[         R                  " U5      n
UR	                  XS9n[         R
                  " U
S U  Vs/ s H  oU:H  R                  SS5      PM     sn5      nUR                  [         R                  5      nXv:  d   e[         R                  " XR                  XX5      /SS9nUR                  XY4:X  d   e[        XSUS	9u  pnn[        SUS
9nUR                  UU5        UR                  nUS U nUUS  nUR!                  5       UR#                  5       :  d   e[%        UUUUUU US9nUR&                  R                  UR                  S   U4:X  d   eUR(                  S U nUR(                  US  n[!        [         R*                  " U5      5      S:  d   eUR!                  5       S:  d   eUR#                  5       S:  d   eg s  snf )Nr%     r   r   )r)   r*   )axisr   )	test_sizer.   r,   rJ   gHz>g?g333333?)r0   r1   r2   arangechoicer6   r5   astypefloat32concatenaterandnr4   r   r   r8   feature_importances_maxminr   r9   r;   abs)r   r   seedr<   r/   	n_samples	n_classesn_informative_featuresn_noise_features
n_featuresclassesr>   cr=   X_trainX_testy_trainy_testrA   tree_importancesinformative_tree_importancesnoisy_tree_importancesrinformative_importancesnoisy_importancess                            rC   1test_robustness_to_high_cardinality_noisy_featurert   k   s2    ))


%CIII':J
 ii	"G

7
+A
		G<S=S4TU4TqF##B*4TUVA	A "--- 	99YABKA77y----
 (8	#($GWf !ac
BCGGGW
 //#34K5K#L -.D.EF'++-0F0J0J0LLLL 		A ==1771:y"9999  001H2HI**+A+BC rvv'()D000  "T))) #&&(4///w Vs   *G<c                     [         R                  R                  S5      n Sn[         R                  " SSS[         R                  // SQ/5      R
                  n[         R                  " / SQ5      n[        [        5       [        SS	95      nUR                  X#5        [        XBX1U S
9nUR                  R                  UR                  S   U4:X  d   e[         R                  " UR                  S   UR                  S S :  5      (       d   e[         R                  R                  S5      n [        XBX1U S
9nUR                  R                  UR                  S   U4:X  d   e[         R                  " UR                  UR                  5      (       a   e[         R                  " UR                  S   UR                  S S :  5      (       d   eg )Nr$      r           @      @)r   r   r   r   r   r   r   r   lbfgssolverr/   r.   r   r*   r   )r0   r1   r2   arraynanTr   r   r   r8   r   r9   r4   r:   r;   allclose)r<   r/   r=   r>   rA   rB   result2s          rC   'test_permutation_importance_mixed_typesr      s}   
))


#CI 	3S"&&)<89;;A
A
);7)K
LCGGAM#CAQTUF##
I'>>>> 66&))"-0G0G0LLMMMM ))


"C$SQRUVG$$Y(????{{6--w/B/BCCCC 66'**2.1I1I#21NNOOOOrE   c                     [         R                  " S5      n [        R                  R	                  S5      nSnU R                  SSS[        R                  // SQS.5      n[        R                  " / S	Q5      n[        [        5       [        5       5      n[        S
US/4S[        5       S/4/5      n[        U[        SS95      nUR                  X45        [        XsXBUS9nUR                   R"                  UR"                  S   U4:X  d   e[        R$                  " UR&                  S   UR&                  S S :  5      (       d   eg )NrG   r$   r%   r    rw   rx   )abr   r   )col1col2ry   numr   catr   rz   r{   r}   r   r*   )rK   rL   r0   r1   r2   rO   r   r~   r   r   r   r   r   r   r8   r   r9   r4   r:   r;   )	rQ   r<   r/   r=   r>   num_preprocess
preprocessrA   rB   s	            rC   .test_permutation_importance_mixed_types_pandasr      s   			X	&B
))


#CI 	sCbff5?STUA
A"=?N4DEN"
&	*UMOfX,NOJ 
$6g$F
GCGGAM#CAQTUF##
I'>>>> 66&))"-0G0G0LLMMMMrE   c                      [        SSSS9u  p[        U 5      n [        U5      n[        5       R                  X5      nSUR                  S-  -  n[        X USSS9n[        X4R                  S	S
S9  g )N  r+   r   rc   rg   r.   r   2   neg_mean_squared_error)r/   scoringg?gư>)rtolatol)r	   r   r   r8   coef_r   r   r;   )r=   r>   lrexpected_importancesresultss        rC   .test_permutation_importance_linear_regresssionr      sv    SRaHDAaAaA					%B rxx{?$
qB(@G 66TrE   r   c           
         [        SSSS9u  p[        5       R                  X5      n[        X1USSSU S9nUS   R	                  5       nUS   R                  5       nXe-
  S	:  d   e[        X1USSS
S9n[        US   US   5        [        S5         [        X1USSS
S9nS S S 5        [        WS   US   5        g ! , (       d  f       N!= f)Nr   r+   r   r   r%   r   rJ   r9   333333?r   )r/   r.   r   	threading)r	   r   r8   r   r`   r_   r   r   )	r   r=   r>   r   importance_sequentialimp_minimp_maximportance_processesimportance_threadings	            rC   ;test_permutation_importance_equivalence_sequential_parallelr     s    
 SRaHDA					%B2
qAAa[ $M2668G#M2668Gs""" 2
qAAa ]+-B=-Q
 
+	&51! 
 
' ]+-B=-Q	 
'	&s   B88
C)Nr   r   c           
      @   [         R                  " S5      n[        SSSS9u  p4UR                  U5      n[	        SSSS	9nUR                  UR                  S
S5      5      n[        R                  " X7/5      nUR                  R                  S:X  d   eUR                  UR                  5       5      n[        UR                  5      nXuU'   XX   R                  UR                  :X  d   e[        R                  " [        U5      5      R!                  ["        5      Ul        ['        SSSS9n	U	R)                  X45        Sn
[+        U	UUU
SU US9nUS   R-                  5       nUS   R/                  5       nX-
  S:  d   e[+        U	UUU
SU US9n[1        US   US   5        g )NrG   d   r%   r   r      ordinalaveraged_inverted_cdf)n_binsencodequantile_methodr*   r   f)r-   	max_depthr.   rJ   r9   r   )rK   rL   r	   rO   r   fit_transformr5   r0   r6   dtypekindCategoricalravellenrH   rX   rZ   strindexr   r8   r   r`   r_   r   )r   r   rQ   r=   r>   X_dfbinner
cat_columnnew_col_idxrfr/   importance_arrayr   r   importance_dataframes                  rC   7test_permutation_importance_equivalence_array_dataframer   -  s   
 
		X	&B SQQGDA<<?D /F
 %%aiiA&67J 			1/"A77<<3 
 0 0 23Jdll#K"""j&6&6666 3t9%,,S1DJ	A	KBFF1LI-
		 }-113G}-113Gs""" 2
	 ')=m)LrE   
input_typer~   	dataframec                    [        S5      Sp![        XSS9u  p4UR                  S:  d   e[        X05      n[	        SS9R                  X45      nSn[        XSXFS	S
9n[        R                  " X&45      n[        XR                  5        g )Ng     j@rv   r   r   g    .Aprior)strategyr%   r   )r/   r   )intr   nbytesr   r
   r8   r   r0   zerosr   r9   )	r   rc   rg   r=   r>   rA   r/   rq   r   s	            rC   /test_permutation_importance_large_memmaped_datar   s  s      HazDA 88c>>1)A
7
+
/
/
5C IsqaHA 88Z$;<(--8rE   c            
         [         R                  R                  S5      n SnSnUS-  nU R                  SSX45      n[         R                  " U5      nSUS U2S4   -  US U2S4   -   US U& XCS 2S4   SXCS 2S4   -  -   XSS & [        SS9nUR                  XE5        [        XdUSS	S
S9nUR                  S   UR                  S   -  nU[        R                  " SS5      :X  d   e[         R                  " U5      n	[        UUUSS	S
U	S9nUR                  S   UR                  S   -  n
U
[        R                  " US5      :X  d   e[         R                  " [         R                  " SU5      [         R                  " SU5      /5      n	UR                  XEU	5        [        UUUSS	S
U	S9nUR                  S   UR                  S   -  nX-  [        R                  " SS5      :X  d   eg )Nr   rU   r   g        r'   r   F)fit_interceptneg_mean_absolute_error   r.   r   r/   g{Gz?r.   r   r/   r!   g    _Br    )r0   r1   r2   r3   r   r   r8   r   r;   rK   approxr"   r6   repeat)r<   rc   rg   n_half_samplesxr>   r   pix1_x2_imp_ratio_w_nonewx1_x2_imp_ratio_w_onesx1_x2_imp_ratio_ws               rC   )test_permutation_importance_sample_weightr     s   
 ))


"CIJ!^N

3	67A
AQ122Q7I5JJAo~?A-.Q7I5J1JJAo 
	.BFF1L
 
 
qq*Cs
B  003b6I6I!6LL!V]]1d%;;;; 		A	
		)
B  003b6I6I!6LL!V]]3I4%PPPP 			299X~6		#~8VWXAFF1O	
		)
B ++A.1D1DQ1GG5q$9OOOOrE   c                     S n [         R                  " SS/SS//5      n[         R                  " SS/5      n[         R                  " SS/5      n[        5       nUR                  X5         [	        XAUSU SS9  [        R                  " [
        5         [	        XAUSU SUS9  S S S 5        g ! [
         a    [        R                  " S5         NTf = f! , (       d  f       g = f)	Nc                     g)Nr    	estimatorr=   r>   s      rC   	my_scorerJtest_permutation_importance_no_weights_scoring_function.<locals>.my_scorer  s    rE   r   r   r   rv   r   zpermutation_test raised an error when using a scorer function that does not accept sample_weight even though sample_weight was Noner   )	r0   r~   r   r8   r   	TypeErrorrK   failraises)r   r   r>   r   r   s        rC   7test_permutation_importance_no_weights_scoring_functionr     s     	1a&1a&!"A
!QA
!QA		BFF1L
raaVWX 
y	!11i1TU	
 
"	!  
%	

 
"	!s   ,B+ C+ CC
Cz list_single_scorer, multi_scorerr2r   r   r   c                 n    [        X R                  U5      5      [        X R                  U5      5      * S.$ )Nr   )r   predictr   r   s      rC   <lambda>r     s1    q"3"3A"67+=aARARSTAU+V*V%rE   c           
      .   [        SSSS9u  p#[        5       R                  X#5      n[        XBUSUSS9n[	        UR                  5       5      [	        U 5      :X  d   eU  H4  nXV   n[        XBUSUSS9n[        UR                  UR                  5        M6     g )Nr   r+   r   r   r   r   r   )r	   r   r8   r   setkeysr   r9   )	list_single_scorermulti_scorerr   r>   r   multi_importancescorermulti_resultsingle_results	            rC   (test_permutation_importance_multi_metricr     s    0 SRaHDA					%B-
qq,! $$&'3/A+BBBB$'/.11f
 	00-2K2KL %rE   c                  ,   [         R                  " S/5      R                  n [         R                  " / SQ5      n[        5       nUR	                  X5        Sn[
        R                  " [        US9   [        X USS9  SSS5        g! , (       d  f       g= f)zbCheck that a proper error message is raised when `max_samples` is not
set to a valid input value.
)r    rw   rx   g      @ry   z max_samples must be <= n_samples)matchr%   )r   N)	r0   r~   r   r   r8   rK   r   
ValueErrorr   )r=   r>   rA   err_msgs       rC   -test_permutation_importance_max_samples_errorr     sh     	&'(**A
A

CGGAM1G	z	1sqa8 
2	1	1s   0B
B)r$   )8numpyr0   rK   joblibr   numpy.testingr   sklearn.composer   sklearn.datasetsr   r   r   r	   sklearn.dummyr
   sklearn.ensembler   r   sklearn.imputer   sklearn.inspectionr   sklearn.linear_modelr   r   sklearn.metricsr   r   r   sklearn.model_selectionr   sklearn.pipeliner   sklearn.preprocessingr   r   r   r   sklearn.utils._testingr   markparametrizerD   rS   rt   r   r   r   r   r   r   r   r   r   r   r   rE   rC   <module>r     sw     # ) -  * J ( 5 E 
 5 * X X 5 Aq6*c
34.9 N : 4 + NF Aq6*c
3#N 4 +#NL Aq6*c
3L0 4 +L0^P<N0$ c
3% 4%P <0c
3A 4 1AH '=>9 ?9,:Pz
> &
(	)D2J+KL+, &*45M*N	
 +,	
(M)(M*9rE   