U
    3dM                     @   s  d Z ddlZddlZddl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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 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#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/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 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/d0d1d2 ZLejHId/d0ejHId3d4d5d6 ZMd7d8 ZNejHId9ee<e=feeBjGeBjDfgd:d; ZOd<d= ZPd>d? ZQd@dA ZRdBdC ZSdDdE ZTejHUdFdGdH ZVdIdJ ZWdKdL ZXejHIdMe7dNdO ZYdPdQ ZZdRdS Z[dTdU Z\dVdW Z]dXdY Z^dZd[ Z_d\d] Z`d^d_ Zad`da Zbdbdc Zcddde Zddfdg ZeejHIdhe7didj ZfejHIdhe7dkdl ZgejHIdhe7dmdn ZhejHIdhe7dodp ZiejHIdhe7dqdr ZjejHIdhe7dsdt ZkejHIdhe7dudv ZlejHIdhe7dwdx ZmejHIdhe7dydz ZnejHIdhe7d{d| Zod}d~ ZpejHIdhe7dd Zqdd Zrdd Zsdd Ztdd ZuejHIde7dd ZvejHIde7dd Zwdd Zxdd Zydd Zzdd Z{e(ejHIdeefejHIdee	e
fdd Z|ejHIdeegdd Z}dd Z~dd Zdd Zdd ZejHjIdeee/feee/feee0fgdddgddd Zdd Zdd Zdd Zdd ZejHIdMeegdd ZdS )zP
Testing for the gradient boosting module (sklearn.ensemble.gradient_boosting).
    N)assert_allclose)
csr_matrix)
csc_matrix)
coo_matrix)expit)datasets)clone)make_classificationmake_regression)GradientBoostingClassifier)GradientBoostingRegressor)predict_stages)scale)mean_squared_error)train_test_split)check_random_state
tosequence)NoSampleWeightWrapper)assert_array_almost_equal)assert_array_equal)skip_if_32bit)InvalidParameterError)DataConversionWarning)NotFittedError)DummyClassifierDummyRegressor)make_pipeline)LinearRegression)NuSVR         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   Q/tmp/pip-unpacked-wheel-zrfo1fqw/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   }}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,     r!         ?)	max_depthlearning_rater-   r,   r2   r$      )r2   rQ   r-   r,   rP   max_leaf_nodesr'   )r   make_hastie_10_2r   r:   scorer@   )r-   rF   r;   r<   X_trainX_testy_trainy_testZcommon_paramsZgbrt_100_stumpsZgbrt_200_stumpsZgbrt_stumpsZgbrt_10_nodesrI   rI   rJ   test_classification_syntheticS   s.    rZ   )squared_errorabsolute_errorhuber	subsample)rO         ?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-   rP   r^   min_samples_splitr,   rQ   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   rP   ra   rQ   r-   r,     rO   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:   )ZGradientBoostingr;   r<   ZgbdtrI   rI   rJ   test_feature_importances   s    
ry   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   rO   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$   rz   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   rz   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?   rQ   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 )NrL   rM   rN   r$      r"   rr   )r2   ra   rP   rQ   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-   rQ   rS   r2   r,   Nr    c                    s   g | ]} j | qS rI   )Zfeature_names).0sZ
californiarI   rJ   
<listcomp>Q  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_regression8  s&    
  r   z7ignore:`max_features='auto'` has been deprecated in 1.1c                  C   sP  t jddd\} }| j\}}| d d }|d d }tddd}||| |jtt|ksdt	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sLt	d S )NrL   r!   rM   rN   auto)r2   r   333333?sqrtlog2g{Gz?)r   rT   rE   r   r:   Zmax_features_intrB   r   r@   r   r   )r;   r<   _r*   rV   rX   r   rI   rI   rJ   test_max_feature_auto]  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!   rO   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<   Z	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!   rz   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!   rz   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-   rP   alphar,   r\   )r2   r-   rP   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!   rz   )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!   rz   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!   rz   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   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   c               	   C   sZ   t 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Qg)\(r"   )decimal)
r   r:   r;   r<   oob_improvement_rE   r@   r   rB   arrayr   rI   rI   rJ   test_oob_improvementE  s      r   c               	   C   s:   t dddd} | tt tt | j W 5 Q R X d S )Nr$   r!   rO   r   )r   r:   r;   r<   r5   r6   AttributeErrorr   r   rI   rI   rJ   test_oob_improvement_raiseP  s    r   c                  C   sV   t ddddd} | tjtj | tjtj}|dks<t| jjd | j	ksRtd S )Nr$   r/   r!   r_   rk   rl   r   )
r   r:   rn   rp   ro   rU   r@   r   rE   r2   )rG   rU   rI   rI   rJ   test_oob_multilcass_irisX  s       r   c                  C   s   ddl m}  dd l}|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>   ior   sys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_outputh  s&       
r   c                  C   s   ddl m}  dd l}|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   rP   r,   Tr2   rP   
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   rP   r   n   r"   r2   rP   r   r      r   )r   rT   r:   r   r?   rP   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  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_estimators  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   Tr2   r   )r   rT   r:   r   r   r2   r   r8   )r   r;   r<   r   est2rI   rI   rJ   "test_warm_start_equal_n_estimators  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  d
ktjdtd d S )Nr$   r!   rM   Tr   r   r_   )r2   r^   ir3   r'   r   )	r   rT   r:   r   r   r   rB   r   boolr  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  d S )
Nr$   r!   rM   rR   r_   )r2   rP   r^   r,   Tr2   rP   r^   r,   r   r   )r   rT   r:   r   r   r   )r   r;   r<   r   r   rI   rI   rJ   test_warm_start_oob  s        r  c           
      C   s   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  t||	 qjd S )	Nr$   r!   rM   r_   Tr  rR   r   )
r   rT   r   r   r   r:   r8   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"  sB    
    



 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_fortranF  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_monitorZ  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
d
d ||| |jd
kst|jjd d
kst|jjd d
kst| dddddd}|j||td |jdkst|jjd d	kst|jjd d	ks&t|j	jd d	ks<t|j
d
dd ||| |jd
ksft|jjd d
ks|t|jjd d
kst|j	jd d
kstd S )Nr$   r!   rM   r   r_   )r2   rP   r,   r^   )Zmonitorr   r'   r`   r   T)r2   rP   r,   r^   r   Fr  )r   rT   r:   r  r2   r@   r?   rE   rA   r   r   r  rI   rI   rJ   test_monitor_early_stoppingb  s<        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   rP   r,   rS   r   )sklearn.tree._treer  r   rT   r   r:   r?   tree_rP   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   rP   r,   initrQ   )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   rP   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%   )rP   rS   r   )rP   )r   rT   r:   r?   r  rP   r@   )r%  r;   r<   r  r   r  rI   rI   rJ   test_max_leaf_nodes_max_depth  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_decrease  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
    r)  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   rO   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_exponential  s       
r*  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   rO   r"   )rQ   r2   r-   rb   r_   )r   r:   r8   r@   r;   r<   rc   r-   gbrI   rI   rJ   *test_non_uniform_weights_toy_edge_case_reg  s    r-  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   r+  rI   rI   rJ   *test_non_uniform_weights_toy_edge_case_clf  s    r.  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   2   r!   r   )r,   r)   r*   	n_classesr'   r"   gHz>)r2   r,   rP   r'  )r   Zmake_multilabel_classificationr:   r   rD   r8   rw   
issubclassr   r|   Zpredict_log_probar   zipZstaged_decision_function)	r/  r0  r<   r;   r  ZdensesparseZ
res_sparseresrI   rI   rJ   test_sparse_input%  sd       
           r7  GradientBoostingEstimatorc           
      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   n_iter_no_changerQ   rP   r,   ZtolgMbP?r   gffffff?)r	   r   r:   n_estimators_r@   rU   )
r8  r;   r<   r2   Zgb_large_tolZgb_small_tolrV   rW   rX   rY   rI   rI   rJ   %test_gradient_boosting_early_stoppingR  s0    		r=  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 )
Nr9  r   rM   r1  rr   r#   r:  )r2   rQ   rP   r,   r`   )r	   r   r:   r   r<  r@   )r;   r<   gbcgbrrI   rI   rJ   -test_gradient_boosting_without_early_stoppingx  s"          r@  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 )Nr9  r   rM   r$   r'   rr   r#   r:  )r2   r;  validation_fractionrQ   rP   r,   r   )rA  r   r;  )r2   r;  rQ   rP   rA  r,   r   )	r	   r   r   r   r   r   r:   r<  r@   )r;   r<   r>  Zgbc2Zgbc3r?  Zgbr2Zgbr3rV   rW   rX   rY   rI   rI   rJ   *test_gradient_boosting_validation_fraction  s@    rC  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   rB  z0The least populated class in y has only 1 memberr   r   r5   r6   r7   r:   )r;   r<   r>  rI   rI   rJ   test_early_stopping_stratified  s    
 rE  c                   C   s   t dddS )Nr#   r!   )r2  Zn_clusters_per_class)r	   rI   rI   rI   rJ   _make_multiclass  s    rF  z!gb, dataset_maker, init_estimatorzbinary classificationzmulticlass classificationZ
regression)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   )r,  Zdataset_makerZinit_estimatorrF   r;   r<   rc   Zinit_estrI   rI   rJ    test_gradient_boosting_with_init  s    

rI  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   rH  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.r   )gammanu)r
   r   r   r   r:   r5   r6   r7   rB   rd   rE   r   reescaper   )r;   r<   r!  r,  Z
invalid_nur   rI   rI   rJ   )test_gradient_boosting_with_init_pipeline  s     

&

rN  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,   rA  z0The training data after the early stopping splitr   g?rD  )r;   r<   r,  rI   rI   rJ   test_early_stopping_n_classes  s"         rO  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<   r?  rI   rI   rJ   'test_gbr_degenerate_feature_importances  s    

rP  c               	   C   sd   t ddd} tjtdd | tt W 5 Q R X t ddd}|tt t| t|t d S )NZdeviancer   )r-   r,   z$The loss.* 'deviance' was deprecatedr   r/   )	r   r5   r   FutureWarningr:   r;   r<   r   r8   )Zest1r	  rI   rI   rJ   test_loss_deprecated"  s    rR  c              	   C   sV   t ddgddgg}t ddg}|  ||}tjtdd |j W 5 Q R X d S )Nr!   r"   r#   r%   r   z`loss_` was deprecatedr   )rB   r   r:   r5   r   rQ  Zloss_)r   r;   r<   r   rI   rI   rJ   test_loss_attribute_deprecation.  s
    rS  )__doc__rL  r   ZnumpyrB   Znumpy.testingr   Zscipy.sparser   r   r   Zscipy.specialr   r5   Zsklearnr   Zsklearn.baser   Zsklearn.datasetsr	   r
   Zsklearn.ensembler   r   Z#sklearn.ensemble._gradient_boostingr   Zsklearn.preprocessingr   Zsklearn.metricsr   Zsklearn.model_selectionr   Zsklearn.utilsr   r   Zsklearn.utils._mockingr   Zsklearn.utils._testingr   r   r   Zsklearn.utils._param_validationr   Zsklearn.exceptionsr   r   Zsklearn.dummyr   r   Zsklearn.pipeliner   Zsklearn.linear_modelr   Zsklearn.svmr   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   ry   r   r   r   r   r   filterwarningsr   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.  r7  r=  r@  rC  rE  rF  rI  rN  rO  rP  rR  rS  rI   rI   rI   rJ   <module>   s<  (
    


(',
	%

!
 





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