§
    §éUg¦¡  ã            
       óö  — d dl Zd dlZd dlmZ d dl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!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,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB dZC ejD        d¬¦  «        d„ ¦   «         ZEejF         G                    deB¦  «        ejF         G                    dddg¦  «        ejF         G                    d d!d"g¦  «        d#„ ¦   «         ¦   «         ¦   «         ZHd$„ ZIejF         G                    d d!d"g¦  «        d%„ ¦   «         ZJd&„ ZKejF         G                    dddg¦  «        ejF         G                    d d!d"g¦  «        d'„ ¦   «         ¦   «         ZLejF         G                    dddg¦  «        ejF         G                    d d!d"g¦  «        d(„ ¦   «         ¦   «         ZMejF         G                    dddg¦  «        ejF         G                    d d!d"g¦  «        ejF         G                    d) eNd*¦  «        ¦  «        d+„ ¦   «         ¦   «         ¦   «         ZOd,„ ZPejF         G                    deB¦  «        d-„ ¦   «         ZQejF         G                    dddg¦  «        d.„ ¦   «         ZRd/„ ZSd0„ ZTejF         G                    d d!d"g¦  «        d1„ ¦   «         ZUejF         G                    d d!d"g¦  «        d2„ ¦   «         ZVejF         G                    d d!d"g¦  «        d3„ ¦   «         ZWejF         G                    d4ejX         Y                    d5¦  «         Z                    d6d7d*¦  «        ejX         Y                    d5¦  «         Z                    d6d7d*d8¦  «        g¦  «        d9„ ¦   «         Z[ejD        d:„ ¦   «         Z\ejD        d;„ ¦   «         Z]d<„ Z^ejF         G                    d= ej_         e5d>¬?¦  «        d*¦  «         ej_         e5d>¬?¦  «        d@¦  «        g¦  «        dA„ ¦   «         Z`dB„ ZadC„ Zb ejD        d¬¦  «        dD„ ¦   «         Zc ejD        d¬¦  «        dE„ ¦   «         ZdejF         G                    dFd7dGg¦  «        ejF         G                    dHdIdJg¦  «        dK„ ¦   «         ¦   «         ZedL„ ZfejF         G                    dMdNdOg¦  «        dP„ ¦   «         ZgdQ„ ZhejF         G                    dRdSdTg¦  «        dU„ ¦   «         ZidV„ ZjejF         G                    dWekelg¦  «        dX„ ¦   «         ZmejF         G                    dWekelg¦  «        dY„ ¦   «         ZnejF         G                    dZg d[¢¦  «        d\„ ¦   «         ZoejF         G                    dddg¦  «        ejF         G                    d d!d"g¦  «        d]„ ¦   «         ¦   «         ZpejF         G                    d^d_d`g¦  «        da„ ¦   «         ZqejF         G                    dbdcgeCz   ejr        eC¦  «        g¦  «        dd„ ¦   «         Zsde„ ZtejF         G                    dddg¦  «        ejF         G                    d d!d"g¦  «        df„ ¦   «         ¦   «         Zudg„ Zvdh„ Zwdi„ Zxdj„ Zydk„ ZzdS )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                  ó>   — t          t          dd¬¦  «        \  } }| |fS )Né   é*   ©Ú	n_samplesÚ
n_featuresÚrandom_state)r   Ú	N_SAMPLES©ÚXÚys     ú]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/tests/test_calibration.pyÚdatar<   7   s#   € å­¸qÈrÐRÑRÔR�D€A€qØˆaˆ4€Kó    Úcsr_containerÚmethodÚsigmoidÚisotonicÚensembleTFc                 óÂ  — t           dz  }| \  }}t          j                             d¬¦  «                             |j        ¬¦  «        }||                     ¦   «         z  }|d |…         |d |…         |d |…         }
}	}||d …         ||d …         }}t          ¦   «                              ||	|
¬¦  «        }| 	                    |¦  «        d d …df         }t          ||j        dz   |¬¦  «        }t          j        t          ¦  «        5  |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   ||f ||¦  «         ||¦  «        ffD �]�\  }}t          ||d|¬	¦  «        }|                     ||	|
¬¦  «         | 	                    |¦  «        d d …df         }t          ||¦  «        t          ||¦  «        k    sJ ‚|                     ||	dz   |
¬¦  «         | 	                    |¦  «        d d …df         }t          ||¦  «         |                     |d|	z  dz
  |
¬¦  «         | 	                    |¦  «        d d …df         }t          ||¦  «         |                     ||	dz   dz  |
¬¦  «         | 	                    |¦  «        d d …df         }|d
k    rt          |d|z
  ¦  «         �Œct          ||¦  «        t          |dz   dz  |¦  «        k    sJ ‚�Œ�d S )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   =   s‰  € õ
 ˜Q‘€IØ�D€A€qÝ”I×)Ò)¨rÐ)Ñ2Ô2×:Ò:ÀÄÐ:ÑGÔG€Màˆ�Š‰Œ�L€Að "# : I :¤°°*°9°*´¸}ÈZÈiÈZÔ?X�hˆW€GØ�y�z�z”] A i j j¤MˆF€Fõ ‰/Œ/×
Ò
˜g w¸hÐ
Ñ
GÔ
G€CØ×$Ò$ VÑ,Ô,¨Q¨Q¨Q°¨TÔ2€Lå$ S¨Q¬V°a©ZÀ(ÐKÑKÔK€GÝ	Œ•zÑ	"Ô	"ð ð Ø�Š�A�qÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 
�&ÐØ	ˆ�wÑ	Ô	  ¨vÑ!6Ô!6Ð7ð&ð #ñ #Ñ!ˆ�kõ )¨°VÀÈHÐUÑUÔUˆð 	�Š�L '¸ˆÑBÔBÐBØ"×0Ò0°Ñ=Ô=¸a¸a¸aÀ¸dÔCÐõ   ¨Ñ5Ô5Õ8HØÐ$ñ9
ô 9
ò 
ð 
ð 
ð 
ð
 	�Š�L '¨A¡+¸XˆÑFÔFÐFØ%,×%:Ò%:¸;Ñ%GÔ%GÈÈÈÈ1ÈÔ%MÐ"Ý!Ð"2Ð4NÑOÔOÐOð 	�Š�L ! g¡+°¡/ÀˆÑJÔJÐJØ%,×%:Ò%:¸;Ñ%GÔ%GÈÈÈÈ1ÈÔ%MÐ"Ý!Ð"2Ð4NÑOÔOÐOð 	�Š�L 7¨Q¡;°!Ñ"3À8ˆÑLÔLÐLØ%,×%:Ò%:¸;Ñ%GÔ%GÈÈÈÈ1ÈÔ%MÐ"Ø�YÒÐÝ%Ð&6¸Ð<VÑ8VÑWÔWÐWÑWõ $ F¨LÑ9Ô9Õ<LØ˜!‘˜qÑ Ð"<ñ=ô =ò ð ð ð ñ ðC#ð #s   ÄD+Ä+D/Ä2D/c                 ó®   — | \  }}t          d¬¦  «        }|                     ||¦  «         |j        d         j        }t	          |t
          ¦  «        sJ ‚d S )NrD   ©rM   r   )r   rU   Úcalibrated_classifiers_Ú	estimatorÚ
isinstancer$   )r<   r9   r:   Ú	calib_clfÚbase_ests        r;   Ú"test_calibration_default_estimatorrn   {   s[   € à�D€A€qÝ&¨!Ð,Ñ,Ô,€IØ‡M‚M�!�QÑÔÐàÔ0°Ô3Ô=€HÝ�h¥	Ñ*Ô*Ð*Ð*Ð*Ð*Ð*r=   c                 ó  — | \  }}d}t          |¬¦  «        }t          ||¬¦  «        }t          |j        t           ¦  «        sJ ‚|j        j        |k    sJ ‚|                     ||¦  «         |r|nd}t          |j        ¦  «        |k    sJ ‚d S )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€qà€FÝ˜6Ð"Ñ"Ô"€EÝ&¨%¸(ÐCÑCÔC€IÝ�i”l¥EÑ*Ô*Ð*Ð*Ð*ØŒ<Ô  FÒ*Ð*Ð*Ð*à‡M‚M�!�QÑÔÐØ'Ð.�V�V¨Q€NÝˆyÔ0Ñ1Ô1°^ÒCÐCÐCÐCÐCÐCr=   c                 ó²  — | \  }}t          d¬¦  «        }t          |d¬¦  «        }t          j        t          d¬¦  «        5  |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦   «         d¬¦  «        }t          j        t          d¬¦  «        5  |                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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{   •   sR  € à�D€A€qå˜3ÐÑÔ€EÝ&¨%¸$Ð?Ñ?Ô?€IÝ	Œ•zÐ)OÐ	PÑ	PÔ	Pð ð Ø�Š�a˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ '­+©-¬-À$ÐGÑGÔG€IÝ	Œ•zÐ)LÐ	MÑ	MÔ	Mð ð Ø�Š�a˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   ÁA%Á%A)Á,A)Â(CÃCÃCc                 ó>  — t           dz  }| \  }}t          j                             d¬¦  «                             t          |¦  «        ¬¦  «        }|d |…         |d |…         |d |…         }	}}||d …         }
t          d¬¦  «        }t          |||¬¦  «        }|                     |||	¬¦  «         | 	                    |
¦  «        }|                     ||¦  «         | 	                    |
¦  «        }t          j
                             ||z
  ¦  «        }|dk    sJ ‚d S )	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€qå”I×)Ò)¨rÐ)Ñ2Ô2×:Ò:ÅÀAÁÄÐ:ÑGÔG€MØ!" : I :¤°°*°9°*´¸}ÈZÈiÈZÔ?X�hˆW€GØˆyˆzˆzŒ]€Få rÐ*Ñ*Ô*€IÝ+¨I¸fÈxÐXÑXÔX€NØ×Ò�w °xÐÑ@Ô@Ð@Ø"×0Ò0°Ñ8Ô8€Mð ×Ò�w Ñ(Ô(Ð(Ø%×3Ò3°FÑ;Ô;ÐåŒ9�>Š>˜-Ð*:Ñ:Ñ;Ô;€DØ�#Š:ˆ:ˆ:ˆ:ˆ:ˆ:r=   c                 óª  — | \  }}t          ||d¬¦  «        \  }}}}t          t          ¦   «         t          d¬¦  «        ¦  «        }	t	          |	|d|¬¦  «        }
|
                     ||¦  «         |
                     |¦  «        }t	          |	|d|¬¦  «        }|                     ||¦  «         |                     |¦  «        }t          ||¦  «         dS )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€qÝ'7¸¸1È2Ð'NÑ'NÔ'NÑ$€GˆV�W˜få�nÑ.Ô.µ	ÀrÐ0JÑ0JÔ0JÑKÔK€Iå-Ø˜&¨°Xðñ ô Ðð ×Ò˜ 'Ñ*Ô*Ð*Ø%×3Ò3°FÑ;Ô;€Nå/Ø˜&¨°Xðñ ô Ðð ×Ò˜7 GÑ,Ô,Ð,Ø)×7Ò7¸Ñ?Ô?Ðå�NÐ$4Ñ5Ô5Ð5Ð5Ð5r=   rF   rD   c                 ó°  — d„ }t          d¬¦  «        }t          dd|dd¬¦  «        \  }}d	||d	k    <   t          j        |¦  «        j        d
         }|d d d	…         |d d d	…         }	}|dd d	…         |dd d	…         }}
|                     ||	¦  «         t          || d|¬¦  «        }|                     ||	¦  «         |                     |
¦  «        }t          t          j	        |d¬¦  «        t          j
        t          |
¦  «        ¦  «        ¦  «         d|                     |
|¦  «        cxk     rdk     sn J ‚|                     |
|¦  «        d|                     |
|¦  «        z  k    sJ ‚ ||t          |                     |
¦  «        ¦  «        |¬¦  «        } ||||¬¦  «        }|d|z  k     sJ ‚t          dd¬¦  «        }|                     ||	¦  «         |                     |
¦  «        } ||||¬¦  «        }t          || d|¬¦  «        }|                     ||	¦  «         |                     |
¦  «        } ||||¬¦  «        }|d|z  k     sJ ‚d S )Nc                 ó†   — t          j        |¦  «        |          }t          j        ||z
  dz  ¦  «        |j        d         z  S )NrD   r   )rP   ÚeyeÚsumÚshape)Úy_trueÚ
proba_predÚ	n_classesÚY_onehots       r;   Úmulticlass_brierz5test_calibration_multiclass.<locals>.multiclass_brierÙ   s<   € Ý”6˜)Ñ$Ô$ VÔ,ˆÝŒv�x *Ñ,°Ñ2Ñ3Ô3°h´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ð Hð 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ÑQÔQ€GØ‡K‚K�˜Ñ!Ô!Ð!Ø×"Ò" 6Ñ*Ô*€Få•B”F˜6¨Ð*Ñ*Ô*­B¬GµC¸±K´KÑ,@Ô,@ÑAÔAÐAð
 �#—)’)˜F FÑ+Ô+Ð2Ð2Ò2Ð2¨dÒ2Ð2Ð2Ð2Ð2Ð2ð �=Š=˜ Ñ(Ô(¨4°#·)²)¸FÀFÑ2KÔ2KÑ+KÒKÐKÐKÐKð
 *Ð)Ø•˜×-Ò-¨fÑ5Ô5Ñ6Ô6À)ðñ ô Ðð (Ð'¨°À)ÐLÑLÔLÐà˜cÐ$6Ñ6Ò6Ð6Ð6Ð6õ !¨b¸rÐ
BÑ
BÔ
B€CØ‡G‚GˆG�WÑÔÐØ×!Ò! &Ñ)Ô)€IØ)Ð)¨&°)ÀyÐQÑQÔQÐå$ S°¸AÈÐQÑQÔQ€GØ‡K‚K�˜Ñ!Ô!Ð!Ø×)Ò)¨&Ñ1Ô1€MØ'Ð'¨°ÈÐSÑSÔSÐØ˜cÐ$6Ñ6Ò6Ð6Ð6Ð6Ð6Ð6r=   c                  ó0  —  G d„ d¦  «        } t          ddddd¬¦  «        \  }}t          ¦   «                              ||¦  «        } | ¦   «         }t          ||g|j        ¬¦  «        }|                     |¦  «        }t          |d	|j        z  ¦  «         d S )
Nc                   ó   — e Zd Zd„ ZdS )ú9test_calibration_zero_probability.<locals>.ZeroCalibratorc                 ó@   — t          j        |j        d         ¦  «        S )Nr   )rP   Úzerosr‘   ©Úselfr9   s     r;   ÚpredictzAtest_calibration_zero_probability.<locals>.ZeroCalibrator.predict  s   € Ý”8˜AœG AœJÑ'Ô'Ð'r=   N)Ú__name__Ú
__module__Ú__qualname__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€qõ Ñ
Ô
×
Ò
  1Ñ
%Ô
%€CØ�Ñ!Ô!€JÝ#Ø J <¸¼ðñ ô €Gð ×"Ò" 1Ñ%Ô%€Fõ �F˜C #¤.Ñ0Ñ1Ô1Ð1Ð1Ð1r=   c                 ó¬  — d}t          d|z  dd¬¦  «        \  }}t          j                             d¬¦  «                             |j        ¬¦  «        }||                     ¦   «         z  }|d|…         |d|…         |d|…         }}}||d	|z  …         ||d	|z  …         ||d	|z  …         }
}	}|d	|z  d…         |d	|z  d…         }}t          ¦   «         }t          |d
¬¦  «        }t          j
        t          ¦  «        5  |                     ||	¦  «         ddd¦  «         n# 1 swxY w Y   |                     |||¦  «         |                     |¦  «        dd…df         }||f | |¦  «         | |¦  «        ffD ]Ó\  }}dD ]Ë}t          ||d
¬¦  «        }|
dfD ]²}|                     ||	|¬¦  «         |                     |¦  «        }|                     |¦  «        }|dd…df         }t          |t          j        ddg¦  «        t          j        |d¬¦  «                 ¦  «         t%          ||¦  «        t%          ||¦  «        k    sJ ‚Œ³ŒÌŒÔdS )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ÑVÔV�D€A€qÝ”I×)Ò)¨rÐ)Ñ2Ô2×:Ò:ÀÄÐ:ÑGÔG€Màˆ�Š‰Œ�L€Að "# : I :¤°°*°9°*´¸}ÈZÈiÈZÔ?X�hˆW€Gà	ˆ)�a˜)‘mÐ
#Ô$Ø	ˆ)�a˜)‘mÐ
#Ô$Ø�i ! i¡-Ð/Ô0ð ˆW€Gð
 �q˜9‘}��Ô'¨¨1¨y©=¨?¨?Ô);ˆF€Fõ ‰/Œ/€Cå& s¨xÐ8Ñ8Ô8€IÝ	Œ•~Ñ	&Ô	&ð (ð (Ø�Š�g˜wÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð ‡G‚GˆG�W˜hÑ'Ô'Ð'Ø×$Ò$ VÑ,Ô,¨Q¨Q¨Q°¨TÔ2€Lð 
�&ÐØ	ˆ�wÑ	Ô	  ¨vÑ!6Ô!6Ð7ð&ð ð Ñ!ˆ�kð .ð 	ð 	ˆFÝ,¨S¸ÀHÐMÑMÔMˆGà Ð&ð 	ð 	�Ø—’˜L¨'À�ÑDÔDÐDØ ×.Ò.¨{Ñ;Ô;�Ø Ÿš¨Ñ5Ô5�Ø#)¨!¨!¨!¨Q¨$¤<Ð Ý" 6­2¬8°Q¸°FÑ+;Ô+;½B¼IÀfÐSTÐ<UÑ<UÔ<UÔ+VÑWÔWÐWå'¨°Ñ=Ô=Õ@PØÐ,ñAô Aò ð ð ð ð ð	ð	ð	ð s   ÄD%Ä%D)Ä,D)c                 óþ  — | \  }}t          d¬¦  «        }t          ||dd¬¦  «        }|                     ||¦  «         |                     |¦  «        }t	          |||dd¬¦  «        }|dk    rt          d	¬
¦  «        }nt          ¦   «         }|                     ||¦  «         |                     ||¦  «         |                     |¦  «        }	|                     |	¦  «        }
t          |d d …df         |
¦  «         d S )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€qÝ
 Ð
#Ñ
#Ô
#€Cå$ S°¸AÈÐNÑNÔN€GØ‡K‚K��1ÑÔÐØ×&Ò& qÑ)Ô)€Jõ ' s¨A¨q°QÐ?RÐSÑSÔS€NØ�ÒÐÝ'°fÐ=Ñ=Ô=ˆ
ˆ
å(Ñ*Ô*ˆ
Ø‡N‚N�> 1Ñ%Ô%Ð%à‡G‚GˆAˆq�M„M€MØ×"Ò" 1Ñ%Ô%€FØ×&Ò& vÑ.Ô.€MÝ�J˜q˜q˜q !˜tÔ$ mÑ4Ô4Ð4Ð4Ð4r=   c                  ó|  — 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          ¦   «                              | |¦  «                             | ¦  «        }t          ||d	¦  «         t          j	        t          ¦  «        5  t          ¦   «                              t          j        | | f¦  «        |¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )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  sc  € å
Œ(�<�<�<Ñ
 Ô
 €CÝ
Œ(�;�;�;Ñ
Ô
€Cå”HÐ2Ð4GÐHÑIÔI€MÝ˜mÕ-AÀ#ÀsÑ-KÔ-KÈQÑOÔOÐOØ�c�BœF =°Ô#3°cÑ#9¸MÈ!Ô<LÑ#LÑMÔMÑMÑN€HÝ!Ñ#Ô#×'Ò'¨¨SÑ1Ô1×9Ò9¸#Ñ>Ô>€GÝ˜h¨°Ñ3Ô3Ð3õ 
Œ•zÑ	"Ô	"ð >ð >ÝÑÔ×!Ò!¥"¤)¨S°#¨JÑ"7Ô"7¸Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð >ð >s   Ã-7D1Ä1D5Ä8D5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
¦  «         n# 1 swxY w Y   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
¦  «         d
S # 1 swxY w Y   d
S )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õ   ˆ  sx  € åŒXÐ(Ð(Ð(Ñ)Ô)€FÝŒXÐ4Ð4Ð4Ñ5Ô5€FÝ,¨V°VÀAÐFÑFÔFÑ€IˆyÝˆy‰>Œ>�S ™^œ^Ò+Ð+Ð+Ð+Ýˆy‰>Œ>˜QÒÐÐÐÝ˜	 A q 6Ñ*Ô*Ð*Ý˜	 C¨ :Ñ.Ô.Ð.õ 
Œ•zÑ	"Ô	"ð 'ð 'Ý˜1˜# ˜vÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ ŒhÐ)Ð)Ð)Ñ*Ô*€GÝŒhÐ5Ð5Ð5Ñ6Ô6€GÝ->Ø� ¨Zð.ñ .ô .Ñ*ÐÐ*õ Ð!Ñ"Ô"¥cÐ*<Ñ&=Ô&=Ò=Ð=Ð=Ð=ÝÐ!Ñ"Ô" aÒ'Ð'Ð'Ð'ÝÐ*¨Q°¨JÑ7Ô7Ð7ÝÐ*¨S°#¨JÑ7Ô7Ð7õ 
Œ•zÑ	"Ô	"ð Cð CÝ˜' 7°\ÐBÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs$   Â6CÃCÃCÆF6Æ6F:Æ=F:c                 ó,  — t          ddddd¬¦  «        \  }}t          j        |d<   t          dt	          ¦   «         fdt          d	¬
¦  «        fg¦  «        }t          |dd| ¬¦  «        }|                     ||¦  «         |                     |¦  «         dS )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þ   §  s¨   € õ Ø °!ÀÐQSðñ ô �D€A€qõ Œf€A€d�GÝ
Ø
•]‘_”_Ð	%¨Õ.DÐRSÐ.TÑ.TÔ.TÐ'UÐVñô €Cõ # 3¨1°ZÈ(ÐSÑSÔS€EØ	‡I‚Iˆa��O„O€OØ	‡M‚M�!ÑÔÐÐÐr=   c                 ó6  — t          ddd¬¦  «        \  }}g d¢}t          dd¬¦  «        }t          |d	t          d
¬¦  «        | ¬¦  «        }|                     ||¦  «         t          |                     |¦  «                             d¬¦  «        d¦  «         d S )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  ¶  s¬   € õ ¨¸ÀQÐGÑGÔG�D€A€qØ&Ð&Ð&€AÝ
�c¨Ð
*Ñ
*Ô
*€Cå%Ø�I¥%°Ð"3Ñ"3Ô"3¸hðñ ô €Hð ‡L‚L��AÑÔÐÝ�H×*Ò*¨1Ñ-Ô-×1Ò1°qÐ1Ñ9Ô9¸3Ñ?Ô?Ð?Ð?Ð?r=   c           	      ó  — t           j                             dd¦  «        }g d¢g d¢z   g d¢z   }t          d¬¦  «        }t	          |dt          d	¦  «        | ¬
¦  «        }|                     ||¦  «         | r±t          j        d¦  «        }t          ddgdd	g¦  «        D ]†\  }}|j	        |          
                    |¦  «        }t          |d d …|f         t          j        t          |¦  «        ¦  «        ¦  «         t          j        |d d …||k    f         dk    ¦  «        sJ ‚Œ‡d S |j	        d          
                    |¦  «        }t          |                     d¬¦  «        t          j        |j        d         ¦  «        ¦  «         d S )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 l lÑ2€AÝ
 ¨aÐ
0Ñ
0Ô
0€CÝ$Ø�I¥%¨¡(¤(°Xðñ ô €Gð ‡K‚K��1ÑÔÐàð NÝ”)˜A‘,”,ˆÝ # Q¨ F¨Q°¨FÑ 3Ô 3ð 	<ð 	<ÑˆG�WØÔ3°GÔ<×JÒJÈ1ÑMÔMˆEå˜u Q Q Q¨ ZÔ0µ"´(½3¸q¹6¼6Ñ2BÔ2BÑCÔCÐCå”6˜%    7¨gÒ#5Ð 5Ô6¸Ò:Ñ;Ô;Ð;Ð;Ð;Ð;ð	<ð 	<ð Ô/°Ô2×@Ò@ÀÑCÔCˆÝ! %§)¢)° )Ñ"3Ô"3µR´W¸U¼[È¼^Ñ5LÔ5LÑMÔMÐMÐMÐMr=   r9   r2   é   rN   r1   c                 óŽ   — g d¢} G d„ dt           ¦  «        }t           |¦   «         ¦  «        }|                     | |¦  «         dS )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                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ú>test_calibration_accepts_ndarray.<locals>.MockTensorClassifierz*A toy estimator that accepts tensor inputsÚ
classifierc                 ó8   — t          j        |¦  «        | _        | S ©N)rP   r£   r¾   )r³   r9   r:   s      r;   rU   zBtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.fitó  s   € ÝœI a™LœLˆDŒMØˆKr=   c                 ól   — |                      |j        d         d¦  «                             d¬¦  «        S )Nr   rÚ   rK   rž   )Úreshaper‘   r�   r²   s     r;   r¦   zPtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.decision_function÷  s-   € à—9’9˜QœW QœZ¨Ñ,Ô,×0Ò0°aÐ0Ñ8Ô8Ð8r=   N)rµ   r¶   r·   Ú__doc__Ú_estimator_typerU   r¦   r¸   r=   r;   ÚMockTensorClassifierr  î  s=   € € € € € Ø8Ð8à&ˆð	ð 	ð 	ð	9ð 	9ð 	9ð 	9ð 	9r=   r  N)r   r   rU   )r9   r:   r  r�   s       r;   Ú test_calibration_accepts_ndarrayr  ã  sn   € ð 	6Ð5Ð5€Að9ð 9ð 9ð 9ð 9�}ñ 9ô 9ð 9õ ,Ð,@Ð,@Ñ,BÔ,BÑCÔC€Nà×Ò�q˜!ÑÔÐÐÐr=   c                  ó.   — dddœdddœdddœg} g d¢}| |fS )NÚNYÚadult)ÚstateÚageÚTXÚVTÚchild)rK   r   rK   r¸   )Ú	dict_dataÚtext_labelss     r;   r$  r$     sB   € ð ˜wÐ'Ð'Ø˜wÐ'Ð'Ø˜wÐ'Ð'ð€Ið
 �)�)€KØ�kÐ!Ð!r=   c                 ó’   — | \  }}t          dt          ¦   «         fdt          ¦   «         fg¦  «        }|                     ||¦  «        S )NÚ
vectorizerr_   )r    r   r   rU   )r$  r9   r:   Úpipeline_prefits       r;   Údict_data_pipeliner)    sQ   € à�D€A€qÝØ
�Ñ(Ô(Ð	)¨EÕ3IÑ3KÔ3KÐ+LÐMñô €Oð ×Ò˜q !Ñ$Ô$Ð$r=   c                 ó2  — | \  }}|}t          |d¬¦  «        }|                     ||¦  «         t          |j        |j        ¦  «         t	          |d¦  «        rJ ‚t	          |d¦  «        rJ ‚|                     |¦  «         |                     |¦  «         dS )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
    rÄ   rh   Ún_features_in_N)r   rU   r*   r¾   Úhasattrr´   rV   )r$  r)  r9   r:   r_   rl   s         r;   Útest_calibration_dict_pipeliner-    s­   € ð �D€A€qØ
€CÝ& s¨xÐ8Ñ8Ô8€IØ‡M‚M�!�QÑÔÐå�yÔ)¨3¬<Ñ8Ô8Ð8õ �sÐ,Ñ-Ô-Ð-Ð-Ð-Ý�yÐ"2Ñ3Ô3Ð3Ð3Ð3ð ×Ò�aÑÔÐØ×Ò˜AÑÔÐÐÐr=   zclf, cvrK   ©r   rÄ   c                 óÆ  — t          dddd¬¦  «        \  }}|dk    r|                      ||¦  «        } t          | |¬¦  «        }|                     ||¦  «         |dk    r.t          |j        | j        ¦  «         |j        | j        k    sJ ‚d S t          ¦   «                              |¦  «        j        }t          |j        |¦  «         |j        |j        d         k    sJ ‚d S )	Nr™   rN   rD   r—   ©r4   r5   r”   r6   rÄ   rh   rK   )r   rU   r   r*   r¾   r+  r"   r‘   )r_   rM   r9   r:   rl   r¼   s         r;   Útest_calibration_attributesr1  .  sç   € õ ¨¸ÀQÐUVÐWÑWÔW�D€A€qØ	ˆX‚~€~Ø�gŠg�a˜‰mŒmˆÝ& s¨rÐ2Ñ2Ô2€IØ‡M‚M�!�QÑÔÐà	ˆX‚~€~Ý˜9Ô-¨s¬|Ñ<Ô<Ð<ØÔ'¨3Ô+=Ò=Ð=Ð=Ð=Ð=Ð=å‘.”.×$Ò$ QÑ'Ô'Ô0ˆÝ˜9Ô-¨wÑ7Ô7Ð7ØÔ'¨1¬7°1¬:Ò5Ð5Ð5Ð5Ð5Ð5r=   c                  óL  — t          dddd¬¦  «        \  } }t          d¬¦  «                             | |¦  «        }t          |d¬	¦  «        }d
}t	          j        t          |¬¦  «        5  |                     | d d …d d…f         |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr™   rN   rD   r—   r0  rK   r.  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_inr4  F  sð   € õ ¨¸ÀQÐUVÐWÑWÔW�D€A€qÝ
�aˆ.‰.Œ.×
Ò
˜Q Ñ
"Ô
"€CÝ& s¨xÐ8Ñ8Ô8€Ià
M€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð #ð #Ø�Š�a˜˜˜˜2˜A˜2˜”h Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   Á)#BÂBÂ Bc                  óü   — t          dddd¬¦  «        \  } }t          d„ t          d¦  «        D ¦   «         d¬	¦  «        }|                     | |¦  «         t	          |d
¬¦  «        }|                     | |¦  «         d S )Nr™   rN   rD   r—   r0  c                 óN   — g | ]"}d t          |¦  «        z   t          ¦   «         f‘Œ#S )Úlr)Ústrr   )Ú.0Úis     r;   ú
<listcomp>z5test_calibration_votingclassifier.<locals>.<listcomp>X  s.   € ÐLÐLÐL¸a�T�C ™FœF‘]Õ$6Ñ$8Ô$8Ð9ÐLÐLÐLr=   rÃ   Úsoft)Ú
estimatorsÚvotingrÄ   )rj   rM   )r   r   ÚrangerU   r   )r9   r:   Úvoterl   s       r;   Ú!test_calibration_votingclassifierrA  R  sŒ   € õ ¨¸ÀQÐUVÐWÑWÔW�D€A€qÝØLÐLÅ5ÈÁ8Ä8ÐLÑLÔLØðñ ô €Dð 	‡H‚HˆQ��N„N€Nå&°¸(ÐCÑCÔC€Ià‡M‚M�!�QÑÔÐÐÐr=   c                  ó"   — t          d¬¦  «        S )NT©Ú
return_X_y)r   r¸   r=   r;   Ú	iris_datarE  b  s   € å Ð%Ñ%Ô%Ð%r=   c                 ó<   — | \  }}||dk              ||dk              fS )NrD   r¸   )rE  r9   r:   s      r;   Úiris_data_binaryrG  g  s&   € à�D€A€qØˆQ�ŠUŒ8�Q�q˜1’u”XÐÐr=   ré   r™   rí   rS   rë   c                 óî  — |\  }}t          ¦   «                              ||¦  «        }t          j        |||||d¬¦  «        }|                     |¦  «        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                             ¦   «         dk    sJ ‚t          |j        |j        j        ¦  «        sJ ‚t          |j        |j        j        ¦  «        sJ ‚|j                             ¦   «         dk    sJ ‚|j                             ¦   «         dk    sJ ‚dd	g}|j                             ¦   «                              ¦   «         }t7          |¦  «        t7          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œd S )
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)ÚpyplotrG  ré   rí   r9   r:   r7  ÚvizrÍ   rï   rð   ÚmplÚexpected_legend_labelsÚlegend_labelsÚlabelss                  r;   Ú test_calibration_display_computerc  m  s%  € ð �D€A€qå	Ñ	Ô	×	!Ò	! ! QÑ	'Ô	'€Bå
Ô
+Ø
ˆAˆq˜¨(¸#ðñ ô €Cð ×Ò˜aÑ Ô     A Ô&€FÝ,Ø	ˆ6˜&¨8ðñ ô Ñ€Iˆyõ �C”M 9Ñ-Ô-Ð-Ý�C”M 9Ñ-Ô-Ð-Ý�C”J Ñ'Ô'Ð'àÔÐ!5Ò5Ð5Ð5Ð5ð ÐÐÐå�c”i ¤Ô!1Ñ2Ô2Ð2Ð2Ð2ØŒ9×ÒÑ Ô  CÒ'Ð'Ð'Ð'Ý�c”g˜sœxœ}Ñ-Ô-Ð-Ð-Ð-Ý�c”k 3¤:Ô#4Ñ5Ô5Ð5Ð5Ð5àŒ7×ÒÑÔÐ#SÒSÐSÐSÐSØŒ7×ÒÑÔÐ#NÒNÐNÐNÐNà2Ð4JÐKÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;r=   c                 óž  — |\  }}t          t          ¦   «         t          ¦   «         ¦  «        }|                     ||¦  «         t	          j        |||¦  «        }|j        dg}|j                             ¦   «          	                    ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œd S )NrJ  )r!   r#   r   rU   r   rK  rL  rR  rZ  r[  rr   r\  )	r]  rG  r9   r:   r_   r^  r`  ra  rb  s	            r;   Ú$test_plot_calibration_curve_pipelinere  ˜  sÔ   € à�D€A€qÝ
�Ñ(Ô(Õ*<Ñ*>Ô*>Ñ
?Ô
?€CØ‡G‚GˆAˆq�M„M€MÝ
Ô
+¨C°°AÑ
6Ô
6€Cà!Ô0Ð2HÐIÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;r=   zname, expected_label)NÚ_line1)Úmy_estrg  c                 óà  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g ¦  «        }t          ||||¬¦  «        }|                     ¦   «          |€g n|g}|                     d¦  «         |j                             ¦   «                              ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}	|	 	                    ¦   «         |v sJ ‚Œd S )N©r   rK   rK   r   ©rå   ræ   ræ   çš™™™™™Ù?©rL  rJ  )
rP   rÅ   r   ÚplotÚappendrR  rZ  r[  rr   r\  )
r]  ÚnameÚexpected_labelrï   rð   rÍ   r^  r`  ra  rb  s
             r;   Ú'test_calibration_display_default_labelsrq  ¦  sû   € õ ”˜˜˜Ñ&Ô&€IÝ”Ð-Ð-Ð-Ñ.Ô.€IÝŒX�b‰\Œ\€Få
˜Y¨	°6È$Ð
OÑ
OÔ
O€CØ‡H‚H�J„J€Jà#' <˜R˜R°d°VÐØ×!Ò!Ð"8Ñ9Ô9Ð9Ø”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;r=   c                 óÖ  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g ¦  «        }d}t          ||||¬¦  «        }|j        |k    sJ ‚d}|                     |¬¦  «         |dg}|j                             ¦   «                              ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}| 	                    ¦   «         |v sJ ‚Œd S )Nri  rj  zname onerl  zname two©ro  rJ  )
rP   rÅ   r   rL  rm  rR  rZ  r[  rr   r\  )	r]  rï   rð   rÍ   ro  r^  r`  ra  rb  s	            r;   Ú)test_calibration_display_label_class_plotrt  ¹  s  € õ ”˜˜˜Ñ&Ô&€IÝ”Ð-Ð-Ð-Ñ.Ô.€IÝŒX�b‰\Œ\€Fà€DÝ
˜Y¨	°6È$Ð
OÑ
OÔ
O€CØÔ Ò%Ð%Ð%Ð%Ø€DØ‡H‚H�$€HÑÔÐà"Ð$:Ð;ÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;r=   Úconstructor_namerK  Úfrom_predictionsc                 ó  — |\  }}d}t          ¦   «                              ||¦  «        }|                     |¦  «        d d …df         }t          t          | ¦  «        }| dk    r|||fn||f}	 ||	d|iŽ}
|
j        |k    sJ ‚|                     d¦  «         |
                     ¦   «          |dg}|
j         	                    ¦   «          
                    ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œ|                     d¦  «         d}|
                     |¬¦  «         t          |¦  «        t          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œd S )	Nzmy hand-crafted namerK   rK  ro  r
  rJ  Úanother_namers  )r   rU   rV   Úgetattrr   rL  Úcloserm  rR  rZ  r[  rr   r\  )ru  r]  rG  r9   r:   Úclf_namer_   rÍ   ÚconstructorÚparamsr^  r`  ra  rb  s                 r;   Ú,test_calibration_display_name_multiple_callsr~  Í  sÃ  € ð �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„J€Jà&Ð(>Ð?ÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:à
‡L‚L�ÑÔÐØ€HØ‡H‚H�(€HÑÔÐÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;r=   c                 ór  — |\  }}t          ¦   «                              ||¦  «        }t          ¦   «                              ||¦  «        }t          j        |||¦  «        }t          j        ||||j        ¬¦  «        }|j                             ¦   «         d         }|                     d¦  «        dk    sJ ‚d S )N)ÚaxrK   rJ  )r   rU   r%   r   rK  rR  Úget_legend_handles_labelsÚcount)	r]  rG  r9   r:   r7  Údtr^  Úviz2rb  s	            r;   Ú!test_calibration_display_ref_liner…  ð  s¬   € à�D€A€qÝ	Ñ	Ô	×	!Ò	! ! QÑ	'Ô	'€BÝ	Ñ	!Ô	!×	%Ò	% a¨Ñ	+Ô	+€Bå
Ô
+¨B°°1Ñ
5Ô
5€CÝÔ,¨R°°A¸#¼'ÐBÑBÔB€DàŒX×/Ò/Ñ1Ô1°!Ô4€FØ�<Š<Ð.Ñ/Ô/°1Ò4Ð4Ð4Ð4Ð4Ð4r=   Údtype_y_strc                 óL  — t           j                             d¦  «        }t          j        dgdz  dgdz  z   | ¬¦  «        }|                     dd|j        ¬¦  «        }d	}t          j        t          |¬
¦  «        5  t          ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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Ñ	AÔ	A€BØ	�Š�Q˜ ¤ˆÑ	(Ô	(€Bð	$ð õ
 
Œ•z¨Ð	1Ñ	1Ô	1ð "ð "Ý˜"˜bÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   Á;BÂ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¢¦  «         dS )z8Check the behaviour when passing explicitly `pos_label`.)	r   r   r   rK   rK   rK   rK   rK   rK   rˆ  ÚeggrŠ  )	r~   rå   g333333Ó?rk  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Ð1Ð1Ð1Ñ2Ô2€FÝŒh˜ �¨kÐ:Ñ:Ô:€GØ˜”€JÝŒXÐDÐDÐDÑEÔE€Fõ % V¨V¸AÐ>Ñ>Ô>�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.å$ Z°ÀÈUÐSÑSÔS�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.å$ V¨Q°©ZÀÈQÐOÑOÔO�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.Ý$ Z°°V±ÀAÐQWÐXÑXÔX�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.Ð.Ð.r=   zpos_label, expected_pos_label))NrK   rù   )rK   rK   c                 óæ  — |\  }}t          ¦   «                              ||¦  «        }t          j        ||||¬¦  «        }|                     |¦  «        dd…|f         }t          |||¬¦  «        \  }	}
t          |j        |	¦  «         t          |j        |
¦  «         t          |j	        |¦  «         |j
                             ¦   «         d|› d�k    sJ ‚|j
                             ¦   «         d|› d�k    sJ ‚|j        j        dg}|j
                             ¦   «                              ¦   «         }t#          |¦  «        t#          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚ŒdS )z?Check the behaviour of `pos_label` in the `CalibrationDisplay`.)r”  Nz,Mean predicted probability (Positive class: ú)z'Fraction of positives (Positive class: rJ  )r   rU   r   rK  rV   r   r   rï   rð   rÍ   rR  rX  rY  Ú	__class__rµ   rZ  r[  rr   r\  )r]  rG  r”  Úexpected_pos_labelr9   r:   r7  r^  rÍ   rï   rð   r`  ra  rb  s                 r;   Ú"test_calibration_display_pos_labelr›  "  s²  € ð
 �D€A€qå	Ñ	Ô	×	!Ò	! ! QÑ	'Ô	'€BÝ
Ô
+¨B°°1À	Ð
JÑ
JÔ
J€Cà×Ò˜aÑ Ô    Ð$6Ð!6Ô7€FÝ,¨Q°À)ÐLÑLÔLÑ€Iˆyå�C”M 9Ñ-Ô-Ð-Ý�C”M 9Ñ-Ô-Ð-Ý�C”J Ñ'Ô'Ð'ð 	Œ×ÒÑÔØOÐ:LÐOÐOÐOò	Pð 	Pð 	Pð 	Pð 	Œ×ÒÑÔØJÐ5GÐJÐJÐJò	Kð 	Kð 	Kð 	Kð !œlÔ3Ð5KÐLÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;r=   c                 óŠ  — t          d¬¦  «        \  }}t          ¦   «                              |¦  «        }|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          |¦  «        }	|	                     |||¬
¦  «         |                     ||¦  «         t          |	j        |j        ¦  «        D ])\  }
}t          |
j        j        |j        j        ¦  «         Œ*|	                     |¦  «        }|                     |¦  «        }t          ||¦  «         dS )zrCheck that passing repeating twice the dataset `X` is equivalent to
    passing a `sample_weight` with a factor 2.TrC  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åÑÔ×&Ò& qÑ)Ô)€AàˆTˆcˆTŒ7�A�d�s�d”G€q€AÝ”L ‘O”O aÑ'€Mõ Œh˜œ œ
 Q™¨¬°¬
Ð3¸1¼7ÐCÑCÔC€GØ€GˆCˆCˆaˆC���ˆF�OØ€GˆAˆDˆqˆD�!�!�!ˆGÑÝŒh�q”w˜q”z A‘~¨Q¬WÐ5Ñ5Ô5€GØ€GˆCˆCˆaˆC�LØ€GˆAˆDˆqˆD�Må"Ñ$Ô$€IÝ%;ØØØØð	&ñ &ô &Ð"õ #(Ð(FÑ"GÔ"GÐà×#Ò# A q¸Ð#ÑFÔFÐFØ"×&Ò& w°Ñ8Ô8Ð8õ 25Ø#Ô;Ø&Ô>ñ2ô 2ð 
ð 
Ñ-ÐÐ-õ 	ØÔ&Ô,ØÔ)Ô/ñ	
ô 	
ð 	
ð 	
ð 6×CÒCÀAÑFÔFÐØ;×IÒIÈ!ÑLÔLÐåÐ'Ð)?Ñ@Ô@Ð@Ð@Ð@r=   Úfit_params_typeÚlistrÅ   c                 ó²   — |\  }}t          || ¦  «        t          || ¦  «        dœ}t          ddg¬¦  «        }t          |¦  «        } |j        ||fi |¤Ž dS )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  sx   € ð �D€A€qå  ?Ñ3Ô3Ý  ?Ñ3Ô3ðð €Jõ
 °#°s°Ð
<Ñ
<Ô
<€CÝ# CÑ(Ô(€Fà€F„Jˆq�!Ð"Ð"�zÐ"Ð"Ð"Ð"Ð"r=   rJ   r½   c                 ó~   — |\  }}t          d¬¦  «        }t          |¦  «        }|                     ||| ¬¦  «         dS )zMTests 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µ  ˆ  sH   € ð �D€A€qÝ
°DÐ
9Ñ
9Ô
9€CÝ# CÑ(Ô(€Fà
‡J‚Jˆq�! =€JÑ1Ô1Ð1Ð1Ð1r=   c                 ó$  — | \  }}t          j        |¦  «        } G d„ dt          ¦  «        } |¦   «         }t          |¦  «        }t	          j        t          ¦  «        5  |                     |||¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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                 óF   •— d|vsJ ‚ t          ¦   «         j        ||fi |¤ŽS )NrJ   ©ÚsuperrU   )r³   r9   r:   r°  r™  s       €r;   rU   zTtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeight.fit¥  s4   ø€ Ø"¨*Ð4Ð4Ð4Ð4Ø•5‘7”7”;˜q !Ð2Ð2 zÐ2Ð2Ð2r=   ©rµ   r¶   r·   rU   Ú__classcell__©r™  s   @r;   ÚClfWithoutSampleWeightr¸  ¤  s8   ø€ € € € € ð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	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Â  š  sî   € ð �D€A€qÝ”L ‘O”O€Mð3ð 3ð 3ð 3ð 3Õ!3ñ 3ô 3ð 3ð
 !Ð
 Ñ
"Ô
"€CÝ# CÑ(Ô(€Få	Œ•kÑ	"Ô	"ð 6ð 6Ø�
Š
�1�a }ˆ
Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6s   ÁBÂB	ÂB	c                 ó  — t          d¬¦  «        \  }}t          ¦   «                              |¦  «        }t          j        |dd…         |dd…         f¦  «        }t          j        |dd…         |dd…         f¦  «        }t          j        |¦  «        }d|ddd…<   t          ¦   «         }t          || |d¬	¦  «        }t          |¦  «        }| 
                    |||¬
¦  «         | 
                    |ddd…         |ddd…         ¦  «         t          |j        |j        ¦  «        D ])\  }}	t          |j        j        |	j        j        ¦  «         Œ*|                     |¦  «        }
|                     |¦  «        }t          |
|¦  «         dS )z|Check that passing removing some sample from the dataset `X` is
    equivalent to passing a `sample_weight` with a factor 0.TrC  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åÑÔ×&Ò& qÑ)Ô)€Aõ 	Œ	�1�S�b�S”6˜1˜R ˜Uœ8Ð$Ñ%Ô%€AÝ
Œ	�1�S�b�S”6˜1˜R ˜Uœ8Ð$Ñ%Ô%€AÝ”M !Ñ$Ô$€MØ€M�#�#�A�#Ñå"Ñ$Ô$€IÝ%;ØØØØð	&ñ &ô &Ð"õ #(Ð(FÑ"GÔ"GÐà×#Ò# A q¸Ð#ÑFÔFÐFØ"×&Ò& q¨¨¨1¨¤v¨q°°°1°¬vÑ6Ô6Ð6õ 25Ø#Ô;Ø&Ô>ñ2ô 2ð 
ð 
Ñ-ÐÐ-õ 	ØÔ&Ô,ØÔ)Ô/ñ	
ô 	
ð 	
ð 	
ð 6×CÒCÀAÑFÔFÐØ;×IÒIÈ!ÑLÔLÐåÐ'Ð)?Ñ@Ô@Ð@Ð@Ð@r=   c           
      óÂ   —  G d„ dt           ¦  «        } t           |¦   «         ¬¦  «        j        | dt          j        t          | d         ¦  «        dz   ¦  «        iŽ dS )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>.TestClassifierNc                 óT   •— |€J ‚t          ¦   «                              |||¬¦  «        S )NrI   rº  )r³   r9   r:   rJ   Ú	fit_paramr™  s        €r;   rU   zNtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifier.fitá  s+   ø€ ØÐ(Ð(Ð(Ý‘7”7—;’;˜q !°=�;ÑAÔAÐAr=   )NNr¼  r¾  s   @r;   ÚTestClassifierrË  à  sG   ø€ € € € € ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	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Ï  Ü  s�   € ðBð Bð Bð Bð BÕ+ñ Bô Bð Bð
 ;Õ ^ ^Ñ%5Ô%5Ð6Ñ6Ô6Ô:Ø	ðÝœ¥ T¨!¤W¡¤°Ñ!1Ñ2Ô2ðð ð ð ð r=   c           	      óV  — d}d}t           j                             | ¦  «                             |¬¦  «        }t          j        dgt          ||z  ¦  «        z  dg|t          ||z  ¦  «        z
  z  z   ¦  «        }d|                     d¦  «        z  |z   }t          d|d	¬
¦  «        }|                     ||¦  «        }|D ]s\  }}	||         ||         }}
||	         }t          d| ¬¦  «        }| 
                    |
|¦  «         |                     |¦  «        }|dk                         ¦   «         sJ ‚Œtt          t          d| ¬¦  «        d¬¦  «        }t          |||d¬¦  «        }t          t          d| ¬¦  «        d¬¦  «        }t          |||d¬¦  «        }t          ||¦  «         dS )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ç  ê  sÕ  € ð €DØ€AÝ”9×(Ò(Ð);Ñ<Ô<×CÒCÈÐCÑKÔK€Lå
Œ�!�•s˜1˜t™8‘}”}Ñ$¨ s¨aµ#°a¸$±h±-´-Ñ.?Ñ'@Ñ@ÑAÔA€AØˆa�iŠi˜Ñ Ô Ñ  <Ñ/€Aõ 
�T˜Q¨4Ð	0Ñ	0Ô	0€BØ�hŠh�q˜!‰nŒn€GØð )ð )‰ˆˆtØ˜Uœ8 Q u¤X�ˆØ�4”ˆÝ _ÐCUÐVÑVÔVˆØ�Š�G˜WÑ%Ô%Ð%Ø×/Ò/°Ñ7Ô7ˆØ˜cÒ!×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(õ
 )Ý˜?Ð9KÐLÑLÔLØðñ ô €Kõ $ K°°A¸yÐIÑIÔI€Mõ *Ý˜?Ð9KÐLÑLÔLØðñ ô €Lõ % \°1°aÀÐKÑKÔK€Nõ �M >Ñ2Ô2Ð2Ð2Ð2r=   c                 óÂ  — t           j                             | ¬¦  «        }d}|                     dd|¬¦  «        }|                     ddd¬¦  «        }d}t          |||¬	¦  «        \  }}d
}t          |||¬	¦  «        \  }	}
t          ||¬¦  «        \  }}d}t          ||	|¬¦  «         t          |	||¬¦  «         t          ||
|¬¦  «         t          |
||¬¦  «         d S )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×(Ò(Ð.@Ð(ÑAÔA€LØ€AØ×Ò˜Q ¨ÐÑ*Ô*€Að %×,Ò,°¸!À#Ð,ÑFÔFÐð €KÝ!Ø%Ø
Ø%0ðñ ô �F€Bˆð €KÝ!Ø%Ø
Ø%0ðñ ô �F€Bˆõ "Ø%Ø
ðñ ô �F€Bˆð €DÝ�B˜ Ð&Ñ&Ô&Ð&Ý�B˜ Ð&Ñ&Ô&Ð&Ý�B˜ Ð&Ñ&Ô&Ð&Ý�B˜ Ð&Ñ&Ô&Ð&Ð&Ð&r=   c                 ór   —  G d„ dt           ¦  «        } |¦   «         }t          |¦  «        } |j        | Ž  dS )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          ¦   «                              |¦  «                             t          j        ¦  «        S r  )r»  rV   ÚastyperP   Úfloat32)r³   r9   r™  s     €r;   rV   zBtest_float32_predict_proba.<locals>.DummyClassifer32.predict_probaL  s+   ø€ Ý‘7”7×(Ò(¨Ñ+Ô+×2Ò2µ2´:Ñ>Ô>Ð>r=   )rµ   r¶   r·   rV   r½  r¾  s   @r;   ÚDummyClassifer32rú  K  s8   ø€ € € € € ð	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?r=   rþ  N)r   r   rU   )r<   rþ  ÚmodelrÀ   s       r;   Útest_float32_predict_probar   E  s^   € ð?ð ?ð ?ð ?ð ?�?ñ ?ô ?ð ?ð ÐÑÔ€EÝ'¨Ñ.Ô.€Jà€J„N�DÐÐÐÐr=   c                  ó¨   — t           j                             d¬¦  «        } dgdz  dgdz  z   }t          d¬¦  «                             | |¦  «         dS )	zlCheck 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  sY   € õ
 	Œ	×Ò˜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)  r-  Úparamr1  r4  rA  rE  rG  rc  re  rq  rt  r~  r…  r8  Úobjectr‘  r–  r›  r©  r²  r¤   rµ  rÂ  rÈ  rÏ  rç  r÷  r   r  r¸   r=   r;   ú<module>r      s´
  ðð Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø (Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø !Ð !Ð !Ð !Ð !Ð !Ø /Ð /Ð /Ð /Ð /Ð /Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø .Ð .Ð .Ð .Ð .Ð .à€	ð €„�hÐÑÔðð ñ  Ôðð
 „×Ò˜¨.Ñ9Ô9Ø„×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð8ð 8ñ 4Ô3ñ <Ô;ñ :Ô9ð8ðv+ð +ð +ð „×Ò˜ d¨E ]Ñ3Ô3ðDð Dñ 4Ô3ðDðð ð ð „×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ðð ñ 4Ô3ñ <Ô;ðð, „×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð6ð 6ñ 4Ô3ñ <Ô;ð6ð, „×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð „×Ò˜   q¡¤Ñ*Ô*ð:7ð :7ñ +Ô*ñ 4Ô3ñ <Ô;ð
:7ðz2ð 2ð 2ð2 „×Ò˜¨.Ñ9Ô9ð,ð ,ñ :Ô9ð,ð^ „×Ò˜ I¨zÐ#:Ñ;Ô;ð5ð 5ñ <Ô;ð5ð0>ð >ð >ð"Cð Cð Cð> „×Ò˜ d¨E ]Ñ3Ô3ðð ñ 4Ô3ðð „×Ò˜ d¨E ]Ñ3Ô3ð@ð @ñ 4Ô3ð@ð „×Ò˜ d¨E ]Ñ3Ô3ðNð Nñ 4Ô3ðNð: „×ÒØà
Œ	×Ò˜bÑ!Ô!×'Ò'¨¨A¨qÑ1Ô1Ø
Œ	×Ò˜bÑ!Ô!×'Ò'¨¨A¨q°!Ñ4Ô4ðñô ðð ñô ðð, „ð"ð "ñ „ð"ð „ð%ð %ñ „ð%ðð ð ð4 „×ÒØàˆŒ�Y�Y �^‘^”^ QÑ'Ô'ØˆŒ�Y�Y �^‘^”^ XÑ.Ô.ðñô ð6ð 6ñô ð6ð"	#ð 	#ð 	#ðð ð ð  €„�hÐÑÔð&ð &ñ  Ôð&ð €„�hÐÑÔðð ñ  Ôðð
 „×Ò˜ A r 7Ñ+Ô+Ø„×Ò˜ i°Ð%<Ñ=Ô=ð&;ð &;ñ >Ô=ñ ,Ô+ð&;ðR;ð ;ð ;ð „×ÒØÐ-Ð/CÐDñô ð;ð ;ñô ð;ð ;ð ;ð ;ð( „×ÒÐ+Ð.>Ð@RÐ-SÑTÔTð;ð ;ñ UÔTð;ðD
5ð 
5ð 
5ð „×Ò˜¨¨f¨Ñ6Ô6ð"ð "ñ 7Ô6ð"ð „×Ò˜¨¨f¨Ñ6Ô6ð/ð /ñ 7Ô6ð/ð( „×ÒÐ8Ð:UÐ:UÐ:UÑVÔVð;ð ;ñ WÔVð;ð@ „×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð-Að -Añ 4Ô3ñ <Ô;ð-Að` „×ÒÐ*¨V°WÐ,=Ñ>Ô>ð#ð #ñ ?Ô>ð#ð$ „×ÒØà	ˆ�	ÑØˆŒ�	ÑÔðñô ð2ð 2ñô ð2ð6ð 6ð 6ð, „×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð'Að 'Añ 4Ô3ñ <Ô;ð'AðTð ð ð/3ð /3ð /3ðd&'ð &'ð &'ðRð ð ð +ð +ð +ð +ð +r=   