o
    ÖtBhiW  ã                   @   s(  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"d d!„ Z#d"d#„ Z$d$d%„ Z%d&d'„ Z&d(d)„ Z'd*d+„ Z(d,d-„ Z)d.d/„ Z*d0d1„ Z+d2d3„ Z,d4d5„ Z-d6d7„ Z.d8d9„ Z/d:d;„ Z0d<d=„ Z1d>d?„ Z2d@dA„ Z3dBdC„ Z4dDdE„ Z5ej6 7dFej8ej9ej:ej;g¡dGdH„ ƒZ<dIdJ„ Z=ej6 7dKej;ej:g¡dLdM„ ƒZ>dNdO„ Z?dPdQ„ Z@ej6 7dRdSdTg¡dUdV„ ƒZAdWdX„ ZBdYdZ„ ZCd[d\„ ZDej6 7d]d^d_g¡d`da„ ƒZEdS )bé    N)Úmake_regression)Úcheck_increasingÚisotonic_regressionÚIsotonicRegressionÚ_make_unique)Úcheck_array)Úassert_allcloseÚassert_array_equalÚassert_array_almost_equal)Úshuffle)Úexpitc            	      C   sh   t ƒ } g d¢}g d¢}g d¢}t|||dd\}}}| j|||d}| j|||d |¡}t||ƒ d S )N©é   é   é   é   é   é   é   ©r   é)   é3   r   r   r   é   r   )Úrandom_state©Úsample_weight)r   r   Úfit_transformÚfitÚ	transformr	   )	ÚirÚxÚyr   Úx_sÚy_sÚsample_weight_sÚy_transformedÚy_transformed_s© r'   úr/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/tests/test_isotonic.pyÚtest_permutation_invariance   s   r)   c                  C   óZ   g d¢} g d¢}t  ¡  t  dt¡ t| |ƒ}W d   ƒ n1 s"w   Y  |s+J ‚d S )N©r   r   r   )r   gš™™™™™ñ?gÍÌÌÌÌÌð?Úerror©ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   ©r    r!   Úis_increasingr'   r'   r(   Ú-test_check_increasing_small_number_of_samples)   s   
þr4   c                  C   r*   )N©r   r   r   r   r   r   )r   ç      ø?g)\Âõ(@ç{®Gáú!@r7   é2   r,   r-   r2   r'   r'   r(   Útest_check_increasing_up4   ó   
þr9   c                  C   sZ   g d¢} g d¢}t  ¡  t  dt¡ t| |ƒ}W d   ƒ n1 s"w   Y  |s+J ‚d S )Nr5   r,   r-   r2   r'   r'   r(   Ú test_check_increasing_up_extreme@   r:   r;   c                  C   óZ   g d¢} g d¢}t  ¡  t  dt¡ t| |ƒ}W d   ƒ n1 s"w   Y  |r+J ‚d S )Nr5   )r   g      ø¿g)\Âõ(Àç{®Gáú!Àr=   éÎÿÿÿr,   r-   r2   r'   r'   r(   Útest_check_increasing_downL   r:   r?   c                  C   r<   )Nr5   )r   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿr,   r-   r2   r'   r'   r(   Ú"test_check_increasing_down_extremeX   r:   rE   c                  C   sX   g d¢} g d¢}d}t jt|d t| |ƒ}W d   ƒ n1 s!w   Y  |r*J ‚d S )Nr5   )r   r@   r   rB   r   rD   Úinterval©Úmatch)ÚpytestÚwarnsr1   r   )r    r!   Úmsgr3   r'   r'   r(   Útest_check_ci_warnd   s   ÿrL   c                  C   s<  t  g d¢¡} t  g d¢¡}t|t| ƒƒ t  g d¢¡} t  g d¢¡}t|t| ƒƒ t  t| ƒ¡}tddd}| || ¡ t| || ¡ |¡| 	|| ¡ƒ t| |¡| 
|¡ƒ t j t| ƒ¡}tddd}t| 	|| | | ¡| 	|| ¡| ƒ t| || ¡| |¡| ƒ tƒ }t| 	t  t|ƒ¡| ¡t  | ¡ƒ d S )N©r   r   r   é	   é   r   é
   )r   r   r   rO   rO   rO   rP   )rP   r   r   )r   r   r   ç        ç      ð?©Úy_minÚy_max)ÚnpÚarrayr	   r   ÚarangeÚlenr   r   r   r   ÚpredictÚrandomÚpermutationÚonesÚmean)r!   Úy_r    r   Úpermr'   r'   r(   Útest_isotonic_regressionp   s"    &&ra   c                  C   ó`   g d¢} g d¢}g d¢}t ƒ }| | |¡ t| | |¡ | ¡| | |¡ƒ t|| | |¡ƒ d S )N)r   r   r   r   r   r   ©r   r   r   r   r   r   )r6   r6   r   r   r   r   ©r   r   r	   r   r   ©r    r!   Úy_truer   r'   r'   r(   Ú!test_isotonic_regression_ties_minŠ   ó    rg   c                  C   rb   )N)r   r   r   r   r   r   rc   )r   r   r   r   ç      @ri   rd   re   r'   r'   r(   Ú!test_isotonic_regression_ties_max—   rh   rj   c                  C   sT   g d¢} g d¢}g d¢}t ƒ }| | |¡ t| | ¡|dƒ t| | |¡|dƒ dS )aw  
    Test isotonic regression fit, transform  and fit_transform
    against the "secondary" ties method and "pituitary" data from R
     "isotone" package, as detailed in: J. d. Leeuw, K. Hornik, P. Mair,
     Isotone Optimization in R: Pool-Adjacent-Violators Algorithm
    (PAVA) and Active Set Methods

    Set values based on pituitary example and
     the following R command detailed in the paper above:
    > library("isotone")
    > data("pituitary")
    > res1 <- gpava(pituitary$age, pituitary$size, ties="secondary")
    > res1$x

    `isotone` version: 1.0-2, 2014-09-07
    R version: R version 3.1.1 (2014-07-10)
    )rO   rO   rO   rP   rP   rP   é   rk   rk   é   rl   )é   ç     €7@é   r   rm   é   g     €5@é   é   rn   rp   )çb„ðhã86@rs   rs   rs   rs   rs   rs   rs   rs   ç     @8@rt   r   N)r   r   r
   r   r   re   r'   r'   r(   Ú(test_isotonic_regression_ties_secondary_¤   s   ru   c                  C   sb   t  g d¢¡} t  g d¢¡}t  g d¢¡}tƒ }| | |¡ t| | ¡|ƒ t| | |¡|ƒ dS )ax  
    Non-regression test to handle issue 9432:
    https://github.com/scikit-learn/scikit-learn/issues/9432

    Compare against output in R:
    > library("isotone")
    > x <- c(0, 1, 1, 2, 3, 4)
    > y <- c(0, 0, 1, 0, 0, 1)
    > res1 <- gpava(x, y, ties="secondary")
    > res1$x

    `isotone` version: 1.1-0, 2015-07-24
    R version: R version 3.3.2 (2016-10-31)
    )r   r   r   r   r   r   )r   r   r   r   r   r   )rQ   ç      Ð?rv   rv   rv   rR   N)rV   rW   r   r   r
   r   r   re   r'   r'   r(   Ú>test_isotonic_regression_with_ties_in_differently_sized_groupsÍ   s   rw   c                  C   s`   t  g d¢¡} tdd t  t| ƒ¡| ¡}tt  |d d… j¡|d d… |dd …  dkƒ d S )N©rP   rN   rP   r   r   çffffff@r   F©Ú
increasingr@   r   r   )	rV   rW   r   r   rX   rY   r	   r]   Úshape)r!   r_   r'   r'   r(   Ú!test_isotonic_regression_reversedå   s   6r}   c                  C   sš   t  g d¢¡} t  t| ƒ¡}tdd}tjdd}t d¡ | || ¡}t	dd„ |D ƒƒs0J ‚W d   ƒ n1 s:w   Y  |d	 |d
 k }|rKJ ‚d S )Nrx   Úautorz   T©ÚrecordÚalwaysc                 S   ó   g | ]	}d t |jƒv ‘qS ©zinvalid value encountered in ©ÚstrÚmessage©Ú.0Úwarnr'   r'   r(   Ú
<listcomp>ö   ó    z<test_isotonic_regression_auto_decreasing.<locals>.<listcomp>r   r@   ©
rV   rW   rX   rY   r   r.   r/   r0   r   Úall©r!   r    r   Úwr_   r3   r'   r'   r(   Ú(test_isotonic_regression_auto_decreasingë   ó   

ür   c                  C   sš   t  g d¢¡} t  t| ƒ¡}tdd}tjdd}t d¡ | || ¡}t	dd„ |D ƒƒs0J ‚W d   ƒ n1 s:w   Y  |d	 |d
 k }|sKJ ‚d S )N)r   ry   r   r   rP   rN   rP   r~   rz   Tr   r   c                 S   r‚   rƒ   r„   r‡   r'   r'   r(   rŠ     r‹   z<test_isotonic_regression_auto_increasing.<locals>.<listcomp>r   r@   rŒ   rŽ   r'   r'   r(   Ú(test_isotonic_regression_auto_increasingý   r‘   r’   c                  C   s4  t ƒ } tj d¡}d}tjt|d |  g d¢g d¢ddg¡ W d   ƒ n1 s*w   Y  tjt|d |  g d¢dd	g¡ W d   ƒ n1 sKw   Y  d
}tjt|d |  | dd¡g d¢¡ W d   ƒ n1 spw   Y  d}tjt|d |  	| dd¡¡ W d   ƒ d S 1 s“w   Y  d S )Né*   z:Found input variables with inconsistent numbers of samplesrG   r+   )r   r   r   çš™™™™™¹?g333333ã?r   r   zX should be a 1d arrayr   rP   z0Isotonic regression input X should be a 1d array)
r   rV   r[   ÚRandomStaterI   ÚraisesÚ
ValueErrorr   Úrandnr   )r   ÚrngrK   r'   r'   r(   Útest_assert_raises_exceptions  s"   ÿÿÿ"ÿrš   c                  C   s~   t ƒ } tj d¡}d}t |¡}|jdd|fddt dt |¡ ¡  }t |¡}| j|||d}|  ||¡}t	||ƒ d S )	Nr“   éd   r>   r8   ©Úsizeg      I@r   r   )
r   rV   r[   r•   rX   ÚrandintÚlogr]   r   r	   )r   r™   Únr    r!   ÚweightsÚy_set_valueÚy_default_valuer'   r'   r(   Ú3test_isotonic_sample_weight_parameter_default_value#  s   
*
r¤   c                  C   sL   t ddd} d}t |¡}t |¡}g d¢}t |  ||¡¡}t||ƒ d S )Nr   r   rS   r   )r   r   r   r   r   r   )r   rV   rX   Úroundr   r	   )r   r    r    r!   Úy_testÚy_resultr'   r'   r(   Ú test_isotonic_min_max_boundaries3  s   

r¨   c                  C   sD   t ƒ } g d¢}g d¢}g d¢}g d¢}| j|||d}t||ƒ d S )Nr   r   )r   çfffffæ+@r©   r©   r©   r©   r   r   )r   r   r	   )r   r    r!   r   Ú
expected_yÚ
received_yr'   r'   r(   Útest_isotonic_sample_weight>  s   r¬   c                  C   sŠ   t  g d¢¡} t  t| ƒ¡}tddd}| || ¡ d}tjt|d | 	t
|ƒd t|ƒd g¡ W d   ƒ d S 1 s>w   Y  d S )NrM   r~   Úraise©r{   Úout_of_boundsz1A value in x_new is below the interpolation rangerG   rP   )rV   rW   rX   rY   r   r   rI   r–   r—   rZ   ÚminÚmax©r!   r    r   rK   r'   r'   r(   Ú"test_isotonic_regression_oob_raiseI  s    "ÿr³   c                  C   sˆ   t  g d¢¡} t  t| ƒ¡}tddd}| || ¡ | t|ƒd t|ƒd g¡}| |¡}t|ƒt|ƒks8J ‚t|ƒt|ƒksBJ ‚d S )NrM   r~   Úclipr®   rP   )	rV   rW   rX   rY   r   r   rZ   r°   r±   )r!   r    r   Úy1Úy2r'   r'   r(   Ú!test_isotonic_regression_oob_clipX  s   
r·   c                  C   sl   t  g d¢¡} t  t| ƒ¡}tddd}| || ¡ | t|ƒd t|ƒd g¡}t	t  
|¡ƒdks4J ‚d S )NrM   r~   Únanr®   rP   r   )rV   rW   rX   rY   r   r   rZ   r°   r±   ÚsumÚisnan)r!   r    r   rµ   r'   r'   r(   Ú test_isotonic_regression_oob_nanh  s   r»   c                  C   sl   t  g d¢¡} t  t| ƒ¡}tddd}d}tjt|d | || ¡ W d   ƒ d S 1 s/w   Y  d S )NrM   r~   Úxyzr®   úIThe argument ``out_of_bounds`` must be in 'nan', 'clip', 'raise'; got xyzrG   )	rV   rW   rX   rY   r   rI   r–   r—   r   r²   r'   r'   r(   Ú test_isotonic_regression_oob_badv  s   "ÿr¾   c                  C   s|   t  g d¢¡} t  t| ƒ¡}tddd}| || ¡ d|_d}tjt	|d | 
|¡ W d   ƒ d S 1 s7w   Y  d S )NrM   r~   r­   r®   r¼   r½   rG   )rV   rW   rX   rY   r   r   r¯   rI   r–   r—   r   r²   r'   r'   r(   Ú&test_isotonic_regression_oob_bad_after„  s   "ÿr¿   c                  C   sj   t  g d¢¡} t  t| ƒ¡}tddd}| || ¡ t |tj¡}t 	|¡}t j
 | |¡| |¡¡ d S )NrM   r~   r´   r®   )rV   rW   rX   rY   r   r   ÚpickleÚdumpsÚHIGHEST_PROTOCOLÚloadsÚtestingr	   rZ   )r!   r    r   Úir_serÚir2r'   r'   r(   Útest_isotonic_regression_pickle”  s   
rÇ   c                  C   sJ   g d¢} g d¢}t ddd}| | |¡ t t | | ¡¡¡}|s#J ‚d S )N)r   r   r   Tr´   r®   )r   r   rV   r   ÚisfiniterZ   )r    r!   r   Úall_predictions_finiter'   r'   r(   Ú!test_isotonic_duplicate_min_entry¡  s   rÊ   c                  C   s˜   t  g d¢¡} t| ddd}t  |dk¡sJ ‚t  |dk¡s J ‚t| dddd}t  |dk¡s1J ‚t  |dk¡s:J ‚t| ddd}t  |dk¡sJJ ‚d S )	N)gh‘í|?5ô?gJ+‡õ?gçû©ñÒMâ¿gÙÎ÷Sã¥Ó?g9´Èv¾Ÿæ¿gºI+‡Æ¿g/Ý$•ù¿g‹lçû©ñð?g¼t“Vö?gåÐ"Ûù~þ?gáz®GáÊ?gyé&1¬œ?g#Ûù~j¼´¿gÑ"Ûù~jÜ?g;ßO—n’?çTã¥›Ä Ø¿gyé&1¬ì¿rË   g¬Zd;õ¿g
×£p=
Ç?rQ   r”   rS   r   F)rT   rU   r{   )rT   r{   )rV   rW   r   r   )r    r!   r'   r'   r(   Útest_isotonic_ymin_ymax«  s   ÿrÌ   c                  C   sp   t j d¡} tƒ }d}t  dd|¡}|| j|d }| j|d}d|dd…< |j|||d	 |j|||d	 d S )
Nr“   r8   rB   r   rœ   r   r   rO   r   )rV   r[   r•   r   ÚlinspaceÚuniformr   )r™   Ú
regressionÚ	n_samplesr    r!   r   r'   r'   r(   Útest_isotonic_zero_weight_loop×  s   rÑ   c                  C   sâ   t j d¡} d}d|  |¡ d }t  |  |¡t|ƒ¡ d¡ d¡}|  |¡}d||  |¡dk < tdd	d
d}tdd	d
d}|j|||dd\}}| 	||¡ |j
|||d d|  |¡ d }	| |	¡}
| |	¡}t|
|ƒ d S )Né{   iè  g      4@rP   Úint64Úfloat64r   r”   r   r´   )rT   rU   r¯   F)r   Útrim_duplicatesr   )rV   r[   r•   ÚrandÚlessr   Úastyper   Ú_build_yÚ_build_fr   rZ   r	   )r™   rÐ   ÚX_trainÚy_trainr¡   Ú
slow_modelÚ
fast_modelÚX_train_fitÚy_train_fitÚX_testÚy_pred_slowÚy_pred_fastr'   r'   r(   Útest_fast_predictí  s$    ÿ

ÿ

rä   c                  C   s   t ƒ } t | ¡ d S )N)r   Úcopy)r   r'   r'   r(   Útest_isotonic_copy_before_fit  s   ræ   c            	      C   sÔ   g d¢} t jg d¢t jd}tƒ }t jt jt jt jfD ]L}d | t j¡|fD ]@}t j| |d}t|t jt jgddj	}t
||d}|j	|ksHJ ‚t  t| ƒ¡ |¡}|j|||d | |¡}|j	|ksfJ ‚q&qd S )N©r   r   r   r   r   )çÍÌÌÌÌÌì?rè   rè   rè   rè   ©ÚdtypeF)rê   Ú	ensure_2dr   )rV   rW   rÔ   r   Úint32rÓ   Úfloat32rØ   r   rê   r   rX   rY   r   rZ   )	r!   r¡   Úregrê   r   Úy_npÚexpected_dtypeÚresÚXr'   r'   r(   Útest_isotonic_dtype  s&   ÿþ
ôÿró   Úy_dtypec                 C   sR   t ƒ }tjg d¢| d}tjt|ƒtjd}| ||¡ | |¡j|jks'J ‚d S )Nrç   ré   )	r   rV   rW   rX   rY   rí   r   rZ   rê   )rô   rî   r!   rò   r'   r'   r(   Útest_isotonic_mismatched_dtype-  s
   rõ   c                  C   s^   g d¢} t jt jfD ]"}t j| |d}| ¡ }t  |¡}t|||ƒ\}}}t|g d¢ƒ q
d S )N)r   r   r   r   r   ré   )r   r   r   )rV   rí   rÔ   rW   rå   Ú	ones_liker   r	   )Úx_listrê   r    r!   r   r'   r'   r(   Útest_make_unique_dtype8  s   
ûrø   rê   c                 C   sl   t jg d¢| d}| ¡ }t  |¡}t|||ƒ\}}}| t jkr(t  g d¢¡}nt  ddg¡}t||ƒ d S )N)r   g¼‰Ø—²Òœ<r   ç-     ð?ré   )r   r   rù   r   r   )rV   rW   rå   rö   r   rÔ   r	   )rê   r    r!   r   Úx_outr'   r'   r(   Útest_make_unique_toleranceB  s   

rû   c                  C   sˆ   t jg d¢t jd} t jg d¢t jd}tƒ  | |¡}| g d¢¡}t|t  g d¢¡ƒ t|jt  g d¢¡ƒ t|jt  g d¢¡ƒ d S )N)r   r   rR   r   ré   )r   r   r   r   )r   g      à?r   r6   r   )r   g      è?r6   g      @r   )rQ   rR   g       @)rQ   r6   g      @)	rV   rW   rÔ   r   r   rZ   r	   ÚX_thresholds_Úy_thresholds_©rò   r!   ÚiregÚy_predr'   r'   r(   Ú#test_isotonic_make_unique_toleranceP  s   r  c                  C   sV   t  g d¢¡} t  g d¢¡}tƒ  | |¡}| t  g d¢¡¡}t  t  |¡¡s)J ‚d S )N)rQ   gj       gJ/Ò   rR   )çáz®GáÚ?r  ç)\Âõ(Ü?r  )r   g¦      gA¾ƒ    g»½×Ùß|Û=)rV   rW   r   r   rZ   r   rÈ   rþ   r'   r'   r(   Ú&test_isotonic_non_regression_inf_slope]  s
   r  r{   TFc                 C   sú   t j d¡}d}|j|d}|j|d}t| d ||¡}|j|j}}|j|jks,J ‚|jd |jd k s8J ‚t  	||¡ 
¡ sBJ ‚| ¡ | ¡ ksLJ ‚| ¡ | ¡ ksVJ ‚t
t  |¡dkƒsaJ ‚| rpt
t  |¡dkƒsnJ ‚d S t
t  |¡dkƒs{J ‚d S )Nr“   é   rœ   rz   r   )rV   r[   r•   Únormalr   r   rü   rý   r|   Úin1dr   r±   r°   Údiff)r{   r™   rÐ   rò   r!   rÿ   ÚX_thresholdsÚy_thresholdsr'   r'   r(   Útest_isotonic_thresholdsg  s   r  c                  C   sº   t  d¡} |  dd¡}t  d¡}tƒ  | |¡}tƒ  ||¡}|j|jks&J ‚|j|jks.J ‚|j|jks6J ‚|j|jks>J ‚t	|j
|j
ƒ t	|j|jƒ | | ¡}| |¡}t||ƒ d S )NrP   r@   r   )rV   rX   Úreshaper   r   ÚX_max_ÚX_min_rU   rT   r	   rü   rý   rZ   r   )rò   ÚX_2dr!   Úiso_regÚ
iso_reg_2dÚy_pred1Úy_pred2r'   r'   r(   Útest_input_shape_validation‚  s   



r  c                  C   sæ   t  d¡} t j| | f }t  d¡}d}tjt|d tƒ  ||¡ W d   ƒ n1 s,w   Y  tƒ  | |¡}tjt|d | |¡ W d   ƒ n1 sOw   Y  tjt|d | 	|¡ W d   ƒ d S 1 slw   Y  d S )NrP   z/should be a 1d array or 2d array with 1 featurerG   )
rV   rX   Úc_rI   r–   r—   r   r   rZ   r   )rò   r  r!   rK   r  r'   r'   r(   Ú)test_isotonic_2darray_more_than_1_feature˜  s   

ÿÿ"ÿr  c                  C   sb   t dddd\} }t |¡}d|d< | ¡ }t||d t||ƒ tƒ j| ||d t||ƒ dS )zÂCheck that calling fitting function of isotonic regression will not
    overwrite `sample_weight`.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20508
    rP   r   r   )rÐ   Ú
n_featuresr   r   r   N)r   rV   rö   rå   r   r   r   r   )rò   r!   Úsample_weight_originalÚsample_weight_fitr'   r'   r(   Ú6test_isotonic_regression_sample_weight_not_overwrittenª  s   

r  r|   Ú1dÚ2dc                 C   sl   t  d¡}| dkr| dd¡}t  d¡}tƒ  ||¡}| ¡ }t|t jƒs'J ‚|jt	ks.J ‚t
dg|ƒ dS )z7Check `get_feature_names_out` for `IsotonicRegression`.rP   r  r@   r   Úisotonicregression0N)rV   rX   r  r   r   Úget_feature_names_outÚ
isinstanceÚndarrayrê   Úobjectr	   )r|   rò   r!   ÚisoÚnamesr'   r'   r(   Útest_get_feature_names_out¼  s   

r$  )Fr.   ÚnumpyrV   rÀ   rå   rI   Úsklearn.datasetsr   Úsklearn.isotonicr   r   r   r   Úsklearn.utils.validationr   Úsklearn.utils._testingr   r	   r
   Úsklearn.utilsr   Úscipy.specialr   r)   r4   r9   r;   r?   rE   rL   ra   rg   rj   ru   rw   r}   r   r’   rš   r¤   r¨   r¬   r³   r·   r»   r¾   r¿   rÇ   rÊ   rÌ   rÑ   rä   ræ   ró   ÚmarkÚparametrizerì   rÓ   rí   rÔ   rõ   rø   rû   r  r  r  r  r  r  r$  r'   r'   r'   r(   Ú<module>   sp    )
,%





