
    MpjA                     t   S SK r S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
JrJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJr  S S
KJrJr  S SKJr  \
" SS9u  rr\" \SS9r\SS \SS sr r!\RD                  RG                  S\" 5       S4\" 5       SS/4\" SS9S4\" SS9SS/4\" 5       S4\" 5       S4\" 5       SS/4/5      S 5       r$\RD                  RG                  S\" 5       S4\" SS S9S4\" SS S9S4\" SS S9SS/4\" S S9S4\" S S9S4\" S S9SS/4/5      \RD                  RG                  SSS/5      S 5       5       r%\RD                  RG                  S/ SQ5      S 5       r&\RD                  RG                  SSS /5      S! 5       r'\RD                  RG                  SSS/5      S" 5       r(\RD                  RG                  SSS/5      \RD                  RG                  SSS /5      S# 5       5       r)\RD                  RG                  S$\" 5       \ \!S%SS&04\" 5       \ \!S'S&S(S).4\" 5       \\S*SS04/5      S+ 5       r*\RD                  RG                  SSS/5      S, 5       r+\RD                  RG                  SSS/5      S- 5       r,\RD                  RG                  S\" SS S.9S4\" SS S.9S 4\" 5       S4/5      S/ 5       r-S0 r.\RD                  RG                  S/ S1Q5      S2 5       r/S3 r0\RD                  RG                  S4\" 5       SS5S64\" 5       SS5S64\" 5       SS5S64\" 5       SS7S64\" 5       SS7S84\" 5       SS7S84\" \" 5       5      SS9S:4\" \" 5       5      SS9S:4\" \" 5       5      SS9S:4\" 5       SS5S64\" 5       SS7S64\" 5       SS5S64\" 5       SS7S64\" SS9SS5S64\" S;S9SS7S64/5      S< 5       r1g)=    N)clone)DBSCANKMeans)	load_irismake_classificationmake_multilabel_classification)IsolationForest)LinearRegressionLogisticRegression)ClassifierChain)scale)DecisionTreeClassifierDecisionTreeRegressor)_get_response_values_get_response_values_binary)assert_allcloseT)
return_X_yF)copyd   zestimator, response_methodpredict_probadecision_function   )
n_clusterspredictscorec                 J   [         R                  R                  S5      R                  SS5      [         R                  " SS/S-  5      p2[        U 5      R                  X#5      n Sn[        R                  " [        US9   [        U UUS9  S	S	S	5        g	! , (       d  f       g	= f)
z;Check the error message with not supported response method.r   
   r         z%has none of the following attributes:matchresponse_methodN)nprandomRandomStaterandnarrayr   fitpytestraisesAttributeErrorr   )	estimatorr#   Xyerr_msgs        ]/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/utils/tests/test_response.py#test_estimator_unsupported_responser2      s}     99  #))"a0"((Aq6A:2Fqi $$Q*I5G	~W	5+	
 
6	5	5s   ?B
B")r   random_stater3   return_response_method_usedc                    [         R                  R                  S5      R                  SS5      [         R                  " SS/S-  5      pC[        U 5      R                  X45      n [        U UUUS9n[        U[        5      (       a  US   OUn[        X5      n[        US   U" U5      5        US   b   eU(       a  US   U:X  d   egg)z.Check the behaviour of `_get_response_values`.r   r   r   r   r   r#   r5   N)r$   r%   r&   r'   r(   r   r)   r   
isinstancelistgetattrr   )r-   r#   r5   r.   r/   resultschosen_response_methodprediction_methods           r1   "test_estimator_get_response_valuesr>   4   s    " 99  #))"a0"((Aq6A:2Fqi $$Q*I"	'$?	G )$??_   	BGAJ 1! 451:"qz3333 #    r#   )r   r   r   predict_log_probac                     [        SSSS9u  p[        5       R                  X5      nSn[        R                  " [
        US9   [        UUU SS9  S	S	S	5        g	! , (       d  f       g	= f)
zRCheck that `_get_response_values` raises the proper error message with
classifier.r   r   r   	n_samples	n_classesr3   zDpos_label=whatever is not a valid label: It should be one of \[0 1\]r    whateverr#   	pos_labelN)r   r   r)   r*   r+   
ValueErrorr   )r#   r.   r/   
classifierr0   s        r1   5test_get_response_values_classifier_unknown_pos_labelrJ   W   s]     qqIDA#%))!/J VG	z	1+ 		
 
2	1	1s   A
A&r@   c                     [        SSSS9u  p[        R                  " U5      n[        5       R	                  X5      nSn[
        R                  " [        US9   [        XAU S9  SSS5        g! , (       d  f       g= f)	zlCheck that `_get_response_values` will raise an error when `y_pred` has a
single class with `predict_proba`.r   r   r   rB   zJGot predict_proba of shape \(10, 1\), but need classifier with two classesr    r"   N)	r   r$   
zeros_liker   r)   r*   r+   rH   r   )r#   r.   y_two_classy_single_classrI   r0   s         r1   Htest_get_response_values_classifier_inconsistent_y_pred_for_binary_probarO   l   sf     )2QRSNA]];/N')--a@J	  
z	1ZOL 
2	1	1s   A,,
A:c                    [        SSSS/SS9u  p[        5       R                  X5      nSn[        UUUSU S	9n[	        US   UR                  U5      5        US
   S
:X  d   eU (       a  US   S:X  d   e[        UUUUR                  S   U S	9n[	        US   UR                  U5      S-  5        US
   S:X  d   eU (       a  US   S:X  d   egg)z]Check the behaviour of `_get_response_values` with `decision_function`
and binary classifier.r   r   333333?ffffff?r   rC   rD   weightsr3   r   Nr#   rG   r5   r   )r   r   r)   r   r   r   classes_)r5   r.   r/   rI   r#   r;   s         r1   <test_get_response_values_binary_classifier_decision_functionrX   ~   s    c
	DA $%))!/J)O #	'$?G GAJ
 < <Q ?@1:??"qz0000 #	'%%a($?G GAJ
 < <Q ?" DE1:??"qz0000 #r?   c                    [        SSSS/SS9u  p#[        5       R                  X#5      n[        UUUSU S9n[	        US   [        XA5      " U5      SS2S	4   5        US	   S	:X  d   eU (       a  [        U5      S
:X  d   eUS   U:X  d   eO[        U5      S:X  d   e[        UUUUR                  S   U S9tpgn[	        U[        XA5      " U5      SS2S4   5        US:X  d   eg)zMCheck that `_get_response_values` with `predict_proba` and binary
classifier.r   r   rQ   rR   r   rS   NrU   r      )r   r   r)   r   r   r:   lenrW   )	r5   r#   r.   r/   rI   r;   y_predrG   _s	            r1   8test_get_response_values_binary_classifier_predict_probar^      s    c
	DA $%))!/J #	'$?G GAJ
 DQ G1 MN1:??"7|q   qz_,,,7|q    1	'%%a($?F FGJ@CAqD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\]unknownrF   z.be a binary classifier. Got 3 classes instead.c                     [        U 5      R                  X5      n [        R                  " [        US9   [        X40 UD6  SSS5        g! , (       d  f       g= f)zMCheck that we raise the proper error messages in _get_response_values_binary.r    N)r   r)   r*   r+   rH   r   )r-   r.   r/   r0   paramss        r1   test_get_response_errorrc      s@    : i $$Q*I	z	1#I;F; 
2	1	1s   A


Ac                    [        5       R                  [        [        5      n[	        U[        SU S9n[        US   UR                  [        5      SS2S4   5        US   S:X  d   eU (       a  US   S:X  d   e[	        U[        SSU S9n[        US   UR                  [        5      SS2S4   5        US   S:X  d   eU (       a  US   S:X  d   egg)zKCheck the behaviour of `_get_response_values_binary` using `predict_proba`.r   r7   r   Nr   r   rU   )r   r)   X_binaryy_binaryr   r   r   r5   rI   r;   s      r1   test_get_response_predict_probarh      s     ()--hAJ)'$?	G GAJ
 8 8 B1a4 HI1:??"qz_,,,)'$?G GAJ
 8 8 B1a4 HI1:??"qz_,,, #r?   c                    [        5       R                  [        [        5      n[	        U[        SU S9n[        US   UR                  [        5      5        US   S:X  d   eU (       a  US   S:X  d   e[	        U[        SSU S9n[        US   UR                  [        5      S-  5        US   S:X  d   eU (       a  US   S:X  d   egg)	zMCheck the behaviour of `_get_response_values_binary` using decision_function.r   r7   r   r   r   rU   rV   N)r   r)   re   rf   r   r   r   rg   s      r1   #test_get_response_decision_functionrj     s     $%))(H=J)+$?	G GAJ
 < <X FG1:??"qz0000)+$?G GAJ
 < <X F KL1:??"qz0000 #r?   )	max_depthr3   c                    [        U 5      R                  [        [        5      n [	        U [        US9u  p#Ub   eUR
                  [        R
                  S   [        U R                  5      4:X  d   eUS:X  a3  [        R                  " US:  US:*  5      R                  5       (       d   egUS:X  a  US:*  R                  5       (       d   egg)zwCheck that we can call `_get_response_values` with a multiclass estimator.
It should return the predictions untouched.
r"   Nr   r   r   r@   g        )r   r)   r.   r/   r   shaper[   rW   r$   logical_andall)r-   r#   predictionsrG   s       r1   #test_get_response_values_multiclassrq   -  s     i $$Q*I11oK S1C1C-D EEEE/)~~kQ.q0@AEEGGGG	/	/s"'')))) 
0r?   c                  b   [        5       R                  [        [        5      n [	        U [        SS/SS9u  pn[        XR                  [        5      SS2S4   5        US:X  d   eUS:X  d   e[	        U [        SS/SS9u  pn[        XR                  [        5      5        US:X  d   eUS:X  d   eg)zMCheck the behaviour of passing a list of responses to `_get_response_values`.r   r   Tr7   Nr   )r   r)   re   rf   r   r   r   r   )rI   r\   rG   r#   s       r1   +test_get_response_values_with_response_listrs   F  s    #%))(H=J *>(*=>$(	*&F F44X>q!tDE>>o--- *>,o>$(	*&F F88BC>>1111r?   )r   r   r   c                     [        SS9u  p[        [        5       5      R                  X5      n[	        X1U S9u  pEUb   eUR
                  UR
                  :X  d   eU S:X  a3  [        R                  " US:  US:*  5      R                  5       (       d   eg U S:X  a3  US:  R                  5       S:  d   eUS:  R                  5       S:  d   eg [        R                  " US:H  US:H  5      R                  5       (       d   eg )Nr   r4   r"   r   r   r   )r   r   r   r)   r   rm   r$   rn   ro   sum
logical_or)r#   r.   Yr-   r\   rG   s         r1   -test_get_response_values_multilabel_indicatorrx   a  s     *q9DA 2 4599!?I,oF <<177"""/)~~fk6Q;7;;====	/	/
!A%%%
!A%%%}}Vq[&A+6::<<<<r?   c                     [         R                  R                  S5      R                  SS5      n [         R                  " [         R
                  " S5      S5      n[        5       R                  X5      n[        R                  " 5          [        R                  " S[        5        [        X SS9  S	S	S	5        g	! , (       d  f       g	= f)
z
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   rZ         errorr   r"   N)r$   r%   r&   r'   repeataranger   r)   warningscatch_warningssimplefilterUserWarningr   )r.   r/   clfs      r1   9test_response_values_type_of_target_on_classes_no_warningr   x  s     			a &&sA.A
		"))B-#A


"
"1
(C		 	 	"g{3S_E 
#	"	"s   	&B88
Cz7estimator, response_method, target_type, expected_shapebinary)r   
multiclass)r   r|   
multilabel)r   r   r|   c                 j   [         R                  R                  S5      R                  SS5      nUS:X  a  [         R                  " SS/S-  5      nO*US:X  a  / SQnO[         R                  " SS/SS//S-  5      n[        U 5      R                  XE5      n [        XUS	9u  pgUR                  U:X  d   eg
)a  
Check that output shape corresponds to docstring description

- for binary classification, it is a 1d array of shape `(n_samples,)`;
- for multiclass classification
    - with response_method="predict", it is a 1d array of shape `(n_samples,)`;
    - otherwise, it is a 2d array of shape `(n_samples, n_classes)`;
- for multilabel classification, it is a 2d array of shape `(n_samples, n_outputs)`;
- for outlier detection, regression and clustering,
  it is a 1d array of shape `(n_samples,)`.
r   r   r   r   r   r   r   )
r   r   r   rZ   r   r   r   rZ   rZ   r   r"   N)	r$   r%   r&   r'   r(   r   r)   r   rm   )r-   r#   target_typeexpected_shaper.   r/   r\   r]   s           r1   "test_response_values_output_shape_r     s    N 			a &&r1-AhHHaVaZ 		$*HHq!fq!f%)*i $$Q*I$Y?SIF<<>)))r?   )2r   numpyr$   r*   sklearn.baser   sklearn.clusterr   r   sklearn.datasetsr   r   r   sklearn.ensembler	   sklearn.linear_modelr
   r   sklearn.multioutputr   sklearn.preprocessingr   sklearn.treer   r   sklearn.utils._responser   r   sklearn.utils._testingr   r.   r/   re   rf   markparametrizer2   r>   rJ   rO   rX   r^   rc   rh   rj   rq   rs   rx   r   r    r?   r1   <module>r      s       * 
 - E / ' F U 2D!1	!%tWag (  		 /2		 ?4G"HI	1	/	1	1DEF	9		O,		_g67



  		Y'	11	-y9	11	-w7	11	-	7/CD	a	()4	a	(*=>	a	(+>	*JK 6uF4 G4, J
	
" *_>Q,RSM TM" 6uF&1 G&1R 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16  	!!	<oN	!!	<>QR		23**"26 H==(F* =		y(E:		%@		2HeD		y,>		gF		2L'J	+-	.	<Q	+-	.wW.01		
 
	Ix7		I|U;		 )Xu=		 )\5A	1	y(E:	1	y,>)2*32*r?   