o
    i;W                     @   sF  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? Z3ej45d@ej6ej7ej8ej9gdAdB Z:ej45dCej6ej7ej8ej9gdDdE Z;dFdG Z<ej45d@ej9ej8gdHdI Z=dJdK Z>dLdM Z?ej45dNdOdPgdQdR Z@dSdT ZAdUdV ZBdWdX ZCej45dYdZd[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   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   Zx_sZy_sZsample_weight_sZy_transformedZy_transformed_s r"   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   
r/   c                  C   r%   )Nr   r   r   r   r   r   )r         ?g)\(@{G!@r2   2   r'   r(   r-   r"   r"   r#   test_check_increasing_up3      
r4   c                  C   sZ   g d} g d}t   t dt t| |}W d    n1 s"w   Y  |s+J d S )Nr0   r'   r(   r-   r"   r"   r#    test_check_increasing_up_extreme?   r5   r6   c                  C   Z   g d} g d}t   t dt t| |}W d    n1 s"w   Y  |r+J d S )Nr0   )r   g      g)\({G!r8   r'   r(   r-   r"   r"   r#   test_check_increasing_downK   r5   r:   c                  C   r7   )Nr0   )r   r'   r(   r-   r"   r"   r#   "test_check_increasing_down_extremeW   r5   r@   c                  C   sX   g d} g d}d}t jt|d t| |}W d    n1 s!w   Y  |r*J d S )Nr0   )r   r;   r   r=   r   r?   intervalmatch)pytestZwarnsr,   r   )r    r!   msgr.   r"   r"   r#   test_check_ci_warnc   s   rF   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   rI   rI   rI   rJ   )rJ   r   r   )r   r   r                 ?y_miny_max)nparrayr   r   arangelenr   r   r   r   predictrandomZpermutationonesmean)r!   y_r    r   permr"   r"   r#   test_isotonic_regressiono   s"    &&rZ   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   )r1   r1   r   r   r   r   r   r   r   r   r   r    r!   Zy_truer   r"   r"   r#   !test_isotonic_regression_ties_min       r_   c                  C   r[   )N)r   r   r   r   r   r   r\   )r   r   r   r         @ra   r]   r^   r"   r"   r#   !test_isotonic_regression_ties_max   r`   rb   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)
    )rI   rI   rI   rJ   rJ   rJ      rc   rc      rd   )        7@   r   re      g     5@      rf   rh   )bh86@rk   rk   rk   rk   rk   rk   rk   rk        @8@rl   r   N)r   r   r
   r   r   r^   r"   r"   r#   (test_isotonic_regression_ties_secondary_   s   rm   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   )rK         ?rn   rn   rn   rL   N)rP   rQ   r   r   r
   r   r   r^   r"   r"   r#   >test_isotonic_regression_with_ties_in_differently_sized_groups   s   ro   c                  C   s   t g d} t g d}t| dd}t|| tddt t| | }t|| tt 	|d d j
|d d |dd   dk d S )NrJ   rH   rJ   r   r   ffffff@r   )rJ         #@rr   r   333333@rs   r   F
increasingr;   r   r   )rP   rQ   r   r	   r   r   rR   rS   r   rV   shape)r!   y_resultZy_isorX   r"   r"   r#   !test_isotonic_regression_reversed   s   

6rx   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 )Nrp   autort   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;   
rP   rQ   rR   rS   r   r)   r*   r+   r   allr!   r    r   wrX   r.   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   rq   r   r   rJ   rH   rJ   ry   rt   Trz   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 sw   Y  d S )N*   z:Found input variables with inconsistent numbers of samplesrB   r&   )r   r   r   皙?g333333?r   r   zX should be a 1d arrayr   rJ   z0Isotonic regression input X should be a 1d array)
r   rP   rU   RandomStaterD   raises
ValueErrorr   Zrandnr   )r   rngrE   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   r9   r3   sizeg      I@r   r   )
r   rP   rU   r   rR   randintlogrV   r   r   )r   r   nr    r!   weightsZy_set_valueZ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   rM   r   )r   r   r   r   r   r   )r   rP   rR   roundr   r   )r   r   r    r!   Zy_testrw   r"   r"   r#    test_isotonic_min_max_boundaries8  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   Z
expected_yZ
received_yr"   r"   r#   test_isotonic_sample_weightC  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 )NrG   ry   raiseru   out_of_boundsz)in x_new is below the interpolation rangerB   rJ   )rP   rQ   rR   rS   r   r   rD   r   r   rT   minmax)r!   r    r   rE   r"   r"   r#   "test_isotonic_regression_oob_raiseN  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 )NrG   ry   clipr   rJ   )	rP   rQ   rR   rS   r   r   rT   r   r   )r!   r    r   y1y2r"   r"   r#   !test_isotonic_regression_oob_clip]  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 )NrG   ry   nanr   rJ   r   )rP   rQ   rR   rS   r   r   rT   r   r   sumisnan)r!   r    r   r   r"   r"   r#    test_isotonic_regression_oob_nanm  s   r   c                  C   sj   t g d} t t| }tddd}|||  t|tj}t	|}t j
|||| d S )NrG   ry   r   r   )rP   rQ   rR   rS   r   r   pickledumpsHIGHEST_PROTOCOLloadstestingr   rT   )r!   r    r   Zir_serZ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   rP   r   isfiniterT   )r    r!   r   Z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+?gMgS?g9vgI+ƿg/$gl?gtV?g"~?gzG?gy&1?g#~jg"~j?g;On?T㥛 ؿgy&1r   gZd;g
ףp=
?rK   r   rM   r   F)rN   rO   ru   )rN   ru   )rP   rQ   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   r3   r=   r   r   r   r   rI   r   )rP   rU   r   r   Zlinspaceuniformr   )r   Z
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@rJ   int64float64r   r   r   r   )rN   rO   r   F)r   Ztrim_duplicatesr   )rP   rU   r   Zrandlessr   astyper   Z_build_yZ_build_fr   rT   r   )r   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   dtypec           	      C   s   g d}t jg dt jd}t }d |t j|fD ]@}t j|| d}t|t jt jgddj}t||d}|j|ks<J t 	t
|| }|j|||d ||}|j|ksZJ qd S )Nr   r   r   r   r   )?r   r   r   r   r   F)r   Z	ensure_2dr   )rP   rQ   r   r   r   float32r   r   r   rR   rS   r   rT   )	r   r!   r   regr   Zy_npZ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   rP   rQ   rR   rS   r   r   rT   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   )rP   r   r   rQ   r   	ones_liker   r   )Zx_listr   r    r!   r   r"   r"   r#   test_make_unique_dtype  s   
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   )rP   rQ   r   r   r   r   r   )r   r    r!   r   Zx_outr"   r"   r#   test_make_unique_tolerance)  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   rL   r   r   )r   r   r   r   )r   g      ?r   r1   r   )r   g      ?r1   g      @r   )rK   rL   g       @)rK   r1   g      @)	rP   rQ   r   r   r   rT   r   X_thresholds_y_thresholds_r   r!   iregy_predr"   r"   r#   #test_isotonic_make_unique_tolerance7  s   r   c                  C   sV   t g d} t g d}t | |}|t g d}t t |s)J d S )N)rK   gj       gJ/   rL   )zG?r   )\(?r   )r   g      gA    g|=)rP   rQ   r   r   rT   r   r   r   r"   r"   r#   &test_isotonic_non_regression_inf_slopeD  s
   r   ru   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   rt   r   )rP   rU   r   normalr   r   r   r   rv   isinr   r   r   diff)ru   r   r   r   r!   r   ZX_thresholdsZy_thresholdsr"   r"   r#   test_isotonic_thresholdsN  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 )NrJ   r;   r   )rP   rR   reshaper   r   ZX_max_ZX_min_rO   rN   r   r   r   rT   r	   )r   X_2dr!   iso_regZ
iso_reg_2dZy_pred1Zy_pred2r"   r"   r#   test_input_shape_validationi  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 )NrJ   z/should be a 1d array or 2d array with 1 featurerB   )
rP   rR   Zc_rD   r   r   r   r   rT   r   )r   r   r!   rE   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 )zCheck 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
    rJ   r   r   r   Z
n_featuresr   r   r   N)r   rP   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   rv   Z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`.rJ   r   r;   r   Zisotonicregression0N)rP   rR   r   r   r   Zget_feature_names_out
isinstancendarrayr   objectr   )rv   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 d   n1 s2w   Y  t	|| j
s?J t	|tjsGJ 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pandasrJ   r   r   r   )Ztransform_outputN)rD   Zimportorskipr   r   sklearnZconfig_contextr   r   rT   r   Z	DataFramerP   r   )pdr   r!   Z	regressorZX_transr   r"   r"   r#   'test_isotonic_regression_output_predict  s   
	
r   )Fr   r   r)   numpyrP   rD   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/   r4   r6   r:   r@   rF   rZ   r_   rb   rm   ro   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markZparametrizeZint32r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   <module>   sr    )
,%







