
    0Ph              
       .   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	 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 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+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5 eegZ6ddgddgddgddgddgddggZ7g dZ8ddgddgddggZ9g dZ: eddd d!d"#          \  Z;Z< e%e<          Z<ej=        >                    d          Z? e	j@                    ZAe?B                    eAjC        jD                  ZEeAjF        eE         eA_F        eAjC        eE         eA_C        d$ ZGd% ZHejI        J                    d&d'          d(             ZKejI        J                    d&d'          d)             ZLejI        J                    d&d*          ejI        J                    d+d,          d-                         ZMejI        J                    d+d,          ejI        J                    d.d/          d0                         ZNd1 ZOejI        J                    d2ee;e<feeAjF        eAjC        fg          d3             ZPd4 ZQd5 ZRejI        J                    d6e4          d7             ZSd8 ZTd9 ZUd: ZVd; ZWd< ZXejI        J                    d=e6          d>             ZYd? ZZd@ Z[dA Z\dB Z]dC Z^dD Z_dE Z`ejI        J                    dFe6          dG             ZaejI        J                    dFe6          dH             ZbejI        J                    dIedJfedKfedLfedJfedKfedLfg          dM             ZcdN ZddO ZedP ZfejI        J                    dQe6          dR             ZgejI        J                    dQe6          dS             ZhejI        J                    dQe6          dT             ZiejI        J                    dQe6          dU             ZjejI        J                    dVe6          dW             ZkejI        J                    dQe6          dX             ZlejI        J                    dQe6          dY             ZmejI        J                    dQe6          dZ             ZnejI        J                    dQe6          d[             ZoejI        J                    dQe6          ejI        J                    d\e3e4z   e5z             d]                         ZpejI        J                    dQe6          d^             Zqd_ ZrejI        J                    dQe6          d`             Zsda Ztdb Zudc Zvdd ZwejI        J                    dee6          df             ZxejI        J                    dee6          dg             Zydh ZzejI        J                    dig dj          dk             Z{dl Z|e1ejI        J                    dmeef          ejI        J                    d\e3e4z   e5z             dn                                     Z}ejI        J                    dFeeg          do             Z~dp Zdq Zdr Zds ZejI        J                    dteeefeeefeeefgg duv          dw             Zdx Zdy Zdz Zd{ Zd| Zd} Ze1d~             Zd Zd Zd ZdS )zP
Testing for the gradient boosting module (sklearn.ensemble.gradient_boosting).
    N)assert_allclose)datasets)clone)make_classificationmake_regression)DummyClassifierDummyRegressor)GradientBoostingClassifierGradientBoostingRegressor)_safe_divide)predict_stages)DataConversionWarningNotFittedError)LinearRegression)mean_squared_error)train_test_split)make_pipeline)scale)NuSVR)check_random_state)NoSampleWeightWrapper)InvalidParameterError)assert_array_almost_equalassert_array_equalskip_if_32bit)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS      )r    r    r    r!   r!   r!      )r    r!   r!   d         
      )	n_samples
n_featuresn_informativenoiserandom_statec                      t          d          } d}t          j        t          |          5  |                     t
          j        t
          j                   ddd           dS # 1 swxY w Y   dS )z/Test exponential loss raises for n_classes > 2.exponentiallossz?loss='exponential' is only suitable for a binary classificationmatchN)r
   pytestraises
ValueErrorfitirisdatatargetclfmsgs     m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/ensemble/tests/test_gradient_boosting.pytest_exponential_n_classes_gt_2r?   ;   s    
$-
8
8
8C
KC	z	-	-	- ( (	4;'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   +A&&A*-A*c                      t          t                    } d}t          j        t          |          5  |                     t          t                     ddd           dS # 1 swxY w Y   dS )z0Test raise if init_ has no predict_proba method.initzThe 'init' parameter of GradientBoostingClassifier must be a str among {'zero'}, None or an object implementing 'fit' and 'predict_proba'.r2   N)r
   r   r4   r5   r6   r7   Xyr;   s     r>   'test_raise_if_init_has_no_predict_probarE   C   s    
$*C
D
D
DC	N  
z	-	-	-  1                 s   !A!!A%(A%r1   log_lossr/   c                 N   t          | d|          }t          j        t                    5  |                    t
                     d d d            n# 1 swxY w Y   |                    t          t                     t          |                    t
                    t                     dt          |j                  k    sJ |j        d d         |j        dd          z
  }t          j        |dk              sJ |                    t                    }|j        dk    sJ d S )Nr'   )r1   n_estimatorsr-   r    r!           )   r'   r!   )r
   r4   r5   r6   predictTr7   rC   rD   r   true_resultlenestimators_train_score_npanyapplyshape)r1   global_random_seedr<   log_loss_decreaseleavess        r>   test_classification_toyrY   N   sE    %1C  C 
z	"	"  A               GGAqMMMs{{1~~{333S_%%%%%%("-0@0DD6#s*+++++YYq\\F<:%%%%%%s   AAAc                    t          j        d|          \  }}d}|d |         ||d          }}|d |         ||d          }}dd| |d}	t          dddi|	}
|
                    ||           t          ddd	i|	}|                    ||           |
                    ||          |                    ||          k     sJ d
d| |d}	t          dddi|	}|                    ||           t          dddi|	}|                    ||           |                    ||          |                    ||          k    sJ d S )N  r)   r-   i  r!         ?)	max_depthlearning_rater1   r-   rI   r'   2      )rI   r_   r1   r-   r^   max_leaf_nodes )r   make_hastie_10_2r
   r7   score)r1   rV   rC   rD   	split_idxX_trainX_testy_trainy_testcommon_paramsgbrt_10_stumpsgbrt_50_stumpsgbrt_stumpsgbrt_10_nodess                 r>   test_classification_syntheticrp   c   s    $tBTUUUDAqI

mQyzz]VG

mQyzz]VG *	 M 0QQRQ=QQNw(((/QQRQ=QQNw(((//.2F2Fvv2V2VVVVV
 *	 M -JJqJMJJKOOGW%%%.RRbRMRRMgw'''VV,,}/B/B66/R/RRRRRRR    )squared_errorabsolute_errorhuber	subsample)r]         ?c           
         t          j        t          t                              }d }d |d|z  fD ]}t	          d| d|d|d          }|                    t          t          |           |                    t                    }|j        dk    sJ |	                    t                    }t          t          |          }	|	dk     sJ |	 |}d S )	Nr"      r%   rv   )rI   r1   r^   ru   min_samples_splitr-   r_   sample_weight)r$   rx   g?)rR   onesrO   y_regr   r7   X_regrT   rU   rL   r   )
r1   ru   rV   r|   last_y_predr{   regrX   y_predmses
             r>   test_regression_datasetr      s    
 73u::DKa$h/   (+
 
 
 	uM:::5!!|y((((U## //Tzzzz" ? rq   r{   )Nr!   c                    |dk    r+t          j        t          t          j                            }t          dd||           }|                    t          j        t          j        |           |                    t          j        t          j                  }|dk    sJ |	                    t          j                  }|j
        dk    sJ d S )Nr!   r$   rG   rI   r1   r-   ru   rz   ?)   r$   r#   )rR   r|   rO   r8   r:   r
   r7   r9   re   rT   rU   )ru   r{   rV   r<   re   rX   s         r>   	test_irisr      s     DK 0 011
$'	  C GGDIt{-G@@@IIdi--E3;;;;YYty!!F<=((((((rq   c                    t          |           }ddddd| d}t          j        d|d	          \  }}|d d
         |d d
         }}|d
d          |d
d          }}t          di |}	|	                    ||           t          ||	                    |                    }
|
dk     sJ t          j        d|          \  }}|d d
         |d d
         }}|d
d          |d
d          }}t          di |}	|	                    ||           t          ||	                    |                    }
|
dk     sJ t          j        d|          \  }}|d d
         |d d
         }}|d
d          |d
d          }}t          di |}	|	                    ||           t          ||	                    |                    }
|
dk     sJ d S )Nr$   r%   r"   皙?rr   )rI   r^   ry   r_   r1   r-     r]   r)   r-   r,   ra   g      @r\   g     @g?rc   )	r   r   make_friedman1r   r7   r   rL   make_friedman2make_friedman3)rV   r-   regression_paramsrC   rD   rg   ri   rh   rj   r<   r   s              r>   test_regression_syntheticr      s    &&899L*  "TTWXXXDAq#w$3$WGsttWagFF
#
8
8&7
8
8CGGGW
VS[[%8%8
9
9C9999 "TMMMDAq#w$3$WGsttWagFF
#
8
8&7
8
8CGGGW
VS[[%8%8
9
9C<<<< "TMMMDAq#w$3$WGsttWagFF
#
8
8&7
8
8CGGGW
VS[[%8%8
9
9C;;;;;;rq   zGradientBoosting, X, yc                      |             }t          |d          rJ |                    ||           t          |d          sJ d S )Nfeature_importances_)hasattrr7   )GradientBoostingrC   rD   gbdts       r>   test_feature_importancesr      sW     Dt344444HHQNNN4/0000000rq   c                 ~   t          d|           }t          j        t                    5  |                    t
                     d d d            n# 1 swxY w Y   |                    t          t                     t          |
                    t
                    t                     |                    t
                    }t          j        |dk              sJ t          j        |dk              sJ |j                            |                    d          d          }t          |t                     d S )Nr$   rI   r-   rJ   r]   r!   )axisr   )r
   r4   r5   r6   predict_probarM   r7   rC   rD   r   rL   rN   rR   allclasses_takeargmax)rV   r<   y_probar   s       r>   test_probability_logr   
  sD   
$#DV
W
W
WC	z	"	"  !               GGAqMMMs{{1~~{333 ""G6'S.!!!!!6'S.!!!!! \w~~1~55A>>Fv{+++++s   AAAc                      g d} t          dd          }d}t          j        t          |          5  |                    t
          t          |            d d d            d S # 1 swxY w Y   d S )N)r   r   r   r!   r!   r!   r$   r!   r   zty contains 1 class after sample_weight trimmed classes with zero weights, while a minimum of 2 classes are required.r2   rz   )r
   r4   r5   r6   r7   rC   rD   )r{   r<   r=   s      r>   $test_single_class_with_sample_weightr     s    &&&M
$#A
F
F
FC	C  
z	-	-	- 3 31M2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   #A##A'*A'csc_containerc                 `   t          j        dd          \  }} | |          }t          dd          }|                    ||           t	          j        |j                                      dd          }d}t          j	        t          |          5  t          |j        ||j        |           d d d            n# 1 swxY w Y   t	          j        |          }t          j	        t          d          5  t          |j        ||j        |           d d d            d S # 1 swxY w Y   d S )	Nr$   r!   r\   r   r    z3When X is a sparse matrix, a CSR format is expectedr2   z X should be C-ordered np.ndarray)r   rd   r
   r7   rR   zerosrU   reshaper4   r5   r6   r   rP   r_   asfortranarray)r   xrD   x_sparse_cscr<   re   err_msg	x_fortrans           r>    test_check_inputs_predict_stagesr   )  s    $sCCCDAq =##L
$#A
F
F
FCGGAqMMMHag''A..ECG	z	1	1	1 P Psc6GOOOP P P P P P P P P P P P P P P!!$$I	z)K	L	L	L M Ms	33DeLLLM M M M M M M M M M M M M M M M M Ms$   B??CC9D##D'*D'c                 V   t          j        d|           \  }}|d d         |dd          }}|d d         |dd          }}t          ddddd|           }|                    ||           |                    ||                    |                    }|d	k     sJ d
|z              d S )N.  r\   r[   r$      r"   r   )rI   ry   r^   r_   max_featuresr-   rv   zGB failed with deviance %.4f)r   rd   r
   r7   _lossdecision_function)	rV   rC   rD   rg   rh   ri   rj   gbrtrG   s	            r>   test_max_feature_regressionr   :  s    $uCUVVVDAqh$%%VGh$%%VG%'  D 	HHWgzz&$"8"8"@"@AAHc>>>9HD>>>>>rq   c                 t    |             j         j        }}t          |||          \  }}}}t          dddd|          }|                    ||           t          j        |j                  ddd         }	fd	|	D             }
|
d
         dk    sJ t          |
dd                   h dk    sJ 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-   rt   r   rK   r$   )r1   r_   rb   rI   r-   Nr    c                 *    g | ]}j         |         S rc   )feature_names).0s
californias     r>   
<listcomp>z6test_feature_importance_regression.<locals>.<listcomp>g  s!    GGGqz/2GGGrq   r   MedIncr!   r%   >   AveOccupLatitude	Longitude)	r9   r:   r   r   r7   rR   argsortr   set)fetch_california_housing_fxtrV   rC   rD   rg   rh   ri   rj   r   
sorted_idxsorted_featuresr   s              @r>   "test_feature_importance_regressionr   N  s     .-//J?J-qA'7	1-( ( ($GVWf $'  C GGGWC455ddd;JGGGGJGGGO 1))))
 qs#$$(M(M(MMMMMMMrq   c                     t          j        dd          \  } }| j        \  }}| d d         }|d d         }t          dd           }|                    ||           |j        |k    sJ t          dd           }|                    ||           |j        |k    sJ t          dd          }|                    ||           |j        t          |dz            k    sJ t          dd          }|                    ||           |j        t          t          j	        |                    k    sJ t          dd          }|                    ||           |j        t          t          j
        |                    k    sJ t          dd	| j        d         z            }|                    ||           |j        dk    sJ d S )
Nr   r!   r\   r[   )rI   r   333333?sqrtlog2g{Gz?)r   rd   rU   r
   r7   max_features_r   intrR   r   r   )rC   rD   _r*   rg   ri   r   s          r>   test_max_featuresr   r  s   $u1EEEDAqGMAzhGhG%14HHHDHHWg++++$!$GGGDHHWg++++$!#FFFDHHWgZ#%5!6!66666$!&IIIDHHWgRWZ%8%8!9!99999$!&IIIDHHWgRWZ%8%8!9!99999$!$QRBSTTTDHHWg""""""rq   c                  $   t          j        ddd          \  } }| d d         |d d         }}| dd          }t                      }t          j        t
                    5  t          j        |                    |          t          j	                   d d d            n# 1 swxY w Y   |
                    ||           |                    |          }|                    |          D ]}|j        |j        k    sJ t          ||           d S )Nr   r!   r]   r   ra   dtype)r   r   r   r4   r5   r6   rR   fromiterstaged_predictfloat64r7   rL   rU   r   )rC   rD   rg   ri   rh   r<   r   s          r>   test_staged_predictr     s_    "TMMMDAq#w$3$WGsttWF
#
%
%C	z	"	" B B
C&&v..bjAAAAB B B B B B B B B B B B B B B GGGW[[  F '' ' 'w&,&&&&&fa(((((s    4B  B$'B$c                     t          j        dd          \  } }| d d         |d d         }}| dd          |dd          }}t          d          }t          j        t
                    5  t          j        |                    |          t          j	                   d d d            n# 1 swxY w Y   |
                    ||           |                    |          D ]}|j        |j        k    sJ t          |                    |          |           |                    |          D ]3}|j        d         |j        d         k    sJ d	|j        d         k    sJ 4t          |                    |          |           d S )
Nr   r!   r\   ra      rI   r   r   r"   )r   rd   r
   r4   r5   r   rR   r   staged_predict_probar   r7   r   rU   r   rL   r   r   )	rC   rD   rg   ri   rh   rj   r<   r   staged_probas	            r>   test_staged_predict_probar     s    $t!DDDDAq#w$3$WGsttWagFF
$"
5
5
5C	~	&	& H H
C,,V44BJGGGGH H H H H H H H H H H H H H H GGGW $$V,, , ,|v|+++++s{{6**F333 0088 * *|A,"4Q"77777L&q))))))c//77FFFFFs   +4B++B/2B/	Estimatorc                     t           j                            |          }|                    d          }d|d d df         z                      t
                    dz   } |             }|                    ||           dD ]}t          |d|z   d           }|t          j	        d	          5  t           ||                    }d d d            n# 1 swxY w Y   d|d         d d <   t          j        |d         dk              sJ d S )
N)r'   r#   )sizer%   r   r!   )rL   r   r   staged_T)record)rR   randomRandomStateuniformastyper   r7   getattrwarningscatch_warningslistr   )	r   rV   rngrC   rD   	estimatorfuncstaged_funcstaged_results	            r>   test_staged_functions_defensiver     s`    )

 2
3
3C!!A	
Qqqq!tWS!!A%A	IMM!QA - -iT)94@@$D111 	1 	1 Q00M	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1avmA&!+,,,,,,- -s   0CC	C	c                     t          dd          } |                     t          t                     t	          |                     t                    t                     dt          | j	                  k    sJ 	 dd l
}n# t          $ r dd l}Y nw xY w|                    | |j                  }d } |                    |          } t	          |                     t                    t                     dt          | j	                  k    sJ d S )Nr$   r!   r   r   )protocol)r
   r7   rC   rD   r   rL   rM   rN   rO   rP   cPickleImportErrorpickledumpsHIGHEST_PROTOCOLloads)r<   r   serialized_clfs      r>   test_serializationr     s   
$#A
F
F
FCGGAqMMMs{{1~~{333#co&&&&&&         \\#0G\HHN
C
,,~
&
&Cs{{1~~{333#co&&&&&&&&s   :A? ?BBc            	         t          dd          } t          j        t                    5  |                     t
          t          j        t          t
                                         d d d            n# 1 swxY w Y   t          dd          } |                     t
          t          j        t          t
                                         | 
                    t                              d          g           t          t          j        dt          j                  | 
                    t                              d          g                     d S )Nr$   r!   r   r"   )r!   r   )r
   r4   r5   r6   r7   rC   rR   r|   rO   r   rL   r   randr   r   r<   s    r>   test_degenerate_targetsr     s0   
$#A
F
F
FC 
z	"	" $ $273q66??###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $1
E
E
ECGGArws1vvKK!rwt2:666SXXa[[M8R8RSSSSSs   A A77A;>A;c                 \   t          dddd|           }|                    t          t                     |                    t                    }t          ddd|           }|                    t          t                     |                    t                    }t          ||           d S )Nr$   quantiler%   rv   )rI   r1   r^   alphar-   rs   )rI   r1   r^   r-   )r   r7   r~   r}   rL   r   )rV   clf_quantile
y_quantileclf_aey_aes        r>   test_quantile_lossr    s    ,'  L UE"""%%e,,J&'	  F JJue>>%  DJ%%%%%rq   c            	      z   t          dd          } t          t          t          t                              }|                     t          |           t          |                     t                    t          t          t          t                                         dt          | j                  k    sJ d S )Nr$   r!   r   )r
   r   mapstrrD   r7   rC   r   rL   rM   rN   rO   rP   )r<   symbol_ys     r>   test_symbol_labelsr
    s    
$#A
F
F
FCCQKK  HGGAxs{{1~~tC[,A,A'B'BCCC#co&&&&&&&&rq   c                  r   t          dd          } t          j        t          t          j                  }|                     t          |           t          |                     t                    t          j        t          t          j                             dt          | j                  k    sJ d S Nr$   r!   r   r   )r
   rR   asarrayrD   float32r7   rC   r   rL   rM   rN   rO   rP   )r<   float_ys     r>   test_float_class_labelsr    s    
$#A
F
F
FCj"*---GGGAws{{1~~rz+RZ'P'P'PQQQ#co&&&&&&&&rq   c                     t          dd          } t          j        t          t          j                  }|d d t          j        f         }d}t          j        t          |          5  | 	                    t          |           d d d            n# 1 swxY w Y   t          |                     t                    t                     dt          | j                  k    sJ 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().r2   )r
   rR   r  rD   int32newaxisr4   warnsr   r7   rC   r   rL   rM   rN   rO   rP   )r<   y_warn_msgs      r>   test_shape_yr  '  s   
$#A
F
F
FC	ARX	&	&	&B	AAArzM	B	! 
 
+8	<	<	<  2              s{{1~~{333#co&&&&&&&&s   *BBBc                     t          j        t                    } t          dd          }|                    | t
                     t          |                    t                    t                     dt          |j                  k    sJ t          j        t                    } t          dd          }|                    | t
                     t          |                    t                    t                     dt          |j                  k    sJ t          j        t
          t           j                  }t          j        |          }t          dd          }|                    t          |           t          |                    t                    t                     dt          |j                  k    sJ t          j        t
          t           j                  }t          j        |          }t          dd          }|                    t          |           t          |                    t                    t                     dt          |j                  k    sJ d S r  )rR   r   rC   r
   r7   rD   r   rL   rM   rN   rO   rP   ascontiguousarrayr  r  )X_r<   r  s      r>   test_mem_layoutr  <  s   		1		B
$#A
F
F
FCGGBNNNs{{1~~{333#co&&&&&&		a	 	 B
$#A
F
F
FCGGBNNNs{{1~~{333#co&&&&&&	ARX	&	&	&B		b	!	!B
$#A
F
F
FCGGArNNNs{{1~~{333#co&&&&&&	ARX	&	&	&B		2		B
$#A
F
F
FCGGArNNNs{{1~~{333#co&&&&&&&&rq   GradientBoostingEstimatorc                      | ddd          }|                     t          t                     |j        j        d         dk    sJ t          |j        d d         t          j        g d          d	           d S )
Nr$   r!   rv   rI   r-   ru   r   r   )gRQ?g333333?gQ?g)\(g)\(?r"   )decimal)r7   rC   rD   oob_improvement_rU   r   rR   array)r  r   s     r>   test_oob_improvementr"  Y  s     *)qC  I MM!Q%+A.#5555"2A2&
00011     rq   c                    t          j        dd          \  }} | ddd          }|                    ||           |j        j        d         dk    sJ |j        d         t          j        |j                  k    sJ  | dddd	          }|                    ||           |j        j        d         dk     sJ |j        d         t          j        |j                  k    sJ d S )
Nr$   r!   r\   rv   r  r   r    r   )rI   r-   ru   n_iter_no_change)r   rd   r7   oob_scores_rU   r4   approx
oob_score_)r  rC   rD   r   s       r>   test_oob_scoresr(  i  s    $sCCCDAq))qC  I MM!Q &q)S0000 $i6J(K(KKKKK))	  I MM!Q &q)C//// $i6J(K(KKKKKKKrq   z(GradientBoostingEstimator, oob_attributer   r%  r'  c                     t          j        dd          \  }} | ddd          }|                    ||           t          j        t
                    5  |j         ddd           dS # 1 swxY w Y   dS )zZ
    Check that we raise an AttributeError when the OOB statistics were not computed.
    r$   r!   r\   r]   r  N)r   rd   r7   r4   r5   AttributeErroroob_attribute)r  r+  rC   rD   r   s        r>   test_oob_attributes_errorr,    s     $sCCCDAq))  I
 MM!Q	~	&	&                                       s   A,,A03A0c                  D   t          dddd          } |                     t          j        t          j                   |                     t          j        t          j                  }|dk    sJ | j        j        d         | j        k    sJ | j	        j        d         | j        k    sJ | j	        d         t          j        | j                  k    sJ t          ddddd	
          } |                     t          j        t          j                   |                     t          j        t          j                  }| j        j        d         | j        k     sJ | j	        j        d         | j        k     sJ | j	        d         t          j        | j                  k    sJ d S )Nr$   rG   r!   rv   r   r   r   r    r   )rI   r1   r-   ru   r$  )r
   r7   r8   r9   r:   re   r   rU   rI   r%  r4   r&  r'  )r   re   s     r>   test_oob_multilcass_irisr.    s   *zS  I MM$)T[)))OODIt{33E3;;;;%+A.)2HHHHH &q)Y-CCCCC $i6J(K(KKKKK*  I MM$)T[)))OODIt{33E%+A.1GGGGG &q)I,BBBBB $i6J(K(KKKKKKKrq   c                     dd l } ddlm} | j        } |            | _        t	          dddd          }|                    t          t                     | j        }|| _        |                    d           |	                                
                                }d                    dgd	gd
z  z             dz  }||k    sJ t          d |                                D                       }d|k    sJ d S )Nr   StringIOr$   r!   皙?)rI   r-   verboseru    %10s%16sr#   )Iter
Train LosszOOB ImproveRemaining Timec              3      K   | ]}d V  dS r!   Nrc   r   ls     r>   	<genexpr>z&test_verbose_output.<locals>.<genexpr>  "      88!888888rq      sysior1  stdoutr
   r7   rC   rD   seekreadlinerstripjoinsum	readlinesrB  r1  
old_stdoutr<   verbose_outputheadertrue_headern_liness           r>   test_verbose_outputrQ    s   JJJJCJ
$q!s  C GGAqMMMZNCJ $$&&--//F((F8vhl233 7 K &    88^557788888GWrq   c                     dd l } ddlm} | j        } |            | _        t	          ddd          }|                    t          t                     | j        }|| _        |                    d           |	                                
                                }d                    dgd	gdz  z             d
z  }||k    sJ t          d |                                D                       }d|k    sJ d S )Nr   r0  r$   r!   r"   )rI   r-   r3  r4  r5  r6  )r7  r8  r9  c              3      K   | ]}d V  dS r;  rc   r<  s     r>   r>  z+test_more_verbose_output.<locals>.<genexpr>  r?  rq   rA  rK  s           r>   test_more_verbose_outputrT    s   JJJJCJ
$#Aq
Q
Q
QCGGAqMMMZNCJ $$&&--//F((F8vhl233 7 K
 &    88^557788888G'>>>>>>rq   Clsc                 |   t          j        d|          \  }} | dd|          }|                    ||            | ddd|          }|                    ||           |                    d           |                    ||           | t          u r8t          |                    |          |                    |                     d S t          |                    |          |                    |                     t          |                    |          |                    |                     d S )	Nr$   r\   ra   r!   rI   r^   r-   TrI   r^   
warm_startr-   r   )	r   rd   r7   
set_paramsr   r   rL   r   r   rU  rV   rC   rD   estest_wss         r>   test_warm_startr^    s9    $sASTTTDAq
#3!:L
M
M
MCGGAqMMMSA$EW  F JJq!
3'''
JJq!
'''q))3;;q>>::::: 	6>>!,,ckk!nn===,,Q//1B1B11E1EFFFFFrq   c                    t          j        d|          \  }} | dd|          }|                    ||            | ddd|          }|                    ||           |                    d           |                    ||           t	          |                    |          |                    |                     d S )	Nr$   r\   i,  r!   rW  TrX  r   )r   rd   r7   rZ  r   rL   r[  s         r>   test_warm_start_n_estimatorsr`    s     $sASTTTDAq
#3!:L
M
M
MCGGAqMMMSA$EW  F JJq!
3'''
JJq!FNN1%%s{{1~~66666rq   c                 f   t          j        dd          \  }} | ddd          }|                    ||           |                    dd           |                    ||           |j        d	         j        dk    sJ t          dd
          D ]}|j        | df         j        dk    sJ d S )Nr$   r!   r\   TrI   r^   rY  n   r"   rI   r^   r   r      r   )r   rd   r7   rZ  rP   r^   range)rU  rC   rD   r\  is        r>   test_warm_start_max_depthri    s     $sCCCDAq
#3!
=
=
=CGGAqMMMNNqN111GGAqMMM ?4 *a////1b\\ 5 5r1u%/1444445 5rq   c                    t          j        dd          \  }} | dd          }|                    ||            | ddd          }|                    ||           |                    d           |                    ||           t	          |                    |          |                    |                     d S )	Nr$   r!   r\   rd  Trb  F)rY  )r   rd   r7   rZ  r   rL   )rU  rC   rD   r\  est_2s        r>   test_warm_start_clearrl  +  s     $sCCCDAq
#3!
,
,
,CGGAqMMMCSA$???E	IIaOOO	&&&	IIaOOOemmA..A?????rq   r   c                    t          j        dd          \  }}d} | |dddd          }|                    ||           |j        |j        }}t          |          |k    sJ |d         t          j        |          k    sJ d}|                    |	                              ||           t          |j                  |k    sJ t          |j        d
|         |           |                    |d                              ||           |j        |usJ |j        |usJ t          |j        |           |j        t          j        |          k    sJ |d         t          j        |          k    sJ d
S )zZ
    Check that the states of the OOB scores are cleared when used with `warm_start`.
    r$   r!   r\   rv   T)rI   r^   ru   rY  r-   r    ra   r   NFrI   rY  )
r   rd   r7   r%  r'  rO   r4   r&  rZ  r   )r   rC   rD   rI   r   
oob_scores	oob_scoren_more_estimatorss           r>    test_warm_start_state_oob_scoresrr  :  s   
 $sCCCDAqL  !  I MM!Q%193G	Jz??l****b>V]9555555&788<<QBBBy$%%):::::I)-<-8*EEEluEEII!QOOO 
2222y0000I):6666=#;#;;;;;b>V]955555555rq   c                 <   t          j        dd          \  }} | ddd          }|                    ||           |                    d           t	          j        t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr$   r!   r\   Trb  c   r   )r   rd   r7   rZ  r4   r5   r6   rU  rC   rD   r\  s       r>   $test_warm_start_smaller_n_estimatorsrv  Z  s     $sCCCDAq
#3!
=
=
=CGGAqMMMNNN###	z	"	"  1                 s   -BBBc                 l   t          j        dd          \  }} | dd          }|                    ||           t          |          }|                    |j        d           |                    ||           t          |                    |          |                    |                     d S )Nr$   r!   r\   rd  Trn  )r   rd   r7   r   rZ  rI   r   rL   )rU  rC   rD   r\  est2s        r>   "test_warm_start_equal_n_estimatorsry  e  s     $sCCCDAq
#3!
,
,
,CGGAqMMM::DOO!1dOCCCHHQNNNdll1oos{{1~~>>>>>rq   c                    t          j        dd          \  }} | ddd          }|                    ||           |                    dd           |                    ||           t	          |j        d d         t          j        d                     t	          |j        d d         t          j        d                     |j        d	d          d
k    	                                sJ |j        d	d          d
k    	                                sJ |j        d         t          j        |j                  k    sJ d S )Nr$   r!   r\   Trb  rc  rv   )rI   ru   rJ   r    )r   rd   r7   rZ  r   r   rR   r   r%  r   r4   r&  r'  ru  s       r>   test_warm_start_oob_switchr|  s  s/    $sCCCDAq
#3!
=
=
=CGGAqMMMNNsN333GGAqMMMs+DSD128C==AAAstt,bhsmm<<<  &#-2244444OCDD!S(--/////?2&-"?"???????rq   c                 v   t          j        dd          \  }} | dddd          }|                    ||            | ddddd          }|                    ||           |                    d	           |                    ||           t	          |j        d d         |j        d d                    t	          |j        d d         |j        d d                    |j        d
         t          j        |j	                  k    sJ |j        d
         t          j        |j	                  k    sJ d S )Nr$   r!   r\   ra   rv   )rI   r^   ru   r-   TrI   r^   ru   r-   rY  r   r    )
r   rd   r7   rZ  r   r   r%  r4   r&  r'  )rU  rC   rD   r\  r]  s        r>   test_warm_start_oobr    sK    $sCCCDAq
#3!s
K
K
KCGGAqMMMSA1QU  F JJq!
3'''
JJq!f5dsd;S=QRVSVRV=WXXXf0#68MNNN?2&-"?"?????b!V]63D%E%EEEEEEErq   sparse_containerc                    t          j        dd          \  }} | ddddd          }|                    ||           |                    |           |                    d           |                    ||           |                    |          } ||          } | ddddd          }|                    ||           |                    |           |                    d           |                    ||           |                    |          }t          |j        d d         |j        d d                    |j        d	         t          j	        |j
                  k    sJ t          |j        d d         |j        d d                    |j        d	         t          j	        |j
                  k    sJ t          ||           d S )
Nr$   r!   r\   rv   Tr~  ra   r   r    )r   rd   r7   rL   rZ  r   r   r%  r4   r&  r'  )	rU  r  rC   rD   	est_densey_pred_denseX_sparse
est_sparsey_pred_sparses	            r>   test_warm_start_sparser    s    $sCCCDAqA1QU  I MM!Qac***MM!Q$$Q''L""H  J NN8Qqs+++NN8Q&&q))M"4C4(**Edsd*K    $i6J(K(KKKKKi3DSD9:;QRVSVRV;WXXX!"%z7L)M)MMMMMlM:::::rq   c                    t          j        d|          \  }} | d|d          } | d|d          }|                    ||           |                    d           |                    ||           t	          j        |          }|                    ||           |                    d           |                    ||           t          |                    |          |                    |                     d S )Nr$   r\   r!   T)rI   r-   rY  rf  r   )r   rd   r7   rZ  rR   r   r   rL   )rU  rV   rC   rD   est_cest_fortran	X_fortrans          r>   test_warm_start_fortranr    s    $sASTTTDAqCQ-?DQQQE#13ERVWWWK	IIaOOO	"%%%	IIaOOO!!$$IOOIq!!!+++OOIq!!!EMM!$$k&9&9!&<&<=====rq   c                     | dk    rdS dS )z#Returns True on the 10th iteration.	   TFrc   )rh  r\  localss      r>   early_stopping_monitorr    s    Avvturq   c                 T   t          j        dd          \  }} | dddd          }|                    ||t                     |j        dk    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |j	        j        d         d	k    sJ |j	        d
         t          j        |j                  k    sJ |                    d           |                    ||           |j        dk    sJ |j        j        d         dk    sJ |j        j        d         dk    sJ |j        j        d         dk    sJ |j	        j        d         dk    sJ |j	        d
         t          j        |j                  k    sJ  | ddddd          }|                    ||t                     |j        dk    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |j	        j        d         d	k    sJ |j	        d
         t          j        |j                  k    sJ |                    dd           |                    ||           |j        dk    sJ |j        j        d         dk    sJ |j        j        d         dk    sJ |j        j        d         dk    sJ |j	        j        d         dk    sJ |j	        d
         t          j        |j                  k    sJ d S )Nr$   r!   r\   r   rv   )rI   r^   r-   ru   )monitorr   r'   r    rx   r   T)rI   r^   r-   ru   rY  Frn  )r   rd   r7   r  rI   rP   rU   rQ   r   r%  r4   r&  r'  rZ  ru  s       r>   test_monitor_early_stoppingr    sy    $sCCCDAq
#2c
J
J
JCGGAq0G111r!!!!? #r))))!!$****%a(B....? #r))))?2&-"?"????? NNN###GGAqMMMr!!!!? #r))))!!$****%a(B....? #r))))?2&-"?"?????
#11PT  C GGAq0G111r!!!!? #r))))!!$****%a(B....? #r))))?2&-"?"????? NNuN555GGAqMMMr!!!!!!$****? #r))))%a(B....? #r))))?2&-"?"???????rq   c                  2   ddl m}  t          j        dd          \  }}d}t	          dd d|dz             }|                    ||           |j        d	         j        }|j        |k    sJ |j	        |j	        | k             j
        d         |dz   k    sJ d S )
Nr   	TREE_LEAFr$   r!   r\   r%   r   rI   r^   r-   rb   re  )sklearn.tree._treer  r   rd   r
   r7   rP   tree_r^   children_leftrU   )r  rC   rD   kr\  trees         r>   test_complete_classificationr    s    ,,,,,,$sCCCDAq	A
$4aA  C GGAqMMM?4 &D>Qd0I=>DQG1q5PPPPPPrq   c                      ddl m}  d}t          dd d|dz             }|                    t          t
                     |j        d         j        }|j        |j        | k             j	        d         |dz   k    sJ d S )Nr   r  r%   r   r!   r  )r    r   )
r  r  r   r7   r~   r}   rP   r  r  rU   )r  r  r\  r  s       r>   test_complete_regressionr    s    ,,,,,,	A
#4aA  C GGE5?5!'Dd0I=>DQG1q5PPPPPPrq   c                    t          d                              t          t                    }t	          |                    t                    t                    }t          dd| dd          }|                    t          t                     |                    t                    }t	          t          |          }||k     sJ d S )Nmean)strategyr   r!   zerorv   )rI   r^   r-   rB   r_   )r	   r7   r~   r}   r   rL   r   )rV   baselinemse_baseliner\  r   mse_gbdts         r>   test_zero_estimator_regr  ,  s     v...225%@@H%h&6&6u&=&=uEEL
#'  C GGE5[[F!%00Hl""""""rq   c                    t           j        }t          j        t           j                  }t          dd| d          }|                    ||           |                    ||          dk    sJ |dk    }d||<   d|| <   t          dd| d          }|                    ||           |                    ||          dk    sJ d S )Nr   r!   r  )rI   r^   r-   rB   gQ?r   )r8   r9   rR   r!  r:   r
   r7   re   )rV   rC   rD   r\  masks        r>   test_zero_estimator_clfr  ?  s    	A
A
$13EF  C GGAqMMM99Q??T!!!! 6DAdGAteH
$13EF  C GGAqMMM99Q??T!!!!!!rq   GBEstimatorc                 :   t          j        dd          \  }}d} | d|                              ||          }|j        d         j        }|j        dk    sJ  | d                              ||          }|j        d         j        }|j        dk    sJ d S )Nr$   r!   r\   r%   )r^   rb   re  )r^   )r   rd   r7   rP   r  r^   )r  rC   rD   r  r\  r  s         r>   test_max_leaf_nodes_max_depthr  V  s     $sCCCDAq	A
+!
4
4
4
8
8A
>
>C?4 &D>Q
+
"
"
"
&
&q!
,
,C?4 &D>Qrq   c                     t          j        dd          \  }} | d          }|                    ||           |j        j        D ]}|j        dk    sJ d S )Nr$   r!   r\   r   )min_impurity_decrease)r   rd   r7   rP   flatr  )r  rC   rD   r\  r  s        r>   test_min_impurity_decreaser  f  su    $sCCCDAq
+C
0
0
0CGGAqMMM$ 1 1 )S000001 1rq   c                      t          dd          } |                     ddgddggddg           | j        j        d         dk    sJ |                     ddgddggddg           | j        j        d         dk    sJ d S )Nr'   Trn  r   r!   r"   r#   )r
   r7   rP   rU   r   s    r>   %test_warm_start_wo_nestimators_changer  r  s     %"
F
F
FCGGaVaVq!f%%%? #r))))GGaVaVq!f%%%? #r))))))rq   )r1   value))rr   rv   )rs   rJ   )rt   rv   )r   rv   c                     ddgddgddgddgg}g d}g d}t          dd|           }|                    |||           |                    ddgg          d         |k    sJ d S )	Nr!   r   r   r   r!   r   r   r   r!   r!   r]   r"   )r_   rI   r1   rz   )r   r7   rL   )r1   r  rC   rD   r{   gbs         r>   *test_non_uniform_weights_toy_edge_case_regr  |  s     Q!Q!Q!Q(AA LLM	"14	P	P	PBFF1a}F---::1vh"e++++++rq   c                      ddgddgddgddgg} g d}g d}dD ]R}t          d|          }|                    | ||           t          |                    ddgg          dg           Sd S )	Nr!   r   r  r  rF   r   )rI   r1   rz   )r
   r7   r   rL   )rC   rD   r{   r1   r  s        r>   *test_non_uniform_weights_toy_edge_case_clfr    s    
Q!Q!Q!Q(AA LLM+ 6 6'QTBBB
q!=1112::1vh//!55556 6rq   EstimatorClassc                 R   t          j        dddd          \  }}|d d df         } ||          } | dddd	                              ||          } | dddd	                              ||          }t          |                    |          |                    |                     t          |                    |          |                    |                     t          |j        |j                   t          |                    |          |                    |                     t          |                    |          |                    |                     t          | t                    r$t          |	                    |          |	                    |                     t          |
                    |          |
                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                    D ]\  }}t          ||           d S d S )
Nr   r`   r!   r   )r-   r)   r*   	n_classesr'   r"   gHz>)rI   r-   r^   r  )r   make_multilabel_classificationr7   r   rT   rL   r   
issubclassr
   r   predict_log_probar   zipstaged_decision_function)	r  r  rD   rC   r  densesparse
res_sparseress	            r>   test_sparse_inputr    s    2"b  DAq 	
!!!Q$A""HNa1D  	c!Qii 
 ^a1D  	c(A  fll1oou{{1~~>>>fnnQ//q1A1ABBBf95;UVVVfnnX66a8H8HIIIemmH55v~~a7H7HIII."<== 7!&"6"6q"9"95;N;Nq;Q;QRRR!$$Q'')@)@)C)C	
 	
 	
 	"$$X..0H0H0K0K	
 	
 	
 	"##H--v/G/G/J/J	
 	
 	
  #++H55++A.. 
  
 	7 	7OJ &j#6666!7 7	7 	7rq   c                    t          dd          \  }}d} | |ddddd          } | |ddddd	          }t          ||d
          \  }}}}	|                    ||           |                    ||           |j        |j        cxk     r|k     sn J |                    ||	          dk    sJ |                    ||	          dk    sJ d S )N  r   r\   r'   r   r#   *   )rI   r$  r_   r^   r-   tolMbP?r   gffffff?)r   r   r7   n_estimators_re   )
r  rC   rD   rI   gb_large_tolgb_small_tolrg   rh   ri   rj   s
             r>   %test_gradient_boosting_early_stoppingr    s1    A>>>DAqL,,!  L -,!  L (812'N'N'N$GVWfWg&&&Wg&&&%(BQQQQ\QQQQQQff--3333ff--333333rq   c                     t          dd          \  } }t          dddd          }|                    | |           t          d	ddd          }|                    | |           |j        dk    sJ |j        d	k    sJ d S )
Nr  r   r\   r`   r   r#   r  )rI   r_   r^   r-   rx   )r   r
   r7   r   r  )rC   rD   gbcgbrs       r>   -test_gradient_boosting_without_early_stoppingr    s     A>>>DAq
$sab  C GGAqMMM
#sab  C GGAqMMM """"""""""rq   c                  `   t          dd          \  } }t          dddddd	          }t          |                              d
          }t          |                              d          }t	          dddddd          }t          |                              d
          }t          |                              d          }t          | |d          \  }}	}
}|                    ||
           |                    ||
           |j        |j        k    sJ |                    ||
           |                    ||
           |j        |j        k    sJ |                    ||
           |                    ||
           |j        |j        k     sJ |j        |j        k     sJ d S )Nr  r   r\   r$   r'   r   r#   r  )rI   r$  validation_fractionr_   r^   r-   r   )r  r   r$  )rI   r$  r_   r^   r  r-   r   )r   r
   r   rZ  r   r   r7   r  )rC   rD   r  gbc2gbc3r  gbr2gbr3rg   rh   ri   rj   s               r>   *test_gradient_boosting_validation_fractionr    s   A>>>DAq
$  C ::  S 99D::  " 55D
#  C ::  S 99D::  " 55D'712'N'N'N$GVWfGGGWHHWg 22222GGGWHHWg 22222 	HHWgHHWgt11111t1111111rq   c                      ddgddgddgddgg} g d}t          d          }t          j        t          d	          5  |                    | |           d d d            d S # 1 swxY w Y   d S )
Nr!   r"   r#   r%   r   )r   r   r   r!   r  z0The least populated class in y has only 1 memberr2   r
   r4   r5   r6   r7   )rC   rD   r  s      r>   test_early_stopping_stratifiedr  -  s    
Q!Q!Q!Q(AA
$a
8
8
8C	L
 
 
   	1                 s   A""A&)A&c                  $    t          dd          S )Nr#   r!   )r  n_clusters_per_class)r   rc   rq   r>   _make_multiclassr  9  s    CCCCrq   z!gb, dataset_maker, init_estimator)zbinary classificationzmulticlass classification
regression)idsc                     |            \  }}t           j                            |                              d          } |            } | |                              |||           t           |                      } | |                              ||           t          j        t          d          5   | |                              |||           d d d            d S # 1 swxY w Y   d S )Nr$   rA   rz   z*estimator.*does not support sample weightsr2   )	rR   r   r   r   r7   r   r4   r5   r6   )r  dataset_makerinit_estimatorrV   rC   rD   r{   init_ests           r>    test_gradient_boosting_with_initr  =  s^   " =??DAqI))*<==BB3GGM ~HBH!Qm<<< %^^%5%566HBH!Q	z)U	V	V	V A A
a-@@@A A A A A A A A A A A A A A A A A As   >#C..C25C2c            	         t          d          \  } }t          t                                }t          |          }|                    | |           t          j        t          d          5  |                    | |t          j	        | j
        d                              d d d            n# 1 swxY w Y   d}d| d	}t          j        t          t          j        |                    5  t          d
|          }t          |          }|                    | |t          j	        | j
        d                              d d d            d S # 1 swxY w Y   d S )Nr   r   rA   z>The initial estimator Pipeline does not support sample weightsr2   rz   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   r7   r4   r5   r6   rR   r|   rU   r   reescaper   )rC   rD   rB   r  
invalid_nur   s         r>   )test_gradient_boosting_with_init_pipeliner  \  s    ***DAq)++,,D	"	-	-	-BFF1aLLL	N
 
 
 8 8 	q!27171:#6#6777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 J	8",	8 	8 	8  
,BIg4F4F	G	G	G 8 86j111&D111
q!27171:#6#6777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s%   06B22B69B62AEEEc                     dggdz  } ddgdgdz  z   }t          ddd          }t          j        t          d	          5  |                    | |           d d d            n# 1 swxY w Y   t          ddd
          }d S )Nr!   r'   r   r&   r   r2  )r$  r-   r  z0The training data after the early stopping splitr2   g?r  )rC   rD   r  s      r>   test_early_stopping_n_classesr  z  s     
A	
A!qA	#
 
 
B 
L
 
 
   	q!               
$
 
 
BBBs    A##A'*A'c                      t          j        d          } t          j        d          }t                                          | |          }t          |j        t          j        dt           j                             d S )N)r'   r'   )r'   r'   r   )rR   r   r|   r   r7   r   r   r   )rC   rD   r  s      r>   'test_gbr_degenerate_feature_importancesr    sc    
A
A
#
%
%
)
)!Q
/
/Cs/"BJ1O1O1OPPPPPrq   c                     d} d}t          j        t          j        |          |           }t          j        ||dz            }t          j        | | dz            }t           j        ||f         }t           j                            d          }||                    d|j                  z   }t          d          
                    ||          }t          d	          
                    ||          }t                      
                    ||          }	|                    |          }
t          j        |                    |          |
k              sJ t          j        |
|	                    |          k              sJ d
S )z9Check that huber lies between absolute and squared error.r$   r'   r"   r  r!   )r   r   rs   r0   rt   N)rR   tilearangeminimumc_r   r   r/   rU   r   r7   rL   r   )n_repr)   rD   x1x2rC   r   gbt_absolute_error	gbt_hubergbt_squared_errorgbt_huber_predictionss              r>   test_huber_vs_mean_and_medianr    sd   EI
	)$$e,,A	Ay1}	%	%B	QB
Q	'	'B
b"fA
)


#
#C	COO!!'O222A28HIIIMMaQRSS)w777;;AqAAI133771==%--a006$,,Q//3HHIIIII6'+<+D+DQ+G+GGHHHHHHHrq   c                     t          j                    5  t          j        d           t          t	          j        d          d          dk    sJ t          t	          j        d          t	          j        d                    dk    sJ 	 ddd           n# 1 swxY w Y   t          j        t          d          5  t          t	          j        d          d           ddd           dS # 1 swxY w Y   dS )	z0Test that _safe_divide handles division by zero.errorgu <7~r   rJ   Noverflowr2   g|=)	r   r   simplefilterr   rR   r   r4   r  RuntimeWarningrc   rq   r>   test_safe_divider	    sp   		 	"	" C Cg&&&BJu--q11Q6666BJsOORZ__==BBBBBC C C C C C C C C C C C C C C 
nJ	7	7	7 / /RZ&&.../ / / / / / / / / / / / / / / / / /s$   A7BBB>#C..C25C2c                  N   d} t          j        |           }t          j        || dz            }t          j        | |  dz            }t           j        ||f         }t	          dd                              ||          }t          j        g d          }t          |                    |          |d           t          j        g d	          }t          |j	        d
d         |d           t          j
        ddg| dz            }t	          dd                              |||          }t          j        g d          }t          |                    |          |dd           t          j        g d          }t          |j	        d
d         |dd           dS )zTest squared error GBT backward compat on a simple dataset.

    The results to compare against are taken from scikit-learn v1.2.0.
    r'   r"   rr   r$   r1   rI   )
gѵO@"?g!m ?g_$  @gT )= @g6 @gN@glU@gu@g̀#@g'aK4!@:0yE>rtol)
geԩ(j>g􄾳<e>gkx?a>gzU:\>gWwV>gwR>gM>g0~JYH>gh1`C>gñح
@>r{  Nr!   rz   )
gh#?gq)u ?g	1~(  @g_Q @gi @gŪ@g3%a@g[A"@gd*@ggh9!@gư>gh㈵>)r  atol)
gwF$f>g۪5a>g:Z]>glF2UW>g!S>gO>g1&I>g͗KcD>gU}އ@>g:>r  gdy=)rR   r  r  r  r   r7   r!  r   rL   rQ   r  )	r)   rD   r  r  rC   gbtpred_resulttrain_scoresample_weightss	            r>   (test_squared_error_exact_backward_compatr    s   
 I
	)A	Ay1}	%	%B	QB
Q	'	'B
b"fA
#s
K
K
K
O
OPQST
U
UC(	
 	
 	
 K CKKNNKd;;;;(	
 	
 	
 K C$STT*KdCCCC WaWi1n55N
#s
K
K
K
O
O	1N P  C (	
 	
 	
 K CKKNNKdFFFF(	
 	
 	
 K C$STT*KdOOOOOOrq   c                  (   d} t          j        |           }t          j        || dz            }t          j        | |  dz            }t           j        ||f         }t	          ddd                              ||          }t          |j        j        j	        d           t          j
        g d          }t          |                    |          |d	
           t          j
        g d          }t          |j        dd         |d	
           dS )zTest huber GBT backward compat on a simple dataset.

    The results to compare against are taken from scikit-learn v1.2.0.
    r'   r"   rt   r$   r2  )r1   rI   r   g  2%?)
gzݮj#?g7h?g31e @gZZ@gk @ga8t @gsu@g%e 	@g>T  @gx!@r  r  )
gi>gAɤ{j>g#$%t>gD9u>gߝ>g:"L(>gݏ|>gzԇx>gu}v>ggݱ@s>r{  N)rR   r  r  r  r   r7   r   r   clossdeltar!  rL   rQ   r)   rD   r  r  rC   r  r  r  s           r>    test_huber_exact_backward_compatr    s    I
	)A	Ay1}	%	%B	QB
Q	'	'B
b"fA
#s#
N
N
N
R
RSTVW
X
XCCIO)+@AAA(	
 	
 	
 K CKKNNKd;;;;(	
 	
 	
 K C$STT*KdCCCCCCrq   c                  &   d} t          j        |           dz  }t          j        || dz            }t          j        | |  dz            }t           j        ||f         }t	          dd                              ||          }t          j        ddgddgddgddgddgddgddgddgddgddgg
          }t          |                    |          |d	           t          j        g d
          }t          |j	        dd         |d	           dS )zTest binary log_loss GBT backward compat on a simple dataset.

    The results to compare against are taken from scikit-learn v1.2.0.
    r'   r"   rG   r$   r  g
t?gr3>r  r  )
gu>?g5Ү^?g?g	i?gN?gv^q!?g2C6 ?gȍl?g1oEa	?g5C?r{  N
rR   r  r  r  r
   r7   r!  r   r   rQ   r  s           r>   )test_binomial_error_exact_backward_compatr  <  sP   
 I
	)q A	Ay1}	%	%B	QB
Q	'	'B
b"fA
$*3
G
G
G
K
KAq
Q
QC(^,^,^,^,^,^,^,^,^,^,	
 K C%%a((+DAAAA(	
 	
 	
 K C$STT*KdCCCCCCrq   c                  &   d} t          j        |           dz  }t          j        || dz            }t          j        | |  dz            }t           j        ||f         }t	          dd                              ||          }t          j        g dg dg d	g d
g dg dg d	g d
g dg dg
          }t          |                    |          |d           t          j        g d          }t          |j	        dd         |d           dS )zTest multiclass log_loss GBT backward compat on a simple dataset.

    The results to compare against are taken from scikit-learn v1.2.0.
    r'   r%   r"   rG   r$   r  )k*om?grLD~>l-au>h,au>)g?~>r  r  r   )0Q(>r!  WQ?g?m}w>)r!  r!  gX
}w>r"  r  r  )
g]R4>g{a\>g5|)>guB=>g@3Bݤ>g bC>gB2h>g@,y>g"y>g=>r{  Nr  r  s           r>   ,test_multinomial_error_exact_backward_compatr#  i  sZ   
 I
	)q A	Ay1}	%	%B	QB
Q	'	'B
b"fA
$*3
G
G
G
K
KAq
Q
QC(LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL	
 K C%%a((+DAAAA(	
 	
 	
 K C$STT*KdCCCCCCrq   c                    t          j        dd          \  }}ddddd| dd	}t          di |}t          j                    5  t          j        d
           |                    ||           ddd           dS # 1 swxY w Y   dS )a`  Test _update_terminal_regions denominator is not zero.

    For instance for log loss based binary classification, the line search step might
    become nan/inf as denominator = hessian = prob * (1 - prob) and prob = 0 or 1 can
    happen.
    Here, we create a situation were this happens (at least with roughly 80%) based
    on the random seed.
    r$   r   r\   r]   rv   r%   Nr"   )r_   ru   rI   rb   r^   r-   min_samples_leafr  rc   )r   rd   r
   r   r   r  r7   )rV   rC   rD   paramsr<   s        r>   test_gb_denominator_zeror'    s     $sDDDDAq * F %
.
.v
.
.C		 	"	"  g&&&1                 s   +A;;A?A?)__doc__r  r   numpyrR   r4   numpy.testingr   sklearnr   sklearn.baser   sklearn.datasetsr   r   sklearn.dummyr   r	   sklearn.ensembler
   r   sklearn.ensemble._gbr   #sklearn.ensemble._gradient_boostingr   sklearn.exceptionsr   r   sklearn.linear_modelr   sklearn.metricsr   sklearn.model_selectionr   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   sklearn.utilsr   sklearn.utils._mockingr   sklearn.utils._param_validationr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r   r   GRADIENT_BOOSTING_ESTIMATORSrC   rD   rM   rN   r~   r}   r   r   r   	load_irisr8   permutationr:   r   permr9   r?   rE   markparametrizerY   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r"  r(  r,  r.  rQ  rT  r^  r`  ri  rl  rr  rv  ry  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'  rc   rq   r>   <module>rD     s>    
			       ) ) ) ) ) )             A A A A A A A A 9 9 9 9 9 9 9 9 R R R R R R R R - - - - - - > > > > > > D D D D D D D D 1 1 1 1 1 1 . . . . . . 4 4 4 4 4 4 * * * * * * ' ' ' ' ' '       , , , , , , 8 8 8 8 8 8 A A A A A A         
 O N N N N N N N N N :<UV  	"XBx"bAq6Aq6Aq6:"X1v1vjj aq  u 	eiA x
t{'((IdO	k$( ( (   !<==& & >=&( !<==*S *S >=*SZ !MNNj11$ $ 21 ON$N j11)44) ) 54 21)$) ) )X 	"E51	#TY< 1 1 1, , ,(3 3 3 .99M M :9M E E E(!N !N !NH# # #B) ) )*G G G6 &BCC- - DC-$' ' '(T T T& & &2' ' '' ' '' ' '*' ' ': 46RSS  TS 46RSSL L TSL* .	#%78	#]3	#\2	"$67	"M2	"L1
 
   
 
 L L L@  >  8  <==G G >=G,  <==7 7 >=7   <==5 5 >=5  <==@ @ >=@ +-IJJ6 6 KJ6>  <==  >=  <==
? 
? >=
?  <==@ @ >=@$  <==F F >=F&  <==7.H !; !;  >=!;H  <==> > >=>&    <==*@ *@ >=*@ZQ Q Q"Q Q Q# # #&" " ". (DEE  FE (DEE1 1 FE1* * *    , , ,6 6 6 13LM  7.H %7 %7   %7P "<>W!X  4  4  4F# # #&(2 (2 (2V	 	 	D D D '	#%8/J	#%5G	"O^D
 	MLL   A A A,8 8 8<  ,Q Q QI I I,/ / /PP PP PPf ,D ,D ,D^*D *D *DZ*D *D *DZ    rq   