
    WhM                     .   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ ej                   j#                  dddg      ej                   j#                  dd	d
g      d               Zej                   j#                  ddd g      ej                   j#                  dddg      ej                   j#                  dg d      d                      Zej                   j#                  d ej(                  g d      df ej(                  d dg      df ej(                  g d      dfg      d        Zej                   j#                  dddg      ej                   j#                  dd ej(                  g d      fd ej(                  g d      fg      d               Zej                   j#                  ddd i ej(                  ddgd!d"gg       ej(                  d dg      ddd#d$fd ddgddggd!d"gd!d"ggd%d& ej(                  ddgg       ej(                  d dg      ddd#d'fd ddgddggd!d"gd!d"ggd%d& ej(                  g d(       ej(                  g d)      ddd#d*fd ddgddggd!d"gd!d"ggd%d& ej(                  g d(       ej(                  g d       ej(                  d+g      dd#dfd ddgddggd!d"gd!d"ggd%d& ej(                  g d(       ej(                  g d,      ddd#d-fg      d.        Zej                   j#                  d/g d0      d1        Zej                   j#                  d2d3d4idg      ej                   j#                  d5i d3d4ig      d6               Zd7 Zej                   j#                  ddd8d8gg      ej                   j#                  d9d:d;d<ddd<g      ej                   j#                  d=d>d?g      ej                   j#                  d2dd@dAig      dB                             Zej                   j#                  ddd8g dCg      ej                   j#                  d9dDg dEidDg dFig      ej                   j#                  d=d>d?g      dG                      ZdH ZdI Zej                   j#                  dJdKdLdMdNdOdPdQdRdSedTdSfdSedUdSfdedTdVfdedUdWfdSedTdSfdSedUdSfdedTdWfdedUdVfg      dX        Zej                   j#                  dY ej@                  dZdd[      d[d\f ej@                  dZdd]       d^d_f ejB                  d dd[      d`dafg dbdcddfg      de        Z"ej                   j#                  dfdgddhdidjidgddjdkfdgdldmdAdjdndAdjdmfdodpdqdrdsdtidodpdtdrfi i i fi djdAdudvddwdgd[dxdjdAdudvddwdgd[dyfg      dz        Z#ej                   j#                  d{i dd!d|fi d}dgd~fg      d        Z$d Z%ej                   j#                  dddg      ej                   j#                  dddg      d               Z&y)    N)LogisticRegression)"_BinaryClassifierCurveDisplayMixin_deprecate_estimator_name_despine_interval_max_min_ratio_validate_score_name_validate_style_kwargs)_get_response_values_binary)assert_allcloseaxAxzname, expected_name_out)NTestEstimator)
CustomNamer   c                     t               }d|_        |r| j                         \  }}|j                  ||      \  }}}||k(  sJ |r||k(  sJ yy)z9Check `_validate_plot_params` returns the correct values.r   )r   nameN)r   estimator_namesubplots_validate_plot_params)pyplotr   r   expected_name_outdisplay_ax_outname_outs           [/var/www/html/jupyter_env/lib/python3.12/site-packages/sklearn/utils/tests/test_plotting.pytest_validate_plot_paramsr      sf     12G,G	!2!772D7IFAx((((	V|| 
    	pos_labelr   r   response_method)autopredict_probadecision_functionc                 J   t        j                  ddgddgddgddgg      }t        j                  g d      }t               j                  ||      }t	        j
                  ||||||      \  }}}t        ||||      \  }	}
t        ||	       ||
k(  sJ ||nd	}||k(  sJ y)
zECheck `_validate_and_get_response_values` returns the correct values.r            )r   r   r%   r%   )r   r   r   )r   r   Nr   )nparrayr   fitr   !_validate_and_get_response_valuesr
   r   )r   r   r   r   Xy	estimatory_predr   expected_y_predexpected_pos_labelexpected_names               r   %test_validate_and_get_response_valuesr2   #   s     	1a&1a&1a&1a&12A
A"$((A.I 	+LL+	
  FIx +F1o+'O' FO,**** !,D2FM}$$$r   zy_true, error_message)r   r$   r%   zThe target y is not binary.r$   z'Found input variables with inconsistent)r   r%   r   r%   z,y_true takes value in \{0, 2\} and pos_labelc                     t        j                  g d      }t        j                  d      }t        j                  t
        |      5  t        j                  |||d       ddd       y# 1 sw Y   yxY w)zDCheck `_validate_from_predictions_params` raises the correct errors.皙?皙?g333333?g?   matchN)y_truer.   sample_weightr   )r'   r(   onespytestraises
ValueErrorr   !_validate_from_predictions_params)r   r:   error_messager.   r;   s        r   ,test_validate_from_predictions_params_errorsrB   E   s]     XX*+FGGAJM	z	7 
*LL'		

 
 
s   A++A4zpos_label, y_true)r   r$   r   r$   r%   c                     t        j                  g d      }t        j                  ||d||      \  }}||nd}||k(  sJ ||nd}||k(  sJ y)zECheck `_validate_from_predictions_params` returns the correct values.r4   N)r:   r.   r;   r   r   
Classifierr$   )r'   r(   r   r@   )	r   r   r   r:   r.   pos_label_outr   r1   r0   s	            r   -test_validate_from_predictions_params_returnsrF   [   ss     XX*+F*LL	
 M8 !,D,M}$$$ '0&;....r   zparams, err_msgr-   dummyr&   r7   )
cv_resultsr+   r,   r;   r   z2`cv_results` does not contain one of the following)testtrain)r-   indicesz*`X` does not contain the correct number of)r$   r%   r&   r7   )r   r%   r$   r&   zThe target `y` is not binary      ?)r%   r&   r%   r&   z6y takes value in {2, 3} and pos_label is not specifiedc                     t        j                  t        |      5   t               j                  di | ddd       y# 1 sw Y   yxY w)z2Check parameter validation is performed correctly.r8   N )r=   r>   r?   r    _validate_from_cv_results_params)r   paramserr_msgs      r   $test_validate_from_cv_results_paramsrR   y   sD    T 
z	1 XM*,MMWPVWX X Xs   A  A	z/curve_legend_metric, curve_name, expected_label))g333333?Nz
AUC = 0.85)NModel ArS   )gffffff?zRandom ForestzRandom Forest (AUC = 0.95)NNNc                 D    d}t        j                  | ||      }||k(  sJ y)z4Check `_get_legend_label` returns the correct label.AUCN)r   _get_legend_label)curve_legend_metric
curve_nameexpected_labellegend_metric_namelabels        r   test_get_legend_labelr]      s2     .@@Z);E N"""r   curve_kwargsalpha      ?kwargsc                    d}d}ddd}d}| rA|r?t        j                  t        d      5  t        j                  ||||| fi | ddd       y|r?t        j
                  t        d	      5  t        j                  ||||| fi | ddd       yt        j                  ||||| fi | y# 1 sw Y   yxY w# 1 sw Y   yxY w)
z;Check `_validate_curve_kwargs` deprecates kwargs correctly.r$   N皙?r5   meanstdrV   z"Cannot provide both `curve_kwargs`r8   z`\*\*kwargs` is deprecated and)r=   r>   r?   r   _validate_curve_kwargswarnsFutureWarning)r^   ra   n_curvesr   legend_metricr[   s         r   +test_validate_curve_kwargs_deprecate_kwargsrl      s     HD -M]]:-QR 	.EE" 	 	 
\\-/PQ 	.EE" 	 	 	+AAdM+=|	
OU	
+	 		 	s   B+,B7+B47C c            	         d} ddd}d}t        j                  t        d      5  t        j                  | d||d	d
ig       ddd       t        j                  t        d      5  g d}t        j                  | |||d       t        j                  | |||d	d
i       ddd       y# 1 sw Y   hxY w# 1 sw Y   yxY w)zGCheck `_validate_curve_kwargs` performs parameter validation correctly.r&   rc   r5   rd   rV   z`curve_kwargs` must be Noner8   Nr_   r`   rj   r   rk   r[   r^   z#To avoid labeling individual curvesonetwothree)r=   r>   r?   r   rg   )rj   rk   r[   r   s       r    test_validate_curve_kwargs_errorrs      s    H -M	z)F	G 
*AA'1"C.)	

 
z)N	O 
&*AA'1	
 	+AA'1!3	

 

 

 
s   B*&;B6*B36B?rY   rk   rc   r6   rd   r[   rV   APcolorredc                     d}t        j                  || |||      }t        |t              sJ t	        |      |k(  sJ d}t        | t              r| d   } | | }|d   |d| dz   }n
|d   | d}|d   d	   |k(  sJ |d
   d	   J |d   d	   J |Qt        d |D              sJ t        d |D              sJ t        d |D              sJ t        d |D              sJ yt        d |D              sJ t        d |D              sJ y)zNCheck `_validate_curve_kwargs` returns correct kwargs for single legend entry.r&   rn   Nr   re    (z = 0.80 +/- 0.20)z = 0.80 +/- 0.20r\   r$   r%   c              3   8   K   | ]  }t        |      d k(    yw)r7   Nlen.0ra   s     r   	<genexpr>z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>O       C3v;!#C   c              3   ,   K   | ]  }|d    dk(    yw)r_   rL   NrN   r|   s     r   r~   z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>P  s     If6'?c)I   c              3   ,   K   | ]  }|d    dk(    yw)	linestyle--NrN   r|   s     r   r~   z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>Q  s     N66+&$.Nr   c              3   ,   K   | ]  }|d    dk(    yw)ru   blueNrN   r|   s     r   r~   z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>R  s     L6'?f,Lr   c              3   8   K   | ]  }t        |      d k(    ywr%   Nrz   r|   s     r   r~   z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>T  r   r   c              3   ,   K   | ]  }|d    dk(    yw)ru   rv   NrN   r|   s     r   r~   z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>U  s     K6'?e+Kr   )r   rg   
isinstancelistr{   all)r   rk   r[   r^   rj   curve_kwargs_outrZ   s          r   (test_validate_curve_kwargs_single_legendr     sw   ( H9PP#-! &--- H,,,N$Aw ,+3E2FFW.XXN	v		*.//?@Aw'>999Aw'///Aw'/// C2BCCCCI8HIIIIN=MNNNNL;KLLLLC2BCCCCK:JKKKKr   ro   metric)r`   r`   r`   rT   c                 Z   d}ddiddiddig}t        j                  || |||      }t        |t              sJ t	        |      |k(  sJ g d}t        | t
              rd}|d	   d
   	|d| dz   }|g|z  }nZt        | t              r|d	   d
   | }n?t        | t              r|d	   d
   | D cg c]
  }| d| d }}n|d	   d
   	| dg|z  }t        |      D ]  \  }}	||   d   |	k(  rJ  t        d |D              sJ t        ||      D ]  \  }
}|d   |
d   k(  rJ  yc c}w )zMCheck `_validate_curve_kwargs` returns correct kwargs for multi legend entry.r&   ru   rv   yellowr   rn   rT   rY   r   r   Nrx   z = 1.00)z = 1.00r\   c              3   8   K   | ]  }t        |      d k(    ywr   rz   r|   s     r   r~   z:test_validate_curve_kwargs_multi_legend.<locals>.<genexpr>  s     ?Fs6{a?r   )	r   rg   r   r   r{   str	enumerater   zip)r   rk   r[   rj   r^   r   expected_labelsname_singleidxrZ   curve_kwargcurve_kwarg_outs               r   'test_validate_curve_kwargs_multi_legendr   X  s    He$w&9GV;LML9PP#-! &--- H,,,(O$&"1%1-"5G4H0QQO*+h6	D$	M($;A$>$F	D$	M($;A$>$JNR
?J{m201:
 
 
x	 	#	/019:XE(9 @^$W-???@ ?.>????(+L:J(K @$_w';w+????@
s   /D(c                       y NrN   rN   r   r   r   r         r   c                       y r   rN   rN   r   r   
neg_metricr     r   r   z6score_name, scoring, negate_score, expected_score_name)accuracyNFr   )Nr   FAccuracy)Nr   TzNegative accuracy)Nneg_mean_absolute_errorFzNegative mean absolute error)Nr   TzMean absolute error)MAEr   Tr   )NNFScore)NNTzNegative scorezSome metricFTMetriczNegative metricc                 (    t        | ||      |k(  sJ y)z*Check that we return the right score name.N)r   )
score_namescoringnegate_scoreexpected_score_names       r   test_validate_score_namer     s    0 	Z,?CVVVr   zdata, lower_bound, upper_boundr5         
         g?g?)r$   r%   r   r      2   r   (   c                 6    |t        |       cxk  r|k  sJ  J y r   )r   )datalower_boundupper_bounds      r   test_inverval_max_min_ratior     s#      06DDDDDDr   z%default_kwargs, user_kwargs, expectedr   )ru   	linewidthr   dashed)ru   r   r   solid)ru   r   )clsxxxkr   )r\   ru   r   r   z-.blackr   green)r   r   ecfclwmecmfcaltms)r   ru   	edgecolor	facecolorr   markeredgecolormarkerfacecoloralt
markersizec                 B    t        | |      }||k(  sJ d| d| d       y)zLCheck the behaviour of `validate_style_kwargs` with various type of entries.zLThe validation of style keywords does not provide the expected results: Got z instead of .N)r	   )default_kwargsuser_kwargsexpectedresults       r   test_validate_style_kwargsr     s=    \ $NK@FX 	hl8*A	/r   zdefault_kwargs, user_kwargs)r   r   r)r   ru   c                 x    t        j                  t              5  t        | |       ddd       y# 1 sw Y   yxY w)z3Check that `validate_style_kwargs` raises TypeErrorN)r=   r>   	TypeErrorr	   )r   r   s     r    test_validate_style_kwargs_errorr     s/     
y	! <~{;< < <s   09c                 F   | j                         }t        |       |j                  d   j                         du sJ |j                  d   j                         du sJ |j                  d   j	                         dk(  sJ |j                  d   j	                         dk(  sJ y )NtopFrightbottom)r   r$   left)gcar   spinesget_visible
get_bounds)r   r   s     r   test_despiner     s    	BRL99U'')U22299W))+u44499X))+v55599V'')V333r   r   my_est_name
deprecatedmy_namec                 r   d}d}| dk(  rt        | ||      }||k(  sJ y|Bd| d| d}t        j                  t        |      5  t        | ||      }ddd       | k(  sJ y|;d	| d| d
}t        j                  t
        |      5  t        | ||       ddd       yy# 1 sw Y   OxY w# 1 sw Y   yxY w)z3Check `_deprecate_estimator_name` behaves correctlyz1.7z1.9r   Nz"`estimator_name` is deprecated in z and will be removed in z. Use `name` instead.r8   zSCannot provide both `estimator_name` and `name`. `estimator_name` is deprecated in z. )r   r=   rh   ri   r>   r?   )r   r   versionversion_remover   warning_messager   rA   s           r   test_deprecate_estimator_namer     s     GN%,^T7K4	0	9Q35 	 \\-? 	N.~tWMF	N'''		  'y(@@PPRT 	 ]]:]; 	E%ndGD	E 	E 
	N 	N	E 	Es   B!	B-!B*-B6)'numpyr'   r=   sklearn.linear_modelr   sklearn.utils._plottingr   r   r   r   r   r	   sklearn.utils._responser
   sklearn.utils._testingr   markparametrizer   r2   r(   rB   rF   rR   r]   rl   rs   r   r   r   r   r   	geomspacelinspacer   r   r   r   r   rN   r   r   <module>r      s     3  @ 2 d|, 79UV - tQi0$!56E% 7 1
%: 	)	;<	1a&	DE	,	!PQ

 $!56	xrxx%&	
HBHH\"#/ 7/, 
  +G4RXX1v1v./RXXq!f%!%! A
	
 ")*+Q!Q(8QFQPQFCST
 RXX1vh'RXXq!f%!%!
 9	
" ")*+Q!Q(8QFQPQFCST RXXl+RXXl+!%!
 +	
" ")*+Q!Q(8QFQPQFCST RXXl+RXXl+!)3%!
 6	
" ")*+Q!Q(8QFQPQFCST RXXl+RXXl+!%!
 E	
mDGPXQGPX 5## 7C.$)?@B##78
 9 A
D
> $|n!EFS!d# -t}=	%(L > G (LV $6M!NOx1H>P3QR -t}=$@ > P
$@N		 <--5PF7$,	}5	m4	vuh'	vt./	
E=9	
D-8	z5"34	z4*!*+* $ 
c1a	 !Q'
",,sAr
"	"Aq)	Q1	sC( 
B'EE + 1-(#18D	
 73x((3	
 c=4Lc=	

 
R 	 &$%#*&,		
#(+XY+X !
#$rv+F&GH<	<4 )M<+HI$	!23E 4 JEr   