§
    §éUgŒ4  ã                   óÐ  — d dl Zd dl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j          !                    dg d¢¦  «        d„ ¦   «         Z"ej          !                    dddg¦  «        d„ ¦   «         Z#ej          !                    dddddgg¦  «        ej          !                    dddg¦  «        d„ ¦   «         ¦   «         Z$ej          !                    dg d¢¦  «        d„ ¦   «         Z%ej          !                    dddg¦  «        d„ ¦   «         Z&ej          !                    dddg¦  «        d„ ¦   «         Z'ej          !                    dddg¦  «        ej          !                    dddg¦  «        d„ ¦   «         ¦   «         Z(ej          !                    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j          !                    dddg¦  «        d'„ ¦   «         Z*ej          !                    dddg¦  «        d(„ ¦   «         Z+ej          !                    d) ed*d ¬+¦  «        df ed*d ¬+¦  «        df e¦   «         dfg¦  «        d,„ ¦   «         Z,d-„ Z-ej          !                    dg d.¢¦  «        d/„ ¦   «         Z.dS )0é    N)Ú	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¦  «         dS # 1 swxY w Y   dS )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       ú`/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/utils/tests/test_response.pyÚ(test_get_response_values_regressor_errorr*      sÒ   € õ 1À?ÐBSÐTÑTÔT€LØ(€AØÔ'Ô0ÐPÐPÐP€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð Oð OÝ˜\¨1¸oÐNÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os   ¾AÁA"Á%A"Úreturn_response_method_usedc                 ó"  — t          dd¬¦  «        \  }}t          ¦   «                              ||¦  «        }t          ||d| ¬¦  «        }t	          |d         |                     |¦  «        ¦  «         |d         �J ‚| r|d         dk    sJ ‚dS dS )	z=Check the behaviour of `_get_response_values` with regressor.é
   r   ©Ú	n_samplesÚrandom_stateÚpredict©r   r+   é   Né   )r   r   Úfitr   r   r1   )r+   r'   ÚyÚ	regressorÚresultss        r)   Ú"test_get_response_values_regressorr9   )   s¶   € õ  R°aÐ8Ñ8Ô8�D€A€qÝ Ñ"Ô"×&Ò& q¨!Ñ,Ô,€IÝ"ØØ	Ø!Ø$?ð	ñ ô €Gõ �w˜q”z 9×#4Ò#4°QÑ#7Ô#7Ñ8Ô8Ð8Ø�1Œ:ÐÐÐØ"ð 'Ø�qŒz˜YÒ&Ð&Ð&Ð&ð'ð 'Ø&Ð&ó    r1   r   c                 óp  — t          dd¬¦  «        \  }}t          d¬¦  «                             ||¦  «        }t          ||| |¬¦  «        }t	          | t
          ¦  «        r| d         n| }t          ||¦  «        }t          |d          ||¦  «        ¦  «         |d         �J ‚|r|d         |k    sJ ‚dS dS )	zDCheck the behaviour of `_get_response_values` with outlier detector.é2   r   r.   ©r0   r2   r3   Nr4   )r   r   r5   r   Ú
isinstanceÚlistÚgetattrr   )r   r+   r'   r6   Úoutlier_detectorr8   Úchosen_response_methodÚprediction_methods           r)   Ú*test_get_response_values_outlier_detectionrD   :   sð   € õ ¨¸!Ð<Ñ<Ô<�D€A€qÝ&°AÐ6Ñ6Ô6×:Ò:¸1¸aÑ@Ô@ÐÝ"ØØ	Ø'Ø$?ð	ñ ô €Gõ )¨½$Ñ?Ô?ÐTˆ˜ÔÐÀ_ð õ  Ð 0Ð2HÑIÔIÐÝ�w˜q”zÐ#4Ð#4°QÑ#7Ô#7Ñ8Ô8Ð8Ø�1Œ:ÐÐÐØ"ð 4Ø�qŒzÐ3Ò3Ð3Ð3Ð3ð4ð 4Ø3Ð3r:   )r   r   r1   r   c                 ó  — t          ddd¬¦  «        \  }}t          ¦   «                              ||¦  «        }d}t          j        t
          |¬¦  «        5  t          ||| d¬¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )
zVCheck that `_get_response_values` raises the proper error message with
    classifier.r-   r4   r   ©r/   Ú	n_classesr0   zDpos_label=whatever is not a valid label: It should be one of \[0 1\]r   Úwhatever©r   Ú	pos_labelN)r   r	   r5   r#   r$   r%   r   )r   r'   r6   Ú
classifierr(   s        r)   Ú5test_get_response_values_classifier_unknown_pos_labelrL   U   sÛ   € õ ¨°qÀqÐIÑIÔI�D€A€qÝ#Ñ%Ô%×)Ò)¨!¨QÑ/Ô/€Jð V€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð 
ð 
ÝØØØ+Ø ð		
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ÁA6Á6A:Á=A:r   r   c                 ó,  — t          ddd¬¦  «        \  }}t          j        |¦  «        }t          ¦   «                              ||¦  «        }d}t          j        t          |¬¦  «        5  t          ||| ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	zpCheck that `_get_response_values` will raise an error when `y_pred` has a
    single class with `predict_proba`.r-   r4   r   rF   zJGot predict_proba of shape \(10, 1\), but need classifier with two classesr   r    N)	r   ÚnpÚ
zeros_liker   r5   r#   r$   r%   r   )r   r'   Úy_two_classÚy_single_classrK   r(   s         r)   ÚHtest_get_response_values_classifier_inconsistent_y_pred_for_binary_probarR   j   sõ   € õ )°2ÀÐQRÐSÑSÔS�N€A€{Ý”] ;Ñ/Ô/€NÝ'Ñ)Ô)×-Ò-¨a°Ñ@Ô@€Jð	ð õ 
Œ•z¨Ð	1Ñ	1Ô	1ð Mð MÝ˜Z¨¸OÐLÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mð Mð Ms   Á)B	Â	BÂBc                 ó
  — t          ddddgd¬¦  «        \  }}t          ¦   «                              ||¦  «        }d}t          |||d| ¬	¦  «        }t	          |d         |                     |¦  «        ¦  «         |d
         d
k    sJ ‚| r|d         dk    sJ ‚t          ||||j        d         | ¬	¦  «        }t	          |d         |                     |¦  «        dz  ¦  «         |d
         dk    sJ ‚| r|d         dk    sJ ‚dS dS )zaCheck the behaviour of `_get_response_values` with `decision_function`
    and binary classifier.r-   r4   ç333333Ó?çffffffæ?r   ©r/   rG   Úweightsr0   r   N©r   rJ   r+   r3   éÿÿÿÿ)r   r	   r5   r   r   r   Úclasses_)r+   r'   r6   rK   r   r8   s         r)   Ú<test_get_response_values_binary_classifier_decision_functionr[   |   s[  € õ ØØØ�c�
Øð	ñ ô �D€A€qõ $Ñ%Ô%×)Ò)¨!¨QÑ/Ô/€JØ)€Oõ #ØØ	Ø'ØØ$?ðñ ô €Gõ �G˜A”J 
× <Ò <¸QÑ ?Ô ?Ñ@Ô@Ð@Ø�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð 1Ø�qŒzÐ0Ò0Ð0Ð0Ð0õ #ØØ	Ø'ØÔ% aÔ(Ø$?ðñ ô €Gõ �G˜A”J 
× <Ò <¸QÑ ?Ô ?À"Ñ DÑEÔEÐEØ�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð 1Ø�qŒzÐ0Ò0Ð0Ð0Ð0ð1ð 1Ø0Ð0r:   c                 óX  — t          ddddgd¬¦  «        \  }}t          ¦   «                              ||¦  «        }t          |||d| ¬¦  «        }t	          |d          t          ||¦  «        |¦  «        dd…d	f         ¦  «         |d	         d	k    sJ ‚| r$t          |¦  «        d
k    sJ ‚|d         |k    sJ ‚nt          |¦  «        dk    sJ ‚t          ||||j        d         | ¬¦  «        ^}}}t	          | t          ||¦  «        |¦  «        dd…df         ¦  «         |dk    sJ ‚dS )zQCheck that `_get_response_values` with `predict_proba` and binary
    classifier.r-   r4   rT   rU   r   rV   NrX   r3   é   )r   r	   r5   r   r   r@   ÚlenrZ   )	r+   r   r'   r6   rK   r8   Úy_predrJ   Ú_s	            r)   Ú8test_get_response_values_binary_classifier_predict_probara   ¦   s~  € õ ØØØ�c�
Øð	ñ ô �D€A€qõ $Ñ%Ô%×)Ò)¨!¨QÑ/Ô/€Jõ #ØØ	Ø'ØØ$?ðñ ô €Gõ �G˜A”JÐ D¥¨
°OÑ DÔ DÀQÑ GÔ GÈÈÈÈ1ÈÔ MÑNÔNÐNØ�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð !Ý�7‰|Œ|˜qÒ Ð Ð Ð Ø�qŒz˜_Ò,Ð,Ð,Ð,Ð,å�7‰|Œ|˜qÒ Ð Ð Ð õ 1ØØ	Ø'ØÔ% aÔ(Ø$?ðñ ô Ð€FˆI˜õ �FÐ@�G J°Ñ@Ô@ÀÑCÔCÀAÀAÀAÀqÀDÔIÑJÔJÐ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\]ÚunknownrI   z.be a binary classifier. Got 3 classes instead.c                 ó¶   — |                       ||¦  «         t          j        t          |¬¦  «        5  t	          | |fi |¤Ž ddd¦  «         dS # 1 swxY w Y   dS )zMCheck that we raise the proper error messages in _get_response_values_binary.r   N)r5   r#   r$   r%   r   )Ú	estimatorr'   r6   r(   Úparamss        r)   Útest_get_response_errorrg   Ñ   s©   € ð: ‡M‚M�!�QÑÔÐÝ	Œ•z¨Ð	1Ñ	1Ô	1ð <ð <Ý# I¨qÐ;Ð;°FÐ;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   ²AÁAÁAc                 ó  — t          ¦   «                              t          t          ¦  «        }t	          |t          d| ¬¦  «        }t          |d         |                     t          ¦  «        dd…df         ¦  «         |d         dk    sJ ‚| r|d         dk    sJ ‚t	          |t          dd| ¬¦  «        }t          |d         |                     t          ¦  «        dd…df         ¦  «         |d         dk    sJ ‚| r|d         dk    sJ ‚dS dS )zKCheck the behaviour of `_get_response_values_binary` using `predict_proba`.r   r2   r   Nr3   r4   rX   )r   r5   ÚX_binaryÚy_binaryr   r   r   ©r+   rK   r8   s      r)   Útest_get_response_predict_probarl   ó   s0  € õ (Ñ)Ô)×-Ò-­h½ÑAÔA€JÝ)ØÝØ'Ø$?ð	ñ ô €Gõ �G˜A”J 
× 8Ò 8½Ñ BÔ BÀ1À1À1ÀaÀ4Ô HÑIÔIÐIØ�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð -Ø�qŒz˜_Ò,Ð,Ð,Ð,å)ØÝØ'ØØ$?ðñ ô €Gõ �G˜A”J 
× 8Ò 8½Ñ BÔ BÀ1À1À1ÀaÀ4Ô HÑIÔIÐIØ�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð -Ø�qŒz˜_Ò,Ð,Ð,Ð,ð-ð -Ø,Ð,r:   c                 óú  — t          ¦   «                              t          t          ¦  «        }t	          |t          d| ¬¦  «        }t          |d         |                     t          ¦  «        ¦  «         |d         dk    sJ ‚| r|d         dk    sJ ‚t	          |t          dd| ¬¦  «        }t          |d         |                     t          ¦  «        dz  ¦  «         |d         dk    sJ ‚| r|d         dk    sJ ‚dS dS )	zMCheck the behaviour of `_get_response_values_binary` using decision_function.r   r2   r   r3   r4   rX   rY   N)r	   r5   ri   rj   r   r   r   rk   s      r)   Ú#test_get_response_decision_functionrn     s  € õ $Ñ%Ô%×)Ò)­(µHÑ=Ô=€JÝ)ØÝØ+Ø$?ð	ñ ô €Gõ �G˜A”J 
× <Ò <½XÑ FÔ FÑGÔGÐGØ�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð 1Ø�qŒzÐ0Ò0Ð0Ð0Ð0å)ØÝØ+ØØ$?ðñ ô €Gõ �G˜A”J 
× <Ò <½XÑ FÔ FÈÑ KÑLÔLÐLØ�1Œ:˜Š?ˆ?ˆ?ˆ?Ø"ð 1Ø�qŒzÐ0Ò0Ð0Ð0Ð0ð1ð 1Ø0Ð0r:   zestimator, response_methodr4   )Ú	max_depthr0   c                 óš  — |                       t          t          ¦  «         t          | t          |¬¦  «        \  }}|�J ‚|j        t          j        d         t          | j        ¦  «        fk    sJ ‚|dk    r3t          j        |dk    |dk    ¦  «         	                    ¦   «         sJ ‚dS |dk    r|dk     	                    ¦   «         sJ ‚dS dS )zCheck that we can call `_get_response_values` with a multiclass estimator.
    It should return the predictions untouched.
    r    Nr   r   r3   r   g        )
r5   r'   r6   r   Úshaper^   rZ   rN   Úlogical_andÚall)re   r   ÚpredictionsrJ   s       r)   Ú#test_get_response_values_multiclassru   +  sæ   € ð ‡M‚M•!•QÑÔÐÝ1Ø•1 oðñ ô Ñ€K�ð ÐÐÐØÔ¥¤¨¤­S°Ô1CÑ-DÔ-DÐ EÒEÐEÐEÐEØ˜/Ò)Ð)ÝŒ~˜k¨QÒ.°¸qÒ0@ÑAÔA×EÒEÑGÔGÐGÐGÐGÐGÐGØ	Ð/Ò	/Ð	/Ø˜sÒ"×'Ò'Ñ)Ô)Ð)Ð)Ð)ð 
0Ð	/Ø)Ð)r:   c                  óÊ  — t          ¦   «                              t          t          ¦  «        } t	          | t          ddgd¬¦  «        \  }}}t          ||                      t          ¦  «        dd…df         ¦  «         |dk    sJ ‚|dk    sJ ‚t	          | t          ddgd¬¦  «        \  }}}t          ||                      t          ¦  «        ¦  «         |dk    sJ ‚|dk    sJ ‚dS )zMCheck the behaviour of passing a list of responses to `_get_response_values`.r   r   Tr2   Nr3   )r	   r5   ri   rj   r   r   r   r   )rK   r_   rJ   r   s       r)   Ú+test_get_response_values_with_response_listrw   D  s
  € å#Ñ%Ô%×)Ò)­(µHÑ=Ô=€Jõ *>ØÝØ(Ð*=Ð>Ø$(ð	*ñ *ô *Ñ&€FˆI�õ �F˜J×4Ò4µXÑ>Ô>¸q¸q¸qÀ!¸tÔDÑEÔEÐEØ˜Š>ˆ>ˆ>ˆ>Ø˜oÒ-Ð-Ð-Ð-õ *>ØÝØ,¨oÐ>Ø$(ð	*ñ *ô *Ñ&€FˆI�õ �F˜J×8Ò8½ÑBÔBÑCÔCÐCØ˜Š>ˆ>ˆ>ˆ>ØÐ1Ò1Ð1Ð1Ð1Ð1Ð1r:   )r   r   r1   c                 ó<  — t          d¬¦  «        \  }}t          t          ¦   «         ¦  «                             ||¦  «        }t	          ||| ¬¦  «        \  }}|�J ‚|j        |j        k    sJ ‚| dk    r3t          j        |dk    |dk    ¦  «                             ¦   «         sJ ‚d S | dk    r>|dk      	                    ¦   «         dk    sJ ‚|dk     	                    ¦   «         dk    sJ ‚d S t          j
        |dk    |dk    ¦  «                             ¦   «         sJ ‚d S )Nr   r=   r    r   r3   r   )r   r
   r	   r5   r   rq   rN   rr   rs   ÚsumÚ
logical_or)r   r'   ÚYre   r_   rJ   s         r)   Ú-test_get_response_values_multilabel_indicatorr|   _  sB  € õ *°qÐ9Ñ9Ô9�D€A€qÝÕ 2Ñ 4Ô 4Ñ5Ô5×9Ò9¸!¸QÑ?Ô?€Iå,Ø�1 oðñ ô Ñ€FˆIð ÐÐÐØŒ<˜1œ7Ò"Ð"Ð"Ð"à˜/Ò)Ð)ÝŒ~˜f¨šk¨6°Qª;Ñ7Ô7×;Ò;Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ø	Ð/Ò	/Ð	/à˜’
×ÒÑ!Ô! AÒ%Ð%Ð%Ð%Ø˜’
×ÒÑ!Ô! AÒ%Ð%Ð%Ð%Ð%Ð%åŒ}˜V qš[¨&°Aª+Ñ6Ô6×:Ò:Ñ<Ô<Ð<Ð<Ð<Ð<Ð<r:   )/ÚnumpyrN   r#   Ú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'   r6   ri   rj   ÚmarkÚparametrizer*   r9   rD   rL   rR   r[   ra   rg   rl   rn   ru   rw   r|   © r:   r)   ú<module>rŠ      s  ðØ Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð 0Ð /Ð /Ð /Ð /Ð /Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ @Ð @Ð @Ð @Ð @Ð @Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà€y˜DÐ!Ñ!Ô!�€€1à	€Eˆ!�%ÐÑÔ€Ø�t˜�t”W˜a   œgÐ €ˆ(ð „×ÒØÐRÐRÐRñô ðOð Oñô ðOð „×ÒÐ6¸¸u¸ÑFÔFð'ð 'ñ GÔFð'ð  „×ÒØØÐ#Ð&9¸9Ð%EÐFñô ð „×ÒÐ6¸¸u¸ÑFÔFð4ð 4ñ GÔFñ	ô ð
4ð, „×ÒØØJÐJÐJñô ð
ð 
ñ	ô ð
ð" „×ÒÐ*¨_Ð>QÐ,RÑSÔSðMð Mñ TÔSðMð" „×ÒÐ6¸¸u¸ÑFÔFð&1ð &1ñ GÔFð&1ðR „×ÒÐ6¸¸u¸ÑFÔFØ„×ÒÐ*¨_Ð>QÐ,RÑSÔSð&ð &ñ TÔSñ GÔFð&ðR „×ÒØ&ð "Ð!Ñ#Ô#ØØØ<Ø Ð'ð	
ð #Ð"Ñ$Ô$ØØØRØ &°YÐ?Ð?ð	
ð #Ð"Ñ$Ô$ØØØ<Ø Ð0ð	
ðñô ð4<ð <ñ5ô ð4<ð „×ÒÐ6¸¸u¸ÑFÔFð-ð -ñ GÔFð-ð6 „×ÒÐ6¸¸u¸ÑFÔFð1ð 1ñ GÔFð1ð6 „×ÒØ à	Ð	¨!¸!Ð	<Ñ	<Ô	<¸oÐNØ	Ð	¨!¸!Ð	<Ñ	<Ô	<Ð>QÐRØ	Ð	Ñ	Ô	Ð2Ð3ðñô ð*ð *ñô ð*ð"2ð 2ð 2ð6 „×ÒØÐHÐHÐHñô ð=ð =ñô ð=ð =ð =r:   