§
    qŠtjš*  ã                   óP  — 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	m
Z
 d dlm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 d„ Zej                             dd¦  «        ej                             dd¦  «        d„ ¦   «         ¦   «         Zej                             dd¦  «        d„ ¦   «         Z ej                             dd¦  «        d„ ¦   «         Z!ej                             dd¦  «        ej                             dd¦  «        d„ ¦   «         ¦   «         Z"ej                             d e#d¦  «        ¦  «        ej                             dd¦  «        ej                             ddd dgfddgfg¦  «        d„ ¦   «         ¦   «         ¦   «         Z$ej                             de¦  «        d„ ¦   «         Z%d „ Z&d!„ Z'ej                             dd"¦  «        d#„ ¦   «         Z(ej                             d$d%d&d'ej)        d(f¦  «        d)„ ¦   «         Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.dS ).é    N)Úassert_array_equal)ÚKMeans)Ú
make_blobsÚmake_classificationÚmake_regression)ÚHistGradientBoostingRegressor)ÚSequentialFeatureSelector)ÚLinearRegression)ÚLeaveOneGroupOutÚcross_val_score)ÚKNeighborsClassifier)Úmake_pipeline)ÚStandardScaler)ÚCSR_CONTAINERSc                  óþ   — d} t          | ¬¦  «        \  }}t          t          ¦   «         | ¬¦  «        }t          j        t
          d¬¦  «        5  |                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né   ©Ú
n_features©Ún_features_to_selectz)n_features_to_select must be < n_features©Úmatch©r   r	   r
   ÚpytestÚraisesÚ
ValueErrorÚfit)r   ÚXÚyÚsfss       úm/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/feature_selection/tests/test_sequential.pyÚtest_bad_n_features_to_selectr"      s¿   € Ø€JÝ jÐ1Ñ1Ô1�D€A€qÝ
#Õ$4Ñ$6Ô$6ÈZÐ
XÑ
XÔ
X€CÝ	Œ•zÐ)TÐ	UÑ	UÔ	Uð ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA2Á2A6Á9A6Ú	direction)ÚforwardÚbackwardr   )é   r   é	   Úautoc                 óf  — d}t          |d¬¦  «        \  }}t          t          ¦   «         || d¬¦  «        }|                     ||¦  «         |dk    r|dz  }|                     d¬¦  «        j        d         |k    sJ ‚|j        |k    sJ ‚|                     |¦  «        j        d	         |k    sJ ‚d S )
Né
   r   ©r   Úrandom_stateé   ©r   r#   Úcvr(   T©Úindicesr&   ©r   r	   r
   r   Úget_supportÚshapeÚn_features_to_select_Ú	transform)r#   r   r   r   r   r    s         r!   Útest_n_features_to_selectr7      sÖ   € ð
 €JÝ j¸qÐAÑAÔA�D€A€qÝ
#ÝÑÔØ1ØØð	ñ ô €Cð ‡G‚GˆAˆq�M„M€Mà˜vÒ%Ð%Ø)¨Q™Ðà�?Š? 4ˆ?Ñ(Ô(Ô.¨qÔ1Ð5IÒIÐIÐIÐIØÔ$Ð(<Ò<Ð<Ð<Ð<Ø�=Š=˜ÑÔÔ! !Ô$Ð(<Ò<Ð<Ð<Ð<Ð<Ð<ó    c                 ó¸  — d}d}t          |d¬¦  «        \  }}t          t          ¦   «         d|| d¬¦  «        }|                     ||¦  «         |dz
  }|                     d	¬
¦  «        j        d         |k    sJ ‚|j        |k    sJ ‚|                     |¦  «        j        d         |k    sJ ‚|                     d	¬
¦  «        j        d         |j        k    sJ ‚dS )zlCheck the behaviour of `n_features_to_select="auto"` with different
    values for the parameter `tol`.
    r*   çü©ñÒMbP?r   r+   r(   r-   ©r   Útolr#   r/   r&   Tr0   Nr2   )r#   r   r<   r   r   r    Úmax_features_to_selects          r!   Útest_n_features_to_select_autor>   0   sý   € ð €JØ
€CÝ j¸qÐAÑAÔA�D€A€qÝ
#ÝÑÔØ#ØØØðñ ô €Cð ‡G‚GˆAˆq�M„M€Mà'¨!™^Ðà�?Š? 4ˆ?Ñ(Ô(Ô.¨qÔ1Ð5KÒKÐKÐKÐKØÔ$Ð(>Ò>Ð>Ð>Ð>Ø�=Š=˜ÑÔÔ! !Ô$Ð(>Ò>Ð>Ð>Ð>Ø�?Š? 4ˆ?Ñ(Ô(Ô.¨qÔ1°SÔ5NÒNÐNÐNÐNÐNÐNr8   c                 óÜ  — t          ddd¬¦  «        \  }}d}t          t          ¦   «         d|| d¬¦  «        }|                     ||¦  «         |                     |¦  «        }t
          j                             d¦  «        }t          t          t          |j        d	         ¦  «        ¦  «        t          |                     d
¬¦  «        ¦  «        z
  ¦  «        }t          j        ||dd…|                     |¦  «        f         dd…t
          j        f         g¦  «        }|                     t          t          |j        ¦  «        ¦  «        ¦  «        }	t          j        ||	d	¬¦  «        }
t%          t          ¦   «         ||d¬¦  «                             ¦   «         }t%          t          ¦   «         ||d¬¦  «                             ¦   «         }t%          t          ¦   «         ||d¬¦  «                             ¦   «         }t%          t          ¦   «         |
|d¬¦  «                             ¦   «         }||k    sJ ‚| dk    r||z
  |k    sJ ‚||z
  |k    sJ ‚dS ||z
  |k    sJ ‚||z
  |k    sJ ‚dS )av  Check the behaviour stopping criterion for feature selection
    depending on the values of `n_features_to_select` and `tol`.

    When `direction` is `'forward'`, select a new features at random
    among those not currently selected in selector.support_,
    build a new version of the data that includes all the features
    in selector.support_ + this newly selected feature.
    And check that the cross-validation score of the model trained on
    this new dataset variant is lower than the model with
    the selected forward selected features or at least does not improve
    by more than the tol margin.

    When `direction` is `'backward'`, instead of adding a new feature
    to selector.support_, try to remove one of those selected features at random
    And check that the cross-validation score is either decreasing or
    not improving by more than the tol margin.
    é2   r*   r   )r   Ún_informativer,   r:   r(   r-   r;   r&   Tr0   N)Úaxis)r/   r$   )r   r	   r
   r   r6   ÚnpÚrandomÚRandomStateÚlistÚsetÚranger4   r3   ÚhstackÚchoiceÚnewaxisr5   Údeleter   Úmean)r#   r   r   r<   r    Ú
selected_XÚrngÚadded_candidatesÚadded_XÚremoved_candidateÚ	removed_XÚplain_cv_scoreÚsfs_cv_scoreÚadded_cv_scoreÚremoved_cv_scores                  r!   Ú,test_n_features_to_select_stopping_criterionrX   J   sm  € õ(  b¸ÈÐKÑKÔK�D€A€qà
€Cå
#ÝÑÔØ#ØØØðñ ô €Cð ‡G‚GˆAˆq�M„M€MØ—’˜qÑ!Ô!€Jå
Œ)×
Ò
 Ñ
"Ô
"€Cå�C¥ a¤g¨a¤jÑ 1Ô 1Ñ2Ô2µS¸¿ºÐQU¸Ñ9VÔ9VÑ5WÔ5WÑWÑXÔXÐÝŒiàØˆqˆqˆq�#—*’*Ð-Ñ.Ô.Ð.Ô/°°°µB´J°Ô?ð	
ñô €Gð Ÿ
š
¥4­¨cÔ.GÑ(HÔ(HÑ#IÔ#IÑJÔJÐÝ”	˜*Ð&7¸aÐ@Ñ@Ô@€Iå$Õ%5Ñ%7Ô%7¸¸AÀ!ÐDÑDÔD×IÒIÑKÔK€NÝ"Õ#3Ñ#5Ô#5°zÀ1ÈÐKÑKÔK×PÒPÑRÔR€LÝ$Õ%5Ñ%7Ô%7¸À!ÈÐJÑJÔJ×OÒOÑQÔQ€NÝ&Õ'7Ñ'9Ô'9¸9ÀaÈAÐNÑNÔN×SÒSÑUÔUÐà˜>Ò)Ð)Ð)Ð)à�IÒÐØ˜~Ñ-°#Ò5Ð5Ð5Ð5ØÐ/Ñ/°CÒ7Ð7Ð7Ð7Ð7Ð7à Ñ-°#Ò5Ð5Ð5Ð5Ø  <Ñ/°CÒ7Ð7Ð7Ð7Ð7Ð7r8   zn_features_to_select, expected))gš™™™™™¹?r&   )g      ð?r*   )g      à?r   c                 ó°   — t          d¬¦  «        \  }}t          t          ¦   «         || d¬¦  «        }|                     ||¦  «         |j        |k    sJ ‚d S )Nr*   r   r-   r.   )r   r	   r
   r   r5   )r#   r   Úexpectedr   r   r    s         r!   Útest_n_features_to_select_floatr[   ˆ   sk   € õ  bÐ)Ñ)Ô)�D€A€qÝ
#ÝÑÔØ1ØØð	ñ ô €Cð ‡G‚GˆAˆq�M„M€MØÔ$¨Ò0Ð0Ð0Ð0Ð0Ð0r8   Úseedr*   z0n_features_to_select, expected_selected_featuresr-   r&   c                 ód  — t           j                             | ¦  «        }d}|                     |d¦  «        }d|d d …df         z  d|d d …df         z  z
  }t	          t          ¦   «         ||d¬¦  «        }|                     ||¦  «         t          |                     d¬¦  «        |¦  «         d S )	Néd   é   r   r*   r-   r.   Tr0   )	rC   rD   rE   Úrandnr	   r
   r   r   r3   )	r\   r#   r   Úexpected_selected_featuresrO   Ú	n_samplesr   r   r    s	            r!   Útest_sanityrc   ž   s¹   € õ Œ)×
Ò
 Ñ
%Ô
%€CØ€IØ�	Š	�)˜QÑÔ€AØ	ˆAˆaˆaˆa�ˆdŒG‰�b˜1˜Q˜Q˜Q ˜Tœ7‘lÑ"€Aå
#ÝÑÔØ1ØØð	ñ ô €Cð ‡G‚GˆAˆq�M„M€MÝ�s—’¨t�Ñ4Ô4Ð6PÑQÔQÐQÐQÐQr8   Úcsr_containerc                 óÔ   — t          d¬¦  «        \  }} | |¦  «        }t          t          ¦   «         dd¬¦  «        }|                     ||¦  «         |                     |¦  «         d S )Nr*   r   r(   r-   ©r   r/   )r   r	   r
   r   r6   )rd   r   r   r    s       r!   Útest_sparse_supportrg   »   ss   € õ  bÐ)Ñ)Ô)�D€A€qØˆ�aÑÔ€AÝ
#ÝÑÔ°¸Aðñ ô €Cð ‡G‚GˆAˆq�M„M€MØ‡M‚M�!ÑÔÐÐÐr8   c                  ó4  — t           j                             d¦  «        } d\  }}t          ||d¬¦  «        \  }}|                      dd||ft
          ¬¦  «        }t           j        ||<   t          t          ¦   «         dd¬¦  «        }| 	                    ||¦  «         | 
                    |¦  «         t          j        t          d¬	¦  «        5  t          t          ¦   «         dd¬¦  «         	                    ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   )é(   é   ©r,   r-   )ÚsizeÚdtyper(   rf   zInput X contains NaNr   )rC   rD   rE   r   ÚrandintÚboolÚnanr	   r   r   r6   r   r   r   r
   )rO   rb   r   r   r   Únan_maskr    s          r!   Útest_nan_supportrr   È   sR  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ!Ñ€IˆzÝ˜9 j¸qÐAÑAÔA�D€A€qØ�{Š{˜1˜a y°*Ð&=ÅTˆ{ÑJÔJ€HÝ”&€A€h�KÝ
#Ý%Ñ'Ô'¸fÈðñ ô €Cð ‡G‚GˆAˆq�M„M€MØ‡M‚M�!ÑÔÐå	Œ•zÐ)?Ð	@Ñ	@Ô	@ð ð å!ÝÑÔ°VÀð	
ñ 	
ô 	
ç
Š#ˆa�‰)Œ)ˆ)ð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Ã3DÄDÄDc                  óÎ  — d\  } }t          | |d¬¦  «        \  }}t          t          ¦   «         t          ¦   «         ¦  «        }t	          |dd¬¦  «        }|                     ||¦  «         |                     |¦  «         t	          t          ¦   «         dd¬¦  «        }t          t          ¦   «         |¦  «        }|                     ||¦  «         |                     |¦  «         d S )N)r@   r_   r   rk   r(   r-   rf   )r   r   r   r
   r	   r   r6   )rb   r   r   r   Úpiper    s         r!   Útest_pipeline_supportru   Ý   sÞ   € ð "Ñ€IˆzÝ˜9 j¸qÐAÑAÔA�D€A€qõ �Ñ)Ô)Õ+;Ñ+=Ô+=Ñ>Ô>€DÝ
# D¸vÈ!Ð
LÑ
LÔ
L€CØ‡G‚GˆAˆq�M„M€MØ‡M‚M�!ÑÔÐõ $ÝÑÔ°¸Aðñ ô €Cõ �Ñ)Ô)¨3Ñ/Ô/€DØ‡H‚HˆQ��N„N€NØ‡N‚N�1ÑÔÐÐÐr8   )r-   r_   c                 óà   — t          d¬¦  «        \  }}t          t          d¬¦  «        | ¬¦  «        }|                     |¦  «         |                     |¦  «        j        d         | k    sJ ‚d S )Nrj   r   r&   )Ún_initr   )r   r	   r   r   r6   r4   )r   r   r   r    s       r!   Útest_unsupervised_model_fitrx   ó   sz   € õ
  Ð#Ñ#Ô#�D€A€qÝ
#Ý�aÐÑÔØ1ðñ ô €Cð ‡G‚GˆA�J„J€JØ�=Š=˜ÑÔÔ! !Ô$Ð(<Ò<Ð<Ð<Ð<Ð<Ð<r8   r   Úno_validationy              ð?gš™™™™ùX@r_   c                 ó  — t          d¬¦  «        \  }}t          t          ¦   «         d¬¦  «        }t          j        t
          t          f¦  «        5  |                     || ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né   r   r_   r   )r   r	   r   r   r   Ú	TypeErrorr   r   )r   r   Úclustersr    s       r!   Útest_no_y_validation_model_fitr~     sÂ   € õ ¨Ð*Ñ*Ô*�K€A€xÝ
#Ý‰ŒØðñ ô €Cõ
 
Œ�	¥:Ð.Ñ	/Ô	/ð ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA5Á5A9Á<A9c                  ó   — t          dd¬¦  «        \  } }t          t          ¦   «         ddd¬¦  «        }t          j        t
          d¬	¦  «        5  |                     | |¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z?Check that we raise an error when tol<0 and direction='forward'r*   r   r+   r(   r$   çü©ñÒMbP¿©r   r#   r<   ztol must be strictly positiver   Nr   )r   r   r    s      r!   Útest_forward_neg_tol_errorr‚     sË   € å b°qÐ9Ñ9Ô9�D€A€qÝ
#ÝÑÔØ#ØØð	ñ ô €Cõ 
Œ•zÐ)HÐ	IÑ	IÔ	Ið ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA3Á3A7Á:A7c                  óÔ  — t          dd¬¦  «        \  } }t          ¦   «         }|                     | |¦  «                             | |¦  «        }t	          |ddd¬¦  «        }|                     | |¦  «        }|                     ||¦  «                             ||¦  «        }d|                     ¦   «                              ¦   «         cxk     r| j        d         k     sn J ‚||k     sJ ‚d	S )
z`Check that SequentialFeatureSelector works negative tol

    non-regression test for #25525
    r*   r   r+   r(   r%   r€   r�   r&   N)	r   r
   r   Úscorer	   Úfit_transformr3   Úsumr4   )r   r   ÚlrÚinitial_scorer    ÚXrÚ	new_scores          r!   Útest_backward_neg_tolr‹     sö   € õ
  b°qÐ9Ñ9Ô9�D€A€qÝ	Ñ	Ô	€BØ—F’F˜1˜a‘L”L×&Ò& q¨!Ñ,Ô,€Må
#Ø
Ø#ØØð	ñ ô €Cð 
×	Ò	˜1˜aÑ	 Ô	 €BØ—’�r˜1‘”×#Ò# B¨Ñ*Ô*€Iàˆs�ŠÑ Ô ×$Ò$Ñ&Ô&Ð3Ð3Ò3Ð3¨¬°¬Ò3Ð3Ð3Ð3Ð3Ð3Ø�}Ò$Ð$Ð$Ð$Ð$Ð$r8   c                  ó<  — t          d¬¦  «        \  } }t          j        |t          ¬¦  «        }d||j        dz  d…<   t          ¦   «         }|                     | ||¬¦  «        }t          d¬	¦  «        }t          |d|¬
¦  «        }| 	                    | |¦  «         dS )z\Check that no exception raised when cv is generator

    non-regression test for #25957
    r   rk   )rm   r&   r-   N)Úgroupsr   )Ún_neighborsrf   )
r   rC   Ú
zeros_likeÚintrl   r   Úsplitr   r	   r   )r   r   r�   r/   ÚsplitsÚkncr    s          r!   Útest_cv_generator_supportr”   3  s›   € õ
 ¨AÐ.Ñ.Ô.�D€A€qåŒ]˜1¥CÐ(Ñ(Ô(€FØ€Fˆ1Œ6�Q‰;ˆ=ˆ=Ñå	Ñ	Ô	€BØ�XŠX�a˜ 6ˆXÑ*Ô*€Få
¨1Ð
-Ñ
-Ô
-€Cå
# C¸aÀFÐ
KÑ
KÔ
K€CØ‡G‚GˆAˆq�M„M€M€M€Mr8   c                  ó$  — t          d¬¦  «        \  } }t          ¦   «         }t          |¬¦  «        }t          j        t
          d¬¦  «        5  |                     | |t          j        |¦  «        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né*   rk   )Ú	estimatorzis only supported ifr   )Úsample_weight)	r   r
   r	   r   r   r   r   rC   Ú	ones_like)r   r   Úestr    s       r!   Ú/test_fit_rejects_params_with_no_routing_enabledr›   F  sË   € Ý¨BÐ/Ñ/Ô/�D€A€qÝ
Ñ
Ô
€CÝ
#¨cÐ
2Ñ
2Ô
2€Cå	Œ•zÐ)?Ð	@Ñ	@Ô	@ð 5ð 5Ø�Š��1¥B¤L°¡O¤OˆÑ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   Á+BÂB	ÂB	)/ÚnumpyrC   r   Únumpy.testingr   Úsklearn.clusterr   Úsklearn.datasetsr   r   r   Úsklearn.ensembler   Úsklearn.feature_selectionr	   Úsklearn.linear_modelr
   Úsklearn.model_selectionr   r   Úsklearn.neighborsr   Úsklearn.pipeliner   Úsklearn.preprocessingr   Úsklearn.utils.fixesr   r"   ÚmarkÚparametrizer7   r>   rX   r[   rH   rc   rg   rr   ru   rx   rp   r~   r‚   r‹   r”   r›   © r8   r!   ú<module>r«      s—  ðØ Ð Ð Ð Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à "Ð "Ð "Ð "Ð "Ð "Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ :Ð :Ð :Ð :Ð :Ð :Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø *Ð *Ð *Ð *Ð *Ð *Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð „×Ò˜Ð&=Ñ>Ô>Ø„×ÒÐ/Ð1BÑCÔCð=ð =ñ DÔCñ ?Ô>ð=ð* „×Ò˜Ð&=Ñ>Ô>ðOð Oñ ?Ô>ðOð2 „×Ò˜Ð&=Ñ>Ô>ð:8ð :8ñ ?Ô>ð:8ðz „×Ò˜Ð&=Ñ>Ô>Ø„×ÒØ$ðñô ð
1ð 
1ñô ñ ?Ô>ð
1ð „×Ò˜   r¡¤Ñ+Ô+Ø„×Ò˜Ð&=Ñ>Ô>Ø„×ÒØ6à	
ˆQ�ˆFˆØ	
ˆQˆCˆðñô ðRð Rñô ñ ?Ô>ñ ,Ô+ðRð( „×Ò˜¨.Ñ9Ô9ð	ð 	ñ :Ô9ð	ðð ð ð*ð ð ð, „×ÒÐ/°Ñ8Ô8ð
=ð 
=ñ 9Ô8ð
=ð „×Ò˜˜°°D¸"¼&À!ÐDÑEÔEð
ð 
ñ FÔEð
ðð ð ð%ð %ð %ð,ð ð ð&5ð 5ð 5ð 5ð 5r8   