Ë
    êÿæiVÆ  ã            
       óì  — d dl Zd dlZd dlm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mZ d dlmZmZ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! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZF d dlGmHZH d dlImJZJ d dlKmLZLmMZMmNZNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZV dZW ej°                  d¬«      d „ «       ZYd!„ ZZej¶                  j¹                  d"eT«      ej¶                  j¹                  d#d$d%g«      ej¶                  j¹                  d&d'd(g«      d)„ «       «       «       Z]d*„ Z^ej¶                  j¹                  d&d'd(g«      d+„ «       Z_d,„ Z`ej¶                  j¹                  d#g d-¢«      ej¶                  j¹                  d&d'd(g«      d.„ «       «       Zaej¶                  jÄ                  ej¶                  j¹                  d#g d-¢«      ej¶                  j¹                  d&d'd(g«      d/„ «       «       «       Zcej¶                  j¹                  d#d$d%g«      ej¶                  j¹                  d&d'd(g«      ej¶                  j¹                  d0 edd1«      «      d2„ «       «       «       Zed3„ Zfej¶                  j¹                  d"eT«      ej¶                  j¹                  d#g d-¢«      d4„ «       «       Zgej¶                  j¹                  d#d5gd$ e«       fd% e%d6¬7«      fd8 e«       fg«      d9„ «       Zhd:„ Ziej¶                  j¹                  d;g d<¢«      ej¶                  j¹                  d&d'd(g«      d=„ «       «       Zjd>„ Zkd?„ Zlej¶                  j¹                  d#g d-¢«      ej¶                  j¹                  d&d'd(g«      d@„ «       «       Zmej¶                  j¹                  d#g d-¢«      ej¶                  j¹                  d&d'd(g«      dA„ «       «       Znej¶                  j¹                  d&d'd(g«      dB„ «       Zoej¶                  j¹                  dCejà                  jã                  dD«      jå                  dEdFd1«      ejà                  jã                  dD«      jå                  dEdFd1dG«      g«      dH„ «       Zsej°                  dI„ «       Ztej°                  dJ„ «       ZudK„ ZvdL„ ZwdM„ ZxdN„ Zy ej°                  d¬«      dO„ «       Zz ej°                  d¬«      dP„ «       Z{ej¶                  j¹                  dQdFdRg«      ej¶                  j¹                  dSdTdUg«      dV„ «       «       Z|dW„ Z}ej¶                  j¹                  dXdYdZg«      d[„ «       Z~d\„ Zej¶                  j¹                  d]d^d_g«      d`„ «       Z€da„ Z�ej¶                  j¹                  dbe‚eƒg«      dc„ «       Z„ej¶                  j¹                  dbe‚eƒg«      dd„ «       Z…ej¶                  j¹                  dedfd1dgdhœdfd1dgdiœg«      dj„ «       Z†ej¶                  j¹                  dkg dl¢«      dm„ «       Z‡ej¶                  j¹                  d#g d-¢«      ej¶                  j¹                  d&d'd(g«      dn„ «       «       Zˆej¶                  j¹                  dodpdqg«      dr„ «       Z‰ej¶                  j¹                  dsdtgeWz   e�j                  eW«      g«      du„ «       Z‹dv„ ZŒdw„ Z�dx„ ZŽdy„ Z�ej¶                  j¹                  dzd'd(g«      ej¶                  j¹                  d#g d-¢«      d{„ «       «       Z�d|„ Z‘ej¶                  j¹                  d&d(d'g«      ej¶                  j¹                  dzd(d'g«      ej¶                  j¹                  d} eF«       eC¬~«      d„ «       «       «       Z’ej¶                  j¹                  d&d(d'g«      ej¶                  j¹                  dzd(d'g«      ej¶                  j¹                  d} eF«       eC¬~«      d€„ «       «       «       Z“y)�é    N)Úassert_allclose)Úconfig_context)ÚBaseEstimatorÚClassifierMixinÚclone)ÚCalibratedClassifierCVÚCalibrationDisplayÚ_CalibratedClassifierÚ_sigmoid_calibrationÚ_SigmoidCalibrationÚ_TemperatureScalingÚcalibration_curve)Ú	load_irisÚ
make_blobsÚmake_classification)ÚLinearDiscriminantAnalysis)ÚDummyClassifier)ÚRandomForestClassifierÚVotingClassifier)ÚDictVectorizer)ÚFrozenEstimator)ÚSimpleImputer)ÚIsotonicRegression)ÚLogisticRegressionÚSGDClassifier)Úaccuracy_scoreÚbrier_score_lossÚlog_lossÚroc_auc_score)ÚKFoldÚLeaveOneOutÚcheck_cvÚcross_val_predictÚcross_val_scoreÚtrain_test_split)ÚMultinomialNB)ÚPipelineÚmake_pipeline)ÚLabelEncoderÚStandardScaler)Ú	LinearSVC)ÚDecisionTreeClassifier)Ú_convert_to_numpyÚ_get_namespace_device_dtype_idsÚdeviceÚget_namespaceÚ)yield_namespace_device_dtype_combinations)ÚCheckingClassifier)Úget_tags)Ú_array_api_for_testsÚ_convert_containerÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)Úsoftmax)ÚCSR_CONTAINERS)Úcheck_is_fittedéÈ   Úmodule)Úscopec                  ó4   — t        t        dd¬«      \  } }| |fS )Né   é*   ©Ú	n_samplesÚ
n_featuresÚrandom_state)r   Ú	N_SAMPLES©ÚXÚys     ús/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/tests/test_calibration.pyÚdatarK   I   s   € ä¬¸qÈrÔR�D€A€qØˆaˆ4€Kó    c                 ó¦   — | \  }}d}t        j                  t        «      5  t        |¬«      j	                  ||«       d d d «       y # 1 sw Y   y xY w)Nz%not sigmoid, isotonic, or temperature©Úmethod)ÚpytestÚraisesÚ
ValueErrorr   Úfit)rK   rH   rI   Úinvalid_methods       rJ   Útest_calibration_method_raisesrU   O   s=   € à�D€A€qØ<€Nä	�‰”zÕ	"Ü nÔ5×9Ñ9¸!¸QÔ?÷ 
#×	"Ñ	"ús   ¡AÁAÚcsr_containerrO   Ú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é   rA   ©Úseed©Úsize©Úsample_weighté   ©ÚcvrY   é   ©rO   rd   rY   rW   )rF   ÚnpÚrandomÚRandomStateÚuniformr_   Úminr&   rS   Úpredict_probar   rP   rQ   rR   r   r7   )rK   rO   rV   rY   rC   rH   rI   ra   Ú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                       rJ   Útest_calibrationry   X   s�  € ô
 ˜Q‘€IØ�D€A€qÜ—I‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÀÇÁÐ:ÓG€Mà	ˆA�E‰E‹G‰€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 )Nr[   ©rd   r   )r   rS   Úcalibrated_classifiers_Ú	estimatorÚ
isinstancer+   )rK   rH   rI   Ú	calib_clfÚbase_ests        rJ   Ú"test_calibration_default_estimatorr�   –   sI   € à�D€A€qÜ&¨!Ô,€IØ‡M�M�!�QÔà×0Ñ0°Ñ3×=Ñ=€HÜ�h¤	Ô*Ð*Ñ*rL   c                 ó  — | \  }}d}t        |¬«      }t        ||¬«      }t        |j                  t         «      sJ ‚|j                  j                  |k(  sJ ‚|j                  ||«       |r|nd}t        |j                  «      |k(  sJ ‚y )Nre   ©Ún_splitsrc   rb   )r    r   r~   rd   r„   rS   Úlenr|   )rK   rY   rH   rI   ÚsplitsÚkfoldr   Úexpected_n_clfs           rJ   Útest_calibration_cv_splitterr‰       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ÑCrL   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   rƒ   Trc   z$Requesting 101-fold cross-validation©Úmatchz!LeaveOneOut cross-validation does)r    r   rP   rQ   rR   rS   r!   )rK   rH   rI   r‡   r   s        rJ   Útest_calibration_cv_nfoldrŽ   °   sŽ   € à�D€A€qä˜3Ô€EÜ&¨%¸$Ô?€IÜ	�‰”zÐ)OÖ	PØ�‰�a˜Ô÷ 
Qô '¬+«-À$ÔG€IÜ	�‰”zÐ)LÖ	MØ�‰�a˜Ô÷ 
NÐ	M÷	 
QÐ	Pú÷ 
NÐ	Mús   ºB!ÂB-Â!B*Â-B6)rW   rX   Útemperaturec                 óÐ  — 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 )	Nr[   rA   r\   r^   ©rE   )rO   rY   r`   çš™™™™™¹?)rF   rg   rh   ri   rj   r…   r+   r   rS   rl   ÚlinalgÚnorm)rK   rO   rY   rC   rH   rI   ra   rm   rn   ro   rp   r}   Úcalibrated_clfÚprobs_with_swÚprobs_without_swÚdiffs                   rJ   Ú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Ø�#Š:Ð‰:rL   c                 óP  — | \  }}t        ||d¬«      \  }}}}t        t        «       t        d¬«      «      }	t	        |	|d|¬«      }
|
j                  ||«       |
j                  |«      }t	        |	|d|¬«      }|j                  ||«       |j                  |«      }t        ||«       y)zTest parallel calibrationrA   r‘   r[   )rO   Ún_jobsrY   rb   N)r%   r(   r*   r+   r   rS   rl   r   )rK   rO   rY   rH   rI   rm   rp   rn   rq   r}   Úcal_clf_parallelÚprobs_parallelÚcal_clf_sequentialÚprobs_sequentials                 rJ   Ú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Õ5rL   r]   r[   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 )Nr[   r   )rg   ÚeyeÚsumÚshape)Úy_trueÚ
proba_predÚ	n_classesÚY_onehots       rJ   Úmulticlass_brierz5test_calibration_multiclass.<locals>.multiclass_brier÷   s<   € Ü—6‘6˜)Ó$ VÑ,ˆÜ�v‰v�x *Ñ,°Ñ2Ó3°h·n±nÀQÑ6GÑGÐGrL   é   r‘   éô  éd   é
   ç      .@©rC   rD   rE   ÚcentersÚcluster_stdr[   r   rb   re   rf   ©ÚaxisçÍÌÌÌÌÌä?gffffffî?)r¨   gš™™™™™ñ?é   rA   )Ún_estimatorsrE   )r+   r   rg   Úuniquer¥   rS   r   rl   r   r¤   Úonesr…   Úscorer9   Údecision_functionr   )rO   rY   r]   rª   rr   rH   rI   r¨   rm   rn   rp   rq   rt   ÚprobasÚuncalibrated_brierÚcalibrated_brierÚ	clf_probsÚcal_clf_probss                     rJ   Ú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Ñ6rL   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   )rg   Úzerosr¥   ©ÚselfrH   s     rJ   ÚpredictzAtest_calibration_zero_probability.<locals>.ZeroCalibrator.predict:  s   € Ü—8‘8˜AŸG™G A™JÓ'Ð'rL   N)Ú__name__Ú
__module__Ú__qualname__rÉ   © rL   rJ   ÚZeroCalibratorrÄ   8  s   „ ó	(rL   rÎ   é2   r®   r«   r¯   r°   )r}   ÚcalibratorsÚclassesç      ð?)r   r   rS   r
   Úclasses_rl   r   Ú
n_classes_)rÎ   rH   rI   rr   Ú
calibratorrt   r¼   s          rJ   Ú!test_calibration_zero_probabilityrÖ   3  s„   € ÷
(ñ (ô
 Ø °!¸RÈTô�D€A€qô Ó
×
Ñ
  1Ó
%€CÙÓ!€JÜ#Ø J <¸¿¹ô€Gð ×"Ñ" 1Ó%€Fô �F˜C #§.¡.Ñ0Õ1rL   c           
      ó>  — 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        «       }|j                  |||«       |j                  |«      dd…d
f   }|	|f | |	«       | |«      ffD ]·  \  }}t        t        |«      |¬«      }|dfD ]•  }|j                  ||
|¬«       |j                  |«      }|j                  |«      }|dd…d
f   }t        |t        j                  dd
g«      t        j                  |d
¬«         «       t!        ||«      t!        ||«      kD  rŒ•J ‚ Œ¹ y)z'Test calibration for frozen classifiersrÏ   é   r@   rA   rB   r\   r^   Nr[   rb   rN   r`   r   r³   )r   rg   rh   ri   rj   r_   rk   r&   rS   rl   r   r   rÉ   r8   ÚarrayÚargmaxr   )rV   rO   rC   rH   rI   ra   rm   rn   ro   ÚX_calibÚy_calibÚsw_calibrp   rq   rr   rs   Úthis_X_calibrv   Úcal_clf_frozenÚswÚy_prob_frozenÚy_pred_frozenÚprob_pos_cal_clf_frozens                          rJ   Útest_calibration_frozenrä   L  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Ø‡G�GˆG�W˜hÔ'Ø×$Ñ$ VÓ,ªQ°¨TÑ2€Lð 
�&ÐÙ	�wÓ	¡¨vÓ!6Ð7ó&Ñ!ˆ�kô 0´ÀÓ0DÈVÔTˆà˜TÓ"ˆBØ×Ñ˜|¨WÀBÐÔGà*×8Ñ8¸ÓEˆMØ*×2Ñ2°;Ó?ˆMØ&3²A°q°DÑ&9Ð#ÜØœrŸx™x¨¨A¨Ó/´·	±	¸-ÈaÔ0PÑQôô $ F¨LÓ9Ô<LØÐ/ó=ó ð ð ñ #ñ&rL   rÕ   Úclip)Úout_of_boundsr�   c                 óº  — | \  }}t        d¬«      }t        ||dd¬«      }|j                  ||«       |j                  |«      }t	        |||dd¬«      }|j                  ||«       |j                  ||«       |j                  |«      }	|j                  |	«      }
|dk(  r*|
j                  d	k(  r|
j                  d
   d	k(  r	|
d d …d
f   }
t        |d d …d
f   |
«       y )Nr«   r‘   rØ   Frf   r»   )rd   rO   r�   r[   rb   )
r+   r   rS   rl   r#   r»   rÉ   Úndimr¥   r   )rK   rO   rÕ   rH   rI   rr   rt   Ú
cal_probasÚunbiased_predsÚclf_dfÚmanual_probass              rJ   Útest_calibration_ensemble_falserí   y  sÞ   € ð �D€A€qÜ
 Ô
#€Cä$ S°¸AÈÔN€GØ‡K�K��1ÔØ×&Ñ& qÓ)€Jô ' s¨A¨q°QÐ?RÔS€Nà‡N�N�> 1Ô%à‡G�GˆAˆq„MØ×"Ñ" 1Ó%€FØ×&Ñ& vÓ.€Mà�ÒØ×Ñ !Ò#¨-×*=Ñ*=¸aÑ*@ÀAÒ*EØ)ª!¨Q¨$Ñ/ˆMä�Jšq !˜tÑ$ mÕ4rL   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)re   éüÿÿÿrÒ   )rb   éÿÿÿÿrð   g¿j˜=ïÉ¿gY90¯(àä?rØ   rÒ   r   rb   r@   N)rg   rÙ   r7   r   Úexpr   rS   rÉ   rP   rQ   rR   Úvstack)ÚexFÚexYÚAB_lin_libsvmÚlin_probÚsk_probs        rJ   Ú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r¨   )r[   rØ   re   c           
      ó¬  — t        dddd| ddd¬«      \  }}t        ||d¬«      \  }}}}t        t        j                  d	d
d¬«      }|j                  ||«       t        t        |«      dd|¬«      j                  ||«      }	|	j                  }
|
D ]G  }t        |j                  «      dk(  sJ ‚|j                  d   }t        |«       |j                  dkD  rŒGJ ‚ |sú|j                  |«      }|	j                  |«      }t        ||«      t        ||«      k(  sJ ‚|j                  |«      }|	j                  |«      }t!        ||«      t!        ||«      k  sJ ‚| dk(  r|dd…df   }|dd…df   }t#        t%        ||d¬«      t%        ||d¬«      «       |j                  |«      }t'        «       j                  ||«      }t#        |j                  ddd¬«       yy)z%Check temperature scaling calibrationéè  r®   r   rb   ç       @rA   ©rC   rD   Ún_informativeÚn_redundantr¨   Ún_clusters_per_classÚ	class_seprE   r‘   g:Œ0âŽyE>r<   )ÚCÚtolÚmax_iterrE   rØ   r�   ©rd   rO   rY   r[   NÚovr)Úmulti_classrÒ   ç�íµ ÷Æ°>)ÚatolÚrtol)r   r%   r   rg   ÚinfrS   r   r   r|   r…   rÐ   r;   Úbeta_rÉ   r   rl   r   r   r   r   )r¨   rY   rH   rI   rm   ÚX_calrn   Úy_calrr   rt   Úcalibrated_classifiersÚcalibrated_classifierrÕ   Úy_predÚ
y_pred_calÚy_scoresÚy_scores_calÚy_scores_trainÚtss                      rJ   Útest_temperature_scalingr  ¬  sê  € ô ØØØØØØØØô	�D€A€qô &6°a¸ÈÔ%LÑ"€GˆU�G˜UÜ
œrŸv™v¨4¸#ÈAÔ
N€CØ‡G�GˆG�WÔä$Ü˜Ó ¨=À8ôç	�cˆ%�Óð ð %×<Ñ<Ðã!7Ðô Ð(×4Ñ4Ó5¸Ò:Ð:Ð:à*×6Ñ6°qÑ9ˆ
ä˜
Ô#à×Ñ !Ó#Ð#Ð#ð "8ñ à—‘˜UÓ#ˆØ—_‘_ UÓ+ˆ
Ü˜e ZÓ0´NÀ5È&Ó4QÒQÐQÐQð ×$Ñ$ UÓ+ˆØ×,Ñ,¨UÓ3ˆÜ˜˜|Ó,´¸ÀÓ0IÒIÐIÐIð
 ˜Š>Ø¢ 1 ‘~ˆHØ'ª¨1¨Ñ-ˆLÜÜ˜% °uÔ=Ü˜% ¸5ÔAô	
ð ×*Ñ*¨7Ó3ˆÜ Ó"×&Ñ& ~°wÓ?ˆÜ˜Ÿ™ #¨D°qÖ9ð5 rL   c                 óÄ  — t        j                  d«      j                  | «      }|j                  dd«      }t         j                  j                  dd|j                  d   ¬«      }t        «       j                  ||«      }t        «       j                  ||«      }t        |«      t        |«      k(  sJ ‚|j                  |«      }|j                  |«      }t        ||«       y )Nr®   rð   rb   r   r[   r^   )rg   ÚarangeÚastypeÚreshaperh   Úrandintr¥   r   rS   r3   rÉ   r   )Úglobal_dtyperH   ÚX_2drI   r  Úts_2dÚy_pred1Úy_pred2s           rJ   Ú)test_temperature_scaling_input_validationr!  ò  s²   € ä
�	‰	�"‹×Ñ˜\Ó*€AØ�9‰9�R˜Ó€DÜ
�	‰	×Ñ˜!˜Q Q§W¡W¨Q¡ZÐÓ0€Aä	Ó	×	"Ñ	" 1 aÓ	(€BÜÓ!×%Ñ% d¨AÓ.€Eä�B‹<œ8 E›?Ò*Ð*Ð*à�j‰j˜‹m€GØ�m‰m˜DÓ!€Gä�G˜WÕ%rL   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   rb   rb   rb   )ç        r’   çš™™™™™É?çš™™™™™é?çÍÌÌÌÌÌì?rÒ   r[   ©Ún_binsr   rb   r’   r&  gš™™™™™¹¿N)r   r   r   r   rb   rb   )r#  r’   r$  ç      à?r&  rÒ   Úquantile©r(  ÚstrategygUUUUUUå?r%  Ú
percentile)r,  )rg   rÙ   r   r…   r6   rP   rQ   rR   )r¦   r  Ú	prob_trueÚ	prob_predÚy_true2r   Úprob_true_quantileÚprob_pred_quantiles           rJ   Útest_calibration_curver3    sT  € ä�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Õ	"Ü˜' 7°\ÕB÷ 
#Ð	"÷! 
#Ð	"ú÷  
#Ð	"ú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| |¬«      }|j                  ||«       |j                  |«       y)z$Test that calibration can accept nanr®   r[   r   rA   )rC   rD   rý   rþ   rE   ©r   r   ÚimputerÚrfrb   )r·   r  N)	r   rg   Únanr'   r   r   r   rS   rÉ   )rO   rY   rH   rI   rr   Úclf_cs         rJ   Útest_calibration_nan_imputerr:  "  s}   € ô Ø °!ÀÐQSô�D€A€qô �f‰f€A€d�GÜ
Ø
”]“_Ð	%¨Ô.DÐRSÔ.TÐ'UÐVó€Cô # 3¨1°VÀhÔO€EØ	‡I�Iˆa�„OØ	‡M�M�!ÕrL   c                 óô   — t        ddd¬«      \  }}g d¢}t        dd¬«      }t        || t        d	¬
«      |¬«      }|j	                  ||«       t        |j                  |«      j                  d¬«      d«       y )Nr®   re   r[   )rC   rD   r¨   )
rb   rb   rb   rb   rb   r   r   r   r   r   rÒ   r«   )r  rE   rØ   rƒ   rf   rb   r³   )r   r+   r   r    rS   r   rl   r¤   )rO   rY   rH   Ú_rI   rr   Úclf_probs          rJ   Útest_calibration_prob_sumr>  2  sr   € ô
 ¨¸ÀQÔG�D€A€qÚ&€AÜ
�c¨Ô
*€Cä%Ø�Fœu¨aÔ0¸8ô€Hð ‡L�L��AÔÜ�H×*Ñ*¨1Ó-×1Ñ1°qÐ1Ó9¸3Õ?rL   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é   re   )r   r   r   rb   )rb   rb   r[   r[   )r[   rØ   rØ   rØ   r«   r‘   rW   rØ   rf   é   r   r[   rb   r³   )rg   rh   Úrandnr,   r   r    rS   r  Úzipr|   rl   r8   rÆ   r…   Úallr7   r¤   r¹   r¥   )	rY   rH   rI   rr   rt   rÑ   Úcalib_iÚclass_iÚprobas	            rJ   Útest_calibration_less_classesrH  B  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¸Ñ:Õ;Ð;Ð;ñ !4ð ×/Ñ/°Ñ2×@Ñ@ÀÓCˆÜ! %§)¡)° )Ó"3´R·W±W¸U¿[¹[È¹^Ó5LÕMrL   rH   rA   é   re   r@   c                 óx   — g d¢} G d„ dt         t        «      }t         |«       «      }|j                  | |«       y)z;Test that calibration accepts n-dimensional arrays as input)rb   r   r   rb   rb   r   rb   rb   r   r   rb   r   r   rb   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)rg   r¸   rÓ   )rÈ   rH   rI   s      rJ   rS   zBtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.fitn  s   € ÜŸI™I a›LˆDŒMØˆKrL   c                 ó`   — |j                  |j                  d   d«      j                  d¬«      S )Nr   rð   rb   r³   )r  r¥   r¤   rÇ   s     rJ   r»   zPtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.decision_functionr  s)   € à—9‘9˜QŸW™W Q™Z¨Ó,×0Ñ0°aÐ0Ó8Ð8rL   N)rÊ   rË   rÌ   Ú__doc__rS   r»   rÍ   rL   rJ   ÚMockTensorClassifierrL  k  s   „ Ù8ò	ó	9rL   rQ  N)r   r   r   rS   )rH   rI   rQ  r•   s       rJ   Ú test_calibration_accepts_ndarrayrR  `  s7   € ò 	6€Aô	9œ´ô 	9ô ,Ñ,@Ó,BÓC€Nà×Ñ�q˜!ÕrL   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)rb   r   rb   rb   r   rÍ   )Ú	dict_dataÚtext_labelss     rJ   r]  r]  {  sE   € ð ˜wÑ'Ø˜wÑ'Ø˜wÑ'Ø˜wÑ'Ø˜wÑ'ð€Iò "€KØ�kÐ!Ð!rL   c                 ór   — | \  }}t        dt        «       fdt        «       fg«      }|j                  ||«      S )NÚ
vectorizerrr   )r'   r   r   rS   )r]  rH   rI   Úpipeline_prefits       rJ   Údict_data_pipelinerb  ˆ  sC   € à�D€A€qÜØ
œÓ(Ð	)¨EÔ3IÓ3KÐ+LÐMó€Oð ×Ñ˜q !Ó$Ð$rL   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
    r[   r{   Ún_features_in_N)r   r   rS   r8   rÓ   ÚhasattrrÉ   rl   )r]  rb  rH   rI   rr   r   s         rJ   Útest_calibration_dict_pipelinerf  ‘  s‡   € ð �D€A€qØ
€CÜ&¤°sÓ';ÀÔB€IØ‡M�M�!�QÔä�y×)Ñ)¨3¯<©<Ô8ô �sÐ,Ô-Ð-Ð-Ü�yÐ"2Ô3Ð3Ð3ð ×Ñ�aÔØ×Ñ˜AÕrL   c                  ó(  — t        dddd¬«      \  } }t        t        d¬«      d¬«      }|j                  | |«       t	        «       j                  |«      j
                  }t        |j
                  |«       |j                  | j                  d   k(  sJ ‚y )	Nr®   re   r[   r«   ©rC   rD   r¨   rE   rb   ©r  r{   )	r   r   r+   rS   r)   rÓ   r8   rd  r¥   )rH   rI   r   rÑ   s       rJ   Útest_calibration_attributesrj  «  sy   € ä¨¸ÀQÐUVÔW�D€A€qÜ&¤y°1¤~¸!Ô<€IØ‡M�M�!�QÔä‹n× Ñ  Ó#×,Ñ,€GÜ�y×)Ñ)¨7Ô3Ø×#Ñ# q§w¡w¨q¡zÒ1Ð1Ñ1rL   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®   re   r[   r«   rh  rb   ri  zAX has 3 features, but LinearSVC is expecting 5 features as input.rŒ   rØ   )r   r+   rS   r   r   rP   rQ   rR   )rH   rI   rr   r   Úmsgs        rJ   Ú2test_calibration_inconsistent_prefit_n_features_inrm  ¶  sw   € ô ¨¸À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®   re   r[   r«   rh  rØ   ÚlrÚsoft)Ú
estimatorsÚvoting©r}   )r   r   ÚrangeÚstrr   rS   r   r   )rH   rI   ÚiÚvoter   s        rJ   Ú!test_calibration_votingclassifierrx  Â  s   € ô ¨¸ÀQÐUVÔW�D€A€qÜÜCHÈÄ8ÓLÁ8¸a�TœC ›F‘]Ô$6Ó$8Ò9À8Ñ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Í   rL   rJ   Ú	iris_datar|  Ò  s   € ä Ô%Ð%rL   c                 ó,   — | \  }}||dk     ||dk     fS )Nr[   rÍ   )r|  rH   rI   s      rJ   Úiris_data_binaryr~  ×  s&   € à�D€A€qØˆQ�‰U‰8�Q�q˜1‘u‘XÐÐrL   r(  r®   r,  rj   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,  Úalpharb   r+  r   r   z.Mean predicted probability (Positive class: 1)z)Fraction of positives (Positive class: 1)úPerfectly calibrated)r   rS   r	   Úfrom_estimatorrl   r   r   r.  r/  Úy_probÚestimator_nameÚ
matplotlibr~   Úline_ÚlinesÚLine2DÚ	get_alphaÚax_ÚaxesÚAxesÚfigure_ÚfigureÚFigureÚ
get_xlabelÚ
get_ylabelÚ
get_legendÚ	get_textsr…   Úget_text)Úpyplotr~  r(  r,  rH   rI   ro  Úvizrƒ  r.  r/  ÚmplÚexpected_legend_labelsÚlegend_labelsÚlabelss                  rJ   Ú test_calibration_display_computer›  Ý  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Üˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<ÛˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ  rL   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 )Nr�  )r(   r*   r   rS   r	   r‚  r„  rŠ  r’  r“  r…   r”  )	r•  r~  rH   rI   rr   r–  r˜  r™  rš  s	            rJ   Ú$test_plot_calibration_curve_pipeliner�    s¥   € à�D€A€qÜ
œÓ(Ô*<Ó*>Ó
?€CØ‡G�GˆAˆq„MÜ
×
+Ñ
+¨C°°AÓ
6€Cà!×0Ñ0Ð2HÐIÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<ÛˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ  rL   zname, expected_label)NÚ_line1)Úmy_estrŸ  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   rb   rb   r   ©r$  r%  r%  çš™™™™™Ù?©r„  r�  )
rg   rÙ   r	   ÚplotÚappendrŠ  r’  r“  r…   r”  )
r•  ÚnameÚexpected_labelr.  r/  rƒ  r–  r˜  r™  rš  s
             rJ   Ú'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Üˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<ÛˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ  rL   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 )Nr¡  r¢  zname oner¤  zname two©r§  r�  )
rg   rÙ   r	   r„  r¥  rŠ  r’  r“  r…   r”  )	r•  r.  r/  rƒ  r§  r–  r˜  r™  rš  s	            rJ   Ú)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Üˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<ÛˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ  rL   Úconstructor_namer‚  Ú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 namerb   r‚  r§  rD  r�  Úanother_namer«  )r   rS   rl   Úgetattrr	   r„  Úcloser¥  rŠ  r’  r“  r…   r”  )r­  r•  r~  rH   rI   Úclf_namerr   rƒ  ÚconstructorÚparamsr–  r˜  r™  rš  s                 rJ   Ú,test_calibration_display_name_multiple_callsr¶  =  sY  € ð �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ÔÜˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<ÛˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ  rL   c                 óP  — |\  }}t        «       j                  ||«      }t        «       j                  ||«      }t        j                  |||«      }t        j                  ||||j
                  ¬«      }|j
                  j                  «       d   }|j                  d«      dk(  sJ ‚y )N)Úaxrb   r�  )r   rS   r,   r	   r‚  rŠ  Úget_legend_handles_labelsÚcount)	r•  r~  rH   rI   ro  Údtr–  Úviz2rš  s	            rJ   Ú!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Ñ4rL   Ú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.rA   ÚspamrØ   Úeggsr[   ©Údtyper   r^   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)
rg   rh   ri   rÙ   r  r_   rP   rQ   rR   r   )r¾  ÚrngÚy1Úy2Úerr_msgs        rJ   Ú*test_calibration_curve_pos_label_error_strrÈ  m  s�   € ô �)‰)×
Ñ
 Ó
#€CÜ	�‰�6�(˜Q‘, & ¨A¡Ñ-°[Ô	A€BØ	�‰�Q˜ §¡ˆÓ	(€Bð	$ð ô
 
�‰”z¨Ö	1Ü˜"˜bÔ!÷ 
2×	1Ñ	1ú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   rb   rb   rb   rb   rb   rb   rÀ  ÚeggrÂ  )	r’   r$  g333333Ó?r£  rµ   gffffffæ?r%  r&  rÒ   rA  r'  )r   r)  rb   rb   )r(  Ú	pos_labelrb   r   )r   r   r)  rb   N)rg   rÙ   r   r   )r¾  r¦   rÑ   Ú
y_true_strr  r.  r<  s          rJ   Ú 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š~Õ.rL   Ú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Ï  r[   rÐ  N)r   rS   r	   r‚  r†  Ú	get_colorÚget_linewidthÚget_linestyle)r•  r~  rÎ  rH   rI   ro  r–  s          rJ   Útest_calibration_display_kwargsrÛ  ’  sŒ   € ð �D€A€qä	Ó	×	!Ñ	! ! QÓ	'€BÜ
×
+Ñ
+¨B°°1Ñ
?¸Ñ
?€Cà�9‰9×ÑÓ  EÒ)Ð)Ð)Ø�9‰9×"Ñ"Ó$¨Ò)Ð)Ð)Ø�9‰9×"Ñ"Ó$¨Ò,Ð,Ñ,rL   zpos_label, expected_pos_label))Nrb   r5  )rb   rb   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: r�  )r   rS   r	   r‚  rl   r   r   r.  r/  rƒ  rŠ  r�  r‘  Ú	__class__rÊ   r’  r“  r…   r”  )r•  r~  rË  Úexpected_pos_labelrH   rI   ro  r–  rƒ  r.  r/  r˜  r™  rš  s                 rJ   Ú"test_calibration_display_pos_labelrà  ¥  s^  € ð
 �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Üˆ}Ó¤Ð%;Ó!<Ò<Ð<Ð<ÛˆØ�‰Ó Ð$:Ò:Ð:Ð:ñ  rL   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.Trz  Nr­   r[   r   rb   rÂ  )rO   rY   rd   r`   )r   r*   Úfit_transformrg   Ú	ones_likerÆ   r¥   rÃ  r   r   r   rS   rC  r|   r   r}   Úcoef_rl   )rO   rY   rH   rI   ra   ÚX_twiceÚy_twicer}   Úcalibrated_clf_without_weightsÚcalibrated_clf_with_weightsÚest_with_weightsÚest_without_weightsÚy_pred_with_weightsÚy_pred_without_weightss                 rJ   Ú?test_calibrated_classifier_cv_double_sample_weights_equivalencerí  Æ  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Ñ-ÐÐ-ô 	Ø×&Ñ&×,Ñ,Ø×)Ñ)×/Ñ/õ	
ð	2ð 6×CÑCÀAÓFÐØ;×IÑIÈ!ÓLÐäÐ'Ð)?Õ@rL   Ú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)r5   r2   r   rS   )rî  rK   rH   rI   Ú
fit_paramsrr   Úpc_clfs          rJ   Ú test_calibration_with_fit_paramsrö  ø  sW   € ð �D€A€qä  ?Ó3Ü  ?Ó3ñ€Jô
 °#°s°Ô
<€CÜ# CÓ(€Fà€F‡J�Jˆq�!Ñ"�zÓ"rL   ra   rÒ   c                 ód   — |\  }}t        d¬«      }t        |«      }|j                  ||| ¬«       y)zMTests that sample_weight is passed to the underlying base
    estimator.
    T)Úexpected_sample_weightr`   N)r2   r   rS   )ra   rK   rH   rI   rr   rõ  s         rJ   Ú-test_calibration_with_sample_weight_estimatorrù    s3   € ð �D€A€qÜ
°DÔ
9€CÜ# CÓ(€Fà
‡J�Jˆq�! =€JÕ1rL   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 )Nra   ©ÚsuperrS   )rÈ   rH   rI   rô  rÞ  s       €rJ   rS   zTtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeight.fit(  s'   ø€ Ø"¨*Ñ4Ð4Ð4Ü‘7‘;˜q !Ñ2 zÑ2Ð2rL   ©rÊ   rË   rÌ   rS   Ú__classcell__©rÞ  s   @rJ   ÚClfWithoutSampleWeightrü  '  s   ø„ ÷	3ð 	3rL   r  r`   N)rg   rã  r2   r   rP   ÚwarnsÚUserWarningrS   )rK   rH   rI   ra   r  rr   rõ  s          rJ   Ú0test_calibration_without_sample_weight_estimatorr    se   € ð �D€A€qÜ—L‘L “O€Mô3Ô!3ô 3ñ
 !Ó
"€CÜ# CÓ(€Fä	�‰”kÕ	"Ø�
‰
�1�a }ˆ
Ô5÷ 
#×	"Ñ	"ú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 )Nr`   rþ  )rÈ   rH   rI   ra   Ú	fit_paramrÞ  s        €rJ   rS   zNtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifier.fit8  s$   ø€ ØÐ(Ð(Ð(Ü‘7‘;˜q !°=�;ÓAÐArL   )NNr   r  s   @rJ   ÚTestClassifierr	  7  s   ø„ ÷	Bñ 	BrL   r  rs  r  rb   N)r   r   rS   rg   r¹   r…   )rK   r  s     rJ   Ú2test_calibration_with_non_sample_aligned_fit_paramr  3  sM   € ôBÔ+ô Bð
 ;Ô¡^Ó%5Ô6×:Ñ:Ø	ðÜŸ™¤ T¨!¡W£°Ñ!1Ó2órL   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å?rú   r^   rb   r   g     jø@)rð   rb   NT)rd   rI   Ú
classifierÚsquared_hinge)ÚlossrE   g     ˆÃ@rW   rN   Úroc_auc)ÚscoringrX   )rg   rh   Údefault_rngÚnormalrÙ   Úintr  r"   Úsplitr   rS   r»   Úanyr   r$   r   )Úglobal_random_seedÚprobÚnÚrandom_noiserI   rH   rd   ÚindicesÚtrainÚtestrm   rn   rp   Úsgd_clfÚpredictionsÚclf_sigmoidÚscore_sigmoidÚclf_isotonicÚscore_isotonics                      rJ   Ú@test_calibrated_classifier_cv_works_with_large_confidence_scoresr&  A  sl  € ð €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 >Õ2rL   c                 óx  — t         j                  j                  | ¬«      }d}|j                  dd|¬«      }|j	                  ddd¬«      }d}t        |||¬	«      \  }}d
}t        |||¬	«      \  }	}
t        ||¬«      \  }}d}t        ||	|¬«       t        |	||¬«       t        ||
|¬«       t        |
||¬«       y )Nr\   r­   r   r[   r^   éþÿÿÿ)ÚlowÚhighr_   r’   )r!  rI   Úmax_abs_prediction_thresholdr®   )r!  rI   r  )r  )rg   rh   ri   r  rj   r   r   )r  rE   r  rI   Úpredictions_smallÚthreshold_1Úa1Úb1Úthreshold_2Úa2Úb2Úa3Úb3r  s                 rJ   Ú5test_sigmoid_calibration_max_abs_prediction_thresholdr5  s  sÙ   € Ü—9‘9×(Ñ(Ð.@Ð(ÓA€LØ€AØ×Ñ˜Q ¨ÐÓ*€Að %×,Ñ,°¸!À#Ð,ÓFÐð €KÜ!Ø%Ø
Ø%0ô�F€Bˆð €KÜ!Ø%Ø
Ø%0ô�F€Bˆô "Ø%Ø
ô�F€Bˆð €DÜ�B˜ Õ&Ü�B˜ Õ&Ü�B˜ Õ&Ü�B˜ Ö&rL   Úuse_sample_weightc                 óF  — |r)t        j                  | d   t         j                  ¬«      }nd} G d„ dt        «      } |«       }t	        ||¬«      } |j
                  | d|iŽ   |«       j
                  | d|iŽ}t	        t        |«      |¬«      } |j
                  | d|iŽ y)z|Check that CalibratedClassifierCV works with float32 predict proba.

    Non-regression test for gh-28245 and gh-28247.
    rb   rÂ  Nc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ú4test_float32_predict_proba.<locals>.DummyClassifer32c                 ó\   •— t         ‰| �  |«      j                  t        j                  «      S rN  )rÿ  rl   r  rg   Úfloat32)rÈ   rH   rÞ  s     €rJ   rl   zBtest_float32_predict_proba.<locals>.DummyClassifer32.predict_proba±  s"   ø€ Ü‘7Ñ(¨Ó+×2Ñ2´2·:±:Ó>Ð>rL   )rÊ   rË   rÌ   rl   r  r  s   @rJ   ÚDummyClassifer32r9  °  s   ø„ ÷	?ð 	?rL   r<  rN   ra   )rg   rã  Úfloat64r   r   rS   r   )rK   r6  rO   ra   r<  ÚmodelrÕ   s          rJ   Útest_float32_predict_probar?  œ  sœ   € ñ ô Ÿ™ T¨!¡W´B·J±JÔ?‰àˆô?œ?ô ?ñ Ó€EÜ'¨°fÔ=€Jà€J‡N�N�DÐ6¨Ò6ð #ÑÓ×"Ñ" DÐF¸ÑF€EÜ'¬¸Ó(>ÀvÔN€Jà€J‡N�N�DÐ6¨Ó6rL   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Ø   r^   rñ  r®   rò  rØ   r{   N)rg   rh   r  r   rS   rG   s     rJ   Ú(test_error_less_class_samples_than_foldsrB  À  sF   € ô
 	�	‰	×Ñ˜gÐÓ&€AØ	ˆ�‰
�c�U˜R‘ZÑ€Aä˜aÔ ×$Ñ$ Q¨Õ*rL   z$array_namespace, device_, dtype_name)Úidsc           
      ól  — t        ||«      }t        dddddddd¬«      \  }}t        ||d¬	«      \  }}	}
}|j                  |«      }|
j                  |«      }
|j	                  ||¬
«      }|j	                  |
|¬
«      }|	j                  |«      }	|j                  |«      }|j	                  |	|¬
«      }|j	                  ||¬
«      }|rt        j                  |«      }d|ddd…<   nd}t        «       }|j                  ||
«       t        t        |«      dd| ¬«      j                  |	||¬«      }|j                  d   j                  d   }|j                  |«      }t        d¬«      5  t        «       }|j                  ||«       t        t        |«      dd| ¬«      j                  |||¬«      }|j                  d   j                  d   }|dk(  rdnd}t        |j                   «      d   j"                  |j"                  k(  sJ ‚|j                   j$                  |j$                  k(  sJ ‚t'        |j                   «      t'        |«      k(  sJ ‚t)        t+        |j                   |¬«      |j                   |¬«       |j                  |«      }t)        t+        ||¬«      |«       ddd«       y# 1 sw Y   yxY w)zaCheck that `CalibratedClassifierCV` with temperature scaling is compatible
    with the array APIrú   r®   r   re   rb   rû   rA   rü   r‘   ©r/   r[   NrØ   r�   r  r`   T©Úarray_api_dispatchr;  çü©ñÒMbP?çH¯¼šò×z>©Úxp©r	  )r4   r   r%   r  Úasarrayrg   rã  r   rS   r   r   r|   rÐ   rÉ   r   r0   r  rÊ   rÃ  r/   r   r-   )rY   r6  Úarray_namespaceÚdevice_Ú
dtype_namerK  rH   rI   rm   r  rn   r  Ú
X_train_xpÚ
y_train_xpÚX_cal_xpÚy_cal_xpra   Úclf_npÚ
cal_clf_npÚcalibrator_npÚpred_npÚclf_xpÚ
cal_clf_xpÚcalibrator_xpr	  Úpred_xps                             rJ   Ú-test_temperature_scaling_array_api_compliancer]  Ë  s�  € ô 
˜o¨wÓ	7€BÜØØØØØØØØô	�D€A€qô &6°a¸ÈÔ%LÑ"€GˆU�G˜Uà�n‰n˜ZÓ(€GØ�n‰n˜ZÓ(€GØ—‘˜G¨G�Ó4€JØ—‘˜G¨G�Ó4€Jà�L‰L˜Ó$€EØ�L‰L˜Ó$€EØ�z‰z˜%¨ˆzÓ0€HØ�z‰z˜%¨ˆzÓ0€HáÜŸ™ UÓ+ˆØˆ�a�d˜�dÒàˆä'Ó)€FØ
‡J�Jˆw˜Ô Ü'Ü˜Ó A¨mÀhôç	�cˆ%� m€cÓ4ð ð ×6Ñ6°qÑ9×EÑEÀaÑH€MØ× Ñ  Ó)€GÜ	¨4Ö	0Ü+Ó-ˆØ�
‰
�:˜zÔ*Ü+Ü˜FÓ#¨°-È(ô
ç
‰#ˆh˜°ˆ#Ó
>ð 	ð #×:Ñ:¸1Ñ=×IÑIÈ!ÑLˆØ! YÒ.‰t°DˆÜ˜]×0Ñ0Ó1°!Ñ4×=Ñ=ÀÇÁÒLÐLÐLØ×"Ñ"×(Ñ(¨H¯N©NÒ:Ð:Ð:Ü�m×)Ñ)Ó*¬f°XÓ.>Ò>Ð>Ð>ÜÜ˜m×1Ñ1°bÔ9Ø×ÑØõ	
ð
 ×$Ñ$ ZÓ0ˆÜÔ)¨'°bÔ9¸7ÔC÷% 
1×	0Ñ	0ús   Å'D:J*Ê*J3c           
      ó  — t        ||«      }t        dddddddd¬«      \  }}t        j                  g d	¢«      }|j	                  |«      }||   }	|j                  ||¬
«      }
|rt        j
                  |«      }d|ddd…<   nd}t        t        «       dd| ¬«      j                  ||	|¬«      }|j                  d   j                  d   }|j                  |«      }t        d¬«      5  t        t        «       dd| ¬«      j                  |
|	|¬«      }|j                  d   j                  d   }|dk(  rdnd}t        |j                  «      d   j                  |j                  k(  sJ ‚|j                  j                   |
j                   k(  sJ ‚t#        |j                  «      t#        |
«      k(  sJ ‚t%        t'        |j                  |¬«      |j                  |¬«       |j                  |
«      }t)        ||«       ddd«       y# 1 sw Y   yxY w)zæCheck that `CalibratedClassifierCV` with temperature scaling is compatible
    with the array API when `y` is an ndarray of strings and the estimator is not
    fit beforehand (i.e. it is fit within `CalibratedClassifierCV`).
    r¬   r®   r   re   rb   rû   rA   rü   )rñ  rò  rÑ  ÚdÚerE  r[   NrØ   r�   )r}   rd   rO   rY   r`   TrF  r;  rH  rI  rJ  rL  )r4   r   rg   rM  r  rã  r   r   rS   r|   rÐ   rÉ   r   r0   r  rÊ   rÃ  r/   r   r-   r8   )rY   r6  rN  rO  rP  rK  rH   rI   Ústr_mappingÚy_strÚX_xpra   rV  rW  rX  rZ  r[  r	  r\  s                      rJ   ÚBtest_temperature_scaling_array_api_with_str_y_estimator_not_prefitrd    s   € ô& 
˜o¨wÓ	7€BÜØØØØØØØØô	�D€A€qô —*‘*Ò6Ó7€KØ	�‰�Ó€AØ˜‰N€EØ�:‰:�a ˆ:Ó(€DáÜŸ™ Q›ˆØˆ�a�d˜�dÒàˆä'Ü,Ó.ØØØô	÷
 
�cˆ!ˆU -€cÓ0ð ð ×6Ñ6°qÑ9×EÑEÀaÑH€MØ× Ñ  Ó#€GÜ	¨4Ö	0Ü+Ü0Ó2ØØ Øô	
÷
 ‰#ˆd�E¨ˆ#Ó
7ð 	ð #×:Ñ:¸1Ñ=×IÑIÈ!ÑLˆØ! YÒ.‰t°DˆÜ˜]×0Ñ0Ó1°!Ñ4×=Ñ=ÀÇÁÒLÐLÐLØ×"Ñ"×(Ñ(¨D¯J©JÒ6Ð6Ð6Ü�m×)Ñ)Ó*¬f°T«lÒ:Ð:Ð:ÜÜ˜m×1Ñ1°bÔ9Ø×ÑØõ	
ð
 ×$Ñ$ TÓ*ˆÜ˜7 GÔ,÷' 
1×	0Ñ	0ús   Ã'DHÈH)”Únumpyrg   rP   Únumpy.testingr   Úsklearnr   Úsklearn.baser   r   r   Úsklearn.calibrationr   r	   r
   r   r   r   r   Úsklearn.datasetsr   r   r   Úsklearn.discriminant_analysisr   Úsklearn.dummyr   Úsklearn.ensembler   r   Úsklearn.feature_extractionr   Úsklearn.frozenr   Úsklearn.imputer   Úsklearn.isotonicr   Úsklearn.linear_modelr   r   Úsklearn.metricsr   r   r   r   Úsklearn.model_selectionr    r!   r"   r#   r$   r%   Úsklearn.naive_bayesr&   Úsklearn.pipeliner'   r(   Úsklearn.preprocessingr)   r*   Úsklearn.svmr+   Úsklearn.treer,   Úsklearn.utils._array_apir-   r.   r/   r0   r1   Úsklearn.utils._mockingr2   Úsklearn.utils._tagsr3   Úsklearn.utils._testingr4   r5   r6   r7   r8   Úsklearn.utils.extmathr9   Úsklearn.utils.fixesr:   Úsklearn.utils.validationr;   rF   ÚfixturerK   rU   ÚmarkÚparametrizery   r�   r‰   rŽ   r™   Úthread_unsafer    rt  rÁ   rÖ   rä   rí   rø   r  r!  r3  r:  r>  rH  rh   ri   rB  rR  r]  rb  rf  rj  rm  rx  r|  r~  r›  r�  r©  r¬  r¶  r½  ru  ÚobjectrÈ  rÍ  rÛ  rà  rí  rö  r¹   rù  r  r  r&  r5  r?  rB  r]  rd  rÍ   rL   rJ   Ú<module>r†     s_  ðó Û Ý )å "ß >Ñ >÷÷ ñ ÷ HÑ GÝ DÝ )÷õ 6Ý *Ý (Ý /ß B÷ó ÷÷ õ .ß 4ß >Ý !Ý /÷õ õ 6Ý (÷õ õ *Ý .Ý 4à€	ð €‡��hÔñó  ðò
@ð ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ8ó 4ó <ó :ð8òv+ð ‡�×Ñ˜ d¨E ]Ó3ñDó 4ðDòð ‡�×Ñ˜Ò#IÓJØ‡�×Ñ˜ d¨E ]Ó3ñó 4ó Kðð0 ‡�×ÑØ‡�×Ñ˜Ò#IÓJØ‡�×Ñ˜ d¨E ]Ó3ñ6ó 4ó Kó ð6ð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ð ‡�×Ñ˜¡ q£Ó*ñ:7ó +ó 4ó <ð
:7òz2ð2 ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜Ò#IÓJñ(ó Kó :ð(ðV ‡�×ÑØˆ|Ðà	Ñ'Ó)Ð*Ø	Ñ'°fÔ=Ð>Ø	Ñ+Ó-Ð.ðóñ5óð5ò4>ð" ‡�×ÑØÚóð ‡�×ÑØØ	ˆ5€Móñ;:ó	ó	ð;:ò|&ò"Cð> ‡�×Ñ˜Ò#IÓJØ‡�×Ñ˜ d¨E ]Ó3ñó 4ó Kðð ‡�×Ñ˜Ò#IÓJØ‡�×Ñ˜ d¨E ]Ó3ñ@ó 4ó Kð@ð ‡�×Ñ˜ d¨E ]Ó3ñNó 4ðNð: ‡�×ÑØà
�	‰	×Ñ˜bÓ!×'Ñ'¨¨A¨qÓ1Ø
�	‰	×Ñ˜bÓ!×'Ñ'¨¨A¨q°!Ó4ðóñóðð( ‡�ñ	"ó ð	"ð ‡�ñ%ó ð%òò42ò	#òð  €‡��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ÓJØ‡�×Ñ˜ d¨E ]Ó3ñ-Aó 4ó Kð-Að` ‡�×ÑÐ*¨V°WÐ,=Ó>ñ#ó ?ð#ð$ ‡�×ÑØà	ˆ�	ÑØˆ�Š�	Óðóñ2óð2ò6ò,ò/3òd&'ðR ‡�×ÑÐ,¨t°U¨mÓ<Ø‡�×Ñ˜Ò#IÓJñ7ó Kó =ð7òD+ð ‡�×Ñ˜ e¨T ]Ó3Ø‡�×ÑÐ,¨u°d¨mÓ<Ø‡�×ÑØ*Ù-Ó/Ø'ð ó ñ
=Dóó =ó 4ð=Dð@ ‡�×Ñ˜ e¨T ]Ó3Ø‡�×ÑÐ,¨u°d¨mÓ<Ø‡�×ÑØ*Ù-Ó/Ø'ð ó ñ
>-óó =ó 4ñ>-rL   