
    0Ph4                        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)copyd   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       a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_response.py(test_get_response_values_regressor_errorr*      s     1?BSTTTL(A'0PPPG	z	1	1	1 O O\1o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     Ra888DAq ""&&q!,,I"	!$?	  G wqz9#4#4Q#7#78881:" 'qzY&&&&' '&&    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     !<<<DAq&A666::1a@@"	'$?	  G )$??T_    02HIIwqz#4#4Q#7#78881:" 4qz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     qqIIIDAq#%%))!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SNA{];//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
	  DAq $%%))!Q//J)O #	'$?  G GAJ
 < <Q ? ?@@@1:????" 1qz00000 #	'%a($?  G GAJ
 < <Q ? ?" DEEE1:????" 1qz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
	  DAq $%%))!Q//J #	'$?  G GAJ D
O D DQ G G1 MNNN1:????" !7||q    qz_,,,,,7||q     1	'%a($?  FI F@GJ@@CCAAAqD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    : MM!Q	z	1	1	1 < <#Iq;;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AJ)'$?	  G GAJ
 8 8 B B111a4 HIII1:????" -qz_,,,,)'$?  G GAJ
 8 8 B B111a4 HIII1:????" -qz_,,,,- -,,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 GAJ
 < <X F FGGG1:????" 1qz00000)+$?  G GAJ
 < <X F F KLLL1:????" 1qz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     MM!Q11o  K S1C-D-D EEEEE/))~kQ.q0@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 *>(*=>$(	* * *&FI FJ44X>>qqq!tDEEE>>>>o---- *>,o>$(	* * *&FI FJ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9DAq 2 4 45599!Q??I,1o  FI <17""""/))~fk6Q;77;;=======	/	/	/
!!A%%%%
!!A%%%%%%}Vq[&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yD!!!1	E!%ttWag ( RRR O O O 6uFF' ' GF'  #&99%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&1R 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16  		!!	<	<	<oN		!!	<	<	<>QR				23 * * *"2 2 26 HHH = = = = =r:   