o
    \iM                     @   s  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dddgejdd	d
gdd Zejddd gejdddgejdg ddd Zejdeg ddfed dgdfeg ddfgdd Zejdddgejddeg dfdeg dfgd d! Zejd"d#d$ieddgd%d&gge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ddgge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g d,e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g d,eg ded/gdd'dfd$ddgddggd%d&gd%d&ggd)d*eg d,eg d0ddd'd1fgd2d3 Zejd4g d5d6d7 Zejd8d9d:idgejd;i d9d:igd<d= Zd>d? Zejddd@d@ggejdAdBdCdDdddDgejdEdFdGgejd8ddHdIigdJdK Zejddd@g dLgejdAdMg dNidMg dOigejdEdFdGgdPdQ ZdRdM ZdSdT ZejdUdVdWdXdYdZd[d\d]d^ed_d^fd^ed`d^fded_dafded`dbfd^ed_d^fd^ed`d^fded_dbfded`dafgdcdd Zejdee dfddgdgdhfe dfddi djdkfe!d ddgdldmfg dndodpfgdqdr Z"ejdsdtddudvdwidtddwdxfdtdydzdIdwd{dIdwdzfd|d}d~dddid|d}ddfi i i fi dwdIdddddtdgddwdIdddddtdgdfgdd Z#ejdi dd%dfi ddtdfgdd Z$dd Z%ejdddgejdddgdd Z&dS )    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                 C   sT   t  }d|_|r|  \}}|j||d\}}}||ksJ |r&||ks(J dS dS )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_out r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_plotting.pytest_validate_plot_params   s   r   	pos_labelr   r   response_method)autopredict_probadecision_functionc                 C   s   t ddgddgddgddgg}t g d}t ||}tj||||||d\}}}t||||d\}	}
t||	 ||
ksBJ |durH|nd	}||ksPJ dS )
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_namer   r   r   %test_validate_and_get_response_values#   s&   "

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                 C   s^   t g d}t d}tjt|d tj|||dd W d   dS 1 s(w   Y  dS )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   r6   error_messager+   r7   r   r   r   ,test_validate_from_predictions_params_errorsE   s   

"r>   zpos_label, y_true)r   r!   r   r!   r"   c           	      C   sb   t g d}tj||d||d\}}|dur|nd}||ks!J |dur'|nd}||ks/J dS )zECheck `_validate_from_predictions_params` returns the correct values.r0   N)r6   r+   r7   r   r   
Classifierr!   )r$   r%   r   r<   )	r   r   r   r6   r+   pos_label_outr   r.   r-   r   r   r   -test_validate_from_predictions_params_returns[   s   
rA   zparams, err_msgr*   dummyr#   r3   )
cv_resultsr(   r)   r7   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#   r3   )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                 C   sF   t jt|d t jdi | W d   dS 1 sw   Y  dS )z2Check parameter validation is performed correctly.r4   Nr   )r9   r:   r;   r    _validate_from_cv_results_params)r   paramserr_msgr   r   r   $test_validate_from_cv_results_paramsy   s   J"rK   z/curve_legend_metric, curve_name, expected_label))g333333?Nz
AUC = 0.85)NModel ArL   )gffffff?zRandom ForestzRandom Forest (AUC = 0.95)NNNc                 C   s"   d}t | ||}||ksJ dS )z4Check `_get_legend_label` returns the correct label.AUCN)r   _get_legend_label)curve_legend_metric
curve_nameexpected_labellegend_metric_namelabelr   r   r   test_get_legend_label   s
   rU   curve_kwargsalpha      ?kwargsc                 C   s   d}d}ddd}d}| r6|r6t jtdd tj||||| fi | W d   dS 1 s/w   Y  dS |r_t jtd	d tj||||| fi | W d   dS 1 sXw   Y  dS tj||||| fi | dS )
z;Check `_validate_curve_kwargs` deprecates kwargs correctly.r!   N皙?r1   meanstdrN   z"Cannot provide both `curve_kwargs`r4   z`\*\*kwargs` is deprecated and)r9   r:   r;   r   _validate_curve_kwargswarnsFutureWarning)rV   rY   n_curvesr   legend_metricrS   r   r   r   +test_validate_curve_kwargs_deprecate_kwargs   sB   
"	"

rc   c                  C   s   d} ddd}d}t jtdd tj| d||d	d
igd W d   n1 s(w   Y  t jtdd# g d}tj| |||dd tj| |||d	d
id W d   dS 1 sZw   Y  dS )zGCheck `_validate_curve_kwargs` performs parameter validation correctly.r#   rZ   r1   r[   rN   z`curve_kwargs` must be Noner4   NrW   rX   ra   r   rb   rS   rV   z#To avoid labeling individual curvesonetwothree)r9   r:   r;   r   r^   )ra   rb   rS   r   r   r   r    test_validate_curve_kwargs_error   s:   
"ri   rQ   rb   rZ   r2   r[   rS   rN   APcolorredc                 C   s\  d}t j|| |||d}t|tsJ t||ksJ d}t| tr&| d } | dur;| }|d dur:|d| d }n|d durF| d}|d d	 |ksPJ |d
 d	 du sZJ |d d	 du sdJ |du rtdd |D ssJ tdd |D s~J tdd |D sJ tdd |D sJ dS tdd |D sJ tdd |D sJ dS )zNCheck `_validate_curve_kwargs` returns correct kwargs for single legend entry.r#   rd   Nr   r\    (z = 0.80 +/- 0.20)z = 0.80 +/- 0.20rT   r!   r"   c                 s       | ]	}t |d kV  qdS )r3   Nlen.0rY   r   r   r   	<genexpr>O      z;test_validate_curve_kwargs_single_legend.<locals>.<genexpr>c                 s       | ]	}|d  dkV  qdS )rW   rG   Nr   rq   r   r   r   rs   P  rt   c                 s   ru   )	linestyle--Nr   rq   r   r   r   rs   Q  rt   c                 s   ru   )rk   blueNr   rq   r   r   r   rs   R  rt   c                 s   rn   r"   Nro   rq   r   r   r   rs   T  rt   c                 s   ru   )rk   rl   Nr   rq   r   r   r   rs   U  rt   )r   r^   
isinstancelistrp   all)r   rb   rS   rV   ra   curve_kwargs_outrR   r   r   r   (test_validate_curve_kwargs_single_legend  s<   

r~   re   metric)rX   rX   rX   rM   c                    sd  d}ddiddiddig}t j|| | |d}t|tsJ t||ks&J g d}t| trGd}|d	 d
 durA|d  d }|g| }n7t| trW|d	 d
 du rW| }n't| trn|d	 d
 durn fdd| D }n|d	 d
 dur~  dg| }t|D ]\}}|| d |ksJ qtdd |D sJ t||D ]\}	}
|
d |	d ksJ qdS )zMCheck `_validate_curve_kwargs` returns correct kwargs for multi legend entry.r#   rk   rl   yellowrx   rd   rM   rQ   r   r   Nrm    = 1.00)c                    s   g | ]
}| d   dqS )rm   r   r   )rr   name_singlerS   r   r   
<listcomp>u  s    z;test_validate_curve_kwargs_multi_legend.<locals>.<listcomp>z = 1.00rT   c                 s   rn   ry   ro   rq   r   r   r   rs     rt   z:test_validate_curve_kwargs_multi_legend.<locals>.<genexpr>)	r   r^   rz   r{   rp   str	enumerater|   zip)r   rb   rS   ra   rV   r}   expected_labelsidxrR   curve_kwargcurve_kwarg_outr   r   r   'test_validate_curve_kwargs_multi_legendX  s>   

r   c                   C      d S Nr   r   r   r   r   r        c                   C   r   r   r   r   r   r   r   
neg_metric  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                 C   s   t | |||ks
J dS )z*Check that we return the right score name.N)r   )
score_namescoringnegate_scoreexpected_score_namer   r   r   test_validate_score_name  s   r   zdata, lower_bound, upper_boundr1         
         g?g?)r!   r"   r   r      2   r   (   c                 C   s$   |t |   k r|k sJ  J d S r   )r   )datalower_boundupper_boundr   r   r   test_inverval_max_min_ratio  s   $r   z%default_kwargs, user_kwargs, expectedrx   )rk   	linewidthrv   dashed)rk   r   rv   solid)rk   rv   )clsxxxkrw   )rT   rk   rv   r   z-.blackr   green)r   r   ecfclwmecmfcaltms)rv   rk   	edgecolor	facecolorr   markeredgecolormarkerfacecoloralt
markersizec                 C   s,   t | |}||ksJ d| d| ddS )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resultr   r   r   test_validate_style_kwargs  s   
.
r   zdefault_kwargs, user_kwargs)r   rv   r)r   rk   c                 C   s:   t t t| | W d   dS 1 sw   Y  dS )z3Check that `validate_style_kwargs` raises TypeErrorN)r9   r:   	TypeErrorr   )r   r   r   r   r    test_validate_style_kwargs_error  s   "r   c                 C   sl   |   }t| |jd  du sJ |jd  du sJ |jd  dks)J |jd  dks4J d S )NtopFrightbottom)r   r!   left)gcar   spinesget_visible
get_bounds)r   r   r   r   r   test_despine  s   r   r   my_est_name
deprecatedmy_namec                 C   s   d}d}| dkrt | ||}||ksJ dS |du rHd| d| d}tjt|d t | ||}W d   n1 s;w   Y  || ksFJ dS |durud	| d| d
}tjt|d t | || W d   dS 1 snw   Y  dS dS )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.r4   zSCannot provide both `estimator_name` and `name`. `estimator_name` is deprecated in z. )r   r9   r_   r`   r:   r;   )r   r   versionversion_remover   warning_messager   r=   r   r   r   test_deprecate_estimator_name  s2   "r   )'numpyr$   r9   sklearn.linear_modelr   sklearn.utils._plottingr   r   r   r   r   r   sklearn.utils._responser	   sklearn.utils._testingr
   markparametrizer   r/   r%   r>   rA   rK   rU   rc   ri   r~   r   r   r   r   	geomspacelinspacer   r   r   r   r   r   r   r   r   <module>   s    
   
 
H
	
"+'













,	
	