Ë
    êÿæi½7  ã                   ól  — d dl Z d dlZd dlZd dlmZ d dl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mZ d d	lmZ d d
lmZmZ d dlmZmZ  ed¬«      \  ZZ  eed¬«      Zedd e dd cZ!Z"ejF                  jI                  dg d¢«      d„ «       Z%ejF                  jI                  dddg«      d„ «       Z&ejF                  jI                  dddddgg«      ejF                  jI                  dddg«      d„ «       «       Z'ejF                  jI                  dg d¢«      d„ «       Z(ejF                  jI                  dddg«      d„ «       Z)ejF                  jI                  dddg«      d„ «       Z*ejF                  jI                  dddg«      ejF                  jI                  dddg«      d„ «       «       Z+ejF                  jI                  d  e«       e!e"d!dd"if e«       e!e"d#d"d$d%œf e«       ee d&ddifg«      d'„ «       Z,ejF                  jI                  dddg«      d(„ «       Z-ejF                  jI                  dddg«      d)„ «       Z.ejF                  jI                  d* ed+d ¬,«      df ed+d ¬,«      df e«       dfg«      d-„ «       Z/d.„ Z0ejF                  jI                  dg d/¢«      d0„ «       Z1d1„ Z2y)2é    N)Úclone)Ú	load_irisÚmake_classificationÚmake_multilabel_classificationÚmake_regression)ÚIsolationForest)ÚLinearRegressionÚLogisticRegression)ÚClassifierChain)Úscale)ÚDecisionTreeClassifierÚDecisionTreeRegressor)Ú_MockEstimatorOnOffPrediction)Ú_get_response_valuesÚ_get_response_values_binary)Úassert_allcloseÚassert_array_equalT)Ú
return_X_yF)Úcopyéd   Úresponse_method)Údecision_functionÚpredict_probaÚpredict_log_probac                 óÐ   — t        | g¬«      }d}|j                  j                  › d�}t        j                  t
        |¬«      5  t        ||| ¬«       ddd«       y# 1 sw Y   yxY w)zLCheck the error message with regressor an not supported response
    method.)Úresponse_methods)Úmocking_dataÚmocking_targetz should either be a classifier©Úmatch©r   N)r   Ú	__class__Ú__name__ÚpytestÚraisesÚ
ValueErrorr   )r   Úmy_estimatorÚXÚerr_msgs       úv/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/utils/tests/test_response.pyÚ(test_get_response_values_regressor_errorr+      sV   € ô 1À?ÐBSÔT€LØ(€AØ×'Ñ'×0Ñ0Ð1Ð1OÐP€GÜ	�‰”z¨Ö	1Ü˜\¨1¸oÕN÷ 
2×	1Ñ	1ús   ÁAÁA%Úreturn_response_method_usedc                 óÚ   — t        dd¬«      \  }}t        «       j                  ||«      }t        ||d| ¬«      }t	        |d   |j                  |«      «       |d   �J ‚| r|d   dk(  sJ ‚yy)	z=Check the behaviour of `_get_response_values` with regressor.é
   r   ©Ú	n_samplesÚrandom_stateÚpredict©r   r,   é   Né   )r   r	   Úfitr   r   r2   )r,   r(   ÚyÚ	regressorÚresultss        r*   Ú"test_get_response_values_regressorr:   ,   s„   € ô  R°aÔ8�D€A€qÜ Ó"×&Ñ& q¨!Ó,€IÜ"ØØ	Ø!Ø$?ô	€Gô �w˜q‘z 9×#4Ñ#4°QÓ#7Ô8Ø�1‰:ÐÐÐÙ"Ø�q‰z˜YÒ&Ð&Ñ&ð #ó    r2   r   c                 ó  — t        dd¬«      \  }}t        d¬«      j                  ||«      }t        ||| |¬«      }t	        | t
        «      r| d   n| }t        ||«      }t        |d    ||«      «       |d   �J ‚|r|d   |k(  sJ ‚yy)	zDCheck the behaviour of `_get_response_values` with outlier detector.é2   r   r/   ©r1   r3   r4   Nr5   )r   r   r6   r   Ú
isinstanceÚlistÚgetattrr   )r   r,   r(   r7   Úoutlier_detectorr9   Úchosen_response_methodÚprediction_methods           r*   Ú*test_get_response_values_outlier_detectionrE   =   s¬   € ô ¨¸!Ô<�D€A€qÜ&°AÔ6×:Ñ:¸1¸aÓ@ÐÜ"ØØ	Ø'Ø$?ô	€Gô )¨¼$Ô?ˆ˜ÒÀ_ð ô  Ð 0Ð2HÓIÐÜ�w˜q‘zÑ#4°QÓ#7Ô8Ø�1‰:ÐÐÐÙ"Ø�q‰zÐ3Ò3Ð3Ñ3ð #r;   )r   r   r2   r   c                 óÜ   — t        ddd¬«      \  }}t        «       j                  ||«      }d}t        j                  t
        |¬«      5  t        ||| d¬«       d	d	d	«       y	# 1 sw Y   y	xY w)
zVCheck that `_get_response_values` raises the proper error message with
    classifier.r.   r5   r   ©r0   Ú	n_classesr1   zDpos_label=whatever is not a valid label: It should be one of \[0 1\]r   Úwhatever©r   Ú	pos_labelN)r   r
   r6   r$   r%   r&   r   )r   r(   r7   Ú
classifierr)   s        r*   Ú5test_get_response_values_classifier_unknown_pos_labelrM   X   sa   € ô ¨°qÀqÔI�D€A€qÜ#Ó%×)Ñ)¨!¨QÓ/€Jð V€GÜ	�‰”z¨Ö	1ÜØØØ+Ø õ		
÷ 
2×	1Ñ	1ús   Á	A"Á"A+r   r   c                 ó  — t        ddd¬«      \  }}t        j                  |«      }t        «       j	                  ||«      }d}t        j                  t        |¬«      5  t        ||| ¬«       ddd«       y# 1 sw Y   yxY w)	zpCheck that `_get_response_values` will raise an error when `y_pred` has a
    single class with `predict_proba`.r.   r5   r   rG   zJGot predict_proba of shape \(10, 1\), but need classifier with two classesr   r!   N)	r   ÚnpÚ
zeros_liker   r6   r$   r%   r&   r   )r   r(   Úy_two_classÚy_single_classrL   r)   s         r*   ÚHtest_get_response_values_classifier_inconsistent_y_pred_for_binary_probarS   m   sl   € ô )°2ÀÐQRÔS�N€A€{Ü—]‘] ;Ó/€NÜ'Ó)×-Ñ-¨a°Ó@€Jð	ð ô 
�‰”z¨Ö	1Ü˜Z¨¸OÕL÷ 
2×	1Ñ	1ús   ÁA6Á6A?c                 ó–  — t        ddddgd¬«      \  }}t        «       j                  ||«      }d}t        |||d| ¬	«      }t	        |d   |j                  |«      «       |d
   d
k(  sJ ‚| r
|d   dk(  sJ ‚t        ||||j                  d   | ¬	«      }t	        |d   |j                  |«      dz  «       |d
   dk(  sJ ‚| r|d   dk(  sJ ‚yy)zaCheck the behaviour of `_get_response_values` with `decision_function`
    and binary classifier.r.   r5   ç333333Ó?çffffffæ?r   ©r0   rH   Úweightsr1   r   N©r   rK   r,   r4   éÿÿÿÿ)r   r
   r6   r   r   r   Úclasses_)r,   r(   r7   rL   r   r9   s         r*   Ú<test_get_response_values_binary_classifier_decision_functionr\      s  € ô ØØØ�c�
Øô	�D€A€qô $Ó%×)Ñ)¨!¨QÓ/€JØ)€Oô #ØØ	Ø'ØØ$?ô€Gô �G˜A‘J 
× <Ñ <¸QÓ ?Ô@Ø�1‰:˜Š?Ðˆ?Ù"Ø�q‰zÐ0Ò0Ð0Ð0ô #ØØ	Ø'Ø×%Ñ% aÑ(Ø$?ô€Gô �G˜A‘J 
× <Ñ <¸QÓ ?À"Ñ DÔEØ�1‰:˜Š?Ðˆ?Ù"Ø�q‰zÐ0Ò0Ð0Ñ0ð #r;   c                 óÌ  — t        ddddgd¬«      \  }}t        «       j                  ||«      }t        |||d| ¬«      }t	        |d    t        ||«      |«      dd…d	f   «       |d	   d	k(  sJ ‚| rt        |«      d
k(  sJ ‚|d   |k(  sJ ‚t        |«      dk(  sJ ‚t        ||||j                  d   | ¬«      ^}}}t	        | t        ||«      |«      dd…df   «       |dk(  sJ ‚y)zQCheck that `_get_response_values` with `predict_proba` and binary
    classifier.r.   r5   rU   rV   r   rW   NrY   r4   é   )r   r
   r6   r   r   rA   Úlenr[   )	r,   r   r(   r7   rL   r9   Úy_predrK   Ú_s	            r*   Ú8test_get_response_values_binary_classifier_predict_probarb   ©   s"  € ô ØØØ�c�
Øô	�D€A€qô $Ó%×)Ñ)¨!¨QÓ/€Jô #ØØ	Ø'ØØ$?ô€Gô �G˜A‘JÐ D¤¨
°OÓ DÀQÓ GÊÈ1ÈÑ MÔNØ�1‰:˜Š?Ðˆ?Ù"Ü�7‹|˜qÒ Ð Ð Ø�q‰z˜_Ò,Ð,Ð,ä�7‹|˜qÒ Ð Ð ô 1ØØ	Ø'Ø×%Ñ% aÑ(Ø$?ôÐ€FˆI˜ô �FÐ@œG J°Ó@ÀÓCÂAÀqÀDÑIÔJØ˜Š>Ð‰>r;   z estimator, X, y, err_msg, paramsz.Expected 'estimator' to be a binary classifierÚautozCpos_label=unknown is not a valid label: It should be one of \[0 1\]ÚunknownrJ   z.be a binary classifier. Got 3 classes instead.c                 ó´   — t        | «      j                  ||«      } t        j                  t        |¬«      5  t        | |fi |¤Ž ddd«       y# 1 sw Y   yxY w)zMCheck that we raise the proper error messages in _get_response_values_binary.r   N)r   r6   r$   r%   r&   r   )Ú	estimatorr(   r7   r)   Úparamss        r*   Útest_get_response_errorrh   Ô   sD   € ô: �iÓ ×$Ñ$ Q¨Ó*€IÜ	�‰”z¨Ö	1Ü# I¨qÑ;°FÒ;÷ 
2×	1Ñ	1ús   ·AÁAc                 ó”  — t        «       j                  t        t        «      }t	        |t        d| ¬«      }t        |d   |j                  t        «      dd…df   «       |d   dk(  sJ ‚| r
|d   dk(  sJ ‚t	        |t        dd| ¬«      }t        |d   |j                  t        «      dd…df   «       |d   dk(  sJ ‚| r|d   dk(  sJ ‚yy)zKCheck the behaviour of `_get_response_values_binary` using `predict_proba`.r   r3   r   Nr4   r5   rY   )r   r6   ÚX_binaryÚy_binaryr   r   r   ©r,   rL   r9   s      r*   Útest_get_response_predict_probarm   ö   sß   € ô (Ó)×-Ñ-¬h¼ÓA€JÜ)ØÜØ'Ø$?ô	€Gô �G˜A‘J 
× 8Ñ 8¼Ó BÂ1ÀaÀ4Ñ HÔIØ�1‰:˜Š?Ðˆ?Ù"Ø�q‰z˜_Ò,Ð,Ð,ä)ØÜØ'ØØ$?ô€Gô �G˜A‘J 
× 8Ñ 8¼Ó BÂ1ÀaÀ4Ñ HÔIØ�1‰:˜Š?Ðˆ?Ù"Ø�q‰z˜_Ò,Ð,Ñ,ð #r;   c                 ó~  — t        «       j                  t        t        «      }t	        |t        d| ¬«      }t        |d   |j                  t        «      «       |d   dk(  sJ ‚| r
|d   dk(  sJ ‚t	        |t        dd| ¬«      }t        |d   |j                  t        «      dz  «       |d   dk(  sJ ‚| r|d   dk(  sJ ‚yy)	zMCheck the behaviour of `_get_response_values_binary` using decision_function.r   r3   r   r4   r5   rY   rZ   N)r
   r6   rj   rk   r   r   r   rl   s      r*   Ú#test_get_response_decision_functionro     sÔ   € ô $Ó%×)Ñ)¬(´HÓ=€JÜ)ØÜØ+Ø$?ô	€Gô �G˜A‘J 
× <Ñ <¼XÓ FÔGØ�1‰:˜Š?Ðˆ?Ù"Ø�q‰zÐ0Ò0Ð0Ð0ä)ØÜØ+ØØ$?ô€Gô �G˜A‘J 
× <Ñ <¼XÓ FÈÑ KÔLØ�1‰:˜Š?Ðˆ?Ù"Ø�q‰zÐ0Ò0Ð0Ñ0ð #r;   zestimator, response_methodr5   )Ú	max_depthr1   c                 óˆ  — t        | «      } | j                  t        t        «       t	        | t        |¬«      \  }}|�J ‚|j
                  t        j
                  d   t        | j                  «      fk(  sJ ‚|dk(  r-t        j                  |dk\  |dk  «      j                  «       sJ ‚y|dk(  r|dk  j                  «       sJ ‚yy)zCheck that we can call `_get_response_values` with a multiclass estimator.
    It should return the predictions untouched.
    r!   Nr   r   r4   r   g        )r   r6   r(   r7   r   Úshaper_   r[   rO   Úlogical_andÚall)rf   r   ÚpredictionsrK   s       r*   Ú#test_get_response_values_multiclassrv   .  sÀ   € ô �iÓ €IØ‡M�M”!”QÔÜ1Ø”1 oôÑ€K�ð ÐÐÐØ×Ñ¤§¡¨¡¬S°×1CÑ1CÓ-DÐ EÒEÐEÐEØ˜/Ò)Ü�~‰~˜k¨QÑ.°¸qÑ0@ÓA×EÑEÔGÐGÑGØ	Ð/Ò	/Ø˜sÑ"×'Ñ'Ô)Ð)Ñ)ð 
0r;   c                  ón  — t        «       j                  t        t        «      } t	        | t        ddgd¬«      \  }}}t        || j                  t        «      dd…df   «       |dk(  sJ ‚|dk(  sJ ‚t	        | t        ddgd¬«      \  }}}t        || j                  t        «      «       |dk(  sJ ‚|dk(  sJ ‚y)zMCheck the behaviour of passing a list of responses to `_get_response_values`.r   r   Tr3   Nr4   )r
   r6   rj   rk   r   r   r   r   )rL   r`   rK   r   s       r*   Ú+test_get_response_values_with_response_listrx   H  sÌ   € ä#Ó%×)Ñ)¬(´HÓ=€Jô *>ØÜØ(Ð*=Ð>Ø$(ô	*Ñ&€FˆI�ô �F˜J×4Ñ4´XÓ>ºqÀ!¸tÑDÔEØ˜Š>Ðˆ>Ø˜oÒ-Ð-Ð-ô *>ØÜØ,¨oÐ>Ø$(ô	*Ñ&€FˆI�ô �F˜J×8Ñ8¼ÓBÔCØ˜Š>Ðˆ>ØÐ1Ò1Ð1Ñ1r;   )r   r   r2   c                 óð  — t        d¬«      \  }}t        t        «       «      j                  ||«      }t	        ||| ¬«      \  }}|�J ‚|j
                  |j
                  k(  sJ ‚| dk(  r-t        j                  |dk\  |dk  «      j                  «       sJ ‚y | dk(  r1|dk  j                  «       dkD  sJ ‚|dkD  j                  «       dkD  sJ ‚y t        j                  |dk(  |dk(  «      j                  «       sJ ‚y )Nr   r>   r!   r   r4   r   )r   r   r
   r6   r   rr   rO   rs   rt   ÚsumÚ
logical_or)r   r(   ÚYrf   r`   rK   s         r*   Ú-test_get_response_values_multilabel_indicatorr}   c  sø   € ô *°qÔ9�D€A€qÜÔ 2Ó 4Ó5×9Ñ9¸!¸QÓ?€Iä,Ø�1 oôÑ€FˆIð ÐÐÐØ�<‰<˜1Ÿ7™7Ò"Ð"Ð"à˜/Ò)Ü�~‰~˜f¨™k¨6°Q©;Ó7×;Ñ;Ô=Ð=Ñ=Ø	Ð/Ò	/à˜‘
×ÑÓ! AÒ%Ð%Ð%Ø˜‘
×ÑÓ! AÒ%Ð%Ñ%ä�}‰}˜V q™[¨&°A©+Ó6×:Ñ:Ô<Ð<Ñ<r;   c                  óŠ  — t         j                  j                  d«      j                  dd«      } t        j                  t        j
                  d«      d«      }t        «       j                  | |«      }t        j                  «       5  t        j                  dt        «       t        || d¬«       d	d	d	«       y	# 1 sw Y   y	xY w)
a  
    Ensure `_get_response_values` doesn't raise spurious warning.

    "The number of unique classes is greater than > 50% of samples"
    warning should not be raised when calling `type_of_target(classes_)`.

    Non-regression test for issue #31583.
    r   éx   r^   é   é   Úerrorr   r!   N)rO   ÚrandomÚRandomStateÚrandnÚrepeatÚaranger
   r6   ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   )r(   r7   Úclfs      r*   Ú9test_response_values_type_of_target_on_classes_no_warningr�   z  s†   € ô 	�	‰	×Ñ˜aÓ ×&Ñ& s¨AÓ.€Aä
�	‰	”"—)‘)˜B“- Ó#€Aä
Ó
×
"Ñ
" 1 aÓ
(€Cä	×	 Ñ	 Õ	"Ü×Ñ˜g¤{Ô3ä˜S !°_ÕE÷ 
#×	"Ñ	"ús   Â)B9Â9C)3rˆ   ÚnumpyrO   r$   Úsklearn.baser   Úsklearn.datasetsr   r   r   r   Úsklearn.ensembler   Úsklearn.linear_modelr	   r
   Úsklearn.multioutputr   Úsklearn.preprocessingr   Úsklearn.treer   r   Úsklearn.utils._mockingr   Úsklearn.utils._responser   r   Úsklearn.utils._testingr   r   r(   r7   rj   rk   ÚmarkÚparametrizer+   r:   rE   rM   rS   r\   rb   rh   rm   ro   rv   rx   r}   r�   © r;   r*   Ú<module>rœ      sO  ðÛ ã Û å ÷ó õ -÷õ 0Ý 'ß FÝ @ß Uß Fá˜DÔ!�€€1á	ˆ!�%Ô€Ø�t˜�W˜a  ˜gÐ €ˆ(ð ‡�×ÑØÒRóñOóðOð ‡�×ÑÐ6¸¸u¸ÓFñ'ó Gð'ð  ‡�×ÑØØÐ#Ð&9¸9Ð%EÐFóð ‡�×ÑÐ6¸¸u¸ÓFñ4ó Gó	ð
4ð, ‡�×ÑØÚJóñ
ó	ð
ð" ‡�×ÑÐ*¨_Ð>QÐ,RÓSñMó TðMð" ‡�×ÑÐ6¸¸u¸ÓFñ&1ó Gð&1ðR ‡�×ÑÐ6¸¸u¸ÓFØ‡�×ÑÐ*¨_Ð>QÐ,RÓSñ&ó Tó Gð&ðR ‡�×ÑØ&ñ "Ó#ØØØ<Ø Ð'ð	
ñ #Ó$ØØØRØ &°YÑ?ð	
ñ #Ó$ØØØ<Ø Ð0ð	
ðóñ4<ó5ð4<ð ‡�×ÑÐ6¸¸u¸ÓFñ-ó Gð-ð6 ‡�×ÑÐ6¸¸u¸ÓFñ1ó Gð1ð6 ‡�×ÑØ á	¨!¸!Ô	<¸oÐNÙ	¨!¸!Ô	<Ð>QÐRÙ	Ó	Ð2Ð3ðóñ*óð*ò$2ð6 ‡�×ÑØÒHóñ=óð=ó(Fr;   