ó
    ¦ñ:i¦¡  ã            
       óJ  • S SK rS SKrS SKJr  S SKJrJr  S SKJ	r	J
r
JrJrJrJr  S SKJrJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SK J!r!J"r"  S SK#J$r$  S SK%J&r&J'r'J(r(J)r)J*r*J+r+  S SK,J-r-  S SK.J/r/J0r0  S SK1J2r2J3r3  S SK4J5r5  S SK6J7r7  S SK8J9r9  S SK:J;r;J<r<J=r=J>r>  S SK?J@r@  S SKAJBrB  SrC\Rˆ                  " SS9S 5       rE\RŒ                  R�                  S\B5      \RŒ                  R�                  SSS/5      \RŒ                  R�                  S S!S"/5      S# 5       5       5       rHS$ rI\RŒ                  R�                  S S!S"/5      S% 5       rJS& rK\RŒ                  R�                  SSS/5      \RŒ                  R�                  S S!S"/5      S' 5       5       rL\RŒ                  R�                  SSS/5      \RŒ                  R�                  S S!S"/5      S( 5       5       rM\RŒ                  R�                  SSS/5      \RŒ                  R�                  S S!S"/5      \RŒ                  R�                  S)\N" S*5      5      S+ 5       5       5       rOS, rP\RŒ                  R�                  S\B5      S- 5       rQ\RŒ                  R�                  SSS/5      S. 5       rRS/ rSS0 rT\RŒ                  R�                  S S!S"/5      S1 5       rU\RŒ                  R�                  S S!S"/5      S2 5       rV\RŒ                  R�                  S S!S"/5      S3 5       rW\RŒ                  R�                  S4\R°                  R³                  S55      Rµ                  S6S7S*5      \R°                  R³                  S55      Rµ                  S6S7S*S85      /5      S9 5       r[\Rˆ                  S: 5       r\\Rˆ                  S; 5       r]S< r^\RŒ                  R�                  S=\R¾                  " \5" S>S?9S*5      \R¾                  " \5" S>S?9S@5      /5      SA 5       r`SB raSC rb\Rˆ                  " SS9SD 5       rc\Rˆ                  " SS9SE 5       rd\RŒ                  R�                  SFS7SG/5      \RŒ                  R�                  SHSISJ/5      SK 5       5       reSL rf\RŒ                  R�                  SMSNSO/5      SP 5       rgSQ rh\RŒ                  R�                  SRSSST/5      SU 5       riSV rj\RŒ                  R�                  SW\k\l/5      SX 5       rm\RŒ                  R�                  SW\k\l/5      SY 5       rn\RŒ                  R�                  SZ/ S[Q5      S\ 5       ro\RŒ                  R�                  SSS/5      \RŒ                  R�                  S S!S"/5      S] 5       5       rp\RŒ                  R�                  S^S_S`/5      Sa 5       rq\RŒ                  R�                  SbSc/\C-  \Rä                  " \C5      /5      Sd 5       rsSe rt\RŒ                  R�                  SSS/5      \RŒ                  R�                  S S!S"/5      Sf 5       5       ruSg rvSh rwSi rxSj rySk rzg)lé    N)Úassert_allclose)ÚBaseEstimatorÚclone)ÚCalibratedClassifierCVÚCalibrationDisplayÚ_CalibratedClassifierÚ_sigmoid_calibrationÚ_SigmoidCalibrationÚcalibration_curve)Ú	load_irisÚ
make_blobsÚmake_classification)ÚDummyClassifier)ÚRandomForestClassifierÚVotingClassifier)ÚNotFittedError)ÚDictVectorizer)ÚSimpleImputer)ÚIsotonicRegression)ÚLogisticRegressionÚSGDClassifier)Úbrier_score_loss)ÚKFoldÚLeaveOneOutÚcheck_cvÚcross_val_predictÚcross_val_scoreÚtrain_test_split)ÚMultinomialNB)ÚPipelineÚmake_pipeline)ÚLabelEncoderÚStandardScaler)Ú	LinearSVC)ÚDecisionTreeClassifier)ÚCheckingClassifier)Ú_convert_containerÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)Úsoftmax)ÚCSR_CONTAINERSéÈ   Úmodule)Úscopec                  ó*   • [        [        SSS9u  pX4$ )Né   é*   ©Ú	n_samplesÚ
n_featuresÚrandom_state)r   Ú	N_SAMPLES©ÚXÚys     Úa/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/sklearn/tests/test_calibration.pyÚdatar<   7   s   € ä¬¸qÈrÑR�D€AØˆ4€Kó    Úcsr_containerÚmethodÚsigmoidÚisotonicÚensembleTFc                 ó~  • [         S-  nU u  pV[        R                  R                  SS9R	                  UR
                  S9nXUR                  5       -  nUS U US U US U p©nXTS  XdS  pË[        5       R                  X‰U
S9nUR                  U5      S S 2S4   n[        XÖR
                  S-   US9n[        R                  " [        5         UR                  XV5        S S S 5        X‹4U" U5      U" U5      44 GH0  u  nn[        XÑSUS	9nUR                  UXšS9  UR                  U5      S S 2S4   n[        XÎ5      [        UU5      :”  d   eUR                  UU	S-   U
S9  UR                  U5      S S 2S4   n[        UU5        UR                  USU	-  S-
  U
S9  UR                  U5      S S 2S4   n[        UU5        UR                  UU	S-   S-  U
S9  UR                  U5      S S 2S4   nUS
:X  a  [        USU-
  5        GM  [        XÎ5      [        US-   S-  U5      :”  a  GM1   e   g ! , (       d  f       GNX= f)Né   r2   ©Úseed©Úsize©Úsample_weighté   ©ÚcvrB   é   ©r?   rM   rB   r@   )r7   ÚnpÚrandomÚRandomStateÚuniformrH   Úminr   ÚfitÚpredict_probar   ÚpytestÚraisesÚ
ValueErrorr   r)   )r<   r?   r>   rB   r4   r9   r:   rJ   ÚX_trainÚy_trainÚsw_trainÚX_testÚy_testÚclfÚprob_pos_clfÚcal_clfÚthis_X_trainÚthis_X_testÚprob_pos_cal_clfÚprob_pos_cal_clf_relabeleds                       r;   Útest_calibrationrf   =   st  € ô
 ˜Q‘€IØ�D€AÜ—I‘I×)Ñ)¨rÐ)Ð2×:Ñ:ÀÇÁÐ:ÐG€Mà�‰‹�L€Að "# : I °°*°9°¸}ÈZÈiÐ?X�h€GØ�z�] A j MˆFô ‹/×
Ñ
˜g¸hÐ
Ð
G€CØ×$Ñ$ VÓ,ªQ°¨TÑ2€Lä$ S¯V©V°a©ZÀ(ÑK€GÜ	�Š”zÕ	"Ø�‰�AÔ÷ 
#ð
 
ÐÙ	�wÓ	¡¨vÓ!6Ð7ô&Ñ!ˆ�kô )¨ÀÈHÑUˆð 	�‰�L 'ˆÑBØ"×0Ñ0°Ó=ºaÀ¸dÑCÐô   Ó5Ô8HØÐ$ó9
ó 
ð 	
ð 
ð
 	�‰�L '¨A¡+¸XˆÑFØ%,×%:Ñ%:¸;Ó%GÊÈ1ÈÑ%MÐ"Ü!Ð"2Ð4NÔOð 	�‰�L ! g¡+°¡/ÀˆÑJØ%,×%:Ñ%:¸;Ó%GÊÈ1ÈÑ%MÐ"Ü!Ð"2Ð4NÔOð 	�‰�L 7¨Q¡;°!Ñ"3À8ˆÑLØ%,×%:Ñ%:¸;Ó%GÊÈ1ÈÑ%MÐ"Ø�YÓÜ%Ð&6¸Ð<VÑ8V×Wô $ FÓ9Ô<LØ˜!‘˜qÑ Ð"<ó=ö ð ð òC&÷	 
#Ö	"ús   Ã
H-È-
H<c                 ó    • U u  p[        SS9nUR                  X5        UR                  S   R                  n[	        U[
        5      (       d   eg )NrD   ©rM   r   )r   rU   Úcalibrated_classifiers_Ú	estimatorÚ
isinstancer$   )r<   r9   r:   Ú	calib_clfÚbase_ests        r;   Ú"test_calibration_default_estimatorrn   {   sH   € à�D€AÜ&¨!Ñ,€IØ‡M�M�!Ôà×0Ñ0°Ñ3×=Ñ=€HÜ�h¤	×*Ñ*Ð*Ñ*r=   c                 ó  • U u  p#Sn[        US9n[        XQS9n[        UR                  [         5      (       d   eUR                  R                  U:X  d   eUR                  X#5        U(       a  UOSn[        UR                  5      U:X  d   eg )NrN   ©Ún_splitsrL   rK   )r   r   rk   rM   rq   rU   Úlenri   )r<   rB   r9   r:   ÚsplitsÚkfoldrl   Úexpected_n_clfs           r;   Útest_calibration_cv_splitterrv   …   s�   € ð �D€Aà€FÜ˜6Ñ"€EÜ&¨%ÑC€IÜ�i—l‘l¤E×*Ñ*Ð*Ð*Ø�<‰<× Ñ  FÓ*Ð*Ð*à‡M�M�!ÔÞ'‘V¨Q€NÜˆy×0Ñ0Ó1°^ÓCÐCÑCr=   c                 óf  • U u  p[        SS9n[        USS9n[        R                  " [        SS9   UR                  X5        S S S 5        [        [        5       SS9n[        R                  " [        SS9   UR                  X5        S S S 5        g ! , (       d  f       NT= f! , (       d  f       g = f)Née   rp   TrL   z$Requesting 101-fold cross-validation©Úmatchz!LeaveOneOut cross-validation does)r   r   rW   rX   rY   rU   r   )r<   r9   r:   rt   rl   s        r;   Útest_calibration_cv_nfoldr{   •   sˆ   € à�D€Aä˜3Ñ€EÜ&¨%¸$Ñ?€IÜ	�Š”zÐ)OÓ	PØ�‰�aÔ÷ 
Qô '¬+«-À$ÑG€IÜ	�Š”zÐ)LÓ	MØ�‰�aÔ÷ 
NÐ	M÷	 
QÕ	Pú÷ 
NÕ	Mús   ±BÁ6B"Â
BÂ"
B0c                 ó¦  • [         S-  nU u  pE[        R                  R                  SS9R	                  [        U5      S9nUS U US U US U p˜nXCS  n
[        SS9n[        X±US9nUR                  XxU	S9  UR                  U
5      nUR                  Xx5        UR                  U
5      n[        R                  R                  XÞ-
  5      nUS:”  d   eg )	NrD   r2   rE   rG   ©r6   )r?   rB   rI   çš™™™™™¹?)r7   rP   rQ   rR   rS   rr   r$   r   rU   rV   ÚlinalgÚnorm)r<   r?   rB   r4   r9   r:   rJ   rZ   r[   r\   r]   rj   Úcalibrated_clfÚprobs_with_swÚprobs_without_swÚdiffs                   r;   Útest_sample_weightr…   £   sß   € ô ˜Q‘€IØ�D€Aä—I‘I×)Ñ)¨rÐ)Ð2×:Ñ:ÄÀAÃÐ:ÐG€MØ!" : I °°*°9°¸}ÈZÈiÐ?X�h€GØˆzˆ]€Fä rÑ*€IÜ+¨IÈxÑX€NØ×Ñ�w°xÐÑ@Ø"×0Ñ0°Ó8€Mð ×Ñ�wÔ(Ø%×3Ñ3°FÓ;Ðä�9‰9�>‰>˜-Ñ:Ó;€DØ�#‹:Ð‰:r=   c                 ó&  • U u  p4[        X4SS9u  pVpx[        [        5       [        SS95      n	[	        X‘SUS9n
U
R                  XW5        U
R                  U5      n[	        X‘SUS9nUR                  XW5        UR                  U5      n[        X½5        g)zTest parallel calibrationr2   r}   rD   )r?   Ún_jobsrB   rK   N)r   r!   r#   r$   r   rU   rV   r   )r<   r?   rB   r9   r:   rZ   r]   r[   r^   rj   Úcal_clf_parallelÚprobs_parallelÚcal_clf_sequentialÚprobs_sequentials                 r;   Útest_parallel_executionrŒ   »   s�   € ð �D€AÜ'7¸È2Ñ'NÑ$€G�WäœnÓ.´	ÀrÑ0JÓK€Iä-Ø¨°XñÐð ×Ñ˜Ô*Ø%×3Ñ3°FÓ;€Nä/Ø¨°XñÐð ×Ñ˜7Ô,Ø)×7Ñ7¸Ó?Ðä�NÕ5r=   rF   rD   c                 óž  • S n[        SS9n[        SSUSSS9u  pVS	XfS	:„  '   [        R                  " U5      R                  S
   nUS S S	2   US S S	2   p˜USS S	2   USS S	2   pºUR                  X‰5        [        X@SUS9nUR                  X‰5        UR                  U
5      n[        [        R                  " USS9[        R                  " [        U
5      5      5        SUR                  X«5      s=:  a  S:  d   e   eUR                  X«5      SUR                  X«5      -  :”  d   eU" U[        UR                  U
5      5      US9nU" X½US9nUSU-  :  d   e[        SSS9nUR                  X‰5        UR                  U
5      nU" UUUS9n[        X@SUS9nUR                  X‰5        UR                  U
5      nU" UUUS9nUSU-  :  d   eg )Nc                 óŠ   • [         R                  " U5      U    n[         R                  " X1-
  S-  5      UR                  S   -  $ )NrD   r   )rP   ÚeyeÚsumÚshape)Úy_trueÚ
proba_predÚ	n_classesÚY_onehots       r;   Úmulticlass_brierÚ5test_calibration_multiclass.<locals>.multiclass_brierÙ   s:   € Ü—6’6˜)Ó$ VÑ,ˆÜ�vŠv�xÑ,°Ñ2Ó3°h·n±nÀQÑ6GÑGÐGr=   é   r}   iô  éd   é
   ç      .@©r4   r5   r6   ÚcentersÚcluster_stdrD   r   rK   rN   rO   ©ÚaxisçÍÌÌÌÌÌä?gffffffî?)r”   gš™™™™™ñ?é   r2   )Ún_estimatorsr6   )r$   r   rP   Úuniquer‘   rU   r   rV   r   r�   Úonesrr   Úscorer+   Údecision_functionr   )r?   rB   rF   r–   r_   r9   r:   r”   rZ   r[   r]   r^   ra   ÚprobasÚuncalibrated_brierÚcalibrated_brierÚ	clf_probsÚcal_clf_probss                     r;   Útest_calibration_multiclassr­   Ó   só  € òHô  Ñ
#€CÜØ #°DÀ"ÐRVñ�D€Að €Aˆ!�e�HÜ—	’	˜!“×"Ñ" 1Ñ%€IØ™˜1˜‘v˜q¡ 1 ™vˆWØ�q�t˜!�t‘W˜a   1 ™gˆFà‡G�GˆGÔä$ S¸AÈÑQ€GØ‡K�K�Ô!Ø×"Ñ" 6Ó*€Fä”B—F’F˜6¨Ñ*¬B¯GªG´C¸³KÓ,@ÔAð
 �#—)‘)˜FÓ+Õ2¨dÓ2Ð2Ñ2Ð2Ð2ð �=‰=˜Ó(¨4°#·)±)¸FÓ2KÑ+KÓKÐKÐKñ
 *Ø”˜×-Ñ-¨fÓ5Ó6À)ñÐñ (¨À)ÑLÐà˜cÐ$6Ñ6Ó6Ð6Ð6ô !¨b¸rÑ
B€CØ‡G�GˆGÔØ×!Ñ! &Ó)€IÙ)¨&°)ÀyÑQÐä$ S¸AÈÑQ€GØ‡K�K�Ô!Ø×)Ñ)¨&Ó1€MÙ'¨°ÈÑSÐØ˜cÐ$6Ñ6Ó6Ð6Ñ6r=   c                  óô   •  " S S5      n [        SSSSSS9u  p[        5       R                  X5      nU " 5       n[        X4/UR                  S9nUR                  U5      n[        US	UR                  -  5        g )
Nc                   ó   • \ rS rSrS rSrg)Ú9test_calibration_zero_probability.<locals>.ZeroCalibratori  c                 óH   • [         R                  " UR                  S   5      $ )Nr   )rP   Úzerosr‘   ©Úselfr9   s     r;   ÚpredictÚAtest_calibration_zero_probability.<locals>.ZeroCalibrator.predict  s   € Ü—8’8˜AŸG™G A™JÓ'Ð'r=   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rµ   Ú__static_attributes__r·   r=   r;   ÚZeroCalibratorr°     s   † õ	(r=   r½   é2   rš   r˜   r›   rœ   )rj   ÚcalibratorsÚclassesç      ð?)r   r   rU   r   Úclasses_rV   r   Ú
n_classes_)r½   r9   r:   r_   Ú
calibratorra   r¨   s          r;   Ú!test_calibration_zero_probabilityrÅ     s~   € ÷
(ñ (ô
 Ø °!¸RÈTñ�D€Aô Ó
×
Ñ
 Ó
%€CÙÓ!€JÜ#Ø <¸¿¹ñ€Gð ×"Ñ" 1Ó%€Fô �F˜C #§.¡.Ñ0Õ1r=   c                 ó´  • Sn[        SU-  SSS9u  p#[        R                  R                  SS9R	                  UR
                  S9nX"R                  5       -  nUSU USU USU pvnX!S	U-   X1S	U-   XAS	U-   p©nUS	U-  S US	U-  S pË[        5       n[        US
S9n[        R                  " [        5         UR                  X‰5        SSS5        UR                  XVU5        UR                  U5      SS2S4   nX‹4U " U5      U " U5      44 H´  u  nnS H¨  n[        UUS
S9nU
S4 H’  nUR                  UU	US9  UR                  U5      nUR                  U5      nUSS2S4   n[        U[        R                   " SS/5      [        R"                  " USS9   5        [%        XÏ5      [%        UU5      :”  a  M’   e   Mª     M¶     g! , (       d  f       GN= f)z*Test calibration for prefitted classifiersr¾   é   r1   r2   r3   rE   rG   NrD   Úprefitrh   rK   )rA   r@   )r?   rM   rI   r   rŸ   )r   rP   rQ   rR   rS   rH   rT   r   r   rW   rX   r   rU   rV   rµ   r*   ÚarrayÚargmaxr   )r>   r4   r9   r:   rJ   rZ   r[   r\   ÚX_calibÚy_calibÚsw_calibr]   r^   r_   Ú	unfit_clfr`   Úthis_X_calibrc   r?   ra   ÚswÚy_probÚy_predrd   s                           r;   Útest_calibration_prefitrÓ   .  s  € ð €IÜ¨¨Y©À1ÐSUÑV�D€AÜ—I‘I×)Ñ)¨rÐ)Ð2×:Ñ:ÀÇÁÐ:ÐG€Mà�‰‹�L€Að "# : I °°*°9°¸}ÈZÈiÐ?X�h€Gà	�a˜)‘mÐ$Ø	�a˜)‘mÐ$Ø ! i¡-Ð0ð €Gð
 �q˜9‘}�Ð'¨¨1¨y©=¨?Ð);ˆFô ‹/€Cä& s¨xÑ8€IÜ	�Š”~Õ	&Ø�‰�gÔ'÷ 
'ð ‡G�GˆG˜hÔ'Ø×$Ñ$ VÓ,ªQ°¨TÑ2€Lð 
ÐÙ	�wÓ	¡¨vÓ!6Ð7ó&Ñ!ˆ�kó .ˆFÜ,¨S¸ÀHÑMˆGà Ó&�Ø—‘˜L¨'À�ÑDØ ×.Ñ.¨{Ó;�Ø Ÿ™¨Ó5�Ø#)ª!¨Q¨$¡<Ð Ü" 6¬2¯8ª8°Q¸°FÓ+;¼B¿IºIÀfÐSTÑ<UÑ+VÔWä'¨Ó=Ô@PØÐ,óAõ ð ð ó 'ó .ò	&÷ 
'Ö	&ús   Â8GÇ
Gc                 ór  • U u  p#[        SS9n[        XASSS9nUR                  X#5        UR                  U5      n[	        XBUSSS9nUS:X  a
  [        S	S
9nO
[        5       nUR                  Xs5        UR                  X#5        UR                  U5      n	UR                  U	5      n
[        US S 2S4   U
5        g )Nr˜   r}   rÇ   FrO   r§   )rM   r?   rA   Úclip)Úout_of_boundsrK   )
r$   r   rU   rV   r   r   r
   r§   rµ   r   )r<   r?   r9   r:   r_   ra   Ú
cal_probasÚunbiased_predsrÄ   Úclf_dfÚmanual_probass              r;   Útest_calibration_ensemble_falserÛ   ^  s¶   € ð �D€AÜ
 Ñ
#€Cä$ S¸AÈÑN€GØ‡K�K�ÔØ×&Ñ& qÓ)€Jô ' s¨q°QÐ?RÑS€NØ�ÓÜ'°fÑ=‰
ä(Ó*ˆ
Ø‡N�N�>Ô%à‡G�GˆA„MØ×"Ñ" 1Ó%€FØ×&Ñ& vÓ.€MÜ�Jšq !˜tÑ$ mÕ4r=   c                  ó>  • [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " SS/5      n[        U[        X5      S5        SS[         R                  " US   U -  US   -   5      -   -  n[        5       R                  X5      R                  U 5      n[        X4S	5        [        R                  " [        5         [        5       R                  [         R                  " X 45      U5        S
S
S
5        g
! , (       d  f       g
= f)z0Test calibration values with Platt sigmoid model)rN   éüÿÿÿrÁ   )rK   éÿÿÿÿrÞ   g¿j˜=ïÉ¿gY90¯(àä?rÇ   rÁ   r   rK   r1   N)rP   rÉ   r)   r	   Úexpr
   rU   rµ   rW   rX   rY   Úvstack)ÚexFÚexYÚAB_lin_libsvmÚlin_probÚsk_probs        r;   Útest_sigmoid_calibrationræ   w  sÑ   € ä
�(Š(’<Ó
 €CÜ
�(Š(’;Ó
€Cä—H’HÐ2Ð4GÐHÓI€MÜ˜mÔ-AÀ#Ó-KÈQÔOØ�cœBŸFšF =°Ñ#3°cÑ#9¸MÈ!Ñ<LÑ#LÓMÑMÑN€HÜ!Ó#×'Ñ'¨Ó1×9Ñ9¸#Ó>€GÜ˜h°Ô3ô 
�Š”zÕ	"ÜÓ×!Ñ!¤"§)¢)¨S¨JÓ"7¸Ô=÷ 
#×	"Ö	"ús   Ã0DÄ
Dc                  ó  • [         R                  " / SQ5      n [         R                  " / SQ5      n[        XSS9u  p#[        U5      [        U5      :X  d   e[        U5      S:X  d   e[	        USS/5        [	        USS/5        [
        R                  " [        5         [        S/S	/5        S
S
S
5        [         R                  " / SQ5      n[         R                  " / SQ5      n[        XESSS9u  pg[        U5      [        U5      :X  d   e[        U5      S:X  d   e[	        USS/5        [	        USS/5        [
        R                  " [        5         [        XESS9  S
S
S
5        g
! , (       d  f       NÀ= f! , (       d  f       g
= f)z Check calibration_curve function)r   r   r   rK   rK   rK   )ç        r~   çš™™™™™É?çš™™™™™é?çÍÌÌÌÌÌì?rÁ   rD   ©Ún_binsr   rK   r~   rë   gš™™™™™¹¿N)r   r   r   r   rK   rK   )rè   r~   ré   ç      à?rë   rÁ   Úquantile©rí   ÚstrategygUUUUUUå?rê   Ú
percentile)rñ   )rP   rÉ   r   rr   r(   rW   rX   rY   )r’   rÒ   Ú	prob_trueÚ	prob_predÚy_true2Úy_pred2Úprob_true_quantileÚprob_pred_quantiles           r;   Útest_calibration_curverù   ˆ  sI  € ä�XŠXÒ(Ó)€FÜ�XŠXÒ4Ó5€FÜ,¨VÀAÑFÑ€IÜˆy‹>œS ›^Ó+Ð+Ð+Üˆy‹>˜QÓÐÐÜ˜	 A q 6Ô*Ü˜	 C¨ :Ô.ô 
�Š”zÕ	"Ü˜1˜# ˜vÔ&÷ 
#ô �hŠhÒ)Ó*€GÜ�hŠhÒ5Ó6€GÜ->Ø ¨Zñ.Ñ*Ðô Ð!Ó"¤cÐ*<Ó&=Ó=Ð=Ð=ÜÐ!Ó" aÓ'Ð'Ð'ÜÐ*¨Q°¨JÔ7ÜÐ*¨S°#¨JÔ7ô 
�Š”zÕ	"Ü˜'°\ÒB÷ 
#Ð	"÷! 
#Õ	"ú÷  
#Õ	"ús   ÂE'ÅE8Å'
E5Å8
Fc                 óä   • [        SSSSSS9u  p[        R                  US'   [        S[	        5       4S[        S	S
94/5      n[        USSU S9nUR                  X5        UR                  U5        g)z$Test that calibration can accept nanrš   rD   r   r2   )r4   r5   Ún_informativeÚn_redundantr6   ©r   r   ÚimputerÚrfrK   )r£   rA   )rM   r?   rB   N)	r   rP   Únanr    r   r   r   rU   rµ   )rB   r9   r:   r_   Úclf_cs        r;   Útest_calibration_nan_imputerr  §  sy   € ô Ø °!ÀÐQSñ�D€Aô �f‰f€A€d�GÜ
Ø
”]“_Ð	%¨Ô.DÐRSÑ.TÐ'UÐVó€Cô # 3¨1°ZÈ(ÑS€EØ	‡I�Iˆa„OØ	‡M�M�!Õr=   c                 óÒ   • [        SSSS9u  p/ SQn[        SSS9n[        US	[        S
S9U S9nUR	                  X5        [        UR                  U5      R                  SS9S5        g )Nrš   rN   rD   )r4   r5   r”   )
rK   rK   rK   rK   rK   r   r   r   r   r   rÁ   r˜   )ÚCr6   r@   rÇ   rp   rO   rK   rŸ   )r   r$   r   r   rU   r   rV   r�   )rB   r9   Ú_r:   r_   Úclf_probs         r;   Útest_calibration_prob_sumr  ¶  sn   € ô ¨¸ÀQÑG�D€AÚ&€AÜ
�c¨Ñ
*€Cä%Ø�I¤%°Ñ"3¸hñ€Hð ‡L�L�ÔÜ�H×*Ñ*¨1Ó-×1Ñ1°qÐ1Ð9¸3Õ?r=   c           	      óÊ  • [         R                  R                  SS5      n/ SQ/ SQ-   / SQ-   n[        SS9n[	        US[        S	5      U S
9nUR                  X5        U (       a§  [         R                  " S5      n[        SS/SS	/5       H|  u  pgUR                  U   R                  U5      n[        US S 2U4   [         R                  " [        U5      5      5        [         R                  " US S 2XW:g  4   S:„  5      (       a  M|   e   g UR                  S   R                  U5      n[        UR!                  SS9[         R"                  " UR$                  S   5      5        g )Né   rN   )r   r   r   rK   )rK   rK   rD   rD   )rD   rÇ   rÇ   rÇ   r˜   r}   r@   rÇ   rO   é   r   rD   rK   rŸ   )rP   rQ   Úrandnr%   r   r   rU   ÚarangeÚzipri   rV   r*   r²   rr   Úallr)   r�   r¥   r‘   )	rB   r9   r:   r_   ra   rÀ   Úcalib_iÚclass_iÚprobas	            r;   Útest_calibration_less_classesr  Å  s'  € ô 	�	‰	�‰˜˜AÓ€AÚ’|Ñ#¢lÑ2€AÜ
 ¨aÑ
0€CÜ$Ø�I¤%¨£(°Xñ€Gð ‡K�K�ÔæÜ—)’)˜A“,ˆÜ # Q¨ F¨Q°¨FÖ 3ÑˆGØ×3Ñ3°GÑ<×JÑJÈ1ÓMˆEä˜u¢Q¨ ZÑ0´"·(²(¼3¸q»6Ó2BÔCä—6’6˜%¢ 7Ñ#5Ð 5Ñ6¸Ñ:×;Ó;Ð;Ð;ò !4ð ×/Ñ/°Ñ2×@Ñ@ÀÓCˆÜ! %§)¡)° )Ð"3´R·W²W¸U¿[¹[È¹^Ó5LÕMr=   r9   r2   é   rN   r1   c                 ól   • / SQn " S S[         5      n[        U" 5       5      nUR                  X5        g)z;Test that calibration accepts n-dimensional arrays as input)rK   r   r   rK   rK   r   rK   rK   r   r   rK   r   r   rK   r   c                   ó(   • \ rS rSrSrSrS rS rSrg)Ú>test_calibration_accepts_ndarray.<locals>.MockTensorClassifieriî  z*A toy estimator that accepts tensor inputsÚ
classifierc                 ó<   • [         R                  " U5      U l        U $ ©N)rP   r¤   rÂ   )r´   r9   r:   s      r;   rU   ÚBtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.fitó  s   € ÜŸIšI a›LˆDŒMØˆKr=   c                 óZ   • UR                  UR                  S   S5      R                  SS9$ )Nr   rÞ   rK   rŸ   )Úreshaper‘   r�   r³   s     r;   r§   ÚPtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.decision_function÷  s)   € à—9‘9˜QŸW™W Q™Z¨Ó,×0Ñ0°aÐ0Ð8Ð8r=   )rÂ   N)	r¸   r¹   rº   r»   Ú__doc__Ú_estimator_typerU   r§   r¼   r·   r=   r;   ÚMockTensorClassifierr  î  s   † Ù8à&ˆò	õ	9r=   r   N)r   r   rU   )r9   r:   r   r�   s       r;   Ú test_calibration_accepts_ndarrayr!  ã  s3   € ò 	6€Aô9œ}ô 9ô ,Ñ,@Ó,BÓC€Nà×Ñ�qÕr=   c                  ó,   • SSS.SSS.SSS./n / SQnX4$ )NÚNYÚadult)ÚstateÚageÚTXÚVTÚchild)rK   r   rK   r·   )Ú	dict_dataÚtext_labelss     r;   r*  r*     s3   € ð ˜wÑ'Ø˜wÑ'Ø˜wÑ'ð€Iò
 €KØÐ!Ð!r=   c                 ón   • U u  p[        S[        5       4S[        5       4/5      nUR                  X5      $ )NÚ
vectorizerr_   )r    r   r   rU   )r*  r9   r:   Úpipeline_prefits       r;   Údict_data_pipeliner/    s?   € à�D€AÜØ
œÓ(Ð	)¨EÔ3IÓ3KÐ+LÐMó€Oð ×Ñ˜qÓ$Ð$r=   c                 ó  • U u  p#Un[        USS9nUR                  X#5        [        UR                  UR                  5        [	        US5      (       a   e[	        US5      (       a   eUR                  U5        UR                  U5        g)a>  Test that calibration works in prefit pipeline with transformer

`X` is not array-like, sparse matrix or dataframe at the start.
See https://github.com/scikit-learn/scikit-learn/issues/8710

Also test it can predict without running into validation errors.
See https://github.com/scikit-learn/scikit-learn/issues/19637
rÈ   rh   Ún_features_in_N)r   rU   r*   rÂ   Úhasattrrµ   rV   )r*  r/  r9   r:   r_   rl   s         r;   Útest_calibration_dict_pipeliner3    s„   € ð �D€AØ
€CÜ& s¨xÑ8€IØ‡M�M�!Ôä�y×)Ñ)¨3¯<©<Ô8ô �sÐ,×-Ñ-Ð-Ð-Ü�yÐ"2×3Ñ3Ð3Ð3ð ×Ñ�aÔØ×Ñ˜AÕr=   zclf, cvrK   ©r  rÈ   c                 ó¸  • [        SSSSS9u  p#US:X  a  U R                  X#5      n [        XS9nUR                  X#5        US:X  a=  [        UR                  U R                  5        UR
                  U R
                  :X  d   eg [        5       R                  U5      R                  n[        UR                  U5        UR
                  UR                  S   :X  d   eg )	Nrš   rN   rD   r˜   ©r4   r5   r”   r6   rÈ   rh   rK   )r   rU   r   r*   rÂ   r1  r"   r‘   )r_   rM   r9   r:   rl   rÀ   s         r;   Útest_calibration_attributesr7  .  sº   € ô ¨¸ÀQÐUVÑW�D€AØ	ˆXƒ~Ø�g‰g�a‹mˆÜ& sÑ2€IØ‡M�M�!Ôà	ˆXƒ~Ü˜9×-Ñ-¨s¯|©|Ô<Ø×'Ñ'¨3×+=Ñ+=Ó=Ð=Ñ=ä“.×$Ñ$ QÓ'×0Ñ0ˆÜ˜9×-Ñ-¨wÔ7Ø×'Ñ'¨1¯7©7°1©:Ó5Ð5Ñ5r=   c                  ó  • [        SSSSS9u  p[        SS9R                  X5      n[        USS	9nS
n[        R
                  " [        US9   UR                  U S S 2S S24   U5        S S S 5        g ! , (       d  f       g = f)Nrš   rN   rD   r˜   r6  rK   r4  rÈ   rh   zAX has 3 features, but LinearSVC is expecting 5 features as input.ry   rÇ   )r   r$   rU   r   rW   rX   rY   )r9   r:   r_   rl   Úmsgs        r;   Ú2test_calibration_inconsistent_prefit_n_features_inr:  F  sp   € ô ¨¸ÀQÐUVÑW�D€AÜ
�a‰.×
Ñ
˜QÓ
"€CÜ& s¨xÑ8€Ià
M€CÜ	�Š”z¨Ó	-Ø�‰�aš˜2˜A˜2˜‘h Ô"÷ 
.×	-Ö	-ús   ÁA1Á1
A?c            	      óö   • [        SSSSS9u  p[        [        S5       Vs/ s H  nS[        U5      -   [	        5       4PM     snSS	9nUR                  X5        [        US
S9nUR                  X5        g s  snf )Nrš   rN   rD   r˜   r6  rÇ   ÚlrÚsoft)Ú
estimatorsÚvotingrÈ   )rj   rM   )r   r   ÚrangeÚstrr   rU   r   )r9   r:   ÚiÚvoterl   s        r;   Ú!test_calibration_votingclassifierrD  R  sv   € ô ¨¸ÀQÐUVÑW�D€AÜÜCHÈÄ8ÓLÂ8¸a�TœC ›F‘]Ô$6Ó$8Ó9Á8ÑLØñ€Dð 	‡H�HˆQ„Nä&°¸(ÑC€Ià‡M�M�!Õùò Ms   ¡"A6c                  ó   • [        SS9$ )NT©Ú
return_X_y)r   r·   r=   r;   Ú	iris_datarH  b  s   € ä Ñ%Ð%r=   c                 ó&   • U u  pXS:     X"S:     4$ )NrD   r·   )rH  r9   r:   s      r;   Úiris_data_binaryrJ  g  s    € à�D€AØ�‰U‰8�Q˜1‘u‘XÐÐr=   rí   rš   rñ   rS   rï   c           	      ó  • Uu  pE[        5       R                  XE5      n[        R                  " XdXRUSS9nUR	                  U5      S S 2S4   n[        XXX#S9u  pš[        UR                  U	5        [        UR                  U
5        [        UR                  U5        UR                  S:X  d   eSS Kn[        UR                  UR                  R                  5      (       d   eUR                  R!                  5       S:X  d   e[        UR"                  UR$                  R&                  5      (       d   e[        UR(                  UR*                  R,                  5      (       d   eUR"                  R/                  5       S:X  d   eUR"                  R1                  5       S:X  d   eSS	/nUR"                  R3                  5       R5                  5       n[7        U5      [7        U5      :X  d   eU H  nUR9                  5       U;   a  M   e   g )
Nrê   )rí   rñ   ÚalpharK   rð   r   r   z.Mean predicted probability (Positive class: 1)z)Fraction of positives (Positive class: 1)úPerfectly calibrated)r   rU   r   Úfrom_estimatorrV   r   r   ró   rô   rÑ   Úestimator_nameÚ
matplotlibrk   Úline_ÚlinesÚLine2DÚ	get_alphaÚax_ÚaxesÚAxesÚfigure_ÚfigureÚFigureÚ
get_xlabelÚ
get_ylabelÚ
get_legendÚ	get_textsrr   Úget_text)ÚpyplotrJ  rí   rñ   r9   r:   r<  ÚvizrÑ   ró   rô   ÚmplÚexpected_legend_labelsÚlegend_labelsÚlabelss                  r;   Ú test_calibration_display_computerf  m  s¾  € ð �D€Aä	Ó	×	!Ñ	! !Ó	'€Bä
×
+Ò
+Ø
ˆq¨(¸#ñ€Cð ×Ñ˜aÓ ¢ A Ñ&€FÜ,Ø	˜&ñÑ€Iô �C—M‘M 9Ô-Ü�C—M‘M 9Ô-Ü�C—J‘J Ô'à×ÑÐ!5Ó5Ð5Ð5ó ä�c—i‘i §¡×!1Ñ!1×2Ñ2Ð2Ð2Ø�9‰9×ÑÓ  CÓ'Ð'Ð'Ü�c—g‘g˜sŸx™xŸ}™}×-Ñ-Ð-Ð-Ü�c—k‘k 3§:¡:×#4Ñ#4×5Ñ5Ð5Ð5à�7‰7×ÑÓÐ#SÓSÐSÐSØ�7‰7×ÑÓÐ#NÓNÐNÐNà2Ð4JÐKÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ò  r=   c                 ór  • Uu  p#[        [        5       [        5       5      nUR                  X#5        [        R
                  " XBU5      nUR                  S/nUR                  R                  5       R                  5       n[        U5      [        U5      :X  d   eU H  nUR                  5       U;   a  M   e   g )NrM  )r!   r#   r   rU   r   rN  rO  rU  r]  r^  rr   r_  )	r`  rJ  r9   r:   r_   ra  rc  rd  re  s	            r;   Ú$test_plot_calibration_curve_pipelinerh  ˜  sŸ   € à�D€AÜ
œÓ(Ô*<Ó*>Ó
?€CØ‡G�GˆA„MÜ
×
+Ò
+¨C°AÓ
6€Cà!×0Ñ0Ð2HÐIÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ò  r=   zname, expected_label)NÚ_line1)Úmy_estrj  c                 ó¸  • [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / 5      n[        X4XQS9nUR                  5         Uc  / OU/nUR	                  S5        UR
                  R                  5       R                  5       n[        U5      [        U5      :X  d   eU H  n	U	R                  5       U;   a  M   e   g )N©r   rK   rK   r   ©ré   rê   rê   çš™™™™™Ù?©rO  rM  )
rP   rÉ   r   ÚplotÚappendrU  r]  r^  rr   r_  )
r`  ÚnameÚexpected_labelró   rô   rÑ   ra  rc  rd  re  s
             r;   Ú'test_calibration_display_default_labelsrt  ¦  s´   € ô —’šÓ&€IÜ—’Ò-Ó.€IÜ�XŠX�b‹\€Fä
˜Y°6Ñ
O€CØ‡H�H„Jà#'¡<™R°d°VÐØ×!Ñ!Ð"8Ô9Ø—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ò  r=   c                 ó¸  • [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / 5      nSn[        XX4S9nUR                  U:X  d   eSnUR	                  US9  US/nUR
                  R                  5       R                  5       n[        U5      [        U5      :X  d   eU H  nUR                  5       U;   a  M   e   g )Nrl  rm  zname onero  zname two©rr  rM  )
rP   rÉ   r   rO  rp  rU  r]  r^  rr   r_  )	r`  ró   rô   rÑ   rr  ra  rc  rd  re  s	            r;   Ú)test_calibration_display_label_class_plotrw  ¹  sÆ   € ô —’šÓ&€IÜ—’Ò-Ó.€IÜ�XŠX�b‹\€Fà€DÜ
˜Y°6Ñ
O€CØ×Ñ Ó%Ð%Ð%Ø€DØ‡H�H�$€HÑà"Ð$:Ð;ÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ò  r=   Úconstructor_namerN  Úfrom_predictionsc                 ó¢  • Uu  p4Sn[        5       R                  X45      nUR                  U5      S S 2S4   n[        [        U 5      nU S:X  a  XcU4OXG4n	U" U	SU06n
U
R
                  U:X  d   eUR                  S5        U
R                  5         US/nU
R                  R                  5       R                  5       n[        U5      [        U5      :X  d   eU H  nUR                  5       U;   a  M   e   UR                  S5        SnU
R                  US9  [        U5      [        U5      :X  d   eU H  nUR                  5       U;   a  M   e   g )	Nzmy hand-crafted namerK   rN  rr  r  rM  Úanother_namerv  )r   rU   rV   Úgetattrr   rO  Úcloserp  rU  r]  r^  rr   r_  )rx  r`  rJ  r9   r:   Úclf_namer_   rÑ   ÚconstructorÚparamsra  rc  rd  re  s                 r;   Ú,test_calibration_display_name_multiple_callsr�  Í  sQ  € ð �D€AØ%€HÜ
Ó
×
"Ñ
" 1Ó
(€CØ×Ñ˜qÓ!¢! Q $Ñ'€FäÔ,Ð.>Ó?€KØ,Ð0@Ó@ˆc�a‰[ÀqÀk€Fá
�vÐ
- HÑ
-€CØ×Ñ Ó)Ð)Ð)Ø
‡L�L�ÔØ‡H�H„Jà&Ð(>Ð?ÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ñ  ð ‡L�L�ÔØ€HØ‡H�H�(€HÑÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ò  r=   c                 óD  • Uu  p#[        5       R                  X#5      n[        5       R                  X#5      n[        R                  " XBU5      n[        R                  " XRX6R
                  S9nUR
                  R                  5       S   nUR                  S5      S:X  d   eg )N)ÚaxrK   rM  )r   rU   r%   r   rN  rU  Úget_legend_handles_labelsÚcount)	r`  rJ  r9   r:   r<  Údtra  Úviz2re  s	            r;   Ú!test_calibration_display_ref_linerˆ  ð  s†   € à�D€AÜ	Ó	×	!Ñ	! !Ó	'€BÜ	Ó	!×	%Ñ	% aÓ	+€Bä
×
+Ò
+¨B°1Ó
5€CÜ×,Ò,¨R°A¿'¹'ÑB€Dà�X‰X×/Ñ/Ó1°!Ñ4€FØ�<‰<Ð.Ó/°1Ó4Ð4Ñ4r=   Údtype_y_strc                 ó8  • [         R                  R                  S5      n[         R                  " S/S-  S/S-  -   U S9nUR	                  SSUR
                  S9nS	n[        R                  " [        US
9   [        X#5        SSS5        g! , (       d  f       g= f)zKCheck error message when a `pos_label` is not specified with `str` targets.r2   ÚspamrÇ   ÚeggsrD   ©Údtyper   rG   z–y_true takes value in {'eggs', 'spam'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitlyry   N)
rP   rQ   rR   rÉ   ÚrandintrH   rW   rX   rY   r   )r‰  ÚrngÚy1Úy2Úerr_msgs        r;   Ú*test_calibration_curve_pos_label_error_strr”  ý  s   € ô �)‰)×
Ñ
 Ó
#€CÜ	�Š�6�(˜Q‘, & ¨A¡Ñ-°[Ñ	A€BØ	�‰�Q˜ §¡ˆÐ	(€Bð	$ð ô
 
�Š”z¨Ó	1Ü˜"Ô!÷ 
2×	1Ö	1ús   Á6BÂ
Bc                 ó€  • [         R                  " / SQ5      n[         R                  " SS/U S9nX!   n[         R                  " / SQ5      n[        XSS9u  pV[        U/ SQ5        [        X4SSS	9u  pV[        U/ SQ5        [        US
U-
  SSS	9u  pV[        U/ SQ5        [        US
U-
  SSS	9u  pV[        U/ SQ5        g)z8Check the behaviour when passing explicitly `pos_label`.)	r   r   r   rK   rK   rK   rK   rK   rK   r‹  Úeggr�  )	r~   ré   g333333Ó?rn  r¡   gffffffæ?rê   rë   rÁ   r
  rì   )r   rî   rK   rK   )rí   Ú	pos_labelrK   r   )r   r   rî   rK   N)rP   rÉ   r   r   )r‰  r’   rÀ   Ú
y_true_strrÒ   ró   r  s          r;   Ú test_calibration_curve_pos_labelr™    s²   € ô �XŠXÒ1Ó2€FÜ�hŠh˜ �¨kÑ:€GØ‘€JÜ�XŠXÒDÓE€Fô % V¸AÑ>�L€IÜ�Iš~Ô.ä$ ZÀÈUÑS�L€IÜ�Iš~Ô.ä$ V¨Q°©ZÀÈQÑO�L€IÜ�Iš~Ô.Ü$ Z°°V±ÀAÐQWÑX�L€IÜ�Iš~Õ.r=   zpos_label, expected_pos_label))NrK   rý   )rK   rK   c                 ó¶  • Uu  pE[        5       R                  XE5      n[        R                  " XdXRS9nUR	                  U5      SS2U4   n[        XXUS9u  pš[        UR                  U	5        [        UR                  U
5        [        UR                  U5        UR                  R                  5       SU S3:X  d   eUR                  R                  5       SU S3:X  d   eUR                  R                  S/nUR                  R                  5       R!                  5       n[#        U5      [#        U5      :X  d   eU H  nUR%                  5       U;   a  M   e   g)z?Check the behaviour of `pos_label` in the `CalibrationDisplay`.)r—  Nz,Mean predicted probability (Positive class: Ú)z'Fraction of positives (Positive class: rM  )r   rU   r   rN  rV   r   r   ró   rô   rÑ   rU  r[  r\  Ú	__class__r¸   r]  r^  rr   r_  )r`  rJ  r—  Úexpected_pos_labelr9   r:   r<  ra  rÑ   ró   rô   rc  rd  re  s                 r;   Ú"test_calibration_display_pos_labelrž  "  sR  € ð
 �D€Aä	Ó	×	!Ñ	! !Ó	'€BÜ
×
+Ò
+¨B°1Ñ
J€Cà×Ñ˜aÓ ¢Ð$6Ð!6Ñ7€FÜ,¨QÀ)ÑLÑ€Iä�C—M‘M 9Ô-Ü�C—M‘M 9Ô-Ü�C—J‘J Ô'ð 	�‰×ÑÓØ9Ð:LÐ9MÈQÐOó	Pðð	Pð 	�‰×ÑÓØ4Ð5GÐ4HÈÐJó	Kðð	Kð !Ÿl™l×3Ñ3Ð5KÐLÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ó<Ð<Ð<ÛˆØ�‰Ó Ð$:Õ:Ð:Ð:ò  r=   c                 óJ  • [        SS9u  p#[        5       R                  U5      nUSS USS p2[        R                  " U5      S-  n[        R
                  " UR                  S   S-  UR                  S   4UR                  S9nX%SSS2SS24'   X%SSS2SS24'   [        R
                  " UR                  S   S-  UR                  S9nX6SSS2'   X6SSS2'   [        5       n[        UU USS	9n[        U5      n	U	R                  X#US
9  UR                  XV5        [        U	R                  UR                  5       H9  u  p«[        U
R                  R                   UR                  R                   5        M;     U	R#                  U5      nUR#                  U5      n[        XÍ5        g)znCheck that passing repeating twice the dataset `X` is equivalent to
passing a `sample_weight` with a factor 2.TrF  Nr™   rD   r   rK   r�  ©r?   rB   rM   rI   )r   r#   Úfit_transformrP   Ú	ones_liker²   r‘   rŽ  r   r   r   rU   r  ri   r   rj   Úcoef_rV   )r?   rB   r9   r:   rJ   ÚX_twiceÚy_twicerj   Úcalibrated_clf_without_weightsÚcalibrated_clf_with_weightsÚest_with_weightsÚest_without_weightsÚy_pred_with_weightsÚy_pred_without_weightss                 r;   Ú?test_calibrated_classifier_cv_double_sample_weights_equivalencer¬  C  sš  € ô
  Ñ%�D€AäÓ×&Ñ& qÓ)€AàˆTˆcˆ7�A�d�s�G€qÜ—L’L “O aÑ'€Mô �hŠh˜Ÿ™ ™
 Q™¨¯©°©
Ð3¸1¿7¹7ÑC€GØ‰CˆaˆC’ˆF�OØˆAˆDˆqˆD’!ˆGÑÜ�hŠh�q—w‘w˜q‘z A‘~¨Q¯W©WÑ5€GØ‰CˆaˆC�LØˆAˆDˆqˆD�Mä"Ó$€IÜ%;ØØØØñ	&Ð"ô #(Ð(FÓ"GÐà×#Ñ# A¸Ð#ÑFØ"×&Ñ& wÔ8ô 25Ø#×;Ñ;Ø&×>Ñ>ö2Ñ-Ðô 	Ø×&Ñ&×,Ñ,Ø×)Ñ)×/Ñ/ö	
ñ	2ð 6×CÑCÀAÓFÐØ;×IÑIÈ!ÓLÐäÐ'Õ@r=   Úfit_params_typeÚlistrÉ   c                 óŒ   • Uu  p#[        X05      [        X05      S.n[        SS/S9n[        U5      nUR                  " X#40 UD6  g)z—Tests that fit_params are passed to the underlying base estimator.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/12384
)ÚaÚbr°  r±  )Úexpected_fit_paramsN)r'   r&   r   rU   )r­  r<   r9   r:   Ú
fit_paramsr_   Úpc_clfs          r;   Ú test_calibration_with_fit_paramsrµ  u  sM   € ð �D€Aä Ó3Ü Ó3ñ€Jô
 °#°s°Ñ
<€CÜ# CÓ(€Fà
‡J‚JˆqÑ"�zÓ"r=   rJ   rÁ   c                 óT   • Uu  p#[        SS9n[        U5      nUR                  X#U S9  g)zETests that sample_weight is passed to the underlying base
estimator.
T)Úexpected_sample_weightrI   N)r&   r   rU   )rJ   r<   r9   r:   r_   r´  s         r;   Ú-test_calibration_with_sample_weight_estimatorr¸  ˆ  s/   € ð �D€AÜ
°DÑ
9€CÜ# CÓ(€Fà
‡J�Jˆq =€JÒ1r=   c                 ó  • U u  p[         R                  " U5      n " S S[        5      nU" 5       n[        U5      n[        R
                  " [        5         UR                  XUS9  SSS5        g! , (       d  f       g= f)z¿Check that even if the estimator doesn't support
sample_weight, fitting with sample_weight still works.

There should be a warning, since the sample_weight is not passed
on to the estimator.
c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )ÚPtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeighti¤  c                 ó6   >• SU;  d   e[         TU ]  " X40 UD6$ )NrJ   ©ÚsuperrU   )r´   r9   r:   r³  rœ  s       €r;   rU   ÚTtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeight.fit¥  s%   ø€ Ø"¨*Ó4Ð4Ð4Ü‘7’;˜qÑ2 zÑ2Ð2r=   r·   ©r¸   r¹   rº   r»   rU   r¼   Ú__classcell__©rœ  s   @r;   ÚClfWithoutSampleWeightr»  ¤  s   ø† ÷	3ó 	3r=   rÃ  rI   N)rP   r¢  r&   r   rW   ÚwarnsÚUserWarningrU   )r<   r9   r:   rJ   rÃ  r_   r´  s          r;   Ú0test_calibration_without_sample_weight_estimatorrÆ  š  sa   € ð �D€AÜ—L’L “O€Mô3Ô!3ô 3ñ
 !Ó
"€CÜ# CÓ(€Fä	�Š”kÕ	"Ø�
‰
�1 }ˆ
Ñ5÷ 
#×	"Ö	"ús   ÁA0Á0
A>c                 ó²  • [        SS9u  p#[        5       R                  U5      n[        R                  " USS USS 45      n[        R
                  " USS USS 45      n[        R                  " U5      nSUSSS2'   [        5       n[        UU USS	9n[        U5      nUR                  X#US
9  UR                  USSS2   USSS2   5        [        UR                  UR                  5       H9  u  p‰[        UR                  R                  U	R                  R                  5        M;     UR!                  U5      n
UR!                  U5      n[        X«5        g)zxCheck that passing removing some sample from the dataset `X` is
equivalent to passing a `sample_weight` with a factor 0.TrF  Né(   r¾   éZ   rK   rD   r   rI   )r   r#   r¡  rP   rà   ÚhstackÚ
zeros_liker   r   r   rU   r  ri   r   rj   r£  rV   )r?   rB   r9   r:   rJ   rj   r¦  r§  r¨  r©  rª  r«  s               r;   Ú>test_calibrated_classifier_cv_zeros_sample_weights_equivalencerÌ  °  s[  € ô
  Ñ%�D€AäÓ×&Ñ& qÓ)€Aô 	�	Š	�1�S�b�6˜1˜R ˜8Ð$Ó%€AÜ
�	Š	�1�S�b�6˜1˜R ˜8Ð$Ó%€AÜ—M’M !Ó$€MØ€M‘#�A�#Ñä"Ó$€IÜ%;ØØØØñ	&Ð"ô #(Ð(FÓ"GÐà×#Ñ# A¸Ð#ÑFØ"×&Ñ& q©¨1¨¡v¨q±°1°©vÔ6ô 25Ø#×;Ñ;Ø&×>Ñ>ö2Ñ-Ðô 	Ø×&Ñ&×,Ñ,Ø×)Ñ)×/Ñ/ö	
ñ	2ð 6×CÑCÀAÓFÐØ;×IÑIÈ!ÓLÐäÐ'Õ@r=   c           
      ó¤   •  " S S[         5      n[        U" 5       S9R                  " U S[        R                  " [        U S   5      S-   5      06  g)zWCheck that CalibratedClassifierCV does not enforce sample alignment
for fit parameters.c                   ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚJtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifierià  c                 ó*   >• Uc   e[         TU ]  XUS9$ )NrI   r½  )r´   r9   r:   rJ   Ú	fit_paramrœ  s        €r;   rU   ÚNtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifier.fitá  s"   ø€ ØÑ(Ð(Ð(Ü‘7‘;˜q°=�;ÐAÐAr=   r·   )NNrÀ  rÂ  s   @r;   ÚTestClassifierrÏ  à  s   ø† ÷	Bõ 	Br=   rÓ  )rj   rÑ  rK   N)r   r   rU   rP   r¥   rr   )r<   rÓ  s     r;   Ú2test_calibration_with_non_sample_aligned_fit_paramrÔ  Ü  sJ   € ôBÔ+ô Bô
 ¡^Ó%5Ñ6×:Ò:Ø	ðÜŸš¤ T¨!¡W£°Ñ!1Ó2ór=   c           	      ó‚  • SnSn[         R                  R                  U 5      R                  US9n[         R                  " S/[        X!-  5      -  S/U[        X!-  5      -
  -  -   5      nSUR                  S5      -  U-   n[        SUS	S
9nUR                  XT5      nU HV  u  p‰XX   XH   pºXY   n[        SU S9nUR                  X«5        UR                  U5      nUS:„  R                  5       (       a  MV   e   [        [        SU S9SS9n[        XõUSS9n[        [        SU S9SS9n[        UXTSS9n[        UU5        g)zÃTest that :class:`CalibratedClassifierCV` works with large confidence
scores when using the `sigmoid` method, particularly with the
:class:`SGDClassifier`.

Non-regression test for issue #26766.
gq=
×£på?iè  rG   rK   r   g     jø@)rÞ   rK   NT)rM   r:   r  Úsquared_hinge)Úlossr6   g     ˆÃ@r@   )r?   Úroc_auc)ÚscoringrA   )rP   rQ   Údefault_rngÚnormalrÉ   Úintr  r   Úsplitr   rU   r§   Úanyr   r   r   )Úglobal_random_seedÚprobÚnÚrandom_noiser:   r9   rM   ÚindicesÚtrainÚtestrZ   r[   r]   Úsgd_clfÚpredictionsÚclf_sigmoidÚscore_sigmoidÚclf_isotonicÚscore_isotonics                      r;   Ú@test_calibrated_classifier_cv_works_with_large_confidence_scoresrì  ê  sY  € ð €DØ€AÜ—9‘9×(Ñ(Ð);Ó<×CÑCÈÐCÐK€Lä
�Š�!�”s˜1™8“}Ñ$¨ s¨a´#°a±h³-Ñ.?Ñ'@Ñ@ÓA€AØˆa�i‰i˜Ó Ñ  <Ñ/€Aô 
�T˜Q¨4Ñ	0€BØ�h‰h�q‹n€GÛ‰ˆØ™8 Q¡X�Ø‘ˆÜ _ÐCUÑVˆØ�‰�GÔ%Ø×/Ñ/°Ó7ˆØ˜cÑ!×&Ñ&×(Ó(Ð(Ð(ñ ô )Ü˜?Ð9KÑLØñ€Kô $ K°A¸yÑI€Mô *Ü˜?Ð9KÑLØñ€Lô % \°1ÀÑK€Nô �M >Õ2r=   c                 ó.  • [         R                  R                  U S9nSnUR                  SSUS9nUR	                  SSSS9nSn[        UUUS	9u  pgS
n[        UUUS	9u  pš[        UUS9u  p¼Sn[        XiUS9  [        X›US9  [        XzUS9  [        X¬US9  g )NrE   r™   r   rD   rG   éþÿÿÿ)ÚlowÚhighrH   r~   )rç  r:   Úmax_abs_prediction_thresholdrš   )rç  r:   g�íµ ÷Æ°>)Úatol)rP   rQ   rR   r�  rS   r	   r   )rß  r6   rá  r:   Úpredictions_smallÚthreshold_1Úa1Úb1Úthreshold_2Úa2Úb2Úa3Úb3rò  s                 r;   Ú5test_sigmoid_calibration_max_abs_prediction_thresholdrü    sË   € Ü—9‘9×(Ñ(Ð.@Ð(ÐA€LØ€AØ×Ñ˜Q ¨ÐÐ*€Að %×,Ñ,°¸!À#Ð,ÐFÐð €KÜ!Ø%Ø
Ø%0ñ�F€Bð €KÜ!Ø%Ø
Ø%0ñ�F€Bô "Ø%Ø
ñ�F€Bð €DÜ�B Ò&Ü�B Ò&Ü�B Ò&Ü�B Ó&r=   c                 ód   •  " S S[         5      nU" 5       n[        U5      nUR                  " U 6   g)zgCheck that CalibratedClassifierCV works with float32 predict proba.

Non-regression test for gh-28245.
c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )Ú4test_float32_predict_proba.<locals>.DummyClassifer32iK  c                 ó\   >• [         TU ]  U5      R                  [        R                  5      $ r  )r¾  rV   ÚastyperP   Úfloat32)r´   r9   rœ  s     €r;   rV   ÚBtest_float32_predict_proba.<locals>.DummyClassifer32.predict_probaL  s"   ø€ Ü‘7Ñ(¨Ó+×2Ñ2´2·:±:Ó>Ð>r=   r·   )r¸   r¹   rº   r»   rV   r¼   rÁ  rÂ  s   @r;   ÚDummyClassifer32rÿ  K  s   ø† ÷	?ó 	?r=   r  N)r   r   rU   )r<   r  ÚmodelrÄ   s       r;   Útest_float32_predict_probar  E  s.   € ô?œ?ô ?ñ Ó€EÜ'¨Ó.€Jà‡N‚N�DÒr=   c                  óˆ   • [         R                  R                  SS9n S/S-  S/S-  -   n[        SS9R	                  X5        g)	zdCheck that CalibratedClassifierCV works with string targets.

non-regression test for issue #28841.
)é   rÇ   rG   r°  rš   r±  rÇ   rh   N)rP   rQ   rÛ  r   rU   r8   s     r;   Ú(test_error_less_class_samples_than_foldsr	  U  sD   € ô
 	�	‰	×Ñ˜gÐÐ&€AØ	ˆ�‰
�c�U˜R‘ZÑ€Aä˜aÑ ×$Ñ$ QÕ*r=   ){ÚnumpyrP   rW   Únumpy.testingr   Úsklearn.baser   r   Úsklearn.calibrationr   r   r   r	   r
   r   Úsklearn.datasetsr   r   r   Úsklearn.dummyr   Úsklearn.ensembler   r   Úsklearn.exceptionsr   Úsklearn.feature_extractionr   Úsklearn.imputer   Úsklearn.isotonicr   Úsklearn.linear_modelr   r   Úsklearn.metricsr   Úsklearn.model_selectionr   r   r   r   r   r   Úsklearn.naive_bayesr   Úsklearn.pipeliner    r!   Úsklearn.preprocessingr"   r#   Úsklearn.svmr$   Úsklearn.treer%   Úsklearn.utils._mockingr&   Úsklearn.utils._testingr'   r(   r)   r*   Úsklearn.utils.extmathr+   Úsklearn.utils.fixesr,   r7   Úfixturer<   ÚmarkÚparametrizerf   rn   rv   r{   r…   rŒ   r@  r­   rÅ   rÓ   rÛ   ræ   rù   r  r  r  rQ   rR   r  r!  r*  r/  r3  Úparamr7  r:  rD  rH  rJ  rf  rh  rt  rw  r�  rˆ  rA  Úobjectr”  r™  rž  r¬  rµ  r¥   r¸  rÆ  rÌ  rÔ  rì  rü  r  r	  r·   r=   r;   Ú<module>r&     s…  ðó Û Ý )ç -÷÷ ÷ HÑ GÝ )÷õ .Ý 5Ý (Ý /ß BÝ ,÷÷ õ .ß 4ß >Ý !Ý /Ý 5÷ó õ *Ý .à€	ð ‡‚�hÑñó  ðð
 ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ8ó 4ó <ó :ð8òv+ð ‡�×Ñ˜ d¨E ]Ó3ñDó 4ðDòð ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñó 4ó <ðð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ6ó 4ó <ð6ð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ð ‡�×Ñ˜¡ q£Ó*ñ:7ó +ó 4ó <ð
:7òz2ð2 ‡�×Ñ˜¨.Ó9ñ,ó :ð,ð^ ‡�×Ñ˜ I¨zÐ#:Ó;ñ5ó <ð5ò0>ò"Cð> ‡�×Ñ˜ d¨E ]Ó3ñó 4ðð ‡�×Ñ˜ d¨E ]Ó3ñ@ó 4ð@ð ‡�×Ñ˜ d¨E ]Ó3ñNó 4ðNð: ‡�×ÑØà
�	‰	×Ñ˜bÓ!×'Ñ'¨¨A¨qÓ1Ø
�	‰	×Ñ˜bÓ!×'Ñ'¨¨A¨q°!Ó4ðóñóðð, ‡�ñ"ó ð"ð ‡�ñ%ó ð%òð4 ‡�×ÑØà�Š‘Y ‘^ QÓ'Ø�Š‘Y ‘^ XÓ.ðóñ6óð6ò"	#òð  ‡‚�hÑñ&ó  ð&ð ‡‚�hÑñó  ðð
 ‡�×Ñ˜ A r 7Ó+Ø‡�×Ñ˜ i°Ð%<Ó=ñ&;ó >ó ,ð&;òR;ð ‡�×ÑØÐ-Ð/CÐDóñ;óð;ò ;ð( ‡�×ÑÐ+Ð.>Ð@RÐ-SÓTñ;ó Uð;òD
5ð ‡�×Ñ˜¨¨f¨Ó6ñ"ó 7ð"ð ‡�×Ñ˜¨¨f¨Ó6ñ/ó 7ð/ð( ‡�×ÑÐ8Ò:UÓVñ;ó Wð;ð@ ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ-Aó 4ó <ð-Að` ‡�×ÑÐ*¨V°WÐ,=Ó>ñ#ó ?ð#ð$ ‡�×ÑØà	ˆ�	ÑØ
�Š�	Óðóñ2óð2ò6ð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ'Aó 4ó <ð'AòTò/3òd&'òRó +r=   