Ë
    ÷Q(hþŸ  ã            
       ób  — d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF dZG ej�                  d¬«      d„ «       ZIej”                  j—                  deF«      ej”                  j—                  ddd g«      ej”                  j—                  d!d"d#g«      d$„ «       «       «       ZLd%„ ZMej”                  j—                  d!d"d#g«      d&„ «       ZNd'„ ZOej”                  j—                  ddd g«      ej”                  j—                  d!d"d#g«      d(„ «       «       ZPej”                  j—                  ddd g«      ej”                  j—                  d!d"d#g«      d)„ «       «       ZQej”                  j—                  ddd g«      ej”                  j—                  d!d"d#g«      ej”                  j—                  d* eRd+«      «      d,„ «       «       «       ZSd-„ ZT eBeU¬.«      ej”                  j—                  deF«      d/„ «       «       ZVej”                  j—                  ddd g«      d0„ «       ZWd1„ ZXd2„ ZYej”                  j—                  d!d"d#g«      d3„ «       ZZej”                  j—                  d!d"d#g«      d4„ «       Z[ej”                  j—                  d!d"d#g«      d5„ «       Z\ej”                  j—                  d6ejº                  j½                  d7«      j¿                  d8d9d+«      ejº                  j½                  d7«      j¿                  d8d9d+d:«      g«      d;„ «       Z`ej�                  d<„ «       Zaej�                  d=„ «       Zbd>„ Zcej”                  j—                  d? ejÈ                   e8d@¬A«      d+«       ejÈ                   e8d@¬A«      dB«      g«      dC„ «       ZedD„ ZfdE„ Zg ej�                  d¬«      dF„ «       Zh ej�                  d¬«      dG„ «       Ziej”                  j—                  dHd9dIg«      ej”                  j—                  dJdKdLg«      dM„ «       «       ZjdN„ Zkej”                  j—                  dOdPdQg«      dR„ «       ZldS„ Zmej”                  j—                  dTdUdVg«      dW„ «       ZndX„ Zoej”                  j—                  dYepeqg«      dZ„ «       Zrej”                  j—                  dYepeqg«      d[„ «       Zsej”                  j—                  d\d]d+d^d_œd]d+d^d`œg«      da„ «       Ztej”                  j—                  dbg dc¢«      dd„ «       Zuej”                  j—                  ddd g«      ej”                  j—                  d!d"d#g«      de„ «       «       Zvej”                  j—                  dfdgdhg«      di„ «       Zwej”                  j—                  djdkgeGz   ejð                  eG«      g«      dl„ «       Zydm„ Zzdn„ Z{do„ Z|dp„ Z}dq„ Z~dr„ Zy)sé    N)Úassert_allclose)ÚBaseEstimatorÚClassifierMixinÚclone)ÚCalibratedClassifierCVÚCalibrationDisplayÚ_CalibratedClassifierÚ_sigmoid_calibrationÚ_SigmoidCalibrationÚcalibration_curve)Ú	load_irisÚ
make_blobsÚmake_classification)ÚDummyClassifier)ÚRandomForestClassifierÚVotingClassifier)ÚNotFittedError)ÚDictVectorizer)ÚFrozenEstimator)Ú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Úignore_warnings)Úsoftmax)ÚCSR_CONTAINERSéÈ   Úmodule)Úscopec                  ó4   — t        t        dd¬«      \  } }| |fS )Né   é*   ©Ú	n_samplesÚ
n_featuresÚrandom_state)r   Ú	N_SAMPLES©ÚXÚys     ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/tests/test_calibration.pyÚdatar?   9   s   € ä¬¸qÈrÔR�D€A€qØˆaˆ4€Kó    Úcsr_containerÚmethodÚsigmoidÚisotonicÚensembleTFc                 ó¸  — t         dz  }| \  }}t        j                  j                  d¬«      j	                  |j
                  ¬«      }||j                  «       z  }|d | |d | |d | }
}	}||d  ||d  }}t        «       j                  ||	|
¬«      }|j                  |«      d d …df   }t        ||j
                  dz   |¬«      }t        j                  t        «      5  |j                  ||«       d d d «       ||f ||«       ||«      ffD �]>  \  }}t        ||d|¬	«      }|j                  ||	|
¬«       |j                  |«      d d …df   }t        ||«      t        ||«      kD  sJ ‚|j                  ||	dz   |
¬«       |j                  |«      d d …df   }t        ||«       |j                  |d|	z  dz
  |
¬«       |j                  |«      d d …df   }t        ||«       |j                  ||	dz   dz  |
¬«       |j                  |«      d d …df   }|d
k(  rt        |d|z
  «       �Œt        ||«      t        |dz   dz  |«      kD  r�Œ?J ‚ y # 1 sw Y   �ŒaxY w)Né   r5   ©Úseed©Úsize©Úsample_weighté   ©ÚcvrE   é   ©rB   rP   rE   rC   )r:   ÚnpÚrandomÚRandomStateÚuniformrK   Úminr!   ÚfitÚpredict_probar   ÚpytestÚraisesÚ
ValueErrorr   r+   )r?   rB   rA   rE   r7   r<   r=   rM   Ú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_calibrationri   ?   sœ  € ô
 ˜Q‘€IØ�D€A€qÜ—I‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÀÇÁÐ:ÓG€Màˆ�‰‹�L€Að "# : I °°*°9°¸}ÈZÈiÐ?X�hˆW€GØ�y�z�] A i j MˆF€Fô ‹/×
Ñ
˜g w¸hÐ
Ó
G€CØ×$Ñ$ VÓ,ªQ°¨TÑ2€Lä$ S¨Q¯V©V°a©ZÀ(ÔK€GÜ	�‰”zÓ	"ñ Ø�‰�A�qÔ÷ð
 
�&ÐÙ	�wÓ	¡¨vÓ!6Ð7ð&ó #Ñ!ˆ�kô )¨°VÀÈ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¨LÓ9Ô<LØ˜!‘˜qÑ Ð"<ó=ô ð ð ñC#÷	ñ ús   ÃIÉIc                 ó    — | \  }}t        d¬«      }|j                  ||«       |j                  d   j                  }t	        |t
        «      sJ ‚y )NrG   ©rP   r   )r   rX   Úcalibrated_classifiers_Ú	estimatorÚ
isinstancer&   )r?   r<   r=   Ú	calib_clfÚbase_ests        r>   Ú"test_calibration_default_estimatorrq   }   sI   € à�D€A€qÜ&¨!Ô,€IØ‡M�M�!�QÔà×0Ñ0°Ñ3×=Ñ=€HÜ�h¤	Ô*Ð*Ñ*r@   c                 ó  — | \  }}d}t        |¬«      }t        ||¬«      }t        |j                  t         «      sJ ‚|j                  j                  |k(  sJ ‚|j                  ||«       |r|nd}t        |j                  «      |k(  sJ ‚y )NrQ   ©Ún_splitsrO   rN   )r   r   rn   rP   rt   rX   Úlenrl   )r?   rE   r<   r=   ÚsplitsÚkfoldro   Úexpected_n_clfs           r>   Útest_calibration_cv_splitterry   ‡   s„   € ð �D€A€qà€FÜ˜6Ô"€EÜ&¨%¸(ÔC€IÜ�i—l‘l¤EÔ*Ð*Ð*Ø�<‰<× Ñ  FÒ*Ð*Ð*à‡M�M�!�QÔÙ'‘V¨Q€NÜˆy×0Ñ0Ó1°^ÒCÐCÑCr@   c                 ór  — | \  }}t        d¬«      }t        |d¬«      }t        j                  t        d¬«      5  |j                  ||«       d d d «       t        t        «       d¬«      }t        j                  t        d¬«      5  |j                  ||«       d d d «       y # 1 sw Y   ŒUxY w# 1 sw Y   y xY w)Née   rs   TrO   z$Requesting 101-fold cross-validation©Úmatchz!LeaveOneOut cross-validation does)r   r   rZ   r[   r\   rX   r   )r?   r<   r=   rw   ro   s        r>   Útest_calibration_cv_nfoldr~   —   sš   € à�D€A€qä˜3Ô€EÜ&¨%¸$Ô?€IÜ	�‰”zÐ)OÔ	Pñ Ø�‰�a˜Ô÷ô '¬+«-À$ÔG€IÜ	�‰”zÐ)LÔ	Mñ Ø�‰�a˜Ô÷ð ÷	ð ú÷ð ús   ºB!ÂB-Â!B*Â-B6c                 óÐ  — t         dz  }| \  }}t        j                  j                  d¬«      j	                  t        |«      ¬«      }|d | |d | |d | }	}}||d  }
t        d¬«      }t        |||¬«      }|j                  |||	¬«       |j                  |
«      }|j                  ||«       |j                  |
«      }t        j                  j                  ||z
  «      }|dkD  sJ ‚y )	NrG   r5   rH   rJ   ©r9   )rB   rE   rL   çš™™™™™¹?)r:   rS   rT   rU   rV   ru   r&   r   rX   rY   ÚlinalgÚnorm)r?   rB   rE   r7   r<   r=   rM   r]   r^   r_   r`   rm   Úcalibrated_clfÚprobs_with_swÚprobs_without_swÚdiffs                   r>   Útest_sample_weightrˆ   ¥   sî   € ô ˜Q‘€IØ�D€A€qä—I‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÄÀAÃÐ:ÓG€MØ!" : I °°*°9°¸}ÈZÈiÐ?X�hˆW€GØˆyˆzˆ]€Fä rÔ*€IÜ+¨I¸fÈxÔX€NØ×Ñ�w °xÐÔ@Ø"×0Ñ0°Ó8€Mð ×Ñ�w Ô(Ø%×3Ñ3°FÓ;Ðä�9‰9�>‰>˜-Ð*:Ñ:Ó;€DØ�#Š:Ð‰:r@   c                 óP  — | \  }}t        ||d¬«      \  }}}}t        t        «       t        d¬«      «      }	t	        |	|d|¬«      }
|
j                  ||«       |
j                  |«      }t	        |	|d|¬«      }|j                  ||«       |j                  |«      }t        ||«       y)zTest parallel calibrationr5   r€   rG   )rB   Ún_jobsrE   rN   N)r    r#   r%   r&   r   rX   rY   r   )r?   rB   rE   r<   r=   r]   r`   r^   ra   rm   Úcal_clf_parallelÚprobs_parallelÚcal_clf_sequentialÚprobs_sequentials                 r>   Útest_parallel_executionr�   ½   s°   € ð �D€A€qÜ'7¸¸1È2Ô'NÑ$€GˆV�W˜fäœnÓ.´	ÀrÔ0JÓK€Iä-Ø˜&¨°XôÐð ×Ñ˜ 'Ô*Ø%×3Ñ3°FÓ;€Nä/Ø˜&¨°XôÐð ×Ñ˜7 GÔ,Ø)×7Ñ7¸Ó?Ðä�NÐ$4Õ5r@   rI   rG   c                 óæ  — d„ }t        d¬«      }t        dd|dd¬«      \  }}d	||d	kD  <   t        j                  |«      j                  d
   }|d d d	…   |d d d	…   }	}|dd d	…   |dd d	…   }}
|j                  ||	«       t        || d|¬«      }|j                  ||	«       |j                  |
«      }t        t        j                  |d¬«      t        j                  t        |
«      «      «       d|j                  |
|«      cxk  rdk  sJ ‚ J ‚|j                  |
|«      d|j                  |
|«      z  kD  sJ ‚ ||t        |j                  |
«      «      |¬«      } ||||¬«      }|d|z  k  sJ ‚t        dd¬«      }|j                  ||	«       |j                  |
«      } ||||¬«      }t        || d|¬«      }|j                  ||	«       |j                  |
«      } ||||¬«      }|d|z  k  sJ ‚y )Nc                 óˆ   — t        j                  |«      |    }t        j                  ||z
  dz  «      |j                  d   z  S )NrG   r   )rS   ÚeyeÚsumÚshape)Úy_trueÚ
proba_predÚ	n_classesÚY_onehots       r>   Úmulticlass_brierz5test_calibration_multiclass.<locals>.multiclass_brierÛ   s<   € Ü—6‘6˜)Ó$ VÑ,ˆÜ�v‰v�x *Ñ,°Ñ2Ó3°h·n±nÀQÑ6GÑGÐGr@   é   r€   iô  éd   é
   ç      .@©r7   r8   r9   ÚcentersÚcluster_stdrG   r   rN   rQ   rR   ©ÚaxisçÍÌÌÌÌÌä?gffffffî?)r—   gš™™™™™ñ?é   r5   )Ún_estimatorsr9   )r&   r   rS   Úuniquer”   rX   r   rY   r   r“   Úonesru   Úscorer.   Údecision_functionr   )rB   rE   rI   r™   rb   r<   r=   r—   r]   r^   r`   ra   rd   ÚprobasÚuncalibrated_brierÚcalibrated_brierÚ	clf_probsÚcal_clf_probss                     r>   Útest_calibration_multiclassr¯   Õ   s  € òHô  Ô
#€CÜØ #°DÀ"ÐRVô�D€A€qð €A€aˆ!�e�HÜ—	‘	˜!“×"Ñ" 1Ñ%€IØ™˜1˜‘v˜q¡ 1 ™vˆW€GØ�q�t˜!�t‘W˜a   1 ™gˆF€Fà‡G�GˆG�WÔä$ S°¸AÈÔQ€GØ‡K�K�˜Ô!Ø×"Ñ" 6Ó*€Fä”B—F‘F˜6¨Ô*¬B¯G©G´C¸³KÓ,@ÔAð
 �#—)‘)˜F FÓ+Ô2¨dÒ2Ð2Ñ2Ð2Ð2ð �=‰=˜ Ó(¨4°#·)±)¸FÀFÓ2KÑ+KÒKÐKÐKñ
 *Ø”˜×-Ñ-¨fÓ5Ó6À)ôÐñ (¨°À)ÔLÐà˜cÐ$6Ñ6Ò6Ð6Ð6ô !¨b¸rÔ
B€CØ‡G�GˆG�WÔØ×!Ñ! &Ó)€IÙ)¨&°)ÀyÔQÐä$ S°¸AÈÔQ€GØ‡K�K�˜Ô!Ø×)Ñ)¨&Ó1€MÙ'¨°ÈÔSÐØ˜cÐ$6Ñ6Ò6Ð6Ñ6r@   c                  ó  —  G d„ d«      } t        ddddd¬«      \  }}t        «       j                  ||«      } | «       }t        ||g|j                  ¬«      }|j                  |«      }t        |d	|j                  z  «       y )
Nc                   ó   — e Zd Zd„ Zy)ú9test_calibration_zero_probability.<locals>.ZeroCalibratorc                 óF   — t        j                  |j                  d   «      S )Nr   )rS   Úzerosr”   ©Úselfr<   s     r>   ÚpredictzAtest_calibration_zero_probability.<locals>.ZeroCalibrator.predict  s   € Ü—8‘8˜AŸG™G A™JÓ'Ð'r@   N)Ú__name__Ú
__module__Ú__qualname__r·   © r@   r>   ÚZeroCalibratorr²     s   „ ó	(r@   r¼   é2   rœ   rš   r�   rž   )rm   ÚcalibratorsÚclassesç      ð?)r   r   rX   r	   Úclasses_rY   r   Ú
n_classes_)r¼   r<   r=   rb   Ú
calibratorrd   rª   s          r>   Ú!test_calibration_zero_probabilityrÄ     s„   € ÷
(ñ (ô
 Ø °!¸RÈTô�D€A€qô Ó
×
Ñ
  1Ó
%€CÙÓ!€JÜ#Ø J <¸¿¹ô€Gð ×"Ñ" 1Ó%€Fô �F˜C #§.¡.Ñ0Õ1r@   )Úcategoryc                 ó¢  — d}t        d|z  dd¬«      \  }}t        j                  j                  d¬«      j	                  |j
                  ¬«      }||j                  «       z  }|d| |d| |d| }}}||d	|z   ||d	|z   ||d	|z   }
}	}|d	|z  d |d	|z  d }}t        «       }t        |d
¬«      }t        j                  t        «      5  |j                  ||	«       ddd«       |j                  |||«       |j                  |«      dd…df   }||f | |«       | |«      ffD �]  \  }}dD �]  }t        ||d
¬«      }t        t        |«      |¬«      }|
dfD ]à  }|j                  ||	|¬«       |j                  ||	|¬«       |j                  |«      }|j                  |«      }|j                  |«      }|j                  |«      }|dd…df   }|dd…df   }t!        ||«       t!        |t        j"                  ddg«      t        j$                  |d¬«         «       t'        ||«      t'        ||«      kD  rŒàJ ‚ �Œ �Œ y# 1 sw Y   �ŒhxY w)z*Test calibration for prefitted classifiersr½   é   r4   r5   r6   rH   rJ   NrG   Úprefitrk   rN   )rD   rC   )rB   rP   ©rB   rL   r   r¡   )r   rS   rT   rU   rV   rK   rW   r!   r   rZ   r[   r   rX   rY   r   r·   r,   ÚarrayÚargmaxr   )rA   r7   r<   r=   rM   r]   r^   r_   ÚX_calibÚy_calibÚsw_calibr`   ra   rb   Ú	unfit_clfrc   Úthis_X_calibrf   rB   Úcal_clf_prefitÚcal_clf_frozenÚswÚy_prob_prefitÚy_prob_frozenÚy_pred_prefitÚy_pred_frozenÚprob_pos_cal_clf_prefitÚprob_pos_cal_clf_frozens                               r>   Útest_calibration_prefitrÚ   0  s›  € ð
 €IÜ¨¨Y©À1ÐSUÔV�D€A€qÜ—I‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÀÇÁÐ:ÓG€Màˆ�‰‹�L€Að "# : I °°*°9°¸}ÈZÈiÐ?X�hˆW€Gà	ˆ)�a˜)‘mÐ$Ø	ˆ)�a˜)‘mÐ$Ø�i ! i¡-Ð0ð ˆW€Gð
 �q˜9‘}�Ð'¨¨1¨y©=¨?Ð);ˆF€Fô ‹/€Cä& s¨xÔ8€IÜ	�‰”~Ó	&ñ (Ø�‰�g˜wÔ'÷(ð ‡G�GˆG�W˜hÔ'Ø×$Ñ$ VÓ,ªQ°¨TÑ2€Lð 
�&ÐÙ	�wÓ	¡¨vÓ!6Ð7ð&ó Ñ!ˆ�kð .ó 	ˆFÜ3°CÀÈ8ÔTˆNÜ3´OÀCÓ4HÐQWÔXˆNà Ð&ò �Ø×"Ñ" <°ÈÐ"ÔKØ×"Ñ" <°ÈÐ"ÔKà .× <Ñ <¸[Ó I�Ø .× <Ñ <¸[Ó I�Ø .× 6Ñ 6°{Ó C�Ø .× 6Ñ 6°{Ó C�Ø*7º¸1¸Ñ*=Ð'Ø*7º¸1¸Ñ*=Ð'Ü" =°-Ô@Ü"Ø!¤2§8¡8¨Q°¨FÓ#3´B·I±I¸mÐRSÔ4TÑ#Uôô (¨°Ó=Ô@PØÐ3óAó ð ð òò		ñ	÷(ñ (ús   ÃIÉIc                 ó”  — | \  }}t        d¬«      }t        ||dd¬«      }|j                  ||«       |j                  |«      }t	        |||dd¬«      }|dk(  rt        d	¬
«      }n
t        «       }|j                  ||«       |j                  ||«       |j                  |«      }	|j                  |	«      }
t        |d d …df   |
«       y )Nrš   r€   rÇ   FrR   r©   )rP   rB   rD   Úclip)Úout_of_boundsrN   )
r&   r   rX   rY   r   r   r   r©   r·   r   )r?   rB   r<   r=   rb   rd   Ú
cal_probasÚunbiased_predsrÃ   Úclf_dfÚmanual_probass              r>   Útest_calibration_ensemble_falserâ   j  sÂ   € ð �D€A€qÜ
 Ô
#€Cä$ S°¸AÈÔN€GØ‡K�K��1ÔØ×&Ñ& qÓ)€Jô ' s¨A¨q°QÐ?RÔS€NØ�ÒÜ'°fÔ=‰
ä(Ó*ˆ
Ø‡N�N�> 1Ô%à‡G�GˆAˆq„MØ×"Ñ" 1Ó%€FØ×&Ñ& vÓ.€MÜ�Jšq !˜tÑ$ mÕ4r@   c                  ó0  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  ddg«      }t        |t        | |«      d«       ddt        j                  |d   | z  |d   z   «      z   z  }t        «       j                  | |«      j                  | «      }t        ||d	«       t        j                  t        «      5  t        «       j                  t        j                  | | f«      |«       d
d
d
«       y
# 1 sw Y   y
xY w)z0Test calibration values with Platt sigmoid model)rQ   éüÿÿÿrÀ   )rN   éÿÿÿÿrå   g¿j˜=ïÉ¿gY90¯(àä?rÇ   rÀ   r   rN   r4   N)rS   rÊ   r+   r
   Úexpr   rX   r·   rZ   r[   r\   Úvstack)ÚexFÚexYÚAB_lin_libsvmÚlin_probÚsk_probs        r>   Útest_sigmoid_calibrationrí   ƒ  sâ   € ä
�(‰(’<Ó
 €CÜ
�(‰(’;Ó
€Cä—H‘HÐ2Ð4GÐHÓI€MÜ˜mÔ-AÀ#ÀsÓ-KÈQÔOØ�cœBŸF™F =°Ñ#3°cÑ#9¸MÈ!Ñ<LÑ#LÓMÑMÑN€HÜ!Ó#×'Ñ'¨¨SÓ1×9Ñ9¸#Ó>€GÜ˜h¨°Ô3ô 
�‰”zÓ	"ñ >ÜÓ×!Ñ!¤"§)¡)¨S°#¨JÓ"7¸Ô=÷>÷ >ñ >ús   Ã0DÄDc                  ó  — t        j                  g d¢«      } t        j                  g d¢«      }t        | |d¬«      \  }}t        |«      t        |«      k(  sJ ‚t        |«      dk(  sJ ‚t	        |ddg«       t	        |ddg«       t        j                  t        «      5  t        dgd	g«       d
d
d
«       t        j                  g d¢«      }t        j                  g d¢«      }t        ||dd¬«      \  }}t        |«      t        |«      k(  sJ ‚t        |«      dk(  sJ ‚t	        |ddg«       t	        |ddg«       t        j                  t        «      5  t        ||d¬«       d
d
d
«       y
# 1 sw Y   Œ¿xY w# 1 sw Y   y
xY w)z Check calibration_curve function)r   r   r   rN   rN   rN   )ç        r�   çš™™™™™É?çš™™™™™é?çÍÌÌÌÌÌì?rÀ   rG   ©Ún_binsr   rN   r�   rò   gš™™™™™¹¿N)r   r   r   r   rN   rN   )rï   r�   rð   ç      à?rò   rÀ   Úquantile©rô   ÚstrategygUUUUUUå?rñ   Ú
percentile)rø   )rS   rÊ   r   ru   r*   rZ   r[   r\   )r•   Úy_predÚ	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°VÀAÔFÑ€IˆyÜˆ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Ó	"ñ CÜ˜' 7°\ÕB÷Cð C÷!'ð 'ú÷ Cð Cús   ÂE+ÅE7Å+E4Å7F c                 óú   — t        ddddd¬«      \  }}t        j                  |d<   t        dt	        «       fdt        d	¬
«      fg«      }t        |dd| ¬«      }|j                  ||«       |j                  |«       y)z$Test that calibration can accept nanrœ   rG   r   r5   )r7   r8   Ún_informativeÚn_redundantr9   ©r   r   ÚimputerÚrfrN   )r¥   rD   )rP   rB   rE   N)	r   rS   Únanr"   r   r   r   rX   r·   )rE   r<   r=   rb   Úclf_cs        r>   Útest_calibration_nan_imputerr
  ³  s}   € ô Ø °!ÀÐQSô�D€A€qô �f‰f€A€d�GÜ
Ø
”]“_Ð	%¨Ô.DÐRSÔ.TÐ'UÐVó€Cô # 3¨1°ZÈ(ÔS€EØ	‡I�Iˆa�„OØ	‡M�M�!Õr@   c                 óô   — t        ddd¬«      \  }}g d¢}t        dd¬«      }t        |d	t        d
¬«      | ¬«      }|j	                  ||«       t        |j                  |«      j                  d¬«      d«       y )Nrœ   rQ   rG   )r7   r8   r—   )
rN   rN   rN   rN   rN   r   r   r   r   r   rÀ   rš   )ÚCr9   rC   rÇ   rs   rR   rN   r¡   )r   r&   r   r   rX   r   rY   r“   )rE   r<   Ú_r=   rb   Úclf_probs         r>   Útest_calibration_prob_sumr  Â  sr   € ô ¨¸ÀQÔG�D€A€qÚ&€AÜ
�c¨Ô
*€Cä%Ø�I¤%°Ô"3¸hô€Hð ‡L�L��AÔÜ�H×*Ñ*¨1Ó-×1Ñ1°qÐ1Ó9¸3Õ?r@   c           	      óÂ  — t         j                  j                  dd«      }g d¢g d¢z   g d¢z   }t        d¬«      }t	        |dt        d	«      | ¬
«      }|j                  ||«       | rŸt        j                  d«      }t        ddgdd	g«      D ]v  \  }}|j                  |   j                  |«      }t        |d d …|f   t        j                  t        |«      «      «       t        j                  |d d …||k7  f   dkD  «      rŒvJ ‚ y |j                  d   j                  |«      }t        |j!                  d¬«      t        j"                  |j$                  d   «      «       y )Né   rQ   )r   r   r   rN   )rN   rN   rG   rG   )rG   rÇ   rÇ   rÇ   rš   r€   rC   rÇ   rR   é   r   rG   rN   r¡   )rS   rT   Úrandnr'   r   r   rX   ÚarangeÚziprl   rY   r,   r´   ru   Úallr+   r“   r§   r”   )	rE   r<   r=   rb   rd   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��1ÔáÜ—)‘)˜A“,ˆÜ # Q¨ F¨Q°¨FÓ 3ò 	<ÑˆG�WØ×3Ñ3°GÑ<×JÑJÈ1ÓMˆEä˜u¢Q¨ ZÑ0´"·(±(¼3¸q»6Ó2BÔCä—6‘6˜%¢ 7¨gÑ#5Ð 5Ñ6¸Ñ:Õ;Ð;Ð;ñ	<ð ×/Ñ/°Ñ2×@Ñ@ÀÓCˆÜ! %§)¡)° )Ó"3´R·W±W¸U¿[¹[È¹^Ó5LÕMr@   r<   r5   é   rQ   r4   c                 óx   — g d¢} G d„ dt         t        «      }t         |«       «      }|j                  | |«       y)z;Test that calibration accepts n-dimensional arrays as input)rN   r   r   rN   rN   r   rN   rN   r   r   rN   r   r   rN   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)ú>test_calibration_accepts_ndarray.<locals>.MockTensorClassifierz*A toy estimator that accepts tensor inputsc                 ó:   — t        j                  |«      | _        | S ©N)rS   r¦   rÁ   )r¶   r<   r=   s      r>   rX   zBtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.fitý  s   € ÜŸI™I a›LˆDŒMØˆKr@   c                 ó`   — |j                  |j                  d   d«      j                  d¬«      S )Nr   rå   rN   r¡   )Úreshaper”   r“   rµ   s     r>   r©   zPtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.decision_function  s)   € à—9‘9˜QŸW™W Q™Z¨Ó,×0Ñ0°aÐ0Ó8Ð8r@   N)r¸   r¹   rº   Ú__doc__rX   r©   r»   r@   r>   ÚMockTensorClassifierr  ú  s   „ Ù8ò	ó	9r@   r$  N)r   r   r   rX   )r<   r=   r$  r„   s       r>   Ú test_calibration_accepts_ndarrayr%  ï  s7   € ò 	6€Aô	9œ´ô 	9ô ,Ñ,@Ó,BÓC€Nà×Ñ�q˜!Õr@   c                  ó>   — dddœdddœdddœdddœdddœg} g d	¢}| |fS )
NÚNYÚadult)ÚstateÚageÚTXÚVTÚchildÚCTÚBR)rN   r   rN   rN   r   r»   )Ú	dict_dataÚtext_labelss     r>   r0  r0  
  sE   € ð ˜wÑ'Ø˜wÑ'Ø˜wÑ'Ø˜wÑ'Ø˜wÑ'ð€Iò "€KØ�kÐ!Ð!r@   c                 ór   — | \  }}t        dt        «       fdt        «       fg«      }|j                  ||«      S )NÚ
vectorizerrb   )r"   r   r   rX   )r0  r<   r=   Úpipeline_prefits       r>   Údict_data_pipeliner5    sC   € à�D€A€qÜØ
œÓ(Ð	)¨EÔ3IÓ3KÐ+LÐMó€Oð ×Ñ˜q !Ó$Ð$r@   c                 ó  — | \  }}|}t        t        |«      d¬«      }|j                  ||«       t        |j                  |j                  «       t        |d«      rJ ‚t        |d«      rJ ‚|j                  |«       |j                  |«       y)aR  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
    rG   rk   Ún_features_in_N)r   r   rX   r,   rÁ   Úhasattrr·   rY   )r0  r5  r<   r=   rb   ro   s         r>   Útest_calibration_dict_pipeliner9     s‡   € ð �D€A€qØ
€CÜ&¤°sÓ';ÀÔB€IØ‡M�M�!�QÔä�y×)Ñ)¨3¯<©<Ô8ô �sÐ,Ô-Ð-Ð-Ü�yÐ"2Ô3Ð3Ð3ð ×Ñ�aÔØ×Ñ˜AÕr@   zclf, cvrN   ©r  rÈ   c                 óÄ  — t        dddd¬«      \  }}|dk(  r| j                  ||«      } t        | |¬«      }|j                  ||«       |dk(  r<t        |j                  | j                  «       |j
                  | j
                  k(  sJ ‚y t        «       j                  |«      j                  }t        |j                  |«       |j
                  |j                  d   k(  sJ ‚y )	Nrœ   rQ   rG   rš   ©r7   r8   r—   r9   rÈ   rk   rN   )r   rX   r   r,   rÁ   r7  r$   r”   )rb   rP   r<   r=   ro   r¿   s         r>   Útest_calibration_attributesr=  :  sÂ   € ô ¨¸ÀQÐUVÔW�D€A€qØ	ˆX‚~Ø�g‰g�a˜‹mˆÜ& s¨rÔ2€IØ‡M�M�!�QÔà	ˆX‚~Ü˜9×-Ñ-¨s¯|©|Ô<Ø×'Ñ'¨3×+=Ñ+=Ò=Ð=Ñ=ä“.×$Ñ$ QÓ'×0Ñ0ˆÜ˜9×-Ñ-¨wÔ7Ø×'Ñ'¨1¯7©7°1©:Ò5Ð5Ñ5r@   c                  ó"  — t        dddd¬«      \  } }t        d¬«      j                  | |«      }t        t	        |«      «      }d}t        j                  t        |¬	«      5  |j                  | d d …d d
…f   |«       d d d «       y # 1 sw Y   y xY w)Nrœ   rQ   rG   rš   r<  rN   r:  zAX has 3 features, but LinearSVC is expecting 5 features as input.r|   rÇ   )r   r&   rX   r   r   rZ   r[   r\   )r<   r=   rb   ro   Úmsgs        r>   Ú2test_calibration_inconsistent_prefit_n_features_inr@  R  s€   € ô ¨¸ÀQÐUVÔW�D€A€qÜ
�aŒ.×
Ñ
˜Q Ó
"€CÜ&¤°sÓ';Ó<€Ià
M€CÜ	�‰”z¨Ô	-ñ #Ø�‰�aš˜2˜A˜2˜‘h Ô"÷#÷ #ñ #ús   Á BÂBc            	      ó  — t        dddd¬«      \  } }t        t        d«      D �cg c]  }dt        |«      z   t	        «       f‘Œ c}d¬	«      }|j                  | |«       t        t        |«      ¬
«      }|j                  | |«       y c c}w )Nrœ   rQ   rG   rš   r<  rÇ   ÚlrÚsoft)Ú
estimatorsÚvoting©rm   )r   r   ÚrangeÚstrr   rX   r   r   )r<   r=   ÚiÚvotero   s        r>   Ú!test_calibration_votingclassifierrK  ^  s{   € ô ¨¸ÀQÐUVÔW�D€A€qÜÜCHÈÃ8ÖL¸a�TœC ›F‘]Ô$6Ó$8Ò9ÒLØô€Dð 	‡H�HˆQ�„Nä&´ÀÓ1FÔG€Ià‡M�M�!�QÕùò Ms   ¥Bc                  ó   — t        d¬«      S )NT©Ú
return_X_y)r   r»   r@   r>   Ú	iris_datarO  n  s   € ä Ô%Ð%r@   c                 ó,   — | \  }}||dk     ||dk     fS )NrG   r»   )rO  r<   r=   s      r>   Úiris_data_binaryrQ  s  s&   € à�D€A€qØˆQ�‰U‰8�Q�q˜1‘u‘XÐÐr@   rô   rœ   rø   rV   rö   c                 óü  — |\  }}t        «       j                  ||«      }t        j                  |||||d¬«      }|j	                  |«      d d …df   }t        ||||¬«      \  }	}
t        |j                  |	«       t        |j                  |
«       t        |j                  |«       |j                  dk(  sJ ‚dd l}t        |j                  |j                  j                  «      sJ ‚|j                  j!                  «       dk(  sJ ‚t        |j"                  |j$                  j&                  «      sJ ‚t        |j(                  |j*                  j,                  «      sJ ‚|j"                  j/                  «       dk(  sJ ‚|j"                  j1                  «       dk(  sJ ‚dd	g}|j"                  j3                  «       j5                  «       }t7        |«      t7        |«      k(  sJ ‚|D ]  }|j9                  «       |v rŒJ ‚ y )
Nrñ   )rô   rø   ÚalpharN   r÷   r   r   z.Mean predicted probability (Positive class: 1)z)Fraction of positives (Positive class: 1)úPerfectly calibrated)r   rX   r   Úfrom_estimatorrY   r   r   rû   rü   Úy_probÚestimator_nameÚ
matplotlibrn   Úline_ÚlinesÚLine2DÚ	get_alphaÚax_ÚaxesÚAxesÚfigure_ÚfigureÚFigureÚ
get_xlabelÚ
get_ylabelÚ
get_legendÚ	get_textsru   Úget_text)ÚpyplotrQ  rô   rø   r<   r=   rB  ÚvizrV  rû   rü   ÚmplÚexpected_legend_labelsÚlegend_labelsÚlabelss                  r>   Ú test_calibration_display_computern  y  sÈ  € ð �D€A€qä	Ó	×	!Ñ	! ! QÓ	'€Bä
×
+Ñ
+Ø
ˆAˆq˜¨(¸#ô€Cð ×Ñ˜aÓ ¢ A Ñ&€FÜ,Ø	ˆ6˜&¨8ôÑ€Iˆyô �C—M‘M 9Ô-Ü�C—M‘M 9Ô-Ü�C—J‘J Ô'à×ÑÐ!5Ò5Ð5Ð5ó ä�c—i‘i §¡×!1Ñ!1Ô2Ð2Ð2Ø�9‰9×ÑÓ  CÒ'Ð'Ð'Ü�c—g‘g˜sŸx™xŸ}™}Ô-Ð-Ð-Ü�c—k‘k 3§:¡:×#4Ñ#4Ô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                 ól  — |\  }}t        t        «       t        «       «      }|j                  ||«       t	        j
                  |||«      }|j                  dg}|j                  j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚|D ]  }|j                  «       |v rŒJ ‚ y )NrT  )r#   r%   r   rX   r   rU  rW  r]  re  rf  ru   rg  )	rh  rQ  r<   r=   rb   ri  rk  rl  rm  s	            r>   Ú$test_plot_calibration_curve_pipelinerp  ¤  sª   € à�D€A€qÜ
œÓ(Ô*<Ó*>Ó
?€CØ‡G�GˆAˆq„MÜ
×
+Ñ
+¨C°°AÓ
6€Cà!×0Ñ0Ð2HÐIÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<Øò ;ˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ;r@   zname, expected_label)NÚ_line1)Úmy_estrr  c                 ó°  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g «      }t        ||||¬«      }|j                  «        |€g n|g}|j	                  d«       |j
                  j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚|D ]  }	|	j                  «       |v rŒJ ‚ y )N©r   rN   rN   r   ©rð   rñ   rñ   çš™™™™™Ù?©rW  rT  )
rS   rÊ   r   ÚplotÚappendr]  re  rf  ru   rg  )
rh  ÚnameÚexpected_labelrû   rü   rV  ri  rk  rl  rm  s
             r>   Ú'test_calibration_display_default_labelsr|  ²  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                 ó¶  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g «      }d}t        ||||¬«      }|j                  |k(  sJ ‚d}|j	                  |¬«       |dg}|j
                  j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚|D ]  }|j                  «       |v rŒJ ‚ y )Nrt  ru  zname onerw  zname two©rz  rT  )
rS   rÊ   r   rW  rx  r]  re  rf  ru   rg  )	rh  rû   rü   rV  rz  ri  rk  rl  rm  s	            r>   Ú)test_calibration_display_label_class_plotr  Å  sÏ   € ô —‘šÓ&€IÜ—‘Ò-Ó.€IÜ�X‰X�b‹\€Fà€DÜ
˜Y¨	°6È$Ô
O€CØ×Ñ Ò%Ð%Ð%Ø€DØ‡H�H�$€HÔà"Ð$:Ð;ÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<Øò ;ˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ;r@   Úconstructor_namerU  Úfrom_predictionsc                 ó˜  — |\  }}d}t        «       j                  ||«      }|j                  |«      d d …df   }t        t        | «      }| dk(  r|||fn||f}	 ||	d|iŽ}
|
j
                  |k(  sJ ‚|j                  d«       |
j                  «        |dg}|
j                  j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚|D ]  }|j                  «       |v rŒJ ‚ |j                  d«       d}|
j                  |¬«       t        |«      t        |«      k(  sJ ‚|D ]  }|j                  «       |v rŒJ ‚ y )	Nzmy hand-crafted namerN   rU  rz  r  rT  Úanother_namer~  )r   rX   rY   Úgetattrr   rW  Úcloserx  r]  re  rf  ru   rg  )r€  rh  rQ  r<   r=   Úclf_namerb   rV  ÚconstructorÚparamsri  rk  rl  rm  s                 r>   Ú,test_calibration_display_name_multiple_callsr‰  Ù  sc  € ð �D€A€qØ%€HÜ
Ó
×
"Ñ
" 1 aÓ
(€CØ×Ñ˜qÓ!¢! Q $Ñ'€FäÔ,Ð.>Ó?€KØ,Ð0@Ò@ˆc�1�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                 óP  — |\  }}t        «       j                  ||«      }t        «       j                  ||«      }t        j                  |||«      }t        j                  ||||j
                  ¬«      }|j
                  j                  «       d   }|j                  d«      dk(  sJ ‚y )N)ÚaxrN   rT  )r   rX   r'   r   rU  r]  Úget_legend_handles_labelsÚcount)	rh  rQ  r<   r=   rB  Údtri  Úviz2rm  s	            r>   Ú!test_calibration_display_ref_liner�  ü  s’   € à�D€A€qÜ	Ó	×	!Ñ	! ! QÓ	'€BÜ	Ó	!×	%Ñ	% a¨Ó	+€Bä
×
+Ñ
+¨B°°1Ó
5€CÜ×,Ñ,¨R°°A¸#¿'¹'ÔB€Dà�X‰X×/Ñ/Ó1°!Ñ4€FØ�<‰<Ð.Ó/°1Ò4Ð4Ñ4r@   Údtype_y_strc                 ó>  — t         j                  j                  d«      }t        j                  dgdz  dgdz  z   | ¬«      }|j	                  dd|j
                  ¬«      }d	}t        j                  t        |¬
«      5  t        ||«       ddd«       y# 1 sw Y   yxY w)zKCheck error message when a `pos_label` is not specified with `str` targets.r5   ÚspamrÇ   ÚeggsrG   ©Údtyper   rJ   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 explicitlyr|   N)
rS   rT   rU   rÊ   ÚrandintrK   rZ   r[   r\   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ñ "Ü˜"˜bÔ!÷"÷ "ñ "ús   Á=BÂBc                 ó¦  — t        j                  g d¢«      }t        j                  ddg| ¬«      }||   }t        j                  g d¢«      }t        ||d¬«      \  }}t        |g d¢«       t        ||dd¬	«      \  }}t        |g d¢«       t        |d
|z
  dd¬	«      \  }}t        |g d¢«       t        |d
|z
  dd¬	«      \  }}t        |g d¢«       y)z8Check the behaviour when passing explicitly `pos_label`.)	r   r   r   rN   rN   rN   rN   rN   rN   r“  Úeggr•  )	r�   rð   g333333Ó?rv  r£   gffffffæ?rñ   rò   rÀ   r  ró   )r   rõ   rN   rN   )rô   Ú	pos_labelrN   r   )r   r   rõ   rN   N)rS   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¨V¸AÔ>�L€IˆqÜ�Iš~Ô.ä$ Z°ÀÈUÔS�L€IˆqÜ�Iš~Ô.ä$ V¨Q°©ZÀÈQÔO�L€IˆqÜ�Iš~Ô.Ü$ Z°°V±ÀAÐQWÔX�L€IˆqÜ�Iš~Õ.r@   ÚkwargsÚredú-.)ÚcÚlwÚls)ÚcolorÚ	linewidthÚ	linestylec                 ó,  — |\  }}t        «       j                  ||«      }t        j                  |||fi |¤Ž}|j                  j                  «       dk(  sJ ‚|j                  j                  «       dk(  sJ ‚|j                  j                  «       dk(  sJ ‚y)z*Check that matplotlib aliases are handled.r£  rG   r¤  N)r   rX   r   rU  rY  Ú	get_colorÚget_linewidthÚget_linestyle)rh  rQ  r¢  r<   r=   rB  ri  s          r>   Útest_calibration_display_kwargsr¯  .  sŒ   € ð �D€A€qä	Ó	×	!Ñ	! ! QÓ	'€BÜ
×
+Ñ
+¨B°°1Ñ
?¸Ñ
?€Cà�9‰9×ÑÓ  EÒ)Ð)Ð)Ø�9‰9×"Ñ"Ó$¨Ò)Ð)Ð)Ø�9‰9×"Ñ"Ó$¨Ò,Ð,Ñ,r@   zpos_label, expected_pos_label))NrN   r  )rN   rN   c                 ó¾  — |\  }}t        «       j                  ||«      }t        j                  ||||¬«      }|j	                  |«      dd…|f   }t        |||¬«      \  }	}
t        |j                  |	«       t        |j                  |
«       t        |j                  |«       |j                  j                  «       d|› d�k(  sJ ‚|j                  j                  «       d|› d�k(  sJ ‚|j                  j                  dg}|j                  j                  «       j!                  «       }t#        |«      t#        |«      k(  sJ ‚|D ]  }|j%                  «       |v rŒJ ‚ y)z?Check the behaviour of `pos_label` in the `CalibrationDisplay`.)rŸ  Nz,Mean predicted probability (Positive class: ú)z'Fraction of positives (Positive class: rT  )r   rX   r   rU  rY   r   r   rû   rü   rV  r]  rc  rd  Ú	__class__r¸   re  rf  ru   rg  )rh  rQ  rŸ  Úexpected_pos_labelr<   r=   rB  ri  rV  rû   rü   rk  rl  rm  s                 r>   Ú"test_calibration_display_pos_labelr´  A  sc  € ð
 �D€A€qä	Ó	×	!Ñ	! ! QÓ	'€BÜ
×
+Ñ
+¨B°°1À	Ô
J€Cà×Ñ˜aÓ ¢Ð$6Ð!6Ñ7€FÜ,¨Q°À)ÔLÑ€Iˆyä�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                 ór  — t        d¬«      \  }}t        «       j                  |«      }|dd |dd }}t        j                  |«      dz  }t        j
                  |j                  d   dz  |j                  d   f|j                  ¬«      }||ddd…dd…f<   ||ddd…dd…f<   t        j
                  |j                  d   dz  |j                  ¬«      }||ddd…<   ||ddd…<   t        «       }t        || |d¬	«      }t        |«      }	|	j                  |||¬
«       |j                  ||«       t        |	j                  |j                  «      D ]9  \  }
}t        |
j                  j                   |j                  j                   «       Œ; |	j#                  |«      }|j#                  |«      }t        ||«       y)zrCheck that passing repeating twice the dataset `X` is equivalent to
    passing a `sample_weight` with a factor 2.TrM  Nr›   rG   r   rN   r•  )rB   rE   rP   rL   )r   r%   Úfit_transformrS   Ú	ones_liker´   r”   r–  r   r   r   rX   r  rl   r   rm   Úcoef_rY   )rB   rE   r<   r=   rM   ÚX_twiceÚy_twicerm   Ú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Á  b  sµ  € ô
  Ô%�D€A€qäÓ×&Ñ& qÓ)€AàˆTˆcˆ7�A�d�s�G€q€AÜ—L‘L “O aÑ'€Mô �h‰h˜Ÿ™ ™
 Q™¨¯©°©
Ð3¸1¿7¹7ÔC€GØ€G‰CˆaˆC’ˆF�OØ€GˆAˆDˆqˆD’!ˆGÑÜ�h‰h�q—w‘w˜q‘z A‘~¨Q¯W©WÔ5€GØ€G‰CˆaˆC�LØ€GˆAˆDˆqˆD�Mä"Ó$€IÜ%;ØØØØô	&Ð"ô #(Ð(FÓ"GÐà×#Ñ# A q¸Ð#ÔFØ"×&Ñ& w°Ô8ô 25Ø#×;Ñ;Ø&×>Ñ>ó2ò 
Ñ-ÐÐ-ô 	Ø×&Ñ&×,Ñ,Ø×)Ñ)×/Ñ/õ	
ð	
ð 6×CÑCÀAÓFÐØ;×IÑIÈ!ÓLÐäÐ'Ð)?Õ@r@   Úfit_params_typeÚlistrÊ   c                 óš   — |\  }}t        || «      t        || «      dœ}t        ddg¬«      }t        |«      } |j                  ||fi |¤Ž y)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   rX   )rÂ  r?   r<   r=   Ú
fit_paramsrb   Úpc_clfs          r>   Ú test_calibration_with_fit_paramsrÊ  ”  sW   € ð �D€A€qä  ?Ó3Ü  ?Ó3ñ€Jô
 °#°s°Ô
<€CÜ# CÓ(€Fà€F‡J�Jˆq�!Ñ"�zÓ"r@   rM   rÀ   c                 ód   — |\  }}t        d¬«      }t        |«      }|j                  ||| ¬«       y)zMTests that sample_weight is passed to the underlying base
    estimator.
    T)Úexpected_sample_weightrL   N)r(   r   rX   )rM   r?   r<   r=   rb   rÉ  s         r>   Ú-test_calibration_with_sample_weight_estimatorrÍ  §  s3   € ð �D€A€qÜ
°DÔ
9€CÜ# CÓ(€Fà
‡J�Jˆq�! =€JÕ1r@   c                 óþ   — | \  }}t        j                  |«      } G d„ dt        «      } |«       }t        |«      }t	        j
                  t        «      5  |j                  |||¬«       ddd«       y# 1 sw Y   yxY w)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                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úPtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeightc                 ó2   •— d|vsJ ‚t        ‰| �  ||fi |¤ŽS )NrM   ©ÚsuperrX   )r¶   r<   r=   rÈ  r²  s       €r>   rX   zTtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeight.fitÄ  s'   ø€ Ø"¨*Ñ4Ð4Ð4Ü‘7‘;˜q !Ñ2 zÑ2Ð2r@   ©r¸   r¹   rº   rX   Ú__classcell__©r²  s   @r>   ÚClfWithoutSampleWeightrÐ  Ã  s   ø„ ÷	3ð 	3r@   r×  rL   N)rS   r·  r(   r   rZ   ÚwarnsÚUserWarningrX   )r?   r<   r=   rM   r×  rb   rÉ  s          r>   Ú0test_calibration_without_sample_weight_estimatorrÚ  ¹  sn   € ð �D€A€qÜ—L‘L “O€Mô3Ô!3ô 3ñ
 !Ó
"€CÜ# CÓ(€Fä	�‰”kÓ	"ñ 6Ø�
‰
�1�a }ˆ
Ô5÷6÷ 6ñ 6ús   ÁA3Á3A<c           
      ó¨   —  G d„ dt         «      } t         |«       ¬«      j                  | dt        j                  t        | d   «      dz   «      iŽ y)z[Check that CalibratedClassifierCV does not enforce sample alignment
    for fit parameters.c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )úJtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifierc                 ó0   •— |€J ‚t         ‰| �  |||¬«      S )NrL   rÒ  )r¶   r<   r=   rM   Ú	fit_paramr²  s        €r>   rX   zNtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifier.fitÔ  s$   ø€ ØÐ(Ð(Ð(Ü‘7‘;˜q !°=�;ÓAÐAr@   )NNrÔ  rÖ  s   @r>   ÚTestClassifierrÝ  Ó  s   ø„ ÷	Bñ 	Br@   rà  rF  rß  rN   N)r   r   rX   rS   r§   ru   )r?   rà  s     r>   Ú2test_calibration_with_non_sample_aligned_fit_paramrá  Ï  sM   € ôBÔ+ô Bð
 ;Ô¡^Ó%5Ô6×:Ñ:Ø	ðÜŸ™¤ T¨!¡W£°Ñ!1Ó2ór@   c           	      ó¾  — d}d}t         j                  j                  | «      j                  |¬«      }t        j                  dgt        ||z  «      z  dg|t        ||z  «      z
  z  z   «      }d|j                  d«      z  |z   }t        d|d	¬
«      }|j                  ||«      }|D ]Y  \  }}	||   ||   }}
||	   }t        d| ¬«      }|j                  |
|«       |j                  |«      }|dkD  j                  «       rŒYJ ‚ t        t        d| ¬«      d¬«      }t        |||d¬«      }t        t        d| ¬«      d¬«      }t        |||d¬«      }t        ||«       y)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è  rJ   rN   r   g     jø@)rå   rN   NT)rP   r=   Ú
classifierÚsquared_hinge)Úlossr9   g     ˆÃ@rC   rÉ   Úroc_auc)ÚscoringrD   )rS   rT   Údefault_rngÚnormalrÊ   Úintr"  r   Úsplitr   rX   r©   Úanyr   r   r   )Úglobal_random_seedÚprobÚnÚrandom_noiser=   r<   rP   ÚindicesÚtrainÚtestr]   r^   r`   Úsgd_clfÚpredictionsÚclf_sigmoidÚscore_sigmoidÚclf_isotonicÚscore_isotonics                      r>   Ú@test_calibrated_classifier_cv_works_with_large_confidence_scoresrú  Ý  sq  € ð €DØ€AÜ—9‘9×(Ñ(Ð);Ó<×CÑCÈÐCÓK€Lä
�‰�!�”s˜1˜t™8“}Ñ$¨ s¨a´#°a¸$±h³-Ñ.?Ñ'@Ñ@ÓA€AØˆa�i‰i˜Ó Ñ  <Ñ/€Aô 
�T˜Q¨4Ô	0€BØ�h‰h�q˜!‹n€GØò )‰ˆˆtØ˜U™8 Q u¡X�ˆØ�4‘ˆÜ _ÐCUÔVˆØ�‰�G˜WÔ%Ø×/Ñ/°Ó7ˆØ˜cÑ!×&Ñ&Õ(Ð(Ð(ð)ô )Ü˜?Ð9KÔLØô€Kô $ K°°A¸yÔI€Mô *Ü˜?Ð9KÔLØô€Lô % \°1°aÀÔK€Nô �M >Õ2r@   c                 óx  — t         j                  j                  | ¬«      }d}|j                  dd|¬«      }|j	                  ddd¬«      }d}t        |||¬	«      \  }}d
}t        |||¬	«      \  }	}
t        ||¬«      \  }}d}t        ||	|¬«       t        |	||¬«       t        ||
|¬«       t        |
||¬«       y )NrH   r›   r   rG   rJ   éþÿÿÿ)ÚlowÚhighrK   r�   )rõ  r=   Úmax_abs_prediction_thresholdrœ   )rõ  r=   g�íµ ÷Æ°>)Úatol)rS   rT   rU   r—  rV   r
   r   )rí  r9   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   —  G d„ dt         «      } |«       }t        |«      } |j                  | Ž  y)zoCheck that CalibratedClassifierCV works with float32 predict proba.

    Non-regression test for gh-28245.
    c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ú4test_float32_predict_proba.<locals>.DummyClassifer32c                 ó\   •— t         ‰| �  |«      j                  t        j                  «      S r   )rÓ  rY   ÚastyperS   Úfloat32)r¶   r<   r²  s     €r>   rY   zBtest_float32_predict_proba.<locals>.DummyClassifer32.predict_proba?  s"   ø€ Ü‘7Ñ(¨Ó+×2Ñ2´2·:±:Ó>Ð>r@   )r¸   r¹   rº   rY   rÕ  rÖ  s   @r>   ÚDummyClassifer32r  >  s   ø„ ÷	?ð 	?r@   r  N)r   r   rX   )r?   r  ÚmodelrÃ   s       r>   Útest_float32_predict_probar  8  s0   € ô?œ?ô ?ñ Ó€EÜ'¨Ó.€Jà€J‡N�N�DÒr@   c                  ó–   — t         j                  j                  d¬«      } dgdz  dgdz  z   }t        d¬«      j	                  | |«       y)	zlCheck that CalibratedClassifierCV works with string targets.

    non-regression test for issue #28841.
    )é   rÇ   rJ   rÅ  rœ   rÆ  rÇ   rk   N)rS   rT   ré  r   rX   r;   s     r>   Ú(test_error_less_class_samples_than_foldsr  H  sF   € ô
 	�	‰	×Ñ˜gÐÓ&€AØ	ˆ�‰
�c�U˜R‘ZÑ€Aä˜aÔ ×$Ñ$ Q¨Õ*r@   )€ÚnumpyrS   rZ   Únumpy.testingr   Úsklearn.baser   r   r   Úsklearn.calibrationr   r   r	   r
   r   r   Úsklearn.datasetsr   r   r   Úsklearn.dummyr   Úsklearn.ensembler   r   Úsklearn.exceptionsr   Úsklearn.feature_extractionr   Úsklearn.frozenr   Ú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,   r-   Úsklearn.utils.extmathr.   Úsklearn.utils.fixesr/   r:   Úfixturer?   ÚmarkÚparametrizeri   rq   ry   r~   rˆ   r�   rG  r¯   rÄ   ÚFutureWarningrÚ   râ   rí   r  r
  r  r  rT   rU   r  r%  r0  r5  r9  Úparamr=  r@  rK  rO  rQ  rn  rp  r|  r  r‰  r�  rH  Úobjectrœ  r¡  r¯  r´  rÁ  rÊ  r§   rÍ  rÚ  rá  rú  r
  r  r  r»   r@   r>   ú<module>r5     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ñ5ó :ó )ð5ðp ‡�×Ñ˜ 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ð/ð( ‡�×ÑØà˜1 DÑ)Ø a°dÑ;ðóñ	-óð	-ð ‡�×ÑÐ8Ò:UÓVñ;ó Wð;ð@ ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ-Aó 4ó <ð-Að` ‡�×ÑÐ*¨V°WÐ,=Ó>ñ#ó ?ð#ð$ ‡�×ÑØà	ˆ�	ÑØˆ�‰�	Óðóñ2óð2ò6ò,ò/3òd&'òRó +r@   