U
    ¿9%e™V  ã                   @   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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	„ 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„ Z0d:d;„ Z1d<d=„ Z2d>d?„ Z3d@dA„ Z4ej5 6dBej7ej8ej9ej:g¡dCdD„ ƒZ;dEdF„ Z<ej5 6dGej:ej9g¡dHdI„ ƒZ=dJdK„ Z>dLdM„ Z?ej5 6dNdOdPg¡dQdR„ ƒZ@dSdT„ ZAdUdV„ ZBdWdX„ ZCej5 6dYdZd[g¡d\d]„ ƒZDd^d_„ ZEdS )`é    N)Úexpit)Úmake_regression)ÚIsotonicRegressionÚ_make_uniqueÚcheck_increasingÚisotonic_regression)Úshuffle)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)Úcheck_arrayc            	      C   s†   t ƒ } dddddddg}ddd	dddd
g}dddddddg}t|||dd\}}}| j|||d}| j|||d |¡}t||ƒ d S )Né   é   é   é   é   é   é   é)   é3   é   r   )Úrandom_state©Úsample_weight)r   r   Úfit_transformÚfitÚ	transformr   )	ÚirÚxÚyr   Zx_sZy_sZsample_weight_sZy_transformedZy_transformed_s© r    úZ/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/tests/test_isotonic.pyÚtest_permutation_invariance   s    r"   c               	   C   sJ   dddg} dddg}t  ¡  t  dt¡ t| |ƒ}W 5 Q R X |sFt‚d S )Nr   r   r   gš™™™™™ñ?gÍÌÌÌÌÌð?Úerror©ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   ÚAssertionError©r   r   Úis_increasingr    r    r!   Ú-test_check_increasing_small_number_of_samples(   s    


r,   c               	   C   sV   ddddddg} dddd	d	d
g}t  ¡  t  dt¡ t| |ƒ}W 5 Q R X |sRt‚d S )Nr   r   r   r   r   r   ç      ø?g)\Âõ(@g{®Gáú!@é2   r#   r$   r*   r    r    r!   Útest_check_increasing_up3   s    
r/   c               	   C   sV   ddddddg} ddddddg}t  ¡  t  dt¡ t| |ƒ}W 5 Q R X |sRt‚d S )Nr   r   r   r   r   r   r#   r$   r*   r    r    r!   Ú test_check_increasing_up_extreme?   s    
r0   c               	   C   sV   ddddddg} dddd	d	d
g}t  ¡  t  dt¡ t| |ƒ}W 5 Q R X |rRt‚d S )Nr   r   r   r   r   r   g      ø¿g)\Âõ(Àg{®Gáú!ÀéÎÿÿÿr#   r$   r*   r    r    r!   Útest_check_increasing_downK   s    
r2   c               	   C   sV   ddddddg} dddd	d
dg}t  ¡  t  dt¡ t| |ƒ}W 5 Q R X |rRt‚d S )Nr   r   r   r   r   r   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿr#   r$   r*   r    r    r!   Ú"test_check_increasing_down_extremeW   s    
r8   c               	   C   sT   ddddddg} dddddd	g}d
}t jt|d t| |ƒ}W 5 Q R X |rPt‚d S )Nr   r   r   r   r   r   r3   r5   r7   Úinterval©Úmatch)ÚpytestZwarnsr(   r   r)   )r   r   Úmsgr+   r    r    r!   Útest_check_ci_warnc   s    r>   c               	   C   sT  t  dddddddg¡} t  dddddddg¡}t|t| ƒƒ t  ddd	g¡} t  d
d
d
g¡}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 )Nr   r   r   é	   é   é
   r   r   r   r   ç        ç      ð?©Úy_minÚy_max)ÚnpÚarrayr   r   ÚarangeÚlenr   r   r   r   ÚpredictÚrandomZpermutationÚonesZmean)r   Úy_r   r   Úpermr    r    r!   Útest_isotonic_regressiono   s"     &rP   c                  C   sx   ddddddg} ddddddg}ddddddg}t ƒ }| | |¡ t| | |¡ | ¡| | |¡ƒ t|| | |¡ƒ d S )Nr   r   r   r   r   r   r-   ©r   r   r   r   r   ©r   r   Zy_truer   r    r    r!   Ú!test_isotonic_regression_ties_min‰   s     rS   c                  C   sx   ddddddg} ddddddg}ddddddg}t ƒ }| | |¡ t| | |¡ | ¡| | |¡ƒ t|| | |¡ƒ d S )Nr   r   r   r   r   r   g      @rQ   rR   r    r    r!   Ú!test_isotonic_regression_ties_max–   s     rT   c                  C   sŠ   dddddddddddg} dddddd	d
dddd	g}dddddddddddg}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)
    r@   rA   é   é   é   g     €7@é   r   é   g     €5@é   é   gb„ðhã86@g     @8@r   N)r   r   r
   r   r   rR   r    r    r!   Ú(test_isotonic_regression_ties_secondary_£   s$    õr\   c                  C   sz   t  ddddddg¡} t  ddddddg¡}t  ddddddg¡}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   rB   g      Ð?rC   N)rG   rH   r   r   r
   r   r   rR   r    r    r!   Ú>test_isotonic_regression_with_ties_in_differently_sized_groupsÌ   s    r]   c               	   C   sj   t  dddddddg¡} tdd t  t| ƒ¡| ¡}tt  |d d	… j¡|d d	… |d
d …  dkƒ d S )NrA   r?   r   r   çffffff@r   F©Ú
increasingr3   r   r   )	rG   rH   r   r   rI   rJ   r   rM   Úshape)r   rN   r    r    r!   Ú!test_isotonic_regression_reversedä   s    rb   c               	   C   s   t  dddddddg¡} t  t| ƒ¡}tdd}tjd	d
2}t d¡ | || ¡}t	dd„ |D ƒƒsjt
‚W 5 Q R X |d |d k }|rŒt
‚d S )NrA   r?   r   r   r^   r   Úautor_   T©ÚrecordÚalwaysc                 S   s   g | ]}d t |jƒk‘qS ©zinvalid value encountered in ©ÚstrÚmessage©Ú.0Úwarnr    r    r!   Ú
<listcomp>õ   s     z<test_isotonic_regression_auto_decreasing.<locals>.<listcomp>r   r3   ©rG   rH   rI   rJ   r   r%   r&   r'   r   Úallr)   ©r   r   r   ÚwrN   r+   r    r    r!   Ú(test_isotonic_regression_auto_decreasingê   s    

 rs   c               	   C   s   t  dddddddg¡} t  t| ƒ¡}tdd}tjd	d
2}t d¡ | || ¡}t	dd„ |D ƒƒsjt
‚W 5 Q R X |d |d k }|sŒt
‚d S )Nr   r^   r   r   rA   r?   rc   r_   Trd   rf   c                 S   s   g | ]}d t |jƒk‘qS rg   rh   rk   r    r    r!   rn     s     z<test_isotonic_regression_auto_increasing.<locals>.<listcomp>r   r3   ro   rq   r    r    r!   Ú(test_isotonic_regression_auto_increasingü   s    

 rt   c               	   C   sê   t ƒ } tj d¡}d}tjt|d$ |  dddgddd	gd
dg¡ W 5 Q R X tjt|d |  dddgddg¡ W 5 Q R X d}tjt|d  |  | d	d¡dddg¡ W 5 Q R X d}tjt|d |  	| d	d¡¡ W 5 Q R X d S )Né*   z:Found input variables with inconsistent numbers of samplesr:   r   r   r   r   r   r   çš™™™™™¹?g333333ã?zX should be a 1d arrayrA   z0Isotonic regression input X should be a 1d array)
r   rG   rL   ÚRandomStater<   ÚraisesÚ
ValueErrorr   Zrandnr   )r   Úrngr=   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 )	Nru   éd   r1   r.   ©Úsizeg      I@r   r   )
r   rG   rL   rw   rI   ÚrandintÚlogrM   r   r   )r   rz   Únr   r   ÚweightsZy_set_valueZy_default_valuer    r    r!   Ú3test_isotonic_sample_weight_parameter_default_value"  s    
*
rƒ   c                  C   sT   t ddd} d}t |¡}t |¡}ddddddg}t |  ||¡¡}t||ƒ d S )Nr   r   rD   r   r   )r   rG   rI   Úroundr   r   )r   r   r   r   Zy_testZy_resultr    r    r!   Ú test_isotonic_min_max_boundaries2  s    

r…   c                  C   sl   t ƒ } dddddddg}ddd	dddd
g}dddddddg}ddddddd
g}| j|||d}t||ƒ d S )Nr   r   r   r   r   r   r   r   r   r   gfffffæ+@r   )r   r   r   )r   r   r   r   Z
expected_yZ
received_yr    r    r!   Útest_isotonic_sample_weight=  s    r†   c               	   C   s~   t  dddddddg¡} t  t| ƒ¡}tddd	}| || ¡ d
}tjt|d$ | 	t
|ƒd t|ƒd g¡ W 5 Q R X d S )Nr   r   r   r?   r@   rA   rc   Úraise©r`   Úout_of_boundsz)in x_new is below the interpolation ranger:   )rG   rH   rI   rJ   r   r   r<   rx   ry   rK   ÚminÚmax)r   r   r   r=   r    r    r!   Ú"test_isotonic_regression_oob_raiseH  s    rŒ   c               	   C   s’   t  dddddddg¡} t  t| ƒ¡}tddd	}| || ¡ | t|ƒd t|ƒd g¡}| |¡}t|ƒt|ƒkszt	‚t|ƒt|ƒksŽt	‚d S ©
Nr   r   r   r?   r@   rA   rc   Úcliprˆ   )
rG   rH   rI   rJ   r   r   rK   rŠ   r‹   r)   )r   r   r   Úy1Úy2r    r    r!   Ú!test_isotonic_regression_oob_clipW  s    
r‘   c               	   C   sv   t  dddddddg¡} t  t| ƒ¡}tddd	}| || ¡ | t|ƒd t|ƒd g¡}t	t  
|¡ƒd
ksrt‚d S )Nr   r   r   r?   r@   rA   rc   Únanrˆ   r   )rG   rH   rI   rJ   r   r   rK   rŠ   r‹   ÚsumÚisnanr)   )r   r   r   r   r    r    r!   Ú test_isotonic_regression_oob_nang  s    r•   c               	   C   st   t  dddddddg¡} t  t| ƒ¡}tddd	}| || ¡ t |tj¡}t 	|¡}t j
 | |¡| |¡¡ d S r   )rG   rH   rI   rJ   r   r   ÚpickleÚdumpsÚHIGHEST_PROTOCOLÚloadsÚtestingr   rK   )r   r   r   Zir_serZir2r    r    r!   Útest_isotonic_regression_pickleu  s    
r›   c                  C   sN   dddg} dddg}t ddd}| | |¡ t t | | ¡¡¡}|sJt‚d S )Nr   r   TrŽ   rˆ   )r   r   rG   rp   ÚisfiniterK   r)   )r   r   r   Zall_predictions_finiter    r    r!   Ú!test_isotonic_duplicate_min_entry‚  s    

r   c                  C   s¼   t  ddddddddd	d
ddddddddddg¡} t| ddd}t  |dk¡sRt‚t  |dk¡sdt‚t| dddd}t  |dk¡s†t‚t  |dk¡s˜t‚t| ddd}t  |dk¡s¸t‚d S )Ngh‘í|?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’?gTã¥›Ä Ø¿gyé&1¬ì¿g¬Zd;õ¿g
×£p=
Ç?rB   rv   rD   r   F)rE   rF   r`   )rE   r`   )rG   rH   r   rp   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 )
Nru   r.   r5   r   r}   r   r   r@   r   )rG   rL   rw   r   ZlinspaceÚuniformr   )rz   Z
regressionÚ	n_samplesr   r   rr   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@rA   Úint64Úfloat64r   rv   r   rŽ   )rE   rF   r‰   F)r   Ztrim_duplicatesr   )rG   rL   rw   ZrandÚlessr   Úastyper   Z_build_yZ_build_fr   rK   r   )rz   r    ZX_trainZy_trainr‚   Z
slow_modelZ
fast_modelZX_train_fitZy_train_fitZX_testZy_pred_slowZ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à   dddddg} t jdddddgt jd}tƒ }t jt jt jt jfD ]˜}d | t j¡|fD ]€}t j| |d}t|t jt jgdd	j	}t
||d
}|j	|ksœt‚t  t| ƒ¡ |¡}|j|||d
 | |¡}|j	|ksXt‚qXqBd S )Nr   r   r   r   r   gÍÌÌÌÌÌì?©ÚdtypeF)r«   Z	ensure_2dr   )rG   rH   r¤   r   Úint32r£   Úfloat32r¦   r   r«   r   r)   rI   rJ   r   rK   )	r   r‚   Úregr«   r   Zy_npZexpected_dtypeÚresÚXr    r    r!   Útest_isotonic_dtypeù  s"     
 ÿ
r±   Úy_dtypec                 C   sX   t ƒ }tjdddddg| d}tjt|ƒtjd}| ||¡ | |¡j|jksTt	‚d S )Nr   r   r   r   r   rª   )
r   rG   rH   rI   rJ   r­   r   rK   r«   r)   )r²   r®   r   r°   r    r    r!   Útest_isotonic_mismatched_dtype  s
    r³   c                  C   sf   dddddg} t jt jfD ]F}t j| |d}| ¡ }t  |¡}t|||ƒ\}}}t|dddgƒ qd S )Nr   r   r   rª   )rG   r­   r¤   rH   r¨   Ú	ones_liker   r   )Zx_listr«   r   r   rr   r    r    r!   Útest_make_unique_dtype  s    
rµ   r«   c                 C   sr   t jddddg| d}| ¡ }t  |¡}t|||ƒ\}}}| t jkrVt  dddg¡}nt  ddg¡}t||ƒ d S )Nr   g¼‰Ø—²Òœ<r   g-     ð?rª   )rG   rH   r¨   r´   r   r¤   r   )r«   r   r   rr   Zx_outr    r    r!   Útest_make_unique_tolerance#  s    

r¶   c               	   C   s    t jddddgt jd} t jddddgt jd}tƒ  | |¡}| dddddg¡}t|t  dd	dd
dg¡ƒ t|jt  dddg¡ƒ t|jt  dddg¡ƒ d S )Nr   r   rC   r   rª   r   g      à?r-   g      è?g      @rB   g       @g      @)	rG   rH   r¤   r   r   rK   r   ÚX_thresholds_Úy_thresholds_©r°   r   ÚiregÚy_predr    r    r!   Ú#test_isotonic_make_unique_tolerance1  s    r¼   c                  C   sb   t  ddddg¡} t  ddddg¡}tƒ  | |¡}| t  ddd	d
g¡¡}t  t  |¡¡s^t‚d S )NrB   gj       gJ/Ò   rC   gáz®GáÚ?g)\Âõ(Ü?r   g¦      gA¾ƒ    g»½×Ùß|Û=)rG   rH   r   r   rK   rp   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sXt	‚|jd |jd k spt	‚t  
||¡ ¡ s„t	‚| ¡ | ¡ ks˜t	‚| ¡ | ¡ ks¬t	‚tt  |¡dkƒsÂt	‚| rÞtt  |¡dkƒsôt	‚ntt  |¡dkƒsôt	‚d S )Nru   é   r}   r_   r   )rG   rL   rw   Únormalr   r   r·   r¸   ra   r)   Úisinrp   r‹   rŠ   Údiff)r`   rz   r    r°   r   rº   ZX_thresholdsZy_thresholdsr    r    r!   Útest_isotonic_thresholdsH  s    rÂ   c                  C   sº   t  d¡} |  dd¡}t  d¡}tƒ  | |¡}tƒ  ||¡}|j|jksLt‚|j|jks\t‚|j|jkslt‚|j	|j	ks|t‚t
|j|jƒ t
|j|jƒ | | ¡}| |¡}t||ƒ d S )NrA   r3   r   )rG   rI   Úreshaper   r   ZX_max_r)   ZX_min_rF   rE   r   r·   r¸   rK   r	   )r°   ÚX_2dr   Úiso_regZ
iso_reg_2dZy_pred1Zy_pred2r    r    r!   Útest_input_shape_validationc  s    



rÆ   c               	   C   s¨   t  d¡} t j| | f }t  d¡}d}tjt|d tƒ  ||¡ W 5 Q R X tƒ  | |¡}tjt|d | |¡ W 5 Q R X tjt|d | 	|¡ W 5 Q R X d S )NrA   z/should be a 1d array or 2d array with 1 featurer:   )
rG   rI   Zc_r<   rx   ry   r   r   rK   r   )r°   rÄ   r   r=   rÅ   r    r    r!   Ú)test_isotonic_2darray_more_than_1_featurey  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
    rA   r   r   ©r    Z
n_featuresr   r   r   N)r   rG   r´   r¨   r   r	   r   r   )r°   r   Zsample_weight_originalZsample_weight_fitr    r    r!   Ú6test_isotonic_regression_sample_weight_not_overwritten‹  s    

rÉ   ra   Z1dÚ2dc                 C   sl   t  d¡}| dkr| dd¡}t  d¡}tƒ  ||¡}| ¡ }t|t jƒsNt‚|j	t
ks\t‚tdg|ƒ dS )z7Check `get_feature_names_out` for `IsotonicRegression`.rA   rÊ   r3   r   Zisotonicregression0N)rG   rI   rÃ   r   r   Zget_feature_names_outÚ
isinstanceÚndarrayr)   r«   Úobjectr   )ra   r°   r   ZisoÚnamesr    r    r!   Útest_get_feature_names_out  s    

rÏ   c               	   C   s~   t  d¡} tdddd\}}tƒ }tjdd& | ||¡ | |¡}| |¡}W 5 Q R X t	|| j
ƒsjt‚t	|tjƒszt‚dS )a  Check that `predict` does return the expected output type.

    We need to check that `transform` will output a DataFrame and a NumPy array
    when we set `transform_output` to `pandas`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/25499
    ZpandasrA   r   ru   rÈ   )Ztransform_outputN)r<   Zimportorskipr   r   ÚsklearnZconfig_contextr   r   rK   rË   Z	DataFramer)   rG   rÌ   )Úpdr°   r   Z	regressorZX_transr»   r    r    r!   Ú'test_isotonic_regression_output_predict¬  s    	

rÒ   )Fr¨   r–   r%   ÚnumpyrG   r<   Zscipy.specialr   rÐ   Zsklearn.datasetsr   Zsklearn.isotonicr   r   r   r   Zsklearn.utilsr   Zsklearn.utils._testingr	   r
   r   Zsklearn.utils.validationr   r"   r,   r/   r0   r2   r8   r>   rP   rS   rT   r\   r]   rb   rs   rt   r{   rƒ   r…   r†   rŒ   r‘   r•   r›   r   rž   r¡   r§   r©   r±   ÚmarkZparametrizer¬   r£   r­   r¤   r³   rµ   r¶   r¼   r½   rÂ   rÆ   rÇ   rÉ   rÏ   rÒ   r    r    r    r!   Ú<module>   sn   )
,%






