U
    -eU                  
   @   s  d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
m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mZ dd
lmZmZ ddlmZ ddlmZmZ ddl m!Z! ddl"m#Z# ddl$m%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/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 eegZ7ddgddgddgddgddgddggZ8ddddddgZ9ddgddgddggZ:dddgZ;eddddd d!\Z<Z=e)e=Z=ej>?dZ@eA ZBe@CeBjDjEZFeBjGeF eB_GeBjDeF eB_DejHId"d#d$d% ZJejHId"d#d&d' ZKejHId"d(ejHId)d*d+d, ZLejHId)d*ejHId-d.d/d0 ZMd1d2 ZNejHId3ee<e=feeBjGeBjDfgd4d5 ZOd6d7 ZPd8d9 ZQd:d; ZRd<d= ZSd>d? ZTd@dA ZUdBdC ZVdDdE ZWejHIdFe7dGdH ZXdIdJ ZYdKdL ZZdMdN Z[dOdP Z\dQdR Z]dSdT Z^dUdV Z_ejHIdWe7dXdY Z`ejHIdWe7dZd[ ZaejHId\ed]fed^fed_fed]fed^fed_fgd`da Zbdbdc Zcddde Zddfdg ZeejHIdhe7didj ZfejHIdhe7dkdl ZgejHIdhe7dmdn ZhejHIdhe7dodp ZiejHIdqe7drds ZjejHIdhe7dtdu ZkejHIdhe7dvdw ZlejHIdhe7dxdy ZmejHIdhe7dzd{ ZnejHIdhe7d|d} ZoejHIdhe7d~d Zpdd ZqejHIdhe7dd Zrdd Zsdd Ztdd Zudd ZvejHIde7dd ZwejHIde7dd Zxdd Zydd Zzdd Z{dd Z|e6ejHIdeefejHIdee
e	fdd Z}ejHIdWeegdd Z~dd Zdd Zdd Zdd ZejHjIdeeefeeefeeefgdddgddd Zdd Zdd Zdd ZdS )zP
Testing for the gradient boosting module (sklearn.ensemble.gradient_boosting).
    N)assert_allclose)
coo_matrix
csc_matrix
csr_matrix)expit)datasets)clone)make_classificationmake_regression)DummyClassifierDummyRegressor)GradientBoostingClassifierGradientBoostingRegressor)predict_stages)DataConversionWarningNotFittedError)LinearRegression)mean_squared_error)train_test_split)make_pipeline)scale)NuSVR)check_random_state
tosequence)NoSampleWeightWrapper)InvalidParameterError)assert_array_almost_equalassert_array_equalskip_if_32bit         d         
      )	n_samples
n_featuresZn_informativenoiserandom_statelosslog_lossexponentialc              	   C   s   t | d|d}tt |t W 5 Q R X |tt t	|tt
 dt|jks\t|jd d |jdd   }t|dkst|t}|jdkstd S )Nr'   r-   n_estimatorsr,   r    r!           )   r'   r!   )r   pytestraises
ValueErrorpredictTfitXyr   true_resultlenestimators_AssertionErrortrain_score_npanyapplyshape)r-   global_random_seedclfZlog_loss_decreaseleaves rI   n/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sklearn/ensemble/tests/test_gradient_boosting.pytest_classification_toy:   s      
rK   c                 C   s  t jd|d\}}d}|d | ||d   }}|d | ||d   }}dd| |d}	tf ddi|	}
|
|| tf dd	i|	}||| |
|||||k std
d| |d}	tf ddi|	}||| tf ddi|	}||| ||||||kstd S )N  r)   r,   i  r!         ?)	max_depthlearning_rater-   r,   r2   r'   2      )r2   rP   r-   r,   rO   max_leaf_nodes)r   make_hastie_10_2r   r:   scorer@   )r-   rF   r;   r<   Z	split_idxX_trainX_testy_trainy_testZcommon_paramsZgbrt_10_stumpsZgbrt_50_stumpsZgbrt_stumpsZgbrt_10_nodesrI   rI   rJ   test_classification_syntheticO   s0    rZ   )squared_errorabsolute_errorhuber	subsample)rN         ?c           
   
   C   s   t tt}d }d |d| fD ]n}td| d|d|dd}|jtt|d |t}|jdksbt	|
t}tt|}	|	dk st	|d k	r|}q d S )	Nr"      r%   r_   )r2   r-   rO   r^   min_samples_splitr,   rP   sample_weight)r$   r`   g?)rB   onesr>   y_regr   r:   X_regrD   rE   r@   r8   r   )
r-   r^   rF   rd   Zlast_y_predrc   regrH   y_predmserI   rI   rJ   test_regression_dataset}   s(    



	rj   rc   )Nr!   c                 C   sv   |dkrt ttj}tdd|| d}|jtjtj|d |tjtj}|dksXt	|
tj}|jdksrt	d S )Nr!   r$   r/   r2   r-   r,   r^   rb   ?)   r$   r#   )rB   rd   r>   iristargetr   r:   datarU   r@   rD   rE   )r^   rc   rF   rG   rU   rH   rI   rI   rJ   	test_iris   s    rq   c                 C   s  t | }ddddd| d}tjd|dd	\}}|d d
 |d d
  }}|d
d  |d
d   }}tf |}	|	|| t||	|}
|
dk sttjd|d\}}|d d
 |d d
  }}|d
d  |d
d   }}tf |}	|	|| t||	|}
|
dk sttj	d|d\}}|d d
 |d d
  }}|d
d  |d
d   }}tf |}	|	|| t||	|}
|
dk std S )Nr$   r%   r"   皙?r[   )r2   rO   ra   rP   r-   r,     rN   r)   r,   r+   rR   g      @rM   g     @g?)
r   r   make_friedman1r   r:   r   r8   r@   Zmake_friedman2Zmake_friedman3)rF   r,   Zregression_paramsr;   r<   rV   rX   rW   rY   rG   ri   rI   rI   rJ   test_regression_synthetic   s:    



rv   zGradientBoosting, X, yc                 C   s2   |  }t |drt||| t |ds.td S )Nfeature_importances_)hasattrr@   r:   )GradientBoostingr;   r<   ZgbdtrI   rI   rJ   test_feature_importances   s    
rz   c              	   C   s   t d| d}tt |t W 5 Q R X |tt t	|
tt |t}t|dksdtt|dksvt|jj|jdddd}t	|t d S )Nr$   r2   r,   r3   rN   r!   Zaxisr   )r   r5   r6   r7   predict_probar9   r:   r;   r<   r   r8   r=   rB   allr@   classes_takeargmax)rF   rG   y_probarh   rI   rI   rJ   test_probability_log   s    
r   c               	   C   sN   ddddddg} t ddd}d}tjt|d |jtt| d W 5 Q R X d S )Nr   r!   r$   r{   zty contains 1 class after sample_weight trimmed classes with zero weights, while a minimum of 2 classes are required.matchrb   )r   r5   r6   r7   r:   r;   r<   )rc   rG   msgrI   rI   rJ   $test_single_class_with_sample_weight
  s    r   c               	   C   s   t jddd\} }t| }tddd}|| | t|jdd}d}t	j
t|d t|j||j| W 5 Q R X t| }t	j
tdd t|j||j| W 5 Q R X d S )	Nr$   r!   rM   r{   r    z3When X is a sparse matrix, a CSR format is expectedr   z X should be C-ordered np.ndarray)r   rT   r   r   r:   rB   zerosrE   Zreshaper5   r6   r7   r   r?   rP   asfortranarray)xr<   Zx_sparse_cscrG   rU   err_msgZ	x_fortranrI   rI   rJ    test_check_inputs_predict_stages  s    
r   c           	      C   s   t jd| d\}}|d d |dd   }}|d d |dd   }}tddddd| d}||| ||||}|d	k std
| d S )N.  rM   rL   r$      r"   rr   )r2   ra   rO   rP   max_featuresr,   r_   zGB failed with deviance %.4f)r   rT   r   r:   Z_lossdecision_functionr@   )	rF   r;   r<   rV   rW   rX   rY   gbrtr/   rI   rI   rJ   test_max_feature_regression%  s    r   c                    s   |    j  j }}t|||d\}}}}tdddd|d}||| t|jddd }	 fd	d
|	D }
|
d dkstt	|
dd dddhkstdS )a  Test that Gini importance is calculated correctly.

    This test follows the example from [1]_ (pg. 373).

    .. [1] Friedman, J., Hastie, T., & Tibshirani, R. (2001). The elements
       of statistical learning. New York: Springer series in statistics.
    r,   r]   rr   r4   r$   )r-   rP   rS   r2   r,   Nr    c                    s   g | ]} j | qS rI   )Zfeature_names).0sZ
californiarI   rJ   
<listcomp>R  s     z6test_feature_importance_regression.<locals>.<listcomp>r   ZMedIncr!   r%   Z	LongitudeZAveOccupZLatitude)
rp   ro   r   r   r:   rB   Zargsortrw   r@   set)Zfetch_california_housing_fxtrF   r;   r<   rV   rW   rX   rY   rg   Z
sorted_idxZsorted_featuresrI   r   rJ   "test_feature_importance_regression9  s&    
  r   c                  C   sF  t jddd\} }| j\}}| d d }|d d }tdd d}||| |j|ksZttdd d}||| |j|ksttddd}||| |jt|d ksttddd}||| |jtt	
|ksttddd}||| |jtt	|ksttdd	| jd  d}||| |jdksBtd S )
Nr   r!   rM   rL   )r2   r   333333?sqrtlog2g{Gz?)r   rT   rE   r   r:   Zmax_features_r@   r   intrB   r   r   )r;   r<   _r*   rV   rX   r   rI   rI   rJ   test_max_features]  s,    
r   c               	   C   s   t jdddd\} }| d d |d d  }}| dd  }t }tt tj||tj	d W 5 Q R X |
|| ||}||D ]}|j|jkstqt|| d S )Nrs   r!   rN   rt   rR   Zdtype)r   ru   r   r5   r6   r7   rB   fromiterstaged_predictfloat64r:   r8   rE   r@   r   )r;   r<   rV   rX   rW   rG   rh   rI   rI   rJ   test_staged_predict~  s     
r   c            	   	   C   s  t jddd\} }| d d |d d  }}| dd  |dd   }}tdd}tt tj||tj	d W 5 Q R X |
|| ||D ]}|j|jkstqt||| ||D ].}|jd |jd kstd	|jd kstqt||| d S )
Nrs   r!   rM   rR      r2   r   r   r"   )r   rT   r   r5   r6   r   rB   r   Zstaged_predict_probar   r:   r   rE   r@   r   r8   r   r}   )	r;   r<   rV   rX   rW   rY   rG   rh   Zstaged_probarI   rI   rJ   test_staged_predict_proba  s    
 r   	Estimatorc           	   
   C   s   t j|}|jdd}d|d d df  td }|  }||| dD ]h}t|d| d }|d krjqLtj	dd	 t
||}W 5 Q R X d|d d d < t |d dksLtqLd S )
N)r'   r#   )sizer%   r   r!   )r8   r   r}   Zstaged_T)record)rB   randomRandomStateuniformZastyper   r:   getattrwarningscatch_warningslistr~   r@   )	r   rF   rngr;   r<   	estimatorfuncZstaged_funcZstaged_resultrI   rI   rJ   test_staged_functions_defensive  s    r   c                  C   s   t ddd} | tt t| tt dt| j	ks:t
zdd l}W n tk
rb   dd l}Y nX |j| |jd}d } ||} t| tt dt| j	kst
d S )Nr$   r!   r{   r   )protocol)r   r:   r;   r<   r   r8   r9   r=   r>   r?   r@   cPickleImportErrorpickledumpsHIGHEST_PROTOCOLloads)rG   r   Zserialized_clfrI   rI   rJ   test_serialization  s    
r   c               	   C   s   t ddd} tt | tttt W 5 Q R X t	ddd} | tttt | 
tdg ttjdtjd| 
tdg d S )Nr$   r!   r{   r"   )r!   r   )r   r5   r6   r7   r:   r;   rB   rd   r>   r   r8   r   randr   r   rG   rI   rI   rJ   test_degenerate_targets  s     r   c                 C   s\   t dddd| d}|tt |t}t ddd| d}|tt |t}t|| d S )Nr$   quantiler%   r_   )r2   r-   rO   alphar,   r\   )r2   r-   rO   r,   )r   r:   rf   re   r8   r   )rF   Zclf_quantileZ
y_quantileZclf_aeZy_aerI   rI   rJ   test_quantile_loss  s$    

r   c                  C   sV   t ddd} tttt}| t| t| t	tttt
 dt| jksRtd S )Nr$   r!   r{   )r   r   mapstrr<   r:   r;   r   r8   r9   r=   r>   r?   r@   )rG   Zsymbol_yrI   rI   rJ   test_symbol_labels  s
    r   c                  C   sZ   t ddd} tjttjd}| t| t| t	tjt
tjd dt| jksVtd S Nr$   r!   r{   r   )r   rB   asarrayr<   Zfloat32r:   r;   r   r8   r9   r=   r>   r?   r@   )rG   Zfloat_yrI   rI   rJ   test_float_class_labels  s
    r   c               	   C   s~   t ddd} tjttjd}|d d tjf }d}tjt|d | 	t
| W 5 Q R X t| tt dt| jksztd S )Nr$   r!   r{   r   zA column-vector y was passed when a 1d array was expected. Please change the shape of y to \(n_samples, \), for example using ravel().r   )r   rB   r   r<   int32Znewaxisr5   Zwarnsr   r:   r;   r   r8   r9   r=   r>   r?   r@   )rG   y_Zwarn_msgrI   rI   rJ   test_shape_y  s    r   c                  C   s6  t t} tddd}|| t t|tt	 dt
|jksDtt t} tddd}|| t t|tt	 dt
|jkstt jtt jd}t |}tddd}|t| t|tt	 dt
|jkstt jtt jd}t |}tddd}|t| t|tt	 dt
|jks2td S r   )rB   r   r;   r   r:   r<   r   r8   r9   r=   r>   r?   r@   Zascontiguousarrayr   r   )ZX_rG   r   rI   rI   rJ   test_mem_layout'  s,    



r   GradientBoostingEstimatorc              	   C   sZ   | dddd}| tt |jjd dks.tt|jd d tddd	d
dgdd d S )Nr$   r!   r_   r2   r,   r^   r   r   gRQ?g333333?gQ?g)\(g)\(?r"   )decimal)	r:   r;   r<   oob_improvement_rE   r@   r   rB   array)r   r   rI   rI   rJ   test_oob_improvementD  s      r   c                 C   s   t jddd\}}| dddd}||| |jjd dks@t|jd t|jksZt| ddddd	}||| |jjd dk st|jd t|jkstd S )
Nr$   r!   rM   r_   r   r   r    r   )r2   r,   r^   n_iter_no_change)	r   rT   r:   oob_scores_rE   r@   r5   approx
oob_score_)r   r;   r<   r   rI   rI   rJ   test_oob_scoresT  s$      r   z(GradientBoostingEstimator, oob_attributer   r   r   c              	   C   sL   t jddd\}}| dddd}||| tt |j W 5 Q R X dS )zZ
    Check that we raise an AttributeError when the OOB statistics were not computed.
    r$   r!   rM   rN   r   N)r   rT   r:   r5   r6   AttributeErroroob_attribute)r   r   r;   r<   r   rI   rI   rJ   test_oob_attributes_errorj  s    r   c                  C   s   t ddddd} | tjtj | tjtj}|dks<t| jjd | j	ksRt| j
jd | j	ksht| j
d t| jkstt ddddd	d
} | tjtj | tjtj}| jjd | j	k st| j
jd | j	k st| j
d t| jkstd S )Nr$   r/   r!   r_   rk   rl   r   r    r   )r2   r-   r,   r^   r   )r   r:   rn   rp   ro   rU   r@   r   rE   r2   r   r5   r   r   )r   rU   rI   rI   rJ   test_oob_multilcass_iris  s0       r   c                  C   s   dd l } ddlm} | j}| | _tddddd}|tt | j}|| _|d |	 
 }ddgd	gd
  d }||ksttdd | D }d|kstd S )Nr   StringIOr$   r!   皙?)r2   r,   verboser^    %10s%16sr#   )Iter
Train LosszOOB ImproveRemaining Timec                 s   s   | ]
}d V  qdS r!   NrI   r   lrI   rI   rJ   	<genexpr>  s     z&test_verbose_output.<locals>.<genexpr>   sysior   stdoutr   r:   r;   r<   seekreadlinerstripjoinr@   sum	readlinesr   r   Z
old_stdoutrG   Zverbose_outputheaderZtrue_headerZn_linesrI   rI   rJ   test_verbose_output  s&       
r   c                  C   s   dd l } ddlm} | j}| | _tdddd}|tt | j}|| _|d |	 
 }ddgd	gd  d
 }||ksttdd | D }d|kstd S )Nr   r   r$   r!   r"   )r2   r,   r   r   r   r   )r   r   r   c                 s   s   | ]
}d V  qdS r   rI   r   rI   rI   rJ   r     s     z+test_more_verbose_output.<locals>.<genexpr>r   r   rI   rI   rJ   test_more_verbose_output  s    
r   Clsc                 C   s   t jd|d\}}| dd|d}||| | ddd|d}||| |jdd ||| | tkrt|||| n,t|||| t|||| d S )	Nr$   rM   rR   r!   r2   rO   r,   Tr2   rO   
warm_startr,   r   )	r   rT   r:   
set_paramsr   r   r8   r   r}   r   rF   r;   r<   estest_wsrI   rI   rJ   test_warm_start  s        r  c                 C   sz   t jd|d\}}| dd|d}||| | ddd|d}||| |jdd ||| t|||| d S )	Nr$   rM   i,  r!   r   Tr   r   )r   rT   r:   r   r   r8   r   rI   rI   rJ   test_warm_start_n_estimators  s       r  c                 C   s   t jddd\}}| dddd}||| |jddd ||| |jd	 jdksZttdd
D ]}|j| df jdksdtqdd S )Nr$   r!   rM   Tr2   rO   r   n   r"   r2   rO   r   r      r   )r   rT   r:   r   r?   rO   r@   range)r   r;   r<   r   irI   rI   rJ   test_warm_start_max_depth  s    r  c                 C   sv   t jddd\}}| ddd}||| | dddd}||| |jdd ||| t|||| d S )	Nr$   r!   rM   r  Tr  F)r   )r   rT   r:   r   r   r8   )r   r;   r<   r   Zest_2rI   rI   rJ   test_warm_start_clear  s    r  ry   c                 C   s  t jddd\}}d}| |ddddd}||| |j|j }}t||ksRt|d t|kshtd}|j	|d	|| t|j|kstt
|jd
| | |j	|dd|| |j|k	st|j|k	stt
|j| |jt|kst|d t|kstd
S )zZ
    Check that the states of the OOB scores are cleared when used with `warm_start`.
    r$   r!   rM   r_   T)r2   rO   r^   r   r,   r    rR   r   NFr2   r   )r   rT   r:   r   r   r>   r@   r5   r   r   r   )ry   r;   r<   r2   r   Z
oob_scoresZ	oob_scoreZn_more_estimatorsrI   rI   rJ    test_warm_start_state_oob_scores%  s.    r  c              	   C   s^   t jddd\}}| dddd}||| |jdd tt ||| W 5 Q R X d S )Nr$   r!   rM   Tr  c   r   )r   rT   r:   r   r5   r6   r7   r   r;   r<   r   rI   rI   rJ   $test_warm_start_smaller_n_estimatorsE  s    r  c                 C   sh   t jddd\}}| ddd}||| t|}|j|jdd ||| t|||| d S )Nr$   r!   rM   r  Tr  )r   rT   r:   r   r   r2   r   r8   )r   r;   r<   r   Zest2rI   rI   rJ   "test_warm_start_equal_n_estimatorsP  s    r  c                 C   s   t jddd\}}| dddd}||| |jddd ||| t|jd d td t|jd d td |jd	d  d
k	 st
|jd	d  d
k	 st
|jd t|jkst
d S )Nr$   r!   rM   Tr  r  r_   )r2   r^   ir3   r    )r   rT   r:   r   r   r   rB   r   r   r~   r@   r5   r   r   r  rI   rI   rJ   test_warm_start_oob_switch^  s    r  c                 C   s   t jddd\}}| ddddd}||| | dddddd}||| |jdd	 ||| t|jd d |jd d  t|jd d |jd d  |jd
 t|j	kst
|jd
 t|j	kst
d S )Nr$   r!   rM   rR   r_   )r2   rO   r^   r,   Tr2   rO   r^   r,   r   r   r    )r   rT   r:   r   r   r   r   r5   r   r   r@   )r   r;   r<   r   r  rI   rI   rJ   test_warm_start_oobq  s"        r  c           
      C   sB  t jddd\}}tttg}| dddddd}||| || |jdd ||| ||}|D ]}||}| dddddd}||| || |jdd ||| ||}	t|j	d d |j	d d  |j
d	 t|jkstt|j
d d |j
d d  |j
d	 t|jks2tt||	 qjd S )
Nr$   r!   rM   r_   Tr  rR   r   r    )r   rT   r   r   r   r:   r8   r   r   r   r   r5   r   r   r@   )
r   r;   r<   Zsparse_matrix_typeZ	est_denseZy_pred_denseZsparse_constructorX_sparseZ
est_sparseZy_pred_sparserI   rI   rJ   test_warm_start_sparse  sN    
    



  r  c                 C   s   t jd|d\}}| d|dd}| d|dd}||| |jdd ||| t|}||| |jdd ||| t|||| d S )Nr$   rM   r!   T)r2   r,   r   r  r   )r   rT   r:   r   rB   r   r   r8   )r   rF   r;   r<   Zest_cZest_fortranZ	X_fortranrI   rI   rJ   test_warm_start_fortran  s    
r  c                 C   s   | dkrdS dS dS )z#Returns True on the 10th iteration.	   TFNrI   )r
  r   localsrI   rI   rJ   early_stopping_monitor  s    r  c                 C   s  t jddd\}}| ddddd}|j||td |jdks@t|jjd d	ksTt|jjd d	ksht|j	jd d	ks|t|j
jd d	kst|j
d
 t|jkst|jdd ||| |jdkst|jjd dkst|jjd dkst|j	jd dkst|j
jd dks$t|j
d
 t|jks@t| dddddd}|j||td |jdksrt|jjd d	kst|jjd d	kst|j	jd d	kst|j
jd d	kst|j
d
 t|jkst|jddd ||| |jdkst|jjd dks&t|jjd dks<t|j	jd dksRt|j
jd dksht|j
d
 t|jkstd S )Nr$   r!   rM   r   r_   )r2   rO   r,   r^   )Zmonitorr   r'   r    r`   r   T)r2   rO   r,   r^   r   Fr  )r   rT   r:   r  r2   r@   r?   rE   rA   r   r   r5   r   r   r   r  rI   rI   rJ   test_monitor_early_stopping  sN        r  c                  C   s   ddl m}  tjddd\}}d}tdd d|d d}||| |jd	 j}|j|ks\t	|j
|j
| k jd |d ks~t	d S )
Nr   	TREE_LEAFr$   r!   rM   r%   r   r2   rO   r,   rS   r  )sklearn.tree._treer  r   rT   r   r:   r?   tree_rO   r@   children_leftrE   )r  r;   r<   kr   treerI   rI   rJ   test_complete_classification  s       r%  c                  C   sb   ddl m}  d}tdd d|d d}|tt |jd j}|j|j| k j	d |d ks^t
d S )Nr   r  r%   r   r!   r  )r    r   )r   r  r   r:   rf   re   r?   r!  r"  rE   r@   )r  r#  r   r$  rI   rI   rJ   test_complete_regression	  s       r&  c                 C   sd   t ddtt}t|tt}tdd| ddd}|tt |t}tt|}||k s`td S )NZmean)Zstrategyr   r!   zeror_   )r2   rO   r,   initrP   )r   r:   rf   re   r   r8   r   r@   )rF   ZbaselineZmse_baseliner   rh   Zmse_gbdtrI   rI   rJ   test_zero_estimator_reg  s    

r)  c                 C   s   t j}tt j}tdd| dd}||| |||dksBt|dk}d||< d|| < tdd| dd}||| |||dkstd S )Nr   r!   r'  )r2   rO   r,   r(  gQ?r   )	rn   rp   rB   r   ro   r   r:   rU   r@   )rF   r;   r<   r   maskrI   rI   rJ   test_zero_estimator_clf+  s*       
   r+  GBEstimatorc                 C   st   t jddd\}}d}| d|d||}|jd j}|jdksDt| dd||}|jd j}|jdksptd S )Nr$   r!   rM   r%   )rO   rS   r  )rO   )r   rT   r:   r?   r!  rO   r@   )r,  r;   r<   r#  r   r$  rI   rI   rJ   test_max_leaf_nodes_max_depthB  s    r-  c                 C   sH   t jddd\}}| dd}||| |jjD ]}|jdks0tq0d S )Nr$   r!   rM   rr   )min_impurity_decrease)r   rT   r:   r?   Zflatr.  r@   )r,  r;   r<   r   r$  rI   rI   rJ   test_min_impurity_decreaseR  s
    
r/  c                  C   sp   t ddd} | ddgddggddg | jjd dks<t| ddgddggddg | jjd dksltd S )Nr'   Tr  r   r!   r"   r#   )r   r:   r?   rE   r@   r   rI   rI   rJ   %test_warm_start_wo_nestimators_change^  s
    r0  c              	   C   s   t dd| d}tt |t W 5 Q R X |tt t	|
tt |t}t|dksftt|dksxt|t }t|d d df td|  |jj|jddd	d}t	|t d S )
Nr0   r$   r1   r3   rN   r!   r"   r|   r   )r   r5   r6   r7   r}   r9   r:   r;   r<   r   r8   r=   rB   r~   r@   r   Zravelr   r   r   r   r   )rF   rG   r   rU   rh   rI   rI   rJ   test_probability_exponentialh  s       
r1  c                  C   s|   ddgddgddgddgg} ddddg}ddddg}dD ]>}t dd|d}|j| ||d |ddggd dks8tq8d S )	Nr!   r   )r]   r[   r\   r   rN   r"   )rP   r2   r-   rb   r_   )r   r:   r8   r@   r;   r<   rc   r-   gbrI   rI   rJ   *test_non_uniform_weights_toy_edge_case_reg  s    r4  c                  C   sv   ddgddgddgddgg} ddddg}ddddg}dD ]8}t d|d}|j| ||d t|ddggdg q8d S )Nr!   r   r.   r   )r2   r-   rb   )r   r:   r   r8   r2  rI   rI   rJ   *test_non_uniform_weights_toy_edge_case_clf  s    r5  EstimatorClasssparse_matrixc           	      C   sX  t jddddd\}}|d d df }||}| ddddd	||}| ddddd	||}t|||| t|||| t|j|j t|||| t|||| t| trTt|	||	| t|
||
| t|||| t|||| t||||D ]\}}t|| q>d S )
Nr   rQ   r!   r   )r,   r)   r*   	n_classesr'   r"   gHz>)r2   r,   rO   r.  )r   Zmake_multilabel_classificationr:   r   rD   r8   rw   
issubclassr   r}   Zpredict_log_probar   zipZstaged_decision_function)	r6  r7  r<   r;   r  ZdensesparseZ
res_sparseresrI   rI   rJ   test_sparse_input  sd       
           r=  c           
      C   s   t ddd\}}d}| |dddddd}| |ddddd	d}t||dd
\}}}}	||| ||| |j|j  k r|k sn t|||	dkst|||	dkstd S )N  r   rM   r'   rr   r#   *   )r2   r   rP   rO   r,   ZtolgMbP?r   gffffff?)r	   r   r:   n_estimators_r@   rU   )
r   r;   r<   r2   Zgb_large_tolZgb_small_tolrV   rW   rX   rY   rI   rI   rJ   %test_gradient_boosting_early_stopping  s0    		rA  c                  C   sh   t ddd\} }tddddd}|| | td	dddd}|| | |jdksVt|jd	ksdtd S )
Nr>  r   rM   rQ   rr   r#   r?  )r2   rP   rO   r,   r`   )r	   r   r:   r   r@  r@   )r;   r<   gbcgbrrI   rI   rJ   -test_gradient_boosting_without_early_stopping  s"          rD  c                  C   s  t ddd\} }tddddddd	}t|jd
d}t|jdd}tddddddd}t|jd
d}t|jdd}t| |dd\}}	}
}|||
 |||
 |j|jkst|||
 |||
 |j|jkst|||
 |||
 |j|jk st|j|jk std S )Nr>  r   rM   r$   r'   rr   r#   r?  )r2   r   validation_fractionrP   rO   r,   r   )rE  r   r   )r2   r   rP   rO   rE  r,   r   )	r	   r   r   r   r   r   r:   r@  r@   )r;   r<   rB  Zgbc2Zgbc3rC  Zgbr2Zgbr3rV   rW   rX   rY   rI   rI   rJ   *test_gradient_boosting_validation_fraction  s@    rG  c               	   C   s\   ddgddgddgddgg} ddddg}t dd}tjtdd	 || | W 5 Q R X d S )
Nr!   r"   r#   r%   r   r   rF  z0The least populated class in y has only 1 memberr   r   r5   r6   r7   r:   )r;   r<   rB  rI   rI   rJ   test_early_stopping_stratified'  s    
 rI  c                   C   s   t dddS )Nr#   r!   )r8  Zn_clusters_per_class)r	   rI   rI   rI   rJ   _make_multiclass3  s    rJ  z!gb, dataset_maker, init_estimatorzbinary classificationzmulticlass classificationZ
regression)Zidsc              	   C   s   | \}}t j|d}| }| |dj|||d t| }| |d|| tjtdd | |dj|||d W 5 Q R X d S )Nr$   r(  rb   z*estimator.*does not support sample weightsr   )	rB   r   r   r   r:   r   r5   r6   r7   )r3  Zdataset_makerZinit_estimatorrF   r;   r<   rc   Zinit_estrI   rI   rJ    test_gradient_boosting_with_init7  s    

rL  c               	   C   s   t dd\} }tt }t|d}|| | tjtdd" |j| |t	| j
d d W 5 Q R X d}d| d	}tjtt|d8 td
|d}t|d}|j| |t	| j
d d W 5 Q R X d S )Nr   r   rK  z>The initial estimator Pipeline does not support sample weightsr   rb   g      ?zIThe 'nu' parameter of NuSVR must be a float in the range (0.0, 1.0]. Got z	 instead.auto)gammanu)r
   r   r   r   r:   r5   r6   r7   rB   rd   rE   r   reescaper   )r;   r<   r(  r3  Z
invalid_nur   rI   rI   rJ   )test_gradient_boosting_with_init_pipelineV  s     

&

rR  c               	   C   sd   dggd } ddgdgd  }t dddd}tjtdd	 || | W 5 Q R X t ddd
d}d S )Nr!   r'   r   r&   r   r   )r   r,   rE  z0The training data after the early stopping splitr   g?rH  )r;   r<   r3  rI   rI   rJ   test_early_stopping_n_classest  s"         rS  c                  C   s>   t d} t d}t | |}t|jt jdt jd d S )N)r'   r'   )r'   r'   r   )rB   r   rd   r   r:   r   rw   r   )r;   r<   rC  rI   rI   rJ   'test_gbr_degenerate_feature_importances  s    

rT  )__doc__rP  r   numpyrB   r5   Znumpy.testingr   Zscipy.sparser   r   r   Zscipy.specialr   Zsklearnr   Zsklearn.baser   Zsklearn.datasetsr	   r
   Zsklearn.dummyr   r   Zsklearn.ensembler   r   Z#sklearn.ensemble._gradient_boostingr   Zsklearn.exceptionsr   r   Zsklearn.linear_modelr   Zsklearn.metricsr   Zsklearn.model_selectionr   Zsklearn.pipeliner   Zsklearn.preprocessingr   Zsklearn.svmr   Zsklearn.utilsr   r   Zsklearn.utils._mockingr   Zsklearn.utils._param_validationr   Zsklearn.utils._testingr   r   r   ZGRADIENT_BOOSTING_ESTIMATORSr;   r<   r9   r=   rf   re   r   r   r   Z	load_irisrn   Zpermutationro   r   permrp   markZparametrizerK   rZ   rj   rq   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r&  r)  r+  r-  r/  r0  r1  r4  r5  r=  rA  rD  rG  rI  rJ  rL  rR  rS  rT  rI   rI   rI   rJ   <module>   s@  (
    


-',
	$!



 










(

-


 ( 
#+	
