
    /ii7                        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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. Z0ej#        $                    dg d/          d0             Z1d1 Z2dS )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)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       g/var/www/html/bet.cuttalo.com/ml/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   r2   )r,   r(   y	regressorresultss        r*   "test_get_response_values_regressorr:   ,   s     Ra888DAq ""&&q!,,I"	!$?	  G wqz9#4#4Q#7#78881:" 'qzY&&&&' '&&    r2   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/   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     !<<<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   r2   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.   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   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.   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   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.   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
	  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.   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
	  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\]unknownrJ   z.be a binary classifier. Got 3 classes instead.c                     t          |                               ||          } 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)r   r6   r$   r%   r&   r   )	estimatorr(   r7   r)   paramss        r*   test_get_response_errorrh      s    : i  $$Q**I	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   r3   r   Nr4   r5   rY   )r   r6   X_binaryy_binaryr   r   r   r,   rL   r9   s      r*   test_get_response_predict_probarm      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   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 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_methodr5   )	max_depthr1   c                    t          |           } |                     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   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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   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 *>(*=>$(	* * *&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   r2   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   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  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;   c                     t           j                            d                              dd          } t          j        t          j        d          d          }t                                          | |          }t          j	                    5  t          j
        dt                     t          || d           d	d	d	           d	S # 1 swxY w Y   d	S )
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  &&sA..A
	")B--##A



"
"1a
(
(C		 	"	" F Fg{333S!_EEEEF F F F F F F F F F F F F F F F F Fs   -C

C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      sF                          - , , , , ,        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 = = =(F F F F Fr;   