
    _nd<,                        d dl Z d dl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 e j        d             Ze j                            d	d
diedfddiedfg          d             Zd Zd Ze j                            dddg          d             Ze j                            d
d          d             Zd Zd Zd ZdS )    N)	load_iris)DecisionTreeClassifier)shuffle)assert_allcloseassert_array_equal)learning_curve)LearningCurveDisplayc                  6    t          t          d          ddiS )NT)
return_X_yrandom_stater   )r   r        Glib/python3.11/site-packages/sklearn/model_selection/tests/test_plot.pydatar      s     I...?Q???r   zparams, err_type, err_msgstd_display_styleinvalidzUnknown std_display_style:
score_typezUnknown score_type:c                     |\  }}t          d          }g d}t          j        ||          5  t          j        |||fd|i| ddd           dS # 1 swxY w Y   dS )zCCheck that we raise a proper error when passing invalid parameters.r   r   g333333?g333333?g?)matchtrain_sizesN)r   pytestraisesr	   from_estimator)	pyplotr   paramserr_typeerr_msgXy	estimatorr   s	            r   1test_learning_curve_display_parameters_validationr#      s     DAq&A666I!//K	xw	/	/	/ 
 
+q!	
 	
)4	
8>	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AAAc                 J   |\  }}t          d          }g d}t          j        ||||          }ddl}|j        J t          |j        t                    sJ |j        D ]}t          ||j        j	                  sJ t          |j
        t                    sJ |j
        D ]8}	t          |	|j        j                  sJ |	                                dk    sJ 9|j        dk    sJ |j                                        dk    sJ |j                                        dk    sJ |j                                        \  }
}|d	gk    sJ t'          ||||          \  }}}t)          |j        |           t-          |j        |           t-          |j        |           dS )
z:Check the default usage of the LearningCurveDisplay class.r   r   r   r   Ng      ?Scorez%Number of samples in the training setTesting metric)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_absr8   r9   s                  r   )test_learning_curve_display_default_usagerA   &   s   DAq&A666I!//K"11a[  G $$$gnd+++++ 2 2$	 0111111g+T22222% ' '$ >?????~~3&&&&&((((;!!##'NNNNN;!!##w....{<<>>A}-.....1?1a[2 2 2.O\; w*O<<<G(,777G'55555r   c                    |\  }}t          dd          }g d}d}t          j        |||||          }|j        d                                         d         }|dk                                    sJ |j                                        dk    sJ d}t          j        |||||          }|j        d                                         d         }	|	dk                                    sJ t          |	|            |j                                        dk    sJ d}t          j        |||||          }|j                                        dk    sJ |	                    | 	           |j                                        dk    sJ |j        d                                         d         dk                                     sJ d
S )zaCheck the behaviour of the `negate_score` parameter calling `from_estimator` and
    `plot`.
       r   	max_depthr   r   F)r   negate_scorer&   T)rF   N)
r   r	   r   r+   get_dataallr4   r6   r   plot)
r   r   r    r!   r"   r   rF   r:   positive_scoresnegative_scoress
             r   (test_learning_curve_display_negate_scorerL   M   s     DAq&CCCI!//KL"1		!  G nQ'002215Oq %%''''';!!##w....L"11a[|  G nQ'002215Oq %%'''''Oo%5666;!!##w....L"1		!  G ;!!##w....LL,.L///;!!##w....N1&&((+a/446666666r   zscore_name, ylabel)Nr&   )AccuracyrM   c                 (   |\  }}t          d          }g d}t          j        |||||          }|j                                        |k    sJ |\  }}t          dd          }g d}t          j        |||||          }|j        |k    sJ dS )zGCheck that we can overwrite the default score name shown on the y-axis.r   r   r   )r   r3   rC   rD   N)r   r	   r   r4   r6   r3   )	r   r   r3   ylabelr    r!   r"   r   r:   s	            r   &test_learning_curve_display_score_namerP   z   s    
 DAq&A666I!//K"11a[Z  G ;!!##v----DAq&CCCI!//K"11a[Z  G ''''''r   )Nerrorbarc                    |\  }}t          d          }g d}t          ||||          \  }}}	d}
t          j        |||||
|          }|j                                        \  }}|dgk    sJ |Ft          |j                  d	k    sJ |j        J |j        d         	                                \  }}nP|j        J t          |j                  d	k    sJ |j        d         j
        d         	                                \  }}t          ||           t          ||                    d	
                     d}
t          j        |||||
|          }|j                                        \  }}|dgk    sJ |Ft          |j                  d	k    sJ |j        J |j        d         	                                \  }}nP|j        J t          |j                  d	k    sJ |j        d         j
        d         	                                \  }}t          ||           t          ||	                    d	
                     d}
t          j        |||||
|          }|j                                        \  }}|ddgk    sJ |ht          |j                  dk    sJ |j        J |j        d         	                                \  }}|j        d	         	                                \  }}n}|j        J t          |j                  dk    sJ |j        d         j
        d         	                                \  }}|j        d	         j
        d         	                                \  }}t          ||           t          ||                    d	
                     t          ||           t          ||	                    d	
                     dS )z:Check the behaviour of setting the `score_type` parameter.r   r   r   r%   train)r   r   r   zTraining metricNrC   )axistestr'   both   )r   r   r	   r   r4   r7   lenr+   r)   rG   r-   r   r   mean)r   r   r   r    r!   r"   r   r@   r8   r9   r   r:   r>   legend_labelx_datay_datax_data_trainy_data_trainx_data_testy_data_tests                       r   &test_learning_curve_display_score_typera      sI    DAq&A666I!//K1?1a[2 2 2.O\; J"1		+  G k;;==OA|-..... 7>""a'''' ((( *3355~%%%7$%%**** *1-3A6??AAv///FL--1-55666J"1		+  G k;;==OA|,----- 7>""a'''' ((( *3355~%%%7$%%**** *1-3A6??AAv///FK,,!,44555J"1		+  G k;;==OA|-/?@@@@@ 7>""a'''' (((%,^A%6%?%?%A%A"l#*>!#4#=#=#?#? [[~%%%7$%%****%,%6q%9%?%B%K%K%M%M"l#*#4Q#7#=a#@#I#I#K#K [|_555L,"3"3"3";";<<<{O444K!1!1q!1!9!9:::::r   c                    |\  }}t          d          }g d}t          j        ||||d          }|j                                        dk    sJ |j                                        dk    sJ t          j        ||||d          }|j                                        dk    sJ |j                                        dk    sJ d	S )
z1Check the behaviour of the parameter `log_scale`.r   r   r   T)r   	log_scaleloglinearFN)r   r	   r   r4   
get_xscale
get_yscale)r   r   r    r!   r"   r   r:   s          r   %test_learning_curve_display_log_scalerh      s    DAq&A666I!//K"11a[D  G ;!!##u,,,,;!!##x////"11a[E  G ;!!##x////;!!##x//////r   c                 j   |\  }}t          d          }ddl}g d}d}t          j        |||||          }t	          |j                  dk    sJ t          |j        d         |j        j                  sJ |j	        J |j
        J |j                                        \  }	}
t	          |
          dk    sJ d}t          j        |||||          }t	          |j                  dk    sJ t          |j        d         |j        j                  sJ |j	        J t	          |j
                  dk    sJ t          |j
        d         |j        j                  sJ |j                                        \  }	}
t	          |
          dk    sJ d}t          j        |||||          }|j        J t	          |j	                  dk    sJ t          |j	        d         |j        j                  sJ |j
        J |j                                        \  }	}
t	          |
          dk    sJ dS )	z9Check the behaviour of the parameter `std_display_style`.r   r   Nr   )r   r   rC   fill_betweenrQ   )r   r(   r	   r   rX   r+   r*   r-   r.   r)   r/   r4   r7   r0   r1   	containerErrorbarContainer)r   r   r    r!   r"   r;   r   r   r:   r>   rZ   s              r   -test_learning_curve_display_std_display_stylerm     s   DAq&A666I!//K"1		+  G w~!####gnQ')9:::::$$$ (((k;;==OA||!!!!&"1		+  G w~!####gnQ')9:::::$$$w$%%****g+A.0NOOOOOk;;==OA||!!!!""1		+  G >!!!w !!Q&&&&g'*CM,KLLLLL (((k;;==OA||!!!!!!r   c           	         |\  }}t          d          }g d}d}ddi}ddd}t          j        |||||||	          }	|	j        d                                         dk    sJ t          |	j        d                                         g d
g           d}ddi}
t          j        ||||||
          }	|	j        d         j	        d                                         dk    sJ dS )zuCheck the behaviour of the different plotting keyword arguments: `line_kw`,
    `fill_between_kw`, and `errorbar_kw`.r   r   r   rj   colorred      ?)ro   alpha)r   r   line_kwfill_between_kw)rq           ru   rq   rQ   )r   r   errorbar_kwN)
r   r	   r   r+   	get_colorr   r/   get_facecolorr)   r-   )r   r   r    r!   r"   r   r   rs   rt   r:   rv   s              r   'test_learning_curve_display_plot_kwargsry   =  s:    DAq&A666I!//K&G %44O"1		+'  G >!&&((E1111a ..00			  
 #E"K"1		+  G Q%a(2244======r   )r   sklearn.datasetsr   sklearn.treer   sklearn.utilsr   sklearn.utils._testingr   r   sklearn.model_selectionr   r	   fixturer   markparametrize
ValueErrorr#   rA   rL   rP   ra   rh   rm   ry   r   r   r   <module>r      s    & & & & & & / / / / / / ! ! ! ! ! ! F F F F F F F F 2 2 2 2 2 2 8 8 8 8 8 8 @ @ @ 
y	):7ST
		"J0EF 
 
 
$6 $6 $6N*7 *7 *7Z ?,DE ( ( (, ,.@AAW; W; BAW;t0 0 0*7" 7" 7"t%> %> %> %> %>r   