o
    \iH                     @   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	 d dl
mZ d dlmZ d dlmZmZ ejdd Zejd	d
diedfddiedfgejdedg ddfedg difgdd Zdd Zdd Zejdedg ddfedg difgdd Zejdddgejdedg ddfedg difgd d! Zejd
d"d#d$ Zejd
d"d%d& Zejd'eded(d)dd*fedejd+d,d)d-id*fedeej d d.d)d-!ej"dd/fedej d0d d)d-id/fgd1d2 Z#ejdedg ddfedg difgd3d4 Z$ejdedg ddfedg difgd5d6 Z%ejd7g d8d*fg d9d:fg d;d/fgd<d= Z&ejd>ei fedg ddfgd?d@ Z'dS )A    N)	load_iris)LearningCurveDisplayValidationCurveDisplaylearning_curvevalidation_curve)DecisionTreeClassifier)shuffle)assert_allcloseassert_array_equalc                   C   s   t tddddiS )NT)
return_X_yrandom_stater   )r   r    r   r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/model_selection/tests/test_plot.pydata   s   r   zparams, err_type, err_msgstd_display_styleinvalidzUnknown std_display_style:
score_typezUnknown score_type:zCurveDisplay, specific_params	max_depth         
param_nameparam_rangetrain_sizesg333333?g333333??c           
      C   s`   |\}}t dd}	tj||d |j|	||fi || W d   dS 1 s)w   Y  dS )zCCheck that we raise a proper error when passing invalid parameters.r   r   )matchN)r   pytestraisesfrom_estimator)
pyplotr   paramserr_typeerr_msgCurveDisplayspecific_paramsXy	estimatorr   r   r   (test_curve_display_parameters_validation   s
   
"r,   c                 C   s<  |\}}t dd}g d}tj||||d}ddl}|jdu s!J t|jts)J |jD ]}t||jj	s7J q,t|j
ts@J |j
D ]}	t|	|jjsNJ |	 dksVJ qC|jdks^J |j dksgJ |j dkspJ |j \}
}|d	d
gksJ t||||d\}}}t|j| t|j| t|j| dS )z:Check the default usage of the LearningCurveDisplay class.r   r   r   r   N      ?Scorez%Number of samples in the training setTrainTest)r   r   r"   
matplotlib	errorbar_
isinstancelines_listlinesLine2Dfill_between_collectionsPolyCollection	get_alpha
score_nameax_
get_xlabel
get_ylabelget_legend_handles_labelsr   r
   r   r	   train_scorestest_scores)r#   r   r)   r*   r+   r   displaympllinefill_legend_labelstrain_sizes_absrB   rC   r   r   r   )test_learning_curve_display_default_usage.   s4   


rK   c                 C   sF  |\}}t dd}dg d}}tj|||||d}ddl}|jdu s%J t|jts-J |jD ]}	t|	|jj	s;J q0t|j
tsDJ |j
D ]}
t|
|jjsRJ |
 dksZJ qG|jdksbJ |j | kslJ |j dksuJ |j \}}|d	d
gksJ t|||||d\}}t|j| t|j| t|j| dS )z<Check the default usage of the ValidationCurveDisplay class.r   r   r   r   r   Nr.   r/   r0   r1   )r   r   r"   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   r
   r   r	   rB   rC   )r#   r   r)   r*   r+   r   r   rD   rE   rF   rG   rH   rI   rB   rC   r   r   r   +test_validation_curve_display_default_usageU   s4   





rL   c                 C   sB  |\}}t ddd}d}|j|||fi |d|i}|jd  d }	|	dk s,J |j dks5J d}|j|||fi |d|i}|jd  d }
|
dk sWJ t|
|	  |j dksfJ d}|j|||fi |d|i}|j dksJ |j| d	 |j dksJ |jd  d dk  sJ d
S )zaCheck the behaviour of the `negate_score` parameter calling `from_estimator` and
    `plot`.
    r   r   r   r   Fnegate_scorer/   TzNegative score)rN   N)	r   r"   r5   get_dataallr>   r@   r	   plot)r#   r   r'   r(   r)   r*   r+   rN   rD   positive_scoresnegative_scoresr   r   r   test_curve_display_negate_score|   sJ   "rT   zscore_name, ylabel)Nr/   )AccuracyrU   c           
      C   s   |\}}t dd}|j|||fi |d|i}	|	j |ks!J |\}}t ddd}|j|||fi |d|i}	|	j|ksAJ dS )zGCheck that we can overwrite the default score name shown on the y-axis.r   r   r=   r   rM   N)r   r"   r>   r@   r=   )
r#   r   r=   ylabelr'   r(   r)   r*   r+   rD   r   r   r   test_curve_display_score_name   s(   
rW   )Nerrorbarc                 C   s  |\}}t dd}g d}t||||d\}}}	d}
tj|||||
|d}|j \}}|dgks3J |du rQt|jd	ks@J |jdu sGJ |jd 	 \}}n|jdu sXJ t|jd	ksaJ |jd j
d 	 \}}t|| t||jd	d
 d}
tj|||||
|d}|j \}}|dgksJ |du rt|jd	ksJ |jdu sJ |jd 	 \}}n|jdu sJ t|jd	ksJ |jd j
d 	 \}}t|| t||	jd	d
 d}
tj|||||
|d}|j \}}|ddgksJ |du r$t|jdks	J |jdu sJ |jd 	 \}}|jd	 	 \}}n*|jdu s,J t|jdks6J |jd j
d 	 \}}|jd	 j
d 	 \}}t|| t||jd	d
 t|| t||	jd	d
 dS ):Check the behaviour of setting the `score_type` parameter.r   r   r   r-   train)r   r   r   r0   Nr   axistestr1   both   )r   r   r   r"   r>   rA   lenr5   r3   rO   r7   r
   r	   mean)r#   r   r   r)   r*   r+   r   rJ   rB   rC   r   rD   rH   legend_labelx_datay_datax_data_trainy_data_trainx_data_testy_data_testr   r   r   &test_learning_curve_display_score_type   s   
	
	
	


ri   c              	   C   s  |\}}t dd}dg d}}t|||||d\}}	d}
tj||||||
|d}|j \}}|dgks7J |d	u rUt|jd
ksDJ |jd	u sKJ |jd 	 \}}n|jd	u s\J t|jd
kseJ |jd j
d 	 \}}t|| t||jd
d d}
tj||||||
|d}|j \}}|dgksJ |d	u rt|jd
ksJ |jd	u sJ |jd 	 \}}n|jd	u sJ t|jd
ksJ |jd j
d 	 \}}t|| t||	jd
d d}
tj||||||
|d}|j \}}|ddgksJ |d	u r+t|jdksJ |jd	u sJ |jd 	 \}}|jd
 	 \}}n*|jd	u s3J t|jdks=J |jd j
d 	 \}}|jd
 j
d 	 \}}t|| t||jd
d t|| t||	jd
d d	S )rY   r   r   r   r   r   rZ   )r   r   r   r   r0   Nr   r[   r]   r1   r^   r_   )r   r   r   r"   r>   rA   r`   r5   r3   rO   r7   r
   r	   ra   )r#   r   r   r)   r*   r+   r   r   rB   rC   r   rD   rH   rb   rc   rd   re   rf   rg   rh   r   r   r   (test_validation_curve_display_score_type"  s   










rj   z.CurveDisplay, specific_params, expected_xscaler   r   linearg?r   )numr_   logc           	      C   s>   |\}}t dd}|j|||fi |}|j |ksJ dS )zICheck the behaviour of the x-axis scaling depending on the data provided.r   r   N)r   r"   r>   
get_xscale)	r#   r   r'   r(   expected_xscaler)   r*   r+   rD   r   r   r   test_curve_display_xscale_auto  s   
rq   c                 C   s  |\}}t dd}ddl}d}|j|||fi |d|i}	t|	jdks'J |	jD ]}
t|
|jjs5J q*|	jdu s=J |	j	du sDJ |	j
 \}}t|dksSJ d}|j|||fi |d|i}	t|	jdksmJ |	jD ]}
t|
|jjs{J qp|	jdu sJ t|	j	dksJ |	j	D ]}t||jjsJ q|	j
 \}}t|dksJ d}|j|||fi |d|i}	|	jdu sJ t|	jdksJ |	jD ]}t||jjsJ q|	j	du sJ |	j
 \}}t|dksJ dS )z9Check the behaviour of the parameter `std_display_style`.r   r   Nr   r_   fill_betweenrX   )r   r2   r"   r`   r5   r4   r7   r8   r3   r9   r>   rA   r:   r;   	containerErrorbarContainer)r#   r   r'   r(   r)   r*   r+   rE   r   rD   rF   rH   rb   rr   rX   r   r   r   $test_curve_display_std_display_style  sp   	




ru   c                 C   s   |\}}t dd}d}ddi}ddd}	|j|||fi ||||	d}
|
jd  dks0J t|
jd  g d	g d
}ddi}|j|||fi |||d}
|
jd jd  dksaJ dS )zuCheck the behaviour of the different plotting keyword arguments: `line_kw`,
    `fill_between_kw`, and `errorbar_kw`.r   r   rr   colorred      ?)rv   alpha)r   line_kwfill_between_kw)rx           r|   rx   rX   )r   errorbar_kwN)	r   r"   r5   	get_colorr	   r9   get_facecolorr3   r7   )r#   r   r'   r(   r)   r*   r+   r   rz   r{   rD   r}   r   r   r   test_curve_display_plot_kwargs  sD   





 	r   zparam_range, xscale)r   
      )ir   2     symlog)r   r   r   c           	      C   s@   |\}}t dd}d}tj|||||d}|j |ksJ dS )z>Check the induced xscale from the provided param_range values.r   r   r   r   N)r   r   r"   r>   ro   )	r#   r   r   xscaler)   r*   r+   r   rD   r   r   r   @test_validation_curve_xscale_from_param_range_provided_as_a_list  s   
r   zDisplay, paramsc           	      C   sJ   |\}}t dd}G dd d|}|j|||fi |}t||s#J dS )zCheck that named constructors return the correct type when subclassed.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/pull/27675
    r   r   c                   @   s   e Zd ZdS )z4test_subclassing_displays.<locals>.SubclassOfDisplayN)__name__
__module____qualname__r   r   r   r   SubclassOfDisplay8  s    r   N)r   r"   r4   )	r#   r   Displayr$   r)   r*   r+   r   rD   r   r   r   test_subclassing_displays(  s
   
r   )(numpynpr    sklearn.datasetsr   sklearn.model_selectionr   r   r   r   sklearn.treer   sklearn.utilsr   sklearn.utils._testingr	   r
   fixturer   markparametrize
ValueErrorr,   rK   rL   rT   rW   ri   rj   arangelinspaceroundlogspaceastypeint64rq   ru   r   r   r   r   r   r   r   <module>   s    
''
$
Z
]

=
' 
