Ë
    D�Dj¦  ã            
       óh  — 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jˆ                  d¬«      d„ «       ZEejŒ                  j�                  deB«      ejŒ                  j�                  dddg«      ejŒ                  j�                  d d!d"g«      d#„ «       «       «       ZHd$„ ZIejŒ                  j�                  d d!d"g«      d%„ «       ZJd&„ ZKejŒ                  j�                  dddg«      ejŒ                  j�                  d d!d"g«      d'„ «       «       ZLejŒ                  j�                  dddg«      ejŒ                  j�                  d d!d"g«      d(„ «       «       ZMejŒ                  j�                  dddg«      ejŒ                  j�                  d d!d"g«      ejŒ                  j�                  d) eNd*«      «      d+„ «       «       «       ZOd,„ ZPejŒ                  j�                  deB«      d-„ «       ZQejŒ                  j�                  dddg«      d.„ «       ZRd/„ ZSd0„ ZTejŒ                  j�                  d d!d"g«      d1„ «       ZUejŒ                  j�                  d d!d"g«      d2„ «       ZVejŒ                  j�                  d d!d"g«      d3„ «       ZWejŒ                  j�                  d4ej°                  j³                  d5«      jµ                  d6d7d*«      ej°                  j³                  d5«      jµ                  d6d7d*d8«      g«      d9„ «       Z[ejˆ                  d:„ «       Z\ejˆ                  d;„ «       Z]d<„ Z^ejŒ                  j�                  d= ej¾                   e5d>¬?«      d*«       ej¾                   e5d>¬?«      d@«      g«      dA„ «       Z`dB„ ZadC„ Zb ejˆ                  d¬«      dD„ «       Zc ejˆ                  d¬«      dE„ «       ZdejŒ                  j�                  dFd7dGg«      ejŒ                  j�                  dHdIdJg«      dK„ «       «       ZedL„ ZfejŒ                  j�                  dMdNdOg«      dP„ «       ZgdQ„ ZhejŒ                  j�                  dRdSdTg«      dU„ «       ZidV„ ZjejŒ                  j�                  dWekelg«      dX„ «       ZmejŒ                  j�                  dWekelg«      dY„ «       ZnejŒ                  j�                  dZg d[¢«      d\„ «       ZoejŒ                  j�                  dddg«      ejŒ                  j�                  d d!d"g«      d]„ «       «       ZpejŒ                  j�                  d^d_d`g«      da„ «       ZqejŒ                  j�                  dbdcgeCz   ejä                  eC«      g«      dd„ «       Zsde„ ZtejŒ                  j�                  dddg«      ejŒ                  j�                  d d!d"g«      df„ «       «       Zudg„ Zvdh„ Zwdi„ Zxdj„ Zydk„ Zzy)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                  ó4   — t        t        dd¬«      \  } }| |fS )Né   é*   ©Ú	n_samplesÚ
n_featuresÚrandom_state)r   Ú	N_SAMPLES©ÚXÚys     úbC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sklearn/tests/test_calibration.pyÚdatar<   7   s   € ä¬¸qÈrÔR�D€A€qØˆaˆ4€Kó    Úcsr_containerÚmethodÚsigmoidÚisotonicÚensembleTFc                 ó¸  — t         dz  }| \  }}t        j                  j                  d¬«      j	                  |j
                  ¬«      }||j                  «       z  }|d | |d | |d | }
}	}||d  ||d  }}t        «       j                  ||	|
¬«      }|j                  |«      d d …df   }t        ||j
                  dz   |¬«      }t        j                  t        «      5  |j                  ||«       d d d «       ||f ||«       ||«      ffD �]>  \  }}t        ||d|¬	«      }|j                  ||	|
¬«       |j                  |«      d d …df   }t        ||«      t        ||«      kD  sJ ‚|j                  ||	dz   |
¬«       |j                  |«      d d …df   }t        ||«       |j                  |d|	z  dz
  |
¬«       |j                  |«      d d …df   }t        ||«       |j                  ||	dz   dz  |
¬«       |j                  |«      d d …df   }|d
k(  rt        |d|z
  «       �Œt        ||«      t        |dz   dz  |«      kD  r�Œ?J ‚ y # 1 sw Y   �ŒaxY w)Né   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‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÀÇÁÐ:ÓG€Màˆ�‰‹�L€Að "# : I °°*°9°¸}ÈZÈiÐ?X�hˆW€GØ�y�z�] A i j MˆF€Fô ‹/×
Ñ
˜g w¸hÐ
Ó
G€CØ×$Ñ$ VÓ,ªQ°¨TÑ2€Lä$ S¨Q¯V©V°a©ZÀ(ÔK€GÜ	�‰”zÓ	"ñ Ø�‰�A�qÔ÷ð
 
�&ÐÙ	�wÓ	¡¨vÓ!6Ð7ð&ó #Ñ!ˆ�kô )¨°VÀÈHÔUˆð 	�‰�L '¸ˆÔBØ"×0Ñ0°Ó=ºaÀ¸dÑCÐô   ¨Ó5Ô8HØÐ$ó9
ò 
ñ 	
ð
 	�‰�L '¨A¡+¸XˆÔFØ%,×%:Ñ%:¸;Ó%GÊÈ1ÈÑ%MÐ"Ü!Ð"2Ð4NÔOð 	�‰�L ! g¡+°¡/ÀˆÔJØ%,×%:Ñ%:¸;Ó%GÊÈ1ÈÑ%MÐ"Ü!Ð"2Ð4NÔOð 	�‰�L 7¨Q¡;°!Ñ"3À8ˆÔLØ%,×%:Ñ%:¸;Ó%GÊÈ1ÈÑ%MÐ"Ø�YÒÜ%Ð&6¸Ð<VÑ8VÖWô $ F¨LÓ9Ô<LØ˜!‘˜qÑ Ð"<ó=ô ñ ñC#÷	ñ ús   ÃIÉIc                 ó    — | \  }}t        d¬«      }|j                  ||«       |j                  d   j                  }t	        |t
        «      sJ ‚y )NrD   ©rM   r   )r   rU   Úcalibrated_classifiers_Ú	estimatorÚ
isinstancer$   )r<   r9   r:   Ú	calib_clfÚbase_ests        r;   Ú"test_calibration_default_estimatorrn   {   sI   € à�D€A€qÜ&¨!Ô,€IØ‡M�M�!�QÔà×0Ñ0°Ñ3×=Ñ=€HÜ�h¤	Ô*Ñ*Ð*r=   c                 ó  — | \  }}d}t        |¬«      }t        ||¬«      }t        |j                  t         «      sJ ‚|j                  j                  |k(  sJ ‚|j                  ||«       |r|nd}t        |j                  «      |k(  sJ ‚y )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€IÜ�i—l‘l¤EÔ*Ñ*Ø�<‰<× Ñ  FÒ*Ñ*à‡M�M�!�QÔÙ'‘V¨Q€NÜˆy×0Ñ0Ó1°^ÒCÑCÐCr=   c                 ór  — | \  }}t        d¬«      }t        |d¬«      }t        j                  t        d¬«      5  |j                  ||«       d d d «       t        t        «       d¬«      }t        j                  t        d¬«      5  |j                  ||«       d d d «       y # 1 sw Y   ŒUxY w# 1 sw Y   y xY w)Née   rp   TrL   z$Requesting 101-fold cross-validation©Úmatchz!LeaveOneOut cross-validation does)r   r   rW   rX   rY   rU   r   )r<   r9   r:   rt   rl   s        r;   Útest_calibration_cv_nfoldr{   •   sš   € à�D€A€qä˜3Ô€EÜ&¨%¸$Ô?€IÜ	�‰”zÐ)OÔ	Pñ Ø�‰�a˜Ô÷ô '¬+«-À$ÔG€IÜ	�‰”zÐ)LÔ	Mñ Ø�‰�a˜Ô÷ð ÷	ð ú÷ð ús   ºB!ÂB-Â!B*Â-B6c                 óÐ  — t         dz  }| \  }}t        j                  j                  d¬«      j	                  t        |«      ¬«      }|d | |d | |d | }	}}||d  }
t        d¬«      }t        |||¬«      }|j                  |||	¬«       |j                  |
«      }|j                  ||«       |j                  |
«      }t        j                  j                  ||z
  «      }|dkD  sJ ‚y )	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‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÄÀAÃÐ:ÓG€MØ!" : I °°*°9°¸}ÈZÈiÐ?X�hˆW€GØˆyˆzˆ]€Fä rÔ*€IÜ+¨I¸fÈxÔX€NØ×Ñ�w °xÐÔ@Ø"×0Ñ0°Ó8€Mð ×Ñ�w Ô(Ø%×3Ñ3°FÓ;Ðä�9‰9�>‰>˜-Ð*:Ñ:Ó;€DØ�#Š:Ñˆ:r=   c                 óP  — | \  }}t        ||d¬«      \  }}}}t        t        «       t        d¬«      «      }	t	        |	|d|¬«      }
|
j                  ||«       |
j                  |«      }t	        |	|d|¬«      }|j                  ||«       |j                  |«      }t        ||«       y)zTest parallel 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Ñ$€GˆV�W˜fäœnÓ.´	ÀrÔ0JÓK€Iä-Ø˜&¨°XôÐð ×Ñ˜ 'Ô*Ø%×3Ñ3°FÓ;€Nä/Ø˜&¨°XôÐð ×Ñ˜7 GÔ,Ø)×7Ñ7¸Ó?Ðä�NÐ$4Õ5r=   rF   rD   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 )NrD   r   )rP   ÚeyeÚsumÚshape)Úy_trueÚ
proba_predÚ	n_classesÚY_onehots       r;   Úmulticlass_brierz5test_calibration_multiclass.<locals>.multiclass_brierÙ   s<   € Ü—6‘6˜)Ó$ VÑ,ˆÜ�v‰v�x *Ñ,°Ñ2Ó3°h·n±nÀQÑ6GÑGÐGr=   é   r}   iô  éd   é
   ç      .@©r4   r5   r6   ÚcentersÚcluster_stdrD   r   rK   rN   rO   ©ÚaxisçÍÌÌÌÌÌä?gffffffî?)r”   gš™™™™™ñ?é   r2   )Ún_estimatorsr6   )r$   r   rP   Úuniquer‘   rU   r   rV   r   r�   Úonesrr   Úscorer+   Údecision_functionr   )r?   rB   rF   r–   r_   r9   r:   r”   rZ   r[   r]   r^   ra   ÚprobasÚuncalibrated_brierÚcalibrated_brierÚ	clf_probsÚcal_clf_probss                     r;   Útest_calibration_multiclassr¬   Ó   s  € òHô  Ô
#€CÜØ #°DÀ"ÐRVô�D€A€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ð �=‰=˜ Ó(¨4°#·)±)¸FÀFÓ2KÑ+KÒKÑKñ
 *Ø”˜×-Ñ-¨fÓ5Ó6À)ôÐñ (¨°À)ÔLÐà˜cÐ$6Ñ6Ò6Ñ6ô !¨b¸rÔ
B€CØ‡G�GˆG�WÔØ×!Ñ! &Ó)€IÙ)¨&°)ÀyÔQÐä$ S°¸AÈÔQ€GØ‡K�K�˜Ô!Ø×)Ñ)¨&Ó1€MÙ'¨°ÈÔSÐØ˜cÐ$6Ñ6Ò6Ñ6Ð6r=   c                  ó  —  G d„ d«      } t        ddddd¬«      \  }}t        «       j                  ||«      } | «       }t        ||g|j                  ¬«      }|j                  |«      }t        |d	|j                  z  «       y )
Nc                   ó   — e Zd Zd„ Zy)ú9test_calibration_zero_probability.<locals>.ZeroCalibratorc                 óF   — t        j                  |j                  d   «      S )Nr   )rP   Úzerosr‘   ©Úselfr9   s     r;   ÚpredictzAtest_calibration_zero_probability.<locals>.ZeroCalibrator.predict  s   € Ü—8‘8˜AŸG™G A™JÓ'Ð'r=   N)Ú__name__Ú
__module__Ú__qualname__r´   © r=   r;   ÚZeroCalibratorr¯     s   „ ó	(r=   r¹   é2   r™   r—   rš   r›   )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Õ1r=   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        «       }t        |d
¬«      }t        j                  t        «      5  |j                  ||	«       ddd«       |j                  |||«       |j                  |«      dd…df   }||f | |«       | |«      ffD ]¶  \  }}dD ]¬  }t        ||d
¬«      }|
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# 1 sw Y   �ŒxY w)z*Test calibration for prefitted classifiersrº   é   r1   r2   r3   rE   rG   NrD   Úprefitrh   rK   )rA   r@   )r?   rM   rI   r   rž   )r   rP   rQ   rR   rS   rH   rT   r   r   rW   rX   r   rU   rV   r´   r*   ÚarrayÚargmaxr   )r>   r4   r9   r:   rJ   rZ   r[   r\   ÚX_calibÚy_calibÚsw_calibr]   r^   r_   Ú	unfit_clfr`   Úthis_X_calibrc   r?   ra   ÚswÚy_probÚy_predrd   s                           r;   Útest_calibration_prefitrÏ   .  s+  € ð €IÜ¨¨Y©À1ÐSUÔV�D€A€qÜ—I‘I×)Ñ)¨rÐ)Ó2×:Ñ:ÀÇÁÐ:ÓG€Màˆ�‰‹�L€Að "# : I °°*°9°¸}ÈZÈiÐ?X�hˆW€Gà	ˆ)�a˜)‘mÐ$Ø	ˆ)�a˜)‘mÐ$Ø�i ! i¡-Ð0ð ˆW€Gð
 �q˜9‘}�Ð'¨¨1¨y©=¨?Ð);ˆF€Fô ‹/€Cä& s¨xÔ8€IÜ	�‰”~Ó	&ñ (Ø�‰�g˜wÔ'÷(ð ‡G�GˆG�W˜hÔ'Ø×$Ñ$ VÓ,ªQ°¨TÑ2€Lð 
�&ÐÙ	�wÓ	¡¨vÓ!6Ð7ð&ò Ñ!ˆ�kð .ò 	ˆFÜ,¨S¸ÀHÔMˆGà Ð&ò 	�Ø—‘˜L¨'À�ÔDØ ×.Ñ.¨{Ó;�Ø Ÿ™¨Ó5�Ø#)ª!¨Q¨$¡<Ð Ü" 6¬2¯8©8°Q¸°FÓ+;¼B¿I¹IÀfÐSTÔ<UÑ+VÔWä'¨°Ó=Ô@PØÐ,óAó ñ ñ	ñ	ñ	÷(ñ (ús   ÃGÇG)c                 ó”  — | \  }}t        d¬«      }t        ||dd¬«      }|j                  ||«       |j                  |«      }t	        |||dd¬«      }|dk(  rt        d	¬
«      }n
t        «       }|j                  ||«       |j                  ||«       |j                  |«      }	|j                  |	«      }
t        |d d …df   |
«       y )Nr—   r}   rÃ   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€GØ‡K�K��1ÔØ×&Ñ& qÓ)€Jô ' s¨A¨q°QÐ?RÔS€NØ�ÒÜ'°fÔ=‰
ä(Ó*ˆ
Ø‡N�N�> 1Ô%à‡G�GˆAˆq„MØ×"Ñ" 1Ó%€FØ×&Ñ& vÓ.€MÜ�Jšq !˜tÑ$ mÕ4r=   c                  ó0  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  ddg«      }t        |t        | |«      d«       ddt        j                  |d   | z  |d   z   «      z   z  }t        «       j                  | |«      j                  | «      }t        ||d	«       t        j                  t        «      5  t        «       j                  t        j                  | | f«      |«       d
d
d
«       y
# 1 sw Y   y
xY w)z0Test calibration values with Platt sigmoid model)rN   éüÿÿÿr½   )rK   éÿÿÿÿrÚ   g¿j˜=ïÉ¿gY90¯(àä?rÃ   r½   r   rK   r1   N)rP   rÅ   r)   r	   Úexpr
   rU   r´   rW   rX   rY   Úvstack)ÚexFÚexYÚAB_lin_libsvmÚlin_probÚsk_probs        r;   Útest_sigmoid_calibrationrâ   w  sâ   € ä
�(‰(’<Ó
 €CÜ
�(‰(’;Ó
€Cä—H‘HÐ2Ð4GÐHÓI€MÜ˜mÔ-AÀ#ÀsÓ-KÈQÔOØ�cœBŸF™F =°Ñ#3°cÑ#9¸MÈ!Ñ<LÑ#LÓMÑMÑN€HÜ!Ó#×'Ñ'¨¨SÓ1×9Ñ9¸#Ó>€GÜ˜h¨°Ô3ô 
�‰”zÓ	"ñ >ÜÓ×!Ñ!¤"§)¡)¨S°#¨JÓ"7¸Ô=÷>÷ >ñ >ús   Ã0DÄDc                  ó  — t        j                  g d¢«      } t        j                  g d¢«      }t        | |d¬«      \  }}t        |«      t        |«      k(  sJ ‚t        |«      dk(  sJ ‚t	        |ddg«       t	        |ddg«       t        j                  t        «      5  t        dgd	g«       d
d
d
«       t        j                  g d¢«      }t        j                  g d¢«      }t        ||dd¬«      \  }}t        |«      t        |«      k(  sJ ‚t        |«      dk(  sJ ‚t	        |ddg«       t	        |ddg«       t        j                  t        «      5  t        ||d¬«       d
d
d
«       y
# 1 sw Y   Œ¿xY w# 1 sw Y   y
xY w)z Check calibration_curve function)r   r   r   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õ   ˆ  s]  € ä�X‰XÒ(Ó)€FÜ�X‰XÒ4Ó5€FÜ,¨V°VÀAÔFÑ€IˆyÜˆy‹>œS ›^Ò+Ñ+Üˆy‹>˜QÒÑÜ˜	 A q 6Ô*Ü˜	 C¨ :Ô.ô 
�‰”zÓ	"ñ 'Ü˜1˜# ˜vÔ&÷'ô �h‰hÒ)Ó*€GÜ�h‰hÒ5Ó6€GÜ->Ø� ¨Zô.Ñ*ÐÐ*ô Ð!Ó"¤cÐ*<Ó&=Ò=Ñ=ÜÐ!Ó" aÒ'Ñ'ÜÐ*¨Q°¨JÔ7ÜÐ*¨S°#¨JÔ7ô 
�‰”zÓ	"ñ CÜ˜' 7°\ÕB÷Cð C÷!'ð 'ú÷ Cð Cús   ÂE+ÅE7Å+E4Å7F c                 óú   — t        ddddd¬«      \  }}t        j                  |d<   t        dt	        «       fdt        d	¬
«      fg«      }t        |dd| ¬«      }|j                  ||«       |j                  |«       y)z$Test that calibration can accept nanr™   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‰f€A€d�GÜ
Ø
”]“_Ð	%¨Ô.DÐRSÔ.TÐ'UÐVó€Cô # 3¨1°ZÈ(ÔS€EØ	‡I�Iˆa�„OØ	‡M�M�!Õr=   c                 óô   — t        ddd¬«      \  }}g d¢}t        dd¬«      }t        |d	t        d
¬«      | ¬«      }|j	                  ||«       t        |j                  |«      j                  d¬«      d«       y )Nr™   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  ¶  sr   € ô ¨¸ÀQÔG�D€A€qÚ&€AÜ
�c¨Ô
*€Cä%Ø�I¤%°Ô"3¸hô€Hð ‡L�L��AÔÜ�H×*Ñ*¨1Ó-×1Ñ1°qÐ1Ó9¸3Õ?r=   c           	      óÂ  — t         j                  j                  dd«      }g d¢g d¢z   g d¢z   }t        d¬«      }t	        |dt        d	«      | ¬
«      }|j                  ||«       | rŸt        j                  d«      }t        ddgdd	g«      D ]v  \  }}|j                  |   j                  |«      }t        |d d …|f   t        j                  t        |«      «      «       t        j                  |d d …||k7  f   dkD  «      rŒvJ ‚ y |j                  d   j                  |«      }t        |j!                  d¬«      t        j"                  |j$                  d   «      «       y )Né   rN   )r   r   r   rK   )rK   rK   rD   rD   )rD   rÃ   rÃ   rÃ   r—   r}   r@   rÃ   rO   é   r   rD   rK   rž   )rP   rQ   Úrandnr%   r   r   rU   ÚarangeÚzipri   rV   r*   r±   rr   Úallr)   r�   r¤   r‘   )	rB   r9   r:   r_   ra   r¼   Úcalib_iÚclass_iÚprobas	            r;   Útest_calibration_less_classesr  Å  s,  € ô 	�	‰	�‰˜˜AÓ€AÚ’|Ñ#¢lÑ2€AÜ
 ¨aÔ
0€CÜ$Ø�I¤%¨£(°Xô€Gð ‡K�K��1ÔáÜ—)‘)˜A“,ˆÜ # Q¨ F¨Q°¨FÓ 3ò 	<ÑˆG�WØ×3Ñ3°GÑ<×JÑJÈ1ÓMˆEä˜u¢Q¨ ZÑ0´"·(±(¼3¸q»6Ó2BÔCä—6‘6˜%¢ 7¨gÑ#5Ð 5Ñ6¸Ñ:Õ;Ñ;ñ	<ð ×/Ñ/°Ñ2×@Ñ@ÀÓCˆÜ! %§)¡)° )Ó"3´R·W±W¸U¿[¹[È¹^Ó5LÕMr=   r9   r2   é   rN   r1   c                 ón   — g d¢} G d„ dt         «      }t         |«       «      }|j                  | |«       y)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y)ú>test_calibration_accepts_ndarray.<locals>.MockTensorClassifierz*A toy estimator that accepts tensor inputsÚ
classifierc                 ó:   — t        j                  |«      | _        | S ©N)rP   r£   r¾   )r³   r9   r:   s      r;   rU   zBtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.fitó  s   € ÜŸI™I a›LˆDŒMØˆKr=   c                 ó`   — |j                  |j                  d   d«      j                  d¬«      S )Nr   rÚ   rK   rž   )Úreshaper‘   r�   r²   s     r;   r¦   zPtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.decision_function÷  s)   € à—9‘9˜QŸW™W Q™Z¨Ó,×0Ñ0°aÐ0Ó8Ð8r=   N)rµ   r¶   r·   Ú__doc__Ú_estimator_typerU   r¦   r¸   r=   r;   ÚMockTensorClassifierr  î  s   „ Ù8à&ˆò	ó	9r=   r  N)r   r   rU   )r9   r:   r  r�   s       r;   Ú test_calibration_accepts_ndarrayr  ã  s5   € ò 	6€Aô9œ}ô 9ô ,Ñ,@Ó,BÓ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$     s5   € ð ˜wÑ'Ø˜wÑ'Ø˜wÑ'ð€Iò
 €KØ�kÐ!Ð!r=   c                 ór   — | \  }}t        dt        «       fdt        «       fg«      }|j                  ||«      S )NÚ
vectorizerr_   )r    r   r   rU   )r$  r9   r:   Úpipeline_prefits       r;   Údict_data_pipeliner)    sC   € à�D€A€qÜØ
œÓ(Ð	)¨EÔ3IÓ3KÐ+LÐMó€Oð ×Ñ˜q !Ó$Ð$r=   c                 ó  — | \  }}|}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Ä   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€IØ‡M�M�!�QÔä�y×)Ñ)¨3¯<©<Ô8ô �sÐ,Ô-Ñ-Ü�yÐ"2Ô3Ñ3ð ×Ñ�aÔØ×Ñ˜AÕr=   zclf, cvrK   ©r   rÄ   c                 óÄ  — t        dddd¬«      \  }}|dk(  r| j                  ||«      } t        | |¬«      }|j                  ||«       |dk(  r<t        |j                  | j                  «       |j
                  | j
                  k(  sJ ‚y t        «       j                  |«      j                  }t        |j                  |«       |j
                  |j                  d   k(  sJ ‚y )	Nr™   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�D€A€qØ	ˆX‚~Ø�g‰g�a˜‹mˆÜ& s¨rÔ2€IØ‡M�M�!�QÔà	ˆX‚~Ü˜9×-Ñ-¨s¯|©|Ô<Ø×'Ñ'¨3×+=Ñ+=Ò=Ñ=Ð=ä“.×$Ñ$ QÓ'×0Ñ0ˆÜ˜9×-Ñ-¨wÔ7Ø×'Ñ'¨1¯7©7°1©:Ò5Ñ5Ð5r=   c                  ó  — t        dddd¬«      \  } }t        d¬«      j                  | |«      }t        |d¬	«      }d
}t	        j
                  t        |¬«      5  |j                  | d d …d d…f   |«       d d d «       y # 1 sw Y   y xY w)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�D€A€qÜ
�aŒ.×
Ñ
˜Q Ó
"€CÜ& s¨xÔ8€Ià
M€CÜ	�‰”z¨Ô	-ñ #Ø�‰�aš˜2˜A˜2˜‘h Ô"÷#÷ #ñ #ús   ÁA>Á>Bc            	      ó  — t        dddd¬«      \  } }t        t        d«      D �cg c]  }dt        |«      z   t	        «       f‘Œ c}d¬	«      }|j                  | |«       t        |d
¬«      }|j                  | |«       y c c}w )Nr™   rN   rD   r—   r0  rÃ   ÚlrÚsoft)Ú
estimatorsÚvotingrÄ   )rj   rM   )r   r   ÚrangeÚstrr   rU   r   )r9   r:   ÚiÚvoterl   s        r;   Ú!test_calibration_votingclassifierr>  R  sx   € ô ¨¸ÀQÐUVÔW�D€A€qÜÜCHÈÃ8ÖL¸a�TœC ›F‘]Ô$6Ó$8Ò9ÒLØô€Dð 	‡H�HˆQ�„Nä&°¸(ÔC€Ià‡M�M�!�QÕùò Ms   ¥A?c                  ó   — t        d¬«      S )NT©Ú
return_X_y)r   r¸   r=   r;   Ú	iris_datarB  b  s   € ä Ô%Ð%r=   c                 ó,   — | \  }}||dk     ||dk     fS )NrD   r¸   )rB  r9   r:   s      r;   Úiris_data_binaryrD  g  s&   € à�D€A€qØˆQ�‰U‰8�Q�q˜1‘u‘XÐÐr=   ré   r™   rí   rS   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í   Ú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)ÚpyplotrD  ré   rí   r9   r:   r6  ÚvizrÍ   rï   rð   ÚmplÚexpected_legend_labelsÚlegend_labelsÚlabelss                  r;   Ú test_calibration_display_computer`  m  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ó ä�c—i‘i §¡×!1Ñ!1Ô2Ñ2Ø�9‰9×ÑÓ  CÒ'Ñ'Ü�c—g‘g˜sŸx™xŸ}™}Ô-Ñ-Ü�c—k‘k 3§:¡:×#4Ñ#4Ô5Ñ5à�7‰7×ÑÓÐ#SÒSÑSØ�7‰7×ÑÓÐ#NÒNÑNà2Ð4JÐKÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ñ;r=   c                 ól  — |\  }}t        t        «       t        «       «      }|j                  ||«       t	        j
                  |||«      }|j                  dg}|j                  j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚|D ]  }|j                  «       |v rŒJ ‚ y )NrG  )r!   r#   r   rU   r   rH  rI  rO  rW  rX  rr   rY  )	rZ  rD  r9   r:   r_   r[  r]  r^  r_  s	            r;   Ú$test_plot_calibration_curve_pipelinerb  ˜  s¤   € à�D€A€qÜ
œÓ(Ô*<Ó*>Ó
?€CØ‡G�GˆAˆq„MÜ
×
+Ñ
+¨C°°AÓ
6€Cà!×0Ñ0Ð2HÐIÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ñ;r=   zname, expected_label)NÚ_line1)Úmy_estrd  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   rK   rK   r   ©rå   ræ   ræ   çš™™™™™Ù?©rI  rG  )
rP   rÅ   r   ÚplotÚappendrO  rW  rX  rr   rY  )
rZ  ÚnameÚexpected_labelrï   rð   rÍ   r[  r]  r^  r_  s
             r;   Ú'test_calibration_display_default_labelsrn  ¦  s·   € ô —‘šÓ&€IÜ—‘Ò-Ó.€IÜ�X‰X�b‹\€Fä
˜Y¨	°6È$Ô
O€CØ‡H�H„Jà#' <™R°d°VÐØ×!Ñ!Ð"8Ô9Ø—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ñ;r=   c                 ó¶  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g «      }d}t        ||||¬«      }|j                  |k(  sJ ‚d}|j	                  |¬«       |dg}|j
                  j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚|D ]  }|j                  «       |v rŒJ ‚ y )Nrf  rg  zname oneri  zname two©rl  rG  )
rP   rÅ   r   rI  rj  rO  rW  rX  rr   rY  )	rZ  rï   rð   rÍ   rl  r[  r]  r^  r_  s	            r;   Ú)test_calibration_display_label_class_plotrq  ¹  sÆ   € ô —‘šÓ&€IÜ—‘Ò-Ó.€IÜ�X‰X�b‹\€Fà€DÜ
˜Y¨	°6È$Ô
O€CØ×Ñ Ò%Ñ%Ø€DØ‡H�H�$€HÔà"Ð$:Ð;ÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ñ;r=   Úconstructor_namerH  Ú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 namerK   rH  rl  r
  rG  Úanother_namerp  )r   rU   rV   Úgetattrr   rI  Úcloserj  rO  rW  rX  rr   rY  )rr  rZ  rD  r9   r:   Úclf_namer_   rÍ   ÚconstructorÚparamsr[  r]  r^  r_  s                 r;   Ú,test_calibration_display_name_multiple_callsr{  Í  sT  € ð �D€A€qØ%€HÜ
Ó
×
"Ñ
" 1 aÓ
(€CØ×Ñ˜qÓ!¢! Q $Ñ'€FäÔ,Ð.>Ó?€KØ,Ð0@Ò@ˆc�1�a‰[ÀqÈ&Àk€Fá
�vÐ
- HÑ
-€CØ×Ñ Ò)Ñ)Ø
‡L�L�ÔØ‡H�H„Jà&Ð(>Ð?ÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ð;ð ‡L�L�ÔØ€HØ‡H�H�(€HÔÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ñ;r=   c                 óP  — |\  }}t        «       j                  ||«      }t        «       j                  ||«      }t        j                  |||«      }t        j                  ||||j
                  ¬«      }|j
                  j                  «       d   }|j                  d«      dk(  sJ ‚y )N)ÚaxrK   rG  )r   rU   r%   r   rH  rO  Úget_legend_handles_labelsÚcount)	rZ  rD  r9   r:   r6  Údtr[  Úviz2r_  s	            r;   Ú!test_calibration_display_ref_liner‚  ð  s’   € à�D€A€qÜ	Ó	×	!Ñ	! ! QÓ	'€BÜ	Ó	!×	%Ñ	% a¨Ó	+€Bä
×
+Ñ
+¨B°°1Ó
5€CÜ×,Ñ,¨R°°A¸#¿'¹'ÔB€Dà�X‰X×/Ñ/Ó1°!Ñ4€FØ�<‰<Ð.Ó/°1Ò4Ñ4Ð4r=   Údtype_y_strc                 ó>  — t         j                  j                  d«      }t        j                  dgdz  dgdz  z   | ¬«      }|j	                  dd|j
                  ¬«      }d	}t        j                  t        |¬
«      5  t        ||«       ddd«       y# 1 sw Y   yxY w)zKCheck error message when a `pos_label` is not specified with `str` targets.r2   ÚspamrÃ   ÚeggsrD   ©Údtyper   rG   z–y_true takes value in {'eggs', 'spam'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitlyry   N)
rP   rQ   rR   rÅ   ÚrandintrH   rW   rX   rY   r   )rƒ  ÚrngÚy1Úy2Úerr_msgs        r;   Ú*test_calibration_curve_pos_label_error_strrŽ  ý  sŠ   € ô �)‰)×
Ñ
 Ó
#€CÜ	�‰�6�(˜Q‘, & ¨A¡Ñ-°[Ô	A€BØ	�‰�Q˜ §¡ˆÓ	(€Bð	$ð ô
 
�‰”z¨Ô	1ñ "Ü˜"˜bÔ!÷"÷ "ñ "ús   Á=BÂBc                 ó¦  — t        j                  g d¢«      }t        j                  ddg| ¬«      }||   }t        j                  g d¢«      }t        ||d¬«      \  }}t        |g d¢«       t        ||dd¬	«      \  }}t        |g d¢«       t        |d
|z
  dd¬	«      \  }}t        |g d¢«       t        |d
|z
  dd¬	«      \  }}t        |g d¢«       y)z8Check the behaviour when passing explicitly `pos_label`.)	r   r   r   rK   rK   rK   rK   rK   rK   r…  Úeggr‡  )	r~   rå   g333333Ó?rh  r    gffffffæ?ræ   rç   r½   r  rè   )r   rê   rK   rK   )ré   Ú	pos_labelrK   r   )r   r   rê   rK   N)rP   rÅ   r   r   )rƒ  r’   r¼   Ú
y_true_strrÎ   rï   r  s          r;   Ú test_calibration_curve_pos_labelr“    sÀ   € ô �X‰XÒ1Ó2€FÜ�h‰h˜ �¨kÔ:€GØ˜‘€JÜ�X‰XÒDÓE€Fô % V¨V¸AÔ>�L€IˆqÜ�Iš~Ô.ä$ Z°ÀÈUÔS�L€IˆqÜ�Iš~Ô.ä$ V¨Q°©ZÀÈQÔO�L€IˆqÜ�Iš~Ô.Ü$ Z°°V±ÀAÐQWÔX�L€IˆqÜ�Iš~Õ.r=   zpos_label, expected_pos_label))NrK   rù   )rK   rK   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: rG  )r   rU   r   rH  rV   r   r   rï   rð   rÍ   rO  rU  rV  Ú	__class__rµ   rW  rX  rr   rY  )rZ  rD  r‘  Úexpected_pos_labelr9   r:   r6  r[  rÍ   rï   rð   r]  r^  r_  s                 r;   Ú"test_calibration_display_pos_labelr˜  "  sQ  € ð
 �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ñð
 	�‰×ÑÓØ4Ð5GÐ4HÈÐJò	Kñð
 !Ÿl™l×3Ñ3Ð5KÐLÐØ—G‘G×&Ñ&Ó(×2Ñ2Ó4€MÜˆ}Ó¤Ð%;Ó!<Ò<Ñ<Øò ;ˆØ�‰Ó Ð$:Ò:Ñ:ñ;r=   c                 ór  — t        d¬«      \  }}t        «       j                  |«      }|dd |dd }}t        j                  |«      dz  }t        j
                  |j                  d   dz  |j                  d   f|j                  ¬«      }||ddd…dd…f<   ||ddd…dd…f<   t        j
                  |j                  d   dz  |j                  ¬«      }||ddd…<   ||ddd…<   t        «       }t        || |d¬	«      }t        |«      }	|	j                  |||¬
«       |j                  ||«       t        |	j                  |j                  «      D ]9  \  }
}t        |
j                  j                   |j                  j                   «       Œ; |	j#                  |«      }|j#                  |«      }t        ||«       y)zrCheck that passing repeating twice the dataset `X` is equivalent to
    passing a `sample_weight` with a factor 2.Tr@  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ˆ7�A�d�s�G€q€AÜ—L‘L “O aÑ'€Mô �h‰h˜Ÿ™ ™
 Q™¨¯©°©
Ð3¸1¿7¹7ÔC€GØ€G‰CˆaˆC’ˆF�OØ€GˆAˆDˆqˆD’!ˆGÑÜ�h‰h�q—w‘w˜q‘z A‘~¨Q¯W©WÔ5€GØ€G‰CˆaˆC�LØ€GˆAˆDˆqˆD�Mä"Ó$€IÜ%;ØØØØô	&Ð"ô #(Ð(FÓ"GÐà×#Ñ# A q¸Ð#ÔFØ"×&Ñ& w°Ô8ô 25Ø#×;Ñ;Ø&×>Ñ>ó2ò 
Ñ-ÐÐ-ô 	Ø×&Ñ&×,Ñ,Ø×)Ñ)×/Ñ/õ	
ð	
ð 6×CÑCÀAÓFÐØ;×IÑIÈ!ÓLÐäÐ'Ð)?Õ@r=   Úfit_params_typeÚlistrÅ   c                 óš   — |\  }}t        || «      t        || «      dœ}t        ddg¬«      }t        |«      } |j                  ||fi |¤Ž y)z£Tests that fit_params are passed to the underlying base estimator.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12384
    )ÚaÚbrª  r«  )Úexpected_fit_paramsN)r'   r&   r   rU   )r§  r<   r9   r:   Ú
fit_paramsr_   Úpc_clfs          r;   Ú test_calibration_with_fit_paramsr¯  u  sW   € ð �D€A€qä  ?Ó3Ü  ?Ó3ñ€Jô
 °#°s°Ô
<€CÜ# CÓ(€Fà€F‡J�Jˆq�!Ñ"�zÓ"r=   rJ   r½   c                 ód   — |\  }}t        d¬«      }t        |«      }|j                  ||| ¬«       y)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²  ˆ  s3   € ð �D€A€qÜ
°DÔ
9€CÜ# CÓ(€Fà
‡J�Jˆq�! =€JÕ1r=   c                 óþ   — | \  }}t        j                  |«      } G d„ dt        «      } |«       }t        |«      }t	        j
                  t        «      5  |j                  |||¬«       ddd«       y# 1 sw Y   yxY w)zÏCheck that even if the estimator doesn't support
    sample_weight, fitting with sample_weight still works.

    There should be a warning, since the sample_weight is not passed
    on to the estimator.
    c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úPtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeightc                 ó2   •— d|vsJ ‚t        ‰| �  ||fi |¤ŽS )NrJ   ©ÚsuperrU   )r³   r9   r:   r­  r–  s       €r;   rU   zTtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeight.fit¥  s$   ø€ Ø"¨*Ñ4Ñ4Ü‘7‘;˜q !Ñ2 zÑ2Ð2r=   ©rµ   r¶   r·   rU   Ú__classcell__©r–  s   @r;   ÚClfWithoutSampleWeightrµ  ¤  s   ø„ ÷	3ð 	3r=   r¼  rI   N)rP   rœ  r&   r   rW   ÚwarnsÚUserWarningrU   )r<   r9   r:   rJ   r¼  r_   r®  s          r;   Ú0test_calibration_without_sample_weight_estimatorr¿  š  sn   € ð �D€A€qÜ—L‘L “O€Mô3Ô!3ô 3ñ
 !Ó
"€CÜ# CÓ(€Fä	�‰”kÓ	"ñ 6Ø�
‰
�1�a }ˆ
Ô5÷6÷ 6ñ 6ús   ÁA3Á3A<c                 óÂ  — t        d¬«      \  }}t        «       j                  |«      }t        j                  |dd |dd f«      }t        j
                  |dd |dd f«      }t        j                  |«      }d|ddd…<   t        «       }t        || |d¬	«      }t        |«      }|j                  |||¬
«       |j                  |ddd…   |ddd…   «       t        |j                  |j                  «      D ]9  \  }}	t        |j                  j                  |	j                  j                  «       Œ; |j!                  |«      }
|j!                  |«      }t        |
|«       y)z|Check that passing removing some sample from the dataset `X` is
    equivalent to passing a `sample_weight` with a factor 0.Tr@  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Å  °  sj  € ô
  Ô%�D€A€qäÓ×&Ñ& qÓ)€Aô 	�	‰	�1�S�b�6˜1˜R ˜8Ð$Ó%€AÜ
�	‰	�1�S�b�6˜1˜R ˜8Ð$Ó%€AÜ—M‘M !Ó$€MØ€M‘#�A�#Ñä"Ó$€IÜ%;ØØØØô	&Ð"ô #(Ð(FÓ"GÐà×#Ñ# A q¸Ð#ÔFØ"×&Ñ& q©¨1¨¡v¨q±°1°©vÔ6ô 25Ø#×;Ñ;Ø&×>Ñ>ó2ò 
Ñ-ÐÐ-ô 	Ø×&Ñ&×,Ñ,Ø×)Ñ)×/Ñ/õ	
ð	
ð 6×CÑCÀAÓFÐØ;×IÑIÈ!ÓLÐäÐ'Ð)?Õ@r=   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 )NrI   r·  )r³   r9   r:   rJ   Ú	fit_paramr–  s        €r;   rU   zNtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifier.fitá  s!   ø€ ØÐ(Ñ(Ü‘7‘;˜q !°=�;ÓAÐAr=   )NNr¹  r»  s   @r;   ÚTestClassifierrÈ  à  s   ø„ ÷	Bñ 	Br=   rË  )rj   rÊ  rK   N)r   r   rU   rP   r¤   rr   )r<   rË  s     r;   Ú2test_calibration_with_non_sample_aligned_fit_paramrÌ  Ü  sM   € ôBÔ+ô Bð
 ;Ô¡^Ó%5Ô6×:Ñ:Ø	ðÜŸ™¤ T¨!¡W£°Ñ!1Ó2ór=   c           	      ó¾  — d}d}t         j                  j                  | «      j                  |¬«      }t        j                  dgt        ||z  «      z  dg|t        ||z  «      z
  z  z   «      }d|j                  d«      z  |z   }t        d|d	¬
«      }|j                  ||«      }|D ]Y  \  }}	||   ||   }}
||	   }t        d| ¬«      }|j                  |
|«       |j                  |«      }|dkD  j                  «       rŒYJ ‚ t        t        d| ¬«      d¬«      }t        |||d¬«      }t        t        d| ¬«      d¬«      }t        |||d¬«      }t        ||«       y)zÓTest that :class:`CalibratedClassifierCV` works with large confidence
    scores when using the `sigmoid` method, particularly with the
    :class:`SGDClassifier`.

    Non-regression test for issue #26766.
    gq=
×£på?iè  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ä  ê  sn  € ð €DØ€AÜ—9‘9×(Ñ(Ð);Ó<×CÑCÈÐCÓK€Lä
�‰�!�”s˜1˜t™8“}Ñ$¨ s¨a´#°a¸$±h³-Ñ.?Ñ'@Ñ@ÓA€AØˆa�i‰i˜Ó Ñ  <Ñ/€Aô 
�T˜Q¨4Ô	0€BØ�h‰h�q˜!‹n€GØò )‰ˆˆtØ˜U™8 Q u¡X�ˆØ�4‘ˆÜ _ÐCUÔVˆØ�‰�G˜WÔ%Ø×/Ñ/°Ó7ˆØ˜cÑ!×&Ñ&Õ(Ñ(ð)ô )Ü˜?Ð9KÔLØô€Kô $ K°°A¸yÔI€Mô *Ü˜?Ð9KÔLØô€Lô % \°1°aÀÔK€Nô �M >Õ2r=   c                 óx  — t         j                  j                  | ¬«      }d}|j                  dd|¬«      }|j	                  ddd¬«      }d}t        |||¬	«      \  }}d
}t        |||¬	«      \  }	}
t        ||¬«      \  }}d}t        ||	|¬«       t        |	||¬«       t        ||
|¬«       t        |
||¬«       y )NrE   r˜   r   rD   rG   éþÿÿÿ)ÚlowÚhighrH   r~   )rß  r:   Úmax_abs_prediction_thresholdr™   )rß  r:   g�íµ ÷Æ°>)Úatol)rP   rQ   rR   r‰  rS   r	   r   )r×  r6   rÙ  r:   Úpredictions_smallÚthreshold_1Úa1Úb1Úthreshold_2Úa2Úb2Úa3Úb3rê  s                 r;   Ú5test_sigmoid_calibration_max_abs_prediction_thresholdrô    sÙ   € Ü—9‘9×(Ñ(Ð.@Ð(ÓA€LØ€AØ×Ñ˜Q ¨ÐÓ*€Að %×,Ñ,°¸!À#Ð,ÓFÐð €KÜ!Ø%Ø
Ø%0ô�F€Bˆð €KÜ!Ø%Ø
Ø%0ô�F€Bˆô "Ø%Ø
ô�F€Bˆð €DÜ�B˜ Õ&Ü�B˜ Õ&Ü�B˜ Õ&Ü�B˜ Ö&r=   c                 ód   —  G d„ dt         «      } |«       }t        |«      } |j                  | Ž  y)zoCheck that CalibratedClassifierCV works with float32 predict proba.

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

    non-regression test for issue #28841.
    )é   rÃ   rG   rª  r™   r«  rÃ   rh   N)rP   rQ   rÓ  r   rU   r8   s     r;   Ú(test_error_less_class_samples_than_foldsr   U  sF   € ô
 	�	‰	×Ñ˜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  r>  rB  rD  r`  rb  rn  rq  r{  r‚  r;  ÚobjectrŽ  r“  r˜  r¦  r¯  r¤   r²  r¿  rÅ  rÌ  rä  rô  rý  r   r¸   r=   r;   ú<module>r     s‘  ðó Û Ý )ç -÷÷ ÷ HÑ GÝ )÷õ .Ý 5Ý (Ý /ß BÝ ,÷÷ õ .ß 4ß >Ý !Ý /Ý 5÷ó õ *Ý .à€	ð €‡��hÔñó  ðð
 ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ8ó 4ó <ó :ð8òv+ð ‡�×Ñ˜ d¨E ]Ó3ñDó 4ðDòð ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñó 4ó <ðð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ6ó 4ó <ð6ð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ð ‡�×Ñ˜¡ q£Ó*ñ:7ó +ó 4ó <ð
:7òz2ð2 ‡�×Ñ˜¨.Ó9ñ,ó :ð,ð^ ‡�×Ñ˜ I¨zÐ#:Ó;ñ5ó <ð5ò0>ò"Cð> ‡�×Ñ˜ d¨E ]Ó3ñó 4ðð ‡�×Ñ˜ d¨E ]Ó3ñ@ó 4ð@ð ‡�×Ñ˜ d¨E ]Ó3ñNó 4ðNð: ‡�×ÑØà
�	‰	×Ñ˜bÓ!×'Ñ'¨¨A¨qÓ1Ø
�	‰	×Ñ˜bÓ!×'Ñ'¨¨A¨q°!Ó4ðóñóðð, ‡�ñ"ó ð"ð ‡�ñ%ó ð%òð4 ‡�×ÑØàˆ�‰‘Y ”^ QÓ'Øˆ�‰‘Y ”^ XÓ.ðóñ6óð6ò"	#òð  €‡��hÔñ&ó  ð&ð €‡��hÔñó  ðð
 ‡�×Ñ˜ A r 7Ó+Ø‡�×Ñ˜ i°Ð%<Ó=ñ&;ó >ó ,ð&;òR;ð ‡�×ÑØÐ-Ð/CÐDóñ;óð;ò ;ð( ‡�×ÑÐ+Ð.>Ð@RÐ-SÓTñ;ó Uð;òD
5ð ‡�×Ñ˜¨¨f¨Ó6ñ"ó 7ð"ð ‡�×Ñ˜¨¨f¨Ó6ñ/ó 7ð/ð( ‡�×ÑÐ8Ò:UÓVñ;ó Wð;ð@ ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ-Aó 4ó <ð-Að` ‡�×ÑÐ*¨V°WÐ,=Ó>ñ#ó ?ð#ð$ ‡�×ÑØà	ˆ�	ÑØˆ�‰�	Óðóñ2óð2ò6ð, ‡�×Ñ˜ I¨zÐ#:Ó;Ø‡�×Ñ˜ d¨E ]Ó3ñ'Aó 4ó <ð'AòTò/3òd&'òRó +r=   