
     hM                     |	   d Z ddlZddlZddlZddlZddlZddlmZmZ ddl	m
Z
mZ ddlmZ ddlZddlZddlmZmZmZmZ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" 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. ddl/m0Z0 ddl1Z1ddl2m3Z3 ddl2m4Z4 ddl5m6Z6 ddl#m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl<m>Z> ddl?m@Z@ ddl?mAZA ddl?mBZB ddl?mCZC ddlDmEZE ddl(mFZF ddlGmHZHmIZI ddl*mJZJmKZK dd l/mLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d! ZZdZd#Z[ej\        ]                    d$ ee[d"%          d&fe[d'f ee[d(          d'f e=d)*          d+f e=d"d,d-d./          d0fg          d1             Z^d[d2Z_ eP e` e_                                d3             Zad4 Zbd5 Zcd6 Zdej\        ]                    d7 ed                      d8             Zee+d9             Zfd: Zgd; Zhd< Zid= Zj eP e` ej                                d>             Zkej\        ]                    d? e_            eN@          dA             Zlej\        ]                    d? e_            eN@          dB             ZmdC Zn e` e e_             eE e=d"*                    g e` ej                       en                                Zoej\        ]                    d?eoeN@          dD             ZpdEdFgZqdG ZrdH  e_dI          D             Zsej\        ]                    dIeseN@          dJ             ZtdK  e_            D             Zug dLZvej\        ]                    d?eueN@          dM             Zwej\        ]                    dNdO  e)            D                       dP             Zxej\        ]                    d? e_            eN@          dQ             Zyej\        ]                    dNeeeee e!e"e&e'eeeeeeg          dR             Zz e` e e_dI           eE e7             e8                       e9dST           e$dUV          g                    Z{ej\        ]                    d?e{eN@          dW             Z|ej\        ]                    d?e{eN@          dX             Z}ej\        ]                    d?e{eN@          dY             Z~dS )\z.
General tests for all estimators in sklearn.
    N)isgenerator	signature)productchain)partial)AffinityPropagationBirch	MeanShiftOPTICSSpectralClustering)
make_blobs)IsomapTSNELocallyLinearEmbedding)LocalOutlierFactorKNeighborsClassifierKNeighborsRegressorRadiusNeighborsClassifierRadiusNeighborsRegressor)FunctionTransformer)LabelPropagationLabelSpreading)all_estimators)ignore_warnings)ConvergenceWarning)FitFailedWarning)check_estimator)enable_iterative_imputer)enable_halving_search_cv)PCA)StandardScalerMinMaxScalerOneHotEncoder)LinearClassifierMixin)LogisticRegression)Ridge)GridSearchCV)RandomizedSearchCV)HalvingGridSearchCV)HalvingRandomSearchCV)make_pipeline)IS_PYPY)_DEFAULT_TAGS
_safe_tags)SkipTestset_random_state)_construct_instance_set_checking_parameters_get_check_estimator_ids-check_class_weight_balanced_linear_classifierparametrize_with_checks(check_dataframe_column_names_consistency!check_n_features_in_after_fittingcheck_param_validation'check_transformer_get_feature_names_out.check_transformer_get_feature_names_out_pandascheck_set_output_transform!check_set_output_transform_pandas$check_global_ouptut_transform_pandas!check_get_feature_names_out_errorc                      t                      D ]K\  } }d                    |           }|                                                     d          r
J |            Ld S )NzDBase estimators such as {0} should not be included in all_estimatorsbase)r   formatlower
startswith)name	Estimatormsgs      U/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/tests/test_common.py test_all_estimator_no_base_classrH   W   sg    )++ 8 8iR
&,, 	 ::<<**62277C7727	8 8       c                     d S N )xys     rG   _sample_funcrP   `   s    DrI   zval, expected)rO   z_sample_func(y=1)rP   worldg       @)CzLogisticRegression(C=2.0)z	newton-cgbalancedT)random_statesolverclass_weight
warm_startz]LogisticRegression(class_weight='balanced',random_state=1,solver='newton-cg',warm_start=True)c                 0    t          |           |k    sJ d S rL   )r3   )valexpecteds     rG   test_get_check_estimator_idsr[   d   s#    ( $C((H444444rI   c              #      K   t          |           D ]*\  }}	 t          |          }n# t          $ r Y "w xY w|V  +d S )Ntype_filter)r   r1   r/   )r^   rD   rE   	estimators       rG   _tested_estimatorsr`   {   so      )kBBB  i	+I66II 	 	 	H	  s   )
66c                     t          t          t          t          f          5  t	          |             ||            d d d            d S # 1 swxY w Y   d S Ncategory)r   FutureWarningr   UserWarningr2   r_   checkrequests      rG   test_estimatorsrj      s     
=2Dk"R	S	S	S   +++i                 s   AAAc                  b    t          t                      d          } t          |           sJ d S )NT)generate_only)r   r%   r   )all_instance_gen_checkss    rG   "test_check_estimator_generate_onlyrn      s8    -.@.B.BRVWWW.///////rI   c                     t          j        d           t          j                    } t          j                            t          j                            t          j        d         d                    }t          j                            |d          }t          j        	                    |          st          j
        d           	 t          j        |           t          j        }ddgt          _        t          j                    5  t          j        dt"                     t%          d          5 }t'          |                                t+          d	                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |t          _        t          j        |            d S # |t          _        t          j        |            w xY w)
NCythonr   z..zsetup.pyzsetup.py not availableconfigignore__main__)__name__)pytestimportorskiposgetcwdpathabspathjoinsklearn__path__existsskipchdirsysargvwarningscatch_warningssimplefilterrf   openexecreaddict)cwd
setup_pathsetup_filenameold_argvfs        rG   test_configurer      s    !!!
)++Cg.>q.A4!H!HIIJW\\*j99N7>>.)) .,---
8)$&& 	: 	: !(K888j!! :QQVVXXtZ888999: : : : : : : : : : : : : : :		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 
 
sU   	AF5 
*F41E1%F1E5	5F8E5	9F<F5 FF5 FF5 5"Gc               #   p  K   t          d          } t          j        d          5  | D ]q\  }}t          |dg           }t	          |          r&d |                                                                            v rt          |t                    r||fV  r	 d d d            d S # 1 swxY w Y   d S )N
classifierr]   Trecord_required_parametersrV   )	r   r   r   getattrlen
get_paramskeys
issubclassr$   )classifiersrD   clazzrequired_parameterss       rG   _tested_linear_classifiersr      s       \:::K		 	-	-	- 
" 
"& 		" 		"KD%")%1G"L"L&'' !3!3!5!5!:!:!<!<<<,B B< Ek!!!		"
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
"s   A5B++B/2B/zname, Classifierc                 &    t          | |           d S rL   )r4   )rD   
Classifiers     rG   -test_class_weight_balanced_linear_classifiersr      s    1$
CCCCCrI   c                  D   t          j        t          j        dd           } d | D             }|dgz   D ]j}d|v rt          r	d|v sd|v rt          |d	
          }t          |dd          D ]0}t          ||          sJ d                    ||                      1kd S )Nsklearn.c                     d S rL   rM   _s    rG   <lambda>z-test_import_all_consistency.<locals>.<lambda>   s    D rI   )ry   prefixonerrorc                     g | ]\  }}}|	S rM   rM   ).0r   modnames      rG   
<listcomp>z/test_import_all_consistency.<locals>.<listcomp>   s    111=1gqw111rI   r|   z.tests._svmlight_format_ioz feature_extraction._hashing_fastdummy)fromlist__all__rM   z#Module '{0}' has no attribute '{1}')	pkgutilwalk_packagesr|   r}   r,   
__import__r   hasattrrA   )pkgssubmodsr   packagerD   s        rG   test_import_all_consistencyr      s      j..  D 21D111Gi[(   	!W,,1W<<Ww777GY33 	 	D7D))  +P+W+W, ,  ) 	 rI   c                      d} t          j        t          j        d           D ]4\  }}}d|v s|                    d          s|| v r$|t          j        v sJ 5d S )N)utilstestsr@   setupconftestc                     d S rL   rM   r   s    rG   r   z3test_root_import_all_completeness.<locals>.<lambda>   s     rI   )ry   r   .r   )r   r   r|   r}   rC   r   )
EXCEPTIONSr   r   s      rG   !test_root_import_all_completenessr      s    @J .~~   * *7A '>>W//44>:8M8M'/)))))* *rI   c                     t          j        d          h dd t          j        t          j        d          D             fd                                D             } | g k    sJ d                    |                       d S )Nz(?x)
                                      \.externals(\.|$)|
                                      \.tests(\.|$)|
                                      \._
                                      >   sklearn.datasets.datasklearn.datasets.descrsklearn.datasets.imagesc                     i | ]	\  }}}||
S rM   rM   )r   r   rD   ispkgs       rG   
<dictcomp>z1test_all_tests_are_importable.<locals>.<dictcomp>   s0       AtU 	e  rI   r   )r   c                 ^    g | ])\  }}|r"|vr                     |          s	|d z   v'|*S )z.tests)search)r   rD   r   HAS_TESTS_EXCEPTIONSlookupresource_moduless      rG   r   z1test_all_tests_are_importable.<locals>.<listcomp>   sd       D% ((($++D11 )8O6)) 	
 *))rI   z{{0} do not have `tests` subpackages. Perhaps they require __init__.py or an add_subpackage directive in the parent setup.py)recompiler   r   r|   r}   itemsrA   )missing_testsr   r   r   s    @@@rG   test_all_tests_are_importabler      s     :	*   
 %3G4DZXXX  F     !<<>>  M B	 6-(( rI   c                  *   d} t          j        t          |           5  t          t                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          t          g           d d d            d S # 1 swxY w Y   d S )Nz8Passing a class was deprecated.* isn't supported anymore)match)ru   raises	TypeErrorr   r%   r5   rF   s    rG   test_class_support_removedr   	  s    EC	y	,	,	, , ,*+++, , , , , , , , , , , , , , , 
y	,	,	, 6 6!3 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s!   ?AA%BBBc               #     K   t          t          t          t          t          gt          dddgift
          dddgifg          D ]M\  } \  }}t          |           j        }d|v rddini } |  |            |fddi|}t          |           |V  Nt          t          t          t          t          gt          d	ddgift
          d
ddgifg          D ]{\  } \  }}t          |           j        }d|v rddini } | t          t                       |                      |fddi|                    d          }t          |           |V  |d S )Nalphag?      ?rR   min_resourcessmallestcv   ridge__alphalogisticregression__Craise)error_score)r   r'   r)   r(   r&   r%   r   
parametersr0   r*   r+   r    
set_params)SearchCVrE   
param_gridinit_paramsextra_params	search_cvs         rG   _generate_search_cv_instancesr     s     -4		
 WsCj)*#Sz!23	
. .  ))9j  ))4-<-K-K_j))QS 	 HYY[[*KKKlKK	###-4!		
 ^c3Z01"9C:!FG	
. .  ))9j  ))4-<-K-K_j))QS 	 H#%%--z
 
>?
CO
 

**
)
) 	 	###) rI   c                     t          t          t          t          t          f          5   ||            d d d            d S # 1 swxY w Y   d S rb   )r   re   r   rf   r   rg   s      rG   test_search_cvr   A  s    
 
	

 
 
   	i                 s   AA	Ar_   )idsc                     t          |           }|                                D ]@\  }}t          t          |                   }|dk    r	|t          f}t          ||          sJ AdS )z$Check that estimator tags are valid._xfail_checksN)r.   r   typer-   r   
isinstance)r_   tagsrD   tagcorrect_tagss        rG   test_valid_tag_typesr   Q  sv    
 i  DZZ\\ - -	cM$/00?""($/L#|,,,,,,- -rI   c                 X    t          |            t          | j        j        |            d S rL   )r2   r7   	__class__rt   )r_   s    rG   &test_check_n_features_in_after_fittingr   `  s.     Y'''%i&9&BINNNNNrI   c               #     K   t                      D ]} t          |                                           }d|v r|                     dd          V  Ad|v ra|                     dd          }|j        j        dv r7t          j        |t          j        	                    d	          
          V  |V  d|v r|                     d          V  d S )N	oob_scoreT)r   	bootstrapearly_stoppingrJ   )r   n_iter_no_change>   MLPRegressorMLPClassifierzMLP still validates in fitr   )marksr   )r   )
r`   setr   r   r   rt   ru   parammarkxfail)r_   
est_paramsests      rG   _estimators_that_predict_in_fitr  h  s     ')) ; ;	--//00
*$$&&&FFFFFF++&&dQ&OOC}%)JJJlv{005Q0RR       				:--&&&:::::; ;rI   c                 J   t          |            t          t                    5  t          j        d          5 }t          | j        j        |            d d d            n# 1 swxY w Y   |D ]}dt          |j	                  vsJ 	 d d d            d S # 1 swxY w Y   d S )Nrc   Tr   z was fitted without feature names)
r2   r   re   r   r   r6   r   rt   strmessage)r_   r   warnings      rG   #test_pandas_column_name_consistencyr    sU    Y'''	=	2	2	2 R R$D111 	V4#,i  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	R 	RG5S=Q=QQQQQQ	RR R R R R R R R R R R R R R R R R Rs4   BA"B"A&	&B)A&	* BBBensemblekernel_approximationc                 x    t          | d          rdS | j                            d          d         }|t          vS )Nget_feature_names_outTr   rJ   )r   
__module__split"GET_FEATURES_OUT_MODULES_TO_IGNORE)transformermodules     rG   '_include_in_get_feature_names_out_checkr    sA    {344 t#))#..q1F;;;rI   c                 0    g | ]}t          |          |S rM   )r  r   r  s     rG   r   r     s6       .s33  rI   r  c                     t          |            t          t                    5  t          | j        j        |            t          | j        j        |            d d d            d S # 1 swxY w Y   d S rb   )r2   r   re   r9   r   rt   r:   )r  s    rG   'test_transformers_get_feature_names_outr    s     [)))	=	2	2	2 
 
/!*K	
 	
 	
 	7!*K	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   5A''A+.A+c                 2    g | ]}t          |d           |S )r  )r   r  s     rG   r   r     s8     ) ) )738O+P+P)) ) )rI   )$AdditiveChi2Sampler	BinarizerDictVectorizerGaussianRandomProjectionGenericUnivariateSelectIterativeImputerIsotonicRegressionKBinsDiscretizer
KNNImputerMaxAbsScalerr"   MissingIndicator
NormalizerOrdinalEncoderPowerTransformerQuantileTransformerRFERFECVRobustScaler	SelectFdr	SelectFprSelectFromModel	SelectFweSelectKBestSelectPercentileSequentialFeatureSelectorSimpleImputerSparseRandomProjectionSplineTransformerStackingClassifierStackingRegressorr!   TfidfTransformerVarianceThresholdVotingClassifierVotingRegressorc                     | j         j        }|t          v rt          j        | d          S t          |            t          ||            d S )Nz0 is not failing with a consistent NotFittedError)reason)r   rt   WHITELISTED_FAILING_ESTIMATORSru   r  r2   r>   )r_   estimator_names     rG   +test_estimators_get_feature_names_out_errorrC    sf     (1N777|$VVV
 
 
 	
 Y'''%ni@@@@@rI   rE   c                     g | ]\  }}|S rM   rM   )r   rD   r  s      rG   r   r     s    +++YT3S+++rI   c                     t          |           j        }dddt          j        ddg          dgi g g}|D ]%fd|D             } | d	i |} |j        d	i | &dS )
z3Check that init or set_param does not raise errors.g      @
helloworldr   g      @rJ   c                     i | ]}|S rM   rM   )r   keyvalues     rG   r   zMtest_estimators_do_not_raise_errors_in_init_or_set_params.<locals>.<dictcomp>  s    333Sc5333rI   NrM   )r   r   nparrayr   )rE   paramssmoke_test_values
new_paramsr  rJ  s        @rG   9test_estimators_do_not_raise_errors_in_init_or_set_paramsrP    s     y!!,FS,#s0D0Dqc2rR" % %3333F333
 i%%*%% 	$$$$$$% %rI   c                 \    | j         j        }t          |            t          ||            d S rL   )r   rt   r2   r8   r_   rD   s     rG   test_check_param_validationrS    s3     'DY'''4+++++rI   c                 l   t          ddd          \  }}t          j        |          }t          j        |d d df                   } |             }|                    ||           t          |d          r|                    |           t          |d          r|                    |           d S d S )NP      r   )	n_samples
n_featuresrT   	transformpredict)r   rK  asfortranarrayroundfitr   rY  rZ  )rE   Xr   rO   r  s        rG   !test_f_contiguous_array_estimatorr_    s    2 qqAAADAq
!A
111a4A
)++CGGAqMMMsK   asI A rI   F)sparse_outputz
one-to-one)feature_names_outc                    | j         j        }t          | d          st          j        d| d           t          |            t          t                    5  t          | j         j        |            d d d            d S # 1 swxY w Y   d S )N
set_outputz(Skipping check_set_output_transform for z!: Does not support set_output APIrc   )	r   rt   r   ru   r   r2   r   re   r;   rR  s     rG   test_set_output_transformrd  B  s     'D9l++ 
t   	
 	
 	
 Y'''	=	2	2	2 L L"9#6#?KKKL L L L L L L L L L L L L L L L L L   BBBc                    | j         j        }t          | d          st          j        d| d           t          |            t          t                    5  t          | j         j        |            d d d            d S # 1 swxY w Y   d S )Nrc  z/Skipping check_set_output_transform_pandas for %: Does not support set_output API yetrc   )	r   rt   r   ru   r   r2   r   re   r<   rR  s     rG    test_set_output_transform_pandasrh  Q  s     'D9l++ 
"d " " "	
 	
 	
 Y'''	=	2	2	2 S S))*=*F	RRRS S S S S S S S S S S S S S S S S Sre  c                    | j         j        }t          | d          st          j        d| d           t          |            t          t                    5  t          | j         j        |            d d d            d S # 1 swxY w Y   d S )Nrc  z2Skipping check_global_ouptut_transform_pandas for rg  rc   )	r   rt   r   ru   r   r2   r   re   r=   rR  s     rG   #test_global_output_transform_pandasrj  `  s     'D9l++ 
* * * *	
 	
 	
 Y'''	=	2	2	2 V V,Y-@-I9UUUV V V V V V V V V V V V V V V V V Vre  )rJ   rL   )__doc__rw   r   r   r   r   inspectr   r   	itertoolsr   r   	functoolsr   ru   numpyrK  sklearn.clusterr   r	   r
   r   r   sklearn.datasetsr   sklearn.manifoldr   r   r   sklearn.neighborsr   r   r   r   r   sklearn.preprocessingr   sklearn.semi_supervisedr   r   sklearn.utilsr   sklearn.utils._testingr   sklearn.exceptionsr   r   sklearn.utils.estimator_checksr   r|   sklearn.experimentalr   r   sklearn.decompositionr    r!   r"   r#   sklearn.linear_model._baser$   sklearn.linear_modelr%   r&   sklearn.model_selectionr'   r(   r)   r*   sklearn.pipeliner+   r,   sklearn.utils._tagsr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   rH   rP   r  parametrizer[   r`   listrj   rn   r   r   r   r   r   r   r   r   r   r   r   r  column_name_estimatorsr  r  r  GET_FEATURES_OUT_ESTIMATORSr  %ESTIMATORS_WITH_GET_FEATURE_NAMES_OUTrA  rC  rP  rS  r_  SET_OUTPUT_ESTIMATORSrd  rh  rj  rM   rI   rG   <module>r     si
    
			  



 				  * * * * * * * * $ $ $ $ $ $ $ $                         ( ' ' ' ' ' A A A A A A A A A A              6 5 5 5 5 5 D D D D D D D D ( ( ( ( ( ( 2 2 2 2 2 2 1 1 1 1 1 1 / / / / / / : : : : : :  : 9 9 9 9 9 9 9 9 9 9 9 % % % % % % M M M M M M M M M M < < < < < < 3 3 3 3 3 3 & & & & & & 0 0 0 0 0 0 6 6 6 6 6 6 7 7 7 7 7 7 9 9 9 9 9 9 * * * * * * ! ! ! ! ! ! 9 9 9 9 9 9 9 9                                      $8 8 8	 	 	 	 		#	#	#%89	~&	w	'	'8		c	"	"	"$?@"'	  2		
 &5 5' &5    00223344  540 0 0
  8" " "  +-G-G-I-IJJD D KJD   ,* * *" " "J	6 	6 	6) ) )X ;;==>>??  @? ##%%+C   	- 	- 	- ##%%+C   O O O
; ; ;* 	E	))A...	/	/0**,,--''))	    '-E   R R R & "< < < !!-00    .4L   	
 	
 	
) )%%'') ) ) %%" %" %" P 6<T   A A A ++..**+++ % %	 % ##%%+C   , , , !  ( ) (& 	E=))M..**LLNN;;M...,???	
 	 	  &,D   	L 	L 	L &,D   	S 	S 	S &,D   	V 	V 	V 	V 	VrI   