Ë
    D�DjWY  ã                   ó  — 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„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d „ Z0d!„ Z1d"„ Z2d#„ Z3d$„ Z4ejj                  jm                  d%ejn                  ejp                  ejr                  ejt                  g«      d&„ «       Z;d'„ Z<ejj                  jm                  d(ejt                  ejr                  g«      d)„ «       Z=d*„ Z>d+„ Z?ejj                  jm                  d,d-d.g«      d/„ «       Z@d0„ ZAd1„ ZBd2„ ZCejj                  jm                  d3d4d5g«      d6„ «       ZDd7„ ZEy)8é    N)Úexpit)Úmake_regression)ÚIsotonicRegressionÚ_make_uniqueÚcheck_increasingÚisotonic_regression)Úshuffle)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)Úcheck_arrayc                  óÜ   — t        «       } g d¢}g d¢}g d¢}t        |||d¬«      \  }}}| j                  |||¬«      }| j                  |||¬«      j	                  |«      }t        ||«       y )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_ss	            ú_C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sklearn/tests/test_isotonic.pyÚtest_permutation_invariancer*      ss   € ô 
Ó	€BÚ€AÚ €AÚ)€MÜ '¨¨1¨mÈ!Ô LÑ€CˆˆoØ×$Ñ$ Q¨¸Ð$ÓG€MØ—f‘f˜S #°_�fÓE×OÑOÐPQÓR€Oä�} oÕ6ó    c                  óº   — g d¢} g d¢}t        j                  «       5  t        j                  dt        «       t	        | |«      }d d d «       sJ ‚y # 1 sw Y   ŒxY w)N©r   r   r   )r   gš™™™™™ñ?gÍÌÌÌÌÌð?Úerror©ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   ©r"   r#   Úis_increasings      r)   Ú-test_check_increasing_small_number_of_samplesr6   (   sS   € Ú€AÚ€Aä	×	 Ñ	 Ó	"ñ /Ü×Ñ˜g¤{Ô3Ü(¨¨AÓ.ˆ÷/ñ Ñˆ=÷	/ð /úó   �'AÁAc                  óº   — g d¢} g d¢}t        j                  «       5  t        j                  dt        «       t	        | |«      }d d d «       sJ ‚y # 1 sw Y   ŒxY w)N©r   r   r   r   r   r   )r   ç      ø?g)\�Âõ(@ç{®Gáú!@r;   é2   r.   r/   r4   s      r)   Útest_check_increasing_upr=   3   sU   € Ú€AÚ&€Aô 
×	 Ñ	 Ó	"ñ /Ü×Ñ˜g¤{Ô3Ü(¨¨AÓ.ˆ÷/ñ Ñˆ=÷	/ð /úr7   c                  óº   — g d¢} g d¢}t        j                  «       5  t        j                  dt        «       t	        | |«      }d d d «       sJ ‚y # 1 sw Y   ŒxY w)Nr9   r.   r/   r4   s      r)   Ú test_check_increasing_up_extremer?   ?   sU   € Ú€AÚ€Aô 
×	 Ñ	 Ó	"ñ /Ü×Ñ˜g¤{Ô3Ü(¨¨AÓ.ˆ÷/ñ Ñˆ=÷	/ð /úr7   c                  óº   — g d¢} g d¢}t        j                  «       5  t        j                  dt        «       t	        | |«      }d d d «       rJ ‚y # 1 sw Y   ŒxY w)Nr9   )r   g      ø¿g)\�Âõ(Àç{®Gáú!ÀrA   éÎÿÿÿr.   r/   r4   s      r)   Útest_check_increasing_downrC   K   sU   € Ú€AÚ+€Aô 
×	 Ñ	 Ó	"ñ /Ü×Ñ˜g¤{Ô3Ü(¨¨AÓ.ˆ÷/ñ Ñˆ}÷	/ð /úr7   c                  óº   — g d¢} g d¢}t        j                  «       5  t        j                  dt        «       t	        | |«      }d d d «       rJ ‚y # 1 sw Y   ŒxY w)Nr9   )r   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿr.   r/   r4   s      r)   Ú"test_check_increasing_down_extremerJ   W   sU   € Ú€AÚ€Aô 
×	 Ñ	 Ó	"ñ /Ü×Ñ˜g¤{Ô3Ü(¨¨AÓ.ˆ÷/ñ Ñˆ}÷	/ð /úr7   c                  ó˜   — g d¢} g d¢}d}t        j                  t        |¬«      5  t        | |«      }d d d «       rJ ‚y # 1 sw Y   ŒxY w)Nr9   )r   rE   r   rG   r   rI   Úinterval©Úmatch)ÚpytestÚwarnsr3   r   )r"   r#   Úmsgr5   s       r)   Útest_check_ci_warnrR   c   sL   € Ú€AÚ€Að €CÜ	�‰”k¨Ô	-ñ /Ü(¨¨AÓ.ˆ÷/ñ Ñˆ}÷/ð /ús   ¦A Á A	c            	      ó2  — t        j                  g d¢«      } t        j                  g d¢«      }t        |t        | «      «       t        j                  g d¢«      } t        j                  g d¢«      }t        |t        | «      «       t        j                  t        | «      «      }t        dd¬«      }|j                  || «       t        |j                  || «      j                  |«      |j                  || «      «       t        |j                  |«      |j                  |«      «       t         j                  j                  t        | «      «      }t        dd¬«      }t        |j                  ||   | |   «      |j                  || «      |   «       t        |j                  ||   «      |j                  |«      |   «       t        «       }t        |j                  t        j                  t        |«      «      | «      t        j                  | «      «       y )N©r   r   r   é	   é   r   é
   )r   r   r   rV   rV   rV   rW   )rW   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!   Úperms        r)   Útest_isotonic_regressionrh   o   s~  € Ü
�‰Ò'Ó(€AÜ	�‰Ò(Ó	)€BÜ�rÔ.¨qÓ1Ô2ä
�‰’Ó€AÜ	�‰’)Ó	€BÜ�rÔ.¨qÓ1Ô2ä
�	‰	”#�a“&Ó€AÜ	 #¨SÔ	1€BØ‡F�Fˆ1ˆa„LÜ�r—v‘v˜a “|×-Ñ-¨aÓ0°"×2BÑ2BÀ1ÀaÓ2HÔIÜ�r—|‘| A“¨¯
©
°1«Ô6ô �9‰9× Ñ ¤ Q£Ó(€DÜ	 #¨SÔ	1€BÜ�r×'Ñ'¨¨$©°°4±Ó9¸2×;KÑ;KÈAÈqÓ;QÐRVÑ;WÔXÜ�r—|‘| A d¡GÓ,¨b¯l©l¸1«o¸dÑ.CÔDô 
Ó	€BÜ�r×'Ñ'¬¯©´°A³«¸Ó;¼R¿W¹WÀQ»ZÕHr+   c                  ó  — g d¢} g d¢}g d¢}t        «       }|j                  | |«       t        |j                  | |«      j                  | «      |j	                  | |«      «       t        ||j	                  | |«      «       y )N)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#   Úy_truer!   s       r)   Ú!test_isotonic_regression_ties_minrn   ‰   ók   € â€AÚ€AÚ#€Fô 
Ó	€BØ‡F�Fˆ1ˆa„LÜ�r—v‘v˜a “|×-Ñ-¨aÓ0°"×2BÑ2BÀ1ÀaÓ2HÔIÜ�v˜r×/Ñ/°°1Ó5Õ6r+   c                  ó  — g d¢} g d¢}g d¢}t        «       }|j                  | |«       t        |j                  | |«      j                  | «      |j	                  | |«      «       t        ||j	                  | |«      «       y )N)r   r   r   r   r   r   rj   )r   r   r   r   ç      @rq   rk   rl   s       r)   Ú!test_isotonic_regression_ties_maxrr   –   ro   r+   c                  óÆ   — g d¢} g d¢}g d¢}t        «       }|j                  | |«       t        |j                  | «      |d«       t        |j	                  | |«      |d«       y)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)
    )rV   rV   rV   rW   rW   rW   é   rt   rt   é   ru   )é   ç     €7@é   r   rv   é   g     €5@é   é   rw   ry   )çb„ðhã86@r|   r|   r|   r|   r|   r|   r|   r|   ç     @8@r}   r   N)r   r   r   r    r   rl   s       r)   Ú(test_isotonic_regression_ties_secondary_r~   £   sY   € ò$ 	2€AÚ:€Aò€Fô 
Ó	€BØ‡F�Fˆ1ˆa„LÜ˜bŸl™l¨1›o¨v°qÔ9Ü˜b×.Ñ.¨q°!Ó4°f¸aÕ@r+   c                  ó4  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  g d¢«      }t        «       }|j                  | |«       t	        |j                  | «      |«       t	        |j                  | |«      |«       y)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   )rX   ç      Ð?r€   r€   r€   rY   N)r]   r^   r   r   r   r    r   rl   s       r)   Ú>test_isotonic_regression_with_ties_in_differently_sized_groupsr�   Ì   so   € ô 	�‰Ò#Ó$€AÜ
�‰Ò#Ó$€AÜ�X‰XÒ8Ó9€FÜ	Ó	€BØ‡F�Fˆ1ˆa„LÜ˜bŸl™l¨1›o¨vÔ6Ü˜b×.Ñ.¨q°!Ó4°fÕ=r+   c                  ó  — t        j                  g d¢«      } t        d¬«      j                  t        j                  t        | «      «      | «      }t        t        j                  |d d j                  «      |d d |dd  z
  dk\  «       y )N©rW   rU   rW   r   r   çffffff@r   F©Ú
increasingrE   r   r   )	r]   r^   r   r   r_   r`   r   rd   Úshape)r#   rf   s     r)   Ú!test_isotonic_regression_reversedrˆ   ä   sh   € Ü
�‰Ò*Ó+€AÜ	 uÔ	-×	;Ñ	;¼B¿I¹IÄcÈ!ÃfÓ<MÈqÓ	Q€BÜ”r—w‘w˜r # 2˜wŸ}™}Ó-°°C°R°¸2¸a¸b¸6Ñ1AÀaÑ0GÕIr+   c            
      ó´  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        d¬«      }t        j                  d¬«      5 }t        j                  d«       |j                  || «      }t        |D �cg c]  }dt        |j                  «      v ‘Œ c}«      sJ ‚	 d d d «       d   |d	   k  }|rJ ‚y c c}w # 1 sw Y   ŒxY w)
Nrƒ   Úautor…   T©ÚrecordÚalwaysúinvalid value encountered in r   rE   ©r]   r^   r_   r`   r   r0   r1   r2   r   ÚallÚstrÚmessage©r#   r"   r!   Úwrf   Úwarnr5   s          r)   Ú(test_isotonic_regression_auto_decreasingr–   ê   sÂ   € ä
�‰Ò*Ó+€AÜ
�	‰	”#�a“&Ó€Aô 
 vÔ	.€BÜ	×	 Ñ	 ¨Ô	-ð Y°Ü×Ñ˜hÔ'Ø×Ñ˜a Ó#ˆäÐUVÖWÈTÐ3´s¸4¿<¹<Ó7HÒHÒWÔXÑXÐX÷	Yð �q‘E˜B˜r™F‘N€MÙÑˆ}ùò	 X÷	Yð Yúó   Á1CÂ	C	
Â'	CÃ	CÃCc            
      ó´  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        d¬«      }t        j                  d¬«      5 }t        j                  d«       |j                  || «      }t        |D �cg c]  }dt        |j                  «      v ‘Œ c}«      sJ ‚	 d d d «       d   |d	   k  }|sJ ‚y c c}w # 1 sw Y   ŒxY w)
N)r   r„   r   r   rW   rU   rW   rŠ   r…   Tr‹   r�   rŽ   r   rE   r�   r“   s          r)   Ú(test_isotonic_regression_auto_increasingr™   ü   sÂ   € ä
�‰Ò*Ó+€AÜ
�	‰	”#�a“&Ó€Aô 
 vÔ	.€BÜ	×	 Ñ	 ¨Ô	-ð Y°Ü×Ñ˜hÔ'Ø×Ñ˜a Ó#ˆäÐUVÖWÈTÐ3´s¸4¿<¹<Ó7HÒHÒWÔXÑXÐX÷	Yð �q‘E˜B˜r™F‘N€MÙÑˆ=ùò	 X÷	Yð Yúr—   c                  óÊ  — t        «       } t        j                  j                  d«      }d}t	        j
                  t        |¬«      5  | j                  g d¢g d¢ddg«       d d d «       t	        j
                  t        |¬«      5  | j                  g d¢dd	g«       d d d «       d
}t	        j
                  t        |¬«      5  | j                  |j                  dd«      g d¢«       d d d «       d}t	        j
                  t        |¬«      5  | j                  |j                  dd«      «       d d d «       y # 1 sw Y   ŒÕxY w# 1 sw Y   Œ§xY w# 1 sw Y   ŒixY w# 1 sw Y   y xY w)Né*   z:Found input variables with inconsistent numbers of samplesrM   r-   )r   r   r   çš™™™™™¹?g333333ã?r   r   zX should be a 1d arrayr   rW   z0Isotonic regression input X should be a 1d array)
r   r]   rb   ÚRandomStaterO   ÚraisesÚ
ValueErrorr   Úrandnr    )r!   ÚrngrQ   s      r)   Útest_assert_raises_exceptionsr¢     s  € Ü	Ó	€BÜ
�)‰)×
Ñ
 Ó
#€Cà
F€CÜ	�‰”z¨Ô	-ñ 1Ø
�‰Šyš) c¨3 ZÔ0÷1ô 
�‰”z¨Ô	-ñ "Ø
�‰Šy˜1˜a˜&Ô!÷"ð #€CÜ	�‰”z¨Ô	-ñ ,Ø
�‰ˆs�y‰y˜˜BÓ¢Ô+÷,ð =€CÜ	�‰”z¨Ô	-ñ 'Ø
�‰�S—Y‘Y˜q "Ó%Ô&÷'ð '÷1ð 1ú÷"ð "ú÷,ð ,ú÷'ð 'ús0   ÁD5ÂEÃ %EÄ
"EÄ5D>ÅE
ÅEÅE"c                  óš  — t        «       } t        j                  j                  d«      }d}t        j                  |«      }|j                  dd|f¬«      dt        j                  dt        j                  |«      z   «      z  z   }t        j                  |«      }| j                  |||¬«      }| j                  ||«      }t        ||«       y )	Nr›   éd   rB   r<   ©Úsizeg      I@r   r   )
r   r]   rb   r�   r_   ÚrandintÚlogrd   r   r   )r!   r¡   Únr"   r#   ÚweightsÚy_set_valueÚy_default_values           r)   Ú3test_isotonic_sample_weight_parameter_default_valuer­   "  s¦   € ä	Ó	€Bä
�)‰)×
Ñ
 Ó
#€CØ€AÜ
�	‰	�!‹€AØ�‰�C˜ 1 $ˆÓ'¨$´·±¸¼B¿I¹IÀa»LÑ8HÓ1IÑ*IÑI€Aä�g‰g�a‹j€GØ×"Ñ" 1 a°wÐ"Ó?€KØ×&Ñ& q¨!Ó,€Oä�{ OÕ4r+   c                  óà   — t        dd¬«      } d}t        j                  |«      }t        j                  |«      }g d¢}t        j                  | j	                  ||«      «      }t        ||«       y )Nr   r   rZ   r   )r   r   r   r   r   r   )r   r]   r_   Úroundr   r   )r!   r©   r"   r#   Úy_testÚy_results         r)   Ú test_isotonic_min_max_boundariesr²   2  sW   € ä	 !¨1Ô	-€BØ	€AÜ
�	‰	�!‹€AÜ
�	‰	�!‹€AÚ€FÜ�x‰x˜×(Ñ(¨¨AÓ.Ó/€HÜ�x Õ(r+   c                  óx   — t        «       } g d¢}g d¢}g d¢}g d¢}| j                  |||¬«      }t        ||«       y )Nr   r   )r   çfffffæ+@r´   r´   r´   r´   r   r   )r   r   r   )r!   r"   r#   r   Ú
expected_yÚ
received_ys         r)   Útest_isotonic_sample_weightr·   =  s?   € Ü	Ó	€BÚ€AÚ €AÚ)€MÚ;€JØ×!Ñ! ! Q°mÐ!ÓD€Jä�z :Õ.r+   c                  óf  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        dd¬«      }|j                  || «       d}t        j                  t        |¬«      5  |j                  t        |«      dz
  t        |«      dz   g«       d d d «       y # 1 sw Y   y xY w)NrT   rŠ   Úraise©r†   Úout_of_boundsz)in x_new is below the interpolation rangerM   rW   )r]   r^   r_   r`   r   r   rO   rž   rŸ   ra   ÚminÚmax)r#   r"   r!   rQ   s       r)   Ú"test_isotonic_regression_oob_raiser¾   H  s‰   € ä
�‰Ò'Ó(€AÜ
�	‰	”#�a“&Ó€Aô 
 v¸WÔ	E€BØ‡F�Fˆ1ˆa„Lð 6€CÜ	�‰”z¨Ô	-ñ /Ø
�
‰
”C˜“F˜R‘K¤ Q£¨"¡Ð-Ô.÷/÷ /ñ /ús   Á2,B'Â'B0c                  óˆ  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        dd¬«      }|j                  || «       |j                  t        |«      dz
  t        |«      dz   g«      }|j                  |«      }t        |«      t        |«      k(  sJ ‚t        |«      t        |«      k(  sJ ‚y )NrT   rŠ   Úcliprº   rW   )	r]   r^   r_   r`   r   r   ra   r¼   r½   )r#   r"   r!   Úy1Úy2s        r)   Ú!test_isotonic_regression_oob_cliprÃ   W  s™   € ä
�‰Ò'Ó(€AÜ
�	‰	”#�a“&Ó€Aô 
 v¸VÔ	D€BØ‡F�Fˆ1ˆa„Lð 
�‰”S˜“V˜b‘[¤# a£&¨2¡+Ð.Ó	/€BØ	�‰�A‹€BÜˆr‹7”c˜"“gÒÑÜˆr‹7”c˜"“gÒÑÐr+   c                  óH  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        dd¬«      }|j                  || «       |j                  t        |«      dz
  t        |«      dz   g«      }t        t        j                  |«      «      dk(  sJ ‚y )NrT   rŠ   Únanrº   rW   r   )r]   r^   r_   r`   r   r   ra   r¼   r½   ÚsumÚisnan)r#   r"   r!   rÁ   s       r)   Ú test_isotonic_regression_oob_nanrÈ   g  s~   € ä
�‰Ò'Ó(€AÜ
�	‰	”#�a“&Ó€Aô 
 v¸UÔ	C€BØ‡F�Fˆ1ˆa„Lð 
�‰”S˜“V˜b‘[¤# a£&¨2¡+Ð.Ó	/€BÜŒr�x‰x˜‹|Ó Ò!Ñ!Ð!r+   c                  óš  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        dd¬«      }|j                  || «       t        j                  |t        j                  «      }t        j                  |«      }t         j                  j                  |j                  |«      |j                  |«      «       y )NrT   rŠ   rÀ   rº   )r]   r^   r_   r`   r   r   ÚpickleÚdumpsÚHIGHEST_PROTOCOLÚloadsÚtestingr   ra   )r#   r"   r!   Úir_serÚir2s        r)   Útest_isotonic_regression_picklerÑ   u  s†   € Ü
�‰Ò'Ó(€AÜ
�	‰	”#�a“&Ó€Aô 
 v¸VÔ	D€BØ‡F�Fˆ1ˆa„Lä�\‰\˜"œf×5Ñ5Ó6€FÜ
�,‰,�vÓ
€CÜ‡J�J×!Ñ! "§*¡*¨Q£-°·±¸Q³Õ@r+   c                  óÈ   — g d¢} g d¢}t        dd¬«      }|j                  | |«       t        j                  t        j                  |j                  | «      «      «      }|sJ ‚y )N)r   r   r   TrÀ   rº   )r   r   r]   r�   Úisfinitera   )r"   r#   r!   Úall_predictions_finites       r)   Ú!test_isotonic_duplicate_min_entryrÕ   ‚  sN   € Ú€AÚ€Aä	 t¸6Ô	B€BØ‡F�Fˆ1ˆa„LÜŸV™V¤B§K¡K°·
±
¸1³Ó$>Ó?ÐÙ!Ñ!Ð!r+   c                  óŒ  — t        j                  g d¢«      } t        | dd¬«      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚t        | ddd¬«      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚t        | dd¬«      }t        j                  |dk\  «      sJ ‚y )	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=
Ç?rX   rœ   rZ   r   F)r[   r\   r†   )r[   r†   )r]   r^   r   r�   )r"   r#   s     r)   Útest_isotonic_ymin_ymaxrØ   Œ  s§   € ô 	�‰ò	
ó	€Aô0 	˜A S°Ô4€Aä�6‰6�!�q‘&Œ>ÑÜ�6‰6�!�s‘(ÔÑô 	˜A S°ÀÔF€Aä�6‰6�!�q‘&Œ>ÑÜ�6‰6�!�s‘(ÔÑô 	˜A S°UÔ;€Aä�6‰6�!�q‘&Œ>Ñˆ>r+   c                  ó0  — t         j                  j                  d«      } t        «       }d}t        j                  dd|«      }|| j                  |¬«      z   }| j                  |¬«      }d|dd |j                  |||¬	«       |j                  |||¬	«       y )
Nr›   r<   rG   r   r¥   r   r   rV   r   )r]   rb   r�   r   ÚlinspaceÚuniformr   )r¡   Ú
regressionÚ	n_samplesr"   r#   r”   s         r)   Útest_isotonic_zero_weight_looprÞ   ¸  s‘   € ô
 �)‰)×
Ñ
 Ó
#€Cô $Ó%€JØ€IÜ
�‰�B˜˜9Ó%€AØ	ˆC�K‰K˜YˆKÓ'Ñ'€Að 	�‰˜ˆÓ#€AØ€A€aˆ€FØ‡N�N�1�a q€NÔ)ð ‡N�N�1�a q€NÕ)r+   c                  óš  — t         j                  j                  d«      } d}d| j                  |«      z  dz
  }t        j                  | j                  |«      t        |«      «      j                  d«      j                  d«      }| j                  |«      }d|| j                  |«      dk  <   t        dd	d
¬«      }t        dd	d
¬«      }|j                  |||d¬«      \  }}|j                  ||«       |j                  |||¬«       d| j                  |«      z  dz
  }	|j                  |	«      }
|j                  |	«      }t        |
|«       y )Né{   iè  g      4@rW   Úint64Úfloat64r   rœ   r   rÀ   )r[   r\   r»   F)r   Útrim_duplicatesr   )r]   rb   r�   ÚrandÚlessr   Úastyper   Ú_build_yÚ_build_fr   ra   r   )r¡   rÝ   ÚX_trainÚy_trainrª   Ú
slow_modelÚ
fast_modelÚX_train_fitÚy_train_fitÚX_testÚy_pred_slowÚy_pred_fasts               r)   Útest_fast_predictrò   Î  s<  € ô �)‰)×
Ñ
 Ó
$€CØ€Ià�S—X‘X˜iÓ(Ñ(¨2Ñ-€Gä
�‰�—‘˜Ó#¤U¨7£^Ó4×;Ñ;¸GÓD×KÑKÈIÓVð ð �h‰h�yÓ!€Gà)*€GˆC�H‰H�YÓ #Ñ%Ñ&ä#¨!°1ÀFÔK€JÜ#¨!°1ÀFÔK€Jð
  *×2Ñ2Ø�¨Àð  3ó  Ñ€K�ð ×Ñ˜ [Ô1ð ‡N�N�7˜G°7€NÔ;à�C—H‘H˜YÓ'Ñ'¨"Ñ,€FØ×$Ñ$ VÓ,€KØ×$Ñ$ VÓ,€Kä�{ KÕ0r+   c                  óB   — t        «       } t        j                  | «       y )N)r   Úcopy)r!   s    r)   Útest_isotonic_copy_before_fitrõ   ó  s   € ä	Ó	€BÜ‡I�Iˆb…Mr+   c                  óÞ  — g d¢} t        j                  g d¢t         j                  ¬«      }t        «       }t         j                  t         j
                  t         j                  t         j                  fD ]÷  }d |j                  t         j                  «      |fD ]Ð  }t        j                  | |¬«      }t        |t         j                  t         j                  gd¬«      j                  }t        ||¬«      }|j                  |k(  sJ ‚t        j                  t        | «      «      j                  |«      }|j                  |||¬«       |j                  |«      }|j                  |k(  rŒÐJ ‚ Œù y )N©r   r   r   r   r   )çÍÌÌÌÌÌì?rø   rø   rø   rø   ©ÚdtypeF)rú   Ú	ensure_2dr   )r]   r^   râ   r   Úint32rá   Úfloat32ræ   r   rú   r   r_   r`   r   ra   )	r#   rª   Úregrú   r   Úy_npÚexpected_dtypeÚresÚXs	            r)   Útest_isotonic_dtyper  ù  s  € Ú€AÜ�h‰hÒ0¼¿
¹
ÔC€GÜ
Ó
€Cä—(‘(œBŸH™H¤b§j¡j´"·*±*Ð=ò /ˆØ" G§N¡N´2·:±:Ó$>ÀÐHò 	/ˆMÜ—8‘8˜A UÔ+ˆDÜ(ØœRŸZ™Z¬¯©Ð4Àôç‰eð ô & d¸-ÔHˆCØ—9‘9 Ò.Ñ.ä—	‘	œ#˜a›&Ó!×(Ñ(¨Ó/ˆAØ�G‰G�A�t¨=ˆGÔ9Ø—+‘+˜a“.ˆCØ—9‘9 Ó.Ñ.ñ	/ñ/r+   Úy_dtypec                 ó  — t        «       }t        j                  g d¢| ¬«      }t        j                  t	        |«      t        j
                  ¬«      }|j                  ||«       |j                  |«      j                  |j                  k(  sJ ‚y )Nr÷   rù   )	r   r]   r^   r_   r`   rý   r   ra   rú   )r  rþ   r#   r  s       r)   Útest_isotonic_mismatched_dtyper    sa   € ô Ó
€CÜ
�‰’¨Ô0€AÜ
�	‰	”#�a“&¤§
¡
Ô+€AØ‡G�GˆAˆq„MØ�;‰;�q‹>×Ñ 1§7¡7Ò*Ñ*Ð*r+   c                  ó  — g d¢} t         j                  t         j                  fD ]]  }t        j                  | |¬«      }|j	                  «       }t        j
                  |«      }t        |||«      \  }}}t        |g d¢«       Œ_ y )N)r   r   r   r   r   rù   )r   r   r   )r]   rý   râ   r^   rô   Ú	ones_liker   r   )Úx_listrú   r"   r#   r”   s        r)   Útest_make_unique_dtyper
    si   € Ú€FÜ—*‘*œbŸj™jÐ)ò )ˆÜ�H‰H�V 5Ô)ˆØ�F‰F‹HˆÜ�L‰L˜‹OˆÜ˜q ! QÓ'‰ˆˆ1ˆaÜ˜1šiÕ(ñ)r+   rú   c                 ó>  — t        j                  g d¢| ¬«      }|j                  «       }t        j                  |«      }t	        |||«      \  }}}| t         j
                  k(  rt        j                  g d¢«      }nt        j                  ddg«      }t        ||«       y )N)r   g¼‰Ø—²Òœ<r   ç-     ð?rù   )r   r   r  r   r   )r]   r^   rô   r  r   râ   r   )rú   r"   r#   r”   Úx_outs        r)   Útest_make_unique_tolerancer  #  sx   € ô 	�‰Ò)°Ô7€AØ	�‰‹€AÜ
�‰�Q‹€AÜ˜1˜a Ó#�G€A€qˆ!Ø”—
‘
ÒÜ—‘Ò*Ó+‰ä—‘˜!˜Q˜Ó ˆÜ�q˜%Õ r+   c                  óè  — t        j                  g d¢t         j                  ¬«      } t        j                  g d¢t         j                  ¬«      }t        «       j	                  | |«      }|j                  g d¢«      }t        |t        j                  g d¢«      «       t        |j                  t        j                  g d¢«      «       t        |j                  t        j                  g d¢«      «       y )N)r   r   rY   r   rù   )r   r   r   r   )r   g      à?r   r:   r   )r   g      è?r:   g      @r   )rX   rY   g       @)rX   r:   g      @)	r]   r^   râ   r   r   ra   r   ÚX_thresholds_Úy_thresholds_©r  r#   ÚiregÚy_preds       r)   Ú#test_isotonic_make_unique_tolerancer  1  s—   € ô 	�‰Ò%¬R¯Z©ZÔ8€AÜ
�‰’¤R§Z¡ZÔ0€AÜÓ×#Ñ# A qÓ)€DØ�\‰\Ò-Ó.€Fä�vœrŸx™xÒ(?Ó@ÔAÜ�t×)Ñ)¬2¯8©8²OÓ+DÔEÜ�t×)Ñ)¬2¯8©8²OÓ+DÕEr+   c                  ó4  — t        j                  g d¢«      } t        j                  g d¢«      }t        «       j                  | |«      }|j	                  t        j                  g d¢«      «      }t        j
                  t        j                  |«      «      sJ ‚y )N)rX   gj       gJ/Ò   rY   )çáz®GáÚ?r  ç)\�Âõ(Ü?r  )r   g¦      gA¾ƒ    g»½×Ùß|Û=)r]   r^   r   r   ra   r�   rÓ   r  s       r)   Ú&test_isotonic_non_regression_inf_sloper  >  sj   € ô 	�‰Ò/Ó0€AÜ
�‰Ò)Ó*€AÜÓ×#Ñ# A qÓ)€DØ�\‰\œ"Ÿ(™(Ò#AÓBÓC€FÜ�6‰6”"—+‘+˜fÓ%Ô&Ñ&Ð&r+   r†   TFc                 ó  — t         j                  j                  d«      }d}|j                  |¬«      }|j                  |¬«      }t	        | ¬«      j                  ||«      }|j                  |j                  }}|j                  |j                  k(  sJ ‚|j                  d   |j                  d   k  sJ ‚t        j                  ||«      j                  «       sJ ‚|j                  «       |j                  «       k  sJ ‚|j                  «       |j                  «       k\  sJ ‚t        t        j                  |«      dkD  «      sJ ‚| r$t        t        j                  |«      dk\  «      sJ ‚y t        t        j                  |«      dk  «      sJ ‚y )Nr›   é   r¥   r…   r   )r]   rb   r�   Únormalr   r   r  r  r‡   Úisinr�   r½   r¼   Údiff)r†   r¡   rÝ   r  r#   r  ÚX_thresholdsÚy_thresholdss           r)   Útest_isotonic_thresholdsr!  H  sB  € ä
�)‰)×
Ñ
 Ó
#€CØ€IØ�
‰
˜	ˆ
Ó"€AØ�
‰
˜	ˆ
Ó"€AÜ¨Ô4×8Ñ8¸¸AÓ>€DØ!%×!3Ñ!3°T×5GÑ5G�,€LØ×Ñ ×!3Ñ!3Ò3Ñ3ð
 ×Ñ˜aÑ  1§7¡7¨1¡:Ò-Ñ-Ü�7‰7�< Ó#×'Ñ'Ô)Ñ)ð ×ÑÓ §¡£Ò(Ñ(Ø×ÑÓ §¡£Ò(Ñ(äŒr�w‰w�|Ó$ qÑ(Ô)Ñ)ÙÜ”2—7‘7˜<Ó(¨AÑ-Ô.Ñ.Ð.ä”2—7‘7˜<Ó(¨AÑ-Ô.Ñ.Ð.r+   c                  ó˜  — t        j                  d«      } | j                  dd«      }t        j                  d«      }t        «       j	                  | |«      }t        «       j	                  ||«      }|j
                  |j
                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚t        |j                  |j                  «       t        |j                  |j                  «       |j                  | «      }|j                  |«      }t        ||«       y )NrW   rE   r   )r]   r_   Úreshaper   r   ÚX_max_ÚX_min_r\   r[   r   r  r  ra   r
   )r  ÚX_2dr#   Úiso_regÚ
iso_reg_2dÚy_pred1Úy_pred2s          r)   Útest_input_shape_validationr+  c  s   € ô 	�	‰	�"‹€AØ�9‰9�R˜Ó€DÜ
�	‰	�"‹€Aä Ó"×&Ñ& q¨!Ó,€GÜ#Ó%×)Ñ)¨$°Ó2€Jà�>‰>˜Z×.Ñ.Ò.Ñ.Ø�>‰>˜Z×.Ñ.Ò.Ñ.Ø�=‰=˜J×,Ñ,Ò,Ñ,Ø�=‰=˜J×,Ñ,Ò,Ñ,Ü�w×,Ñ,¨j×.FÑ.FÔGÜ�w×,Ñ,¨j×.FÑ.FÔGà�o‰o˜aÓ €GØ× Ñ  Ó&€GÜ�G˜WÕ%r+   c                  óR  — t        j                  d«      } t         j                  | | f   }t        j                  d«      }d}t        j                  t
        |¬«      5  t        «       j                  ||«       d d d «       t        «       j                  | |«      }t        j                  t
        |¬«      5  |j                  |«       d d d «       t        j                  t
        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   ŒŽxY w# 1 sw Y   ŒKxY w# 1 sw Y   y xY w)NrW   z/should be a 1d array or 2d array with 1 featurerM   )
r]   r_   Úc_rO   rž   rŸ   r   r   ra   r    )r  r&  r#   rQ   r'  s        r)   Ú)test_isotonic_2darray_more_than_1_featurer.  y  sæ   € ä
�	‰	�"‹€AÜ�5‰5��A�‰;€DÜ
�	‰	�"‹€Aà
;€CÜ	�‰”z¨Ô	-ñ *ÜÓ× Ñ   qÔ)÷*ô !Ó"×&Ñ& q¨!Ó,€GÜ	�‰”z¨Ô	-ñ Ø�‰˜Ô÷ô 
�‰”z¨Ô	-ñ  Ø×Ñ˜$Ô÷ ð  ÷*ð *ú÷ð ú÷ ð  ús$   ÁDÂ5DÃ*DÄDÄDÄD&c                  óü   — t        ddd¬«      \  } }t        j                  |«      }d|d<   |j                  «       }t	        ||¬«       t        ||«       t        «       j                  | ||¬«       t        ||«       y)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
    rW   r   r   ©rÝ   Ú
n_featuresr   r   r   N)r   r]   r  rô   r   r
   r   r   )r  r#   Úsample_weight_originalÚsample_weight_fits       r)   Ú6test_isotonic_regression_sample_weight_not_overwrittenr4  ‹  sz   € ô  R°AÀBÔG�D€A€qÜŸ\™\¨!›_ÐØ "Ð˜1ÑØ.×3Ñ3Ó5Ðä˜Ð):Õ;ÜÐ%Ð'=Ô>äÓ×Ñ˜Q Ð1BÐÔCÜÐ%Ð'=Õ>r+   r‡   Ú1dÚ2dc                 óV  — t        j                  d«      }| dk(  r|j                  dd«      }t        j                  d«      }t        «       j	                  ||«      }|j                  «       }t        |t         j                  «      sJ ‚|j                  t        k(  sJ ‚t        dg|«       y)z7Check `get_feature_names_out` for `IsotonicRegression`.rW   r6  rE   r   Úisotonicregression0N)r]   r_   r#  r   r   Úget_feature_names_outÚ
isinstanceÚndarrayrú   Úobjectr   )r‡   r  r#   ÚisoÚnamess        r)   Útest_get_feature_names_outr?  �  s†   € ô 	�	‰	�"‹€AØ�‚}Ø�I‰I�b˜!ÓˆÜ
�	‰	�"‹€Aä
Ó
×
"Ñ
" 1 aÓ
(€CØ×%Ñ%Ó'€EÜ�eœRŸZ™ZÔ(Ñ(Ø�;‰;œ&Ò Ñ ÜÐ-Ð.°Õ6r+   c                  óŠ  — t        j                  d«      } t        ddd¬«      \  }}t        «       }t	        j
                  d¬«      5  |j                  ||«       |j                  |«      }|j                  |«      }ddd«       t        | j                  «      sJ ‚t        t        j                  «      sJ ‚y# 1 sw Y   Œ>xY w)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
    ÚpandasrW   r   r›   r0  )Útransform_outputN)rO   Úimportorskipr   r   ÚsklearnÚconfig_contextr   r    ra   r:  Ú	DataFramer]   r;  )Úpdr  r#   Ú	regressorÚX_transr  s         r)   Ú'test_isotonic_regression_output_predictrJ  ¬  s¦   € ô 
×	Ñ	˜XÓ	&€BÜ R°AÀBÔG�D€A€qÜ"Ó$€IÜ	×	Ñ	°Ô	:ñ &Ø�‰�a˜ÔØ×%Ñ% aÓ(ˆØ×"Ñ" 1Ó%ˆ÷&ô
 �g˜rŸ|™|Ô,Ñ,Ü�fœbŸj™jÔ)Ñ)Ð)÷&ð &ús   Á5B9Â9C)Frô   rÊ   r0   Únumpyr]   rO   Úscipy.specialr   rD  Úsklearn.datasetsr   Úsklearn.isotonicr   r   r   r   Úsklearn.utilsr	   Úsklearn.utils._testingr
   r   r   Úsklearn.utils.validationr   r*   r6   r=   r?   rC   rJ   rR   rh   rn   rr   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.  r4  r?  rJ  © r+   r)   ú<module>rU     sº  ðÛ Û Û ã Û Ý ã Ý ,÷ó õ "÷ñ õ
 1ò7òò	ò	ò	ò	ò	òIò4
7ò
7ò&AòR>ò0Jòò$ò$'ò(5ò )ò/ò/òò "ò
Aò"ò)òX*ò,"1òJò/ð* ‡�×Ñ˜ R§X¡X¨r¯x©x¸¿¹ÀRÇZÁZÐ$PÓQñ+ó Rð+ò)ð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;ñ
!ó <ð
!ò
Fò'ð ‡�×Ñ˜¨¨e }Ó5ñ/ó 6ð/ò4&ò, ò$?ð$ ‡�×Ñ˜ 4¨ ,Ó/ñ7ó 0ð7ó*r+   