§
    rŠtj-Æ  ã            
       óì  — 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lAmBZC d dlAmDZDmEZEmFZF d dlGmHZH d dlImJZJ d dlKmLZLmMZMmNZNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZV dZW ejX        d¬ ¦  «        d!„ ¦   «         ZYd"„ ZZej[         \                    d#eT¦  «        ej[         \                    d$d%d&g¦  «        ej[         \                    d'd(d)g¦  «        d*„ ¦   «         ¦   «         ¦   «         Z]d+„ Z^ej[         \                    d'd(d)g¦  «        d,„ ¦   «         Z_d-„ Z`ej[         \                    d$g d.¢¦  «        ej[         \                    d'd(d)g¦  «        d/„ ¦   «         ¦   «         Zaej[        jb        ej[         \                    d$g d.¢¦  «        ej[         \                    d'd(d)g¦  «        d0„ ¦   «         ¦   «         ¦   «         Zcej[         \                    d$d%d&g¦  «        ej[         \                    d'd(d)g¦  «        ej[         \                    d1 edd2¦  «        ¦  «        d3„ ¦   «         ¦   «         ¦   «         Zed4„ Zfej[         \                    d#eT¦  «        ej[         \                    d$g d.¢¦  «        d5„ ¦   «         ¦   «         Zgej[         \                    d$d6gd% e¦   «         fd& e%d7¬8¦  «        fd9 e¦   «         fg¦  «        d:„ ¦   «         Zhd;„ Ziej[         \                    d<g d=¢¦  «        ej[         \                    d'd(d)g¦  «        d>„ ¦   «         ¦   «         Zjd?„ Zkd@„ Zlej[         \                    d$g d.¢¦  «        ej[         \                    d'd(d)g¦  «        dA„ ¦   «         ¦   «         Zmej[         \                    d$g d.¢¦  «        ej[         \                    d'd(d)g¦  «        dB„ ¦   «         ¦   «         Znej[         \                    d'd(d)g¦  «        dC„ ¦   «         Zoej[         \                    dDejp         q                    dE¦  «         r                    dFdGd2¦  «        ejp         q                    dE¦  «         r                    dFdGd2dH¦  «        g¦  «        dI„ ¦   «         ZsejX        dJ„ ¦   «         ZtejX        dK„ ¦   «         ZudL„ ZvdM„ ZwdN„ ZxdO„ Zy ejX        d¬ ¦  «        dP„ ¦   «         Zz ejX        d¬ ¦  «        dQ„ ¦   «         Z{ej[         \                    dRdGdSg¦  «        ej[         \                    dTdUdVg¦  «        dW„ ¦   «         ¦   «         Z|dX„ Z}ej[         \                    dYdZd[g¦  «        d\„ ¦   «         Z~d]„ Zej[         \                    d^d_d`g¦  «        da„ ¦   «         Z€db„ Z�ej[         \                    dce‚eƒg¦  «        dd„ ¦   «         Z„ej[         \                    dce‚eƒg¦  «        de„ ¦   «         Z…ej[         \                    dfdgd2dhdiœdgd2dhdjœg¦  «        dk„ ¦   «         Z†ej[         \                    dlg dm¢¦  «        dn„ ¦   «         Z‡ej[         \                    d$g d.¢¦  «        ej[         \                    d'd(d)g¦  «        do„ ¦   «         ¦   «         Zˆej[         \                    dpdqdrg¦  «        ds„ ¦   «         Z‰ej[         \                    dtdugeWz   ejŠ        eW¦  «        g¦  «        dv„ ¦   «         Z‹dw„ ZŒdx„ Z�ej[         Ž                    dy¦  «        dz„ ¦   «         Z�d{„ Z�ej[         \                    d|d(d)g¦  «        ej[         \                    d$g d.¢¦  «        d}„ ¦   «         ¦   «         Z‘d~„ Z’ej[         \                    d'd)d(g¦  «        ej[         \                    d|d)d(g¦  «        ej[         \                    d eF¦   «         ¦  «        d€„ ¦   «         ¦   «         ¦   «         Z“ej[         \                    d'd)d(g¦  «        ej[         \                    d|d)d(g¦  «        ej[         \                    d eF¦   «         ¦  «        d�„ ¦   «         ¦   «         ¦   «         Z”dS )‚é    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©Údevice)Úget_namespaceÚmove_toÚ)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                  ó>   — t          t          dd¬¦  «        \  } }| |fS )Né   é*   ©Ú	n_samplesÚ
n_featuresÚrandom_state)r   Ú	N_SAMPLES©ÚXÚys     ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/tests/test_calibration.pyÚdatarK   J   s#   € å­¸qÈrÐRÑRÔR�D€A€qØˆaˆ4€Kó    c                 óÀ   — | \  }}d}t          j        t          ¦  «        5  t          |¬¦  «                             ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz%not sigmoid, isotonic, or temperature©Úmethod)ÚpytestÚraisesÚ
ValueErrorr   Úfit)rK   rH   rI   Úinvalid_methods       rJ   Útest_calibration_method_raisesrU   P   s¹   € à�D€A€qØ<€Nå	Œ•zÑ	"Ô	"ð @ð @Ý nÐ5Ñ5Ô5×9Ò9¸!¸QÑ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s   ¡%AÁAÁAÚcsr_containerrO   ÚsigmoidÚisotonicÚensembleTFc                 óÂ  — t           dz  }| \  }}t          j                             d¬¦  «                             |j        ¬¦  «        }||                     ¦   «         z
  }|d |…         |d |…         |d |…         }
}	}||d …         ||d …         }}t          ¦   «                              ||	|
¬¦  «        }| 	                    |¦  «        d d …df         }t          ||j        dz   |¬¦  «        }t          j        t          ¦  «        5  |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   ||f ||¦  «         ||¦  «        ffD �]�\  }}t          ||d|¬	¦  «        }|                     ||	|
¬¦  «         | 	                    |¦  «        d d …df         }t          ||¦  «        t          ||¦  «        k    sJ ‚|                     ||	dz   |
¬¦  «         | 	                    |¦  «        d d …df         }t          ||¦  «         |                     |d|	z  dz
  |
¬¦  «         | 	                    |¦  «        d d …df         }t          ||¦  «         |                     ||	dz   dz  |
¬¦  «         | 	                    |¦  «        d d …df         }|d
k    rt          |d|z
  ¦  «         �Œct          ||¦  «        t          |dz   dz  |¦  «        k    sJ ‚�Œ�d S )Né   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   Y   s‰  € õ
 ˜Q‘€IØ�D€A€qÝ”I×)Ò)¨rÐ)Ñ2Ô2×:Ò:ÀÄÐ:ÑGÔG€Mà	ˆA�EŠE‰GŒG‰€Að "# : I :¤°°*°9°*´¸}ÈZÈiÈZÔ?X�hˆW€GØ�y�z�z”] A i j j¤MˆF€Fõ ‰/Œ/×
Ò
˜g w¸hÐ
Ñ
GÔ
G€CØ×$Ò$ VÑ,Ô,¨Q¨Q¨Q°¨TÔ2€Lå$ S¨Q¬V°a©ZÀ(ÐKÑKÔK€GÝ	Œ•zÑ	"Ô	"ð ð Ø�Š�A�qÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 
�&ÐØ	ˆ�wÑ	Ô	  ¨vÑ!6Ô!6Ð7ð&ð #ñ #Ñ!ˆ�kõ )¨°VÀÈHÐUÑUÔUˆð 	�Š�L '¸ˆÑBÔBÐBØ"×0Ò0°Ñ=Ô=¸a¸a¸aÀ¸dÔCÐõ   ¨Ñ5Ô5Õ8HØÐ$ñ9
ô 9
ò 
ð 
ð 
ð 
ð
 	�Š�L '¨A¡+¸XˆÑFÔFÐFØ%,×%:Ò%:¸;Ñ%GÔ%GÈÈÈÈ1ÈÔ%MÐ"Ý!Ð"2Ð4NÑOÔOÐOð 	�Š�L ! g¡+°¡/ÀˆÑJÔJÐJØ%,×%:Ò%:¸;Ñ%GÔ%GÈÈÈÈ1ÈÔ%MÐ"Ý!Ð"2Ð4NÑOÔOÐOð 	�Š�L 7¨Q¡;°!Ñ"3À8ˆÑLÔLÐLØ%,×%:Ò%:¸;Ñ%GÔ%GÈÈÈÈ1ÈÔ%MÐ"Ø�YÒÐÝ%Ð&6¸Ð<VÑ8VÑWÔWÐWÑWõ $ F¨LÑ9Ô9Õ<LØ˜!‘˜qÑ Ð"<ñ=ô =ò ð ð ð ñ ðC#ð #s   ÄD+Ä+D/Ä2D/c                 ó®   — | \  }}t          d¬¦  «        }|                     ||¦  «         |j        d         j        }t	          |t
          ¦  «        sJ ‚d S )Nr[   ©rd   r   )r   rS   Úcalibrated_classifiers_Ú	estimatorÚ
isinstancer+   )rK   rH   rI   Ú	calib_clfÚbase_ests        rJ   Ú"test_calibration_default_estimatorr�   —   s[   € à�D€A€qÝ&¨!Ð,Ñ,Ô,€IØ‡M‚M�!�QÑÔÐàÔ0°Ô3Ô=€HÝ�h¥	Ñ*Ô*Ð*Ð*Ð*Ð*Ð*rL   c                 ó  — | \  }}d}t          |¬¦  «        }t          ||¬¦  «        }t          |j        t           ¦  «        sJ ‚|j        j        |k    sJ ‚|                     ||¦  «         |r|nd}t          |j        ¦  «        |k    sJ ‚d S )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ÑCÔC€IÝ�i”l¥EÑ*Ô*Ð*Ð*Ð*ØŒ<Ô  FÒ*Ð*Ð*Ð*à‡M‚M�!�QÑÔÐØ'Ð.�V�V¨Q€NÝˆyÔ0Ñ1Ô1°^ÒCÐCÐCÐCÐCÐCrL   c                 ó²  — | \  }}t          d¬¦  «        }t          |d¬¦  «        }t          j        t          d¬¦  «        5  |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦   «         d¬¦  «        }t          j        t          d¬¦  «        5  |                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Née   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Ž   ±   sR  € à�D€A€qå˜3ÐÑÔ€EÝ&¨%¸$Ð?Ñ?Ô?€IÝ	Œ•zÐ)OÐ	PÑ	PÔ	Pð ð Ø�Š�a˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ '­+©-¬-À$ÐGÑGÔG€IÝ	Œ•zÐ)LÐ	MÑ	MÔ	Mð ð Ø�Š�a˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   ÁA%Á%A)Á,A)Â(CÃCÃC)rW   rX   Útemperaturec                 ó>  — t           dz  }| \  }}t          j                             d¬¦  «                             t          |¦  «        ¬¦  «        }|d |…         |d |…         |d |…         }	}}||d …         }
t          d¬¦  «        }t          |||¬¦  «        }|                     |||	¬¦  «         | 	                    |
¦  «        }|                     ||¦  «         | 	                    |
¦  «        }t          j
                             ||z
  ¦  «        }|dk    sJ ‚d S )	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×)Ò)¨rÐ)Ñ2Ô2×:Ò:ÅÀAÁÄÐ:ÑGÔG€MØ!" : I :¤°°*°9°*´¸}ÈZÈiÈZÔ?X�hˆW€GØˆyˆzˆzŒ]€Få rÐ*Ñ*Ô*€IÝ+¨I¸fÈxÐXÑXÔX€NØ×Ò�w °xÐÑ@Ô@Ð@Ø"×0Ò0°Ñ8Ô8€Mð ×Ò�w Ñ(Ô(Ð(Ø%×3Ò3°FÑ;Ô;ÐåŒ9�>Š>˜-Ð*:Ñ:Ñ;Ô;€DØ�#Š:ˆ:ˆ:ˆ:ˆ:ˆ:rL   c                 óª  — | \  }}t          ||d¬¦  «        \  }}}}t          t          ¦   «         t          d¬¦  «        ¦  «        }	t	          |	|d|¬¦  «        }
|
                     ||¦  «         |
                     |¦  «        }t	          |	|d|¬¦  «        }|                     ||¦  «         |                     |¦  «        }t          ||¦  «         dS )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Ñ'NÔ'NÑ$€GˆV�W˜få�nÑ.Ô.µ	ÀrÐ0JÑ0JÔ0JÑKÔK€Iå-Ø˜&¨°Xðñ ô Ðð ×Ò˜ 'Ñ*Ô*Ð*Ø%×3Ò3°FÑ;Ô;€Nå/Ø˜&¨°Xðñ ô Ðð ×Ò˜7 GÑ,Ô,Ð,Ø)×7Ò7¸Ñ?Ô?Ðå�NÐ$4Ñ5Ô5Ð5Ð5Ð5rL   r]   r[   c                 ó°  — d„ }t          d¬¦  «        }t          dd|dd¬¦  «        \  }}d	||d	k    <   t          j        |¦  «        j        d
         }|d d d	…         |d d d	…         }	}|dd d	…         |dd d	…         }}
|                     ||	¦  «         t          || d|¬¦  «        }|                     ||	¦  «         |                     |
¦  «        }t          t          j	        |d¬¦  «        t          j
        t          |
¦  «        ¦  «        ¦  «         d|                     |
|¦  «        cxk     rdk     sn J ‚|                     |
|¦  «        d|                     |
|¦  «        z  k    sJ ‚ ||t          |                     |
¦  «        ¦  «        |¬¦  «        } ||||¬¦  «        }|d|z  k     sJ ‚t          dd¬¦  «        }|                     ||	¦  «         |                     |
¦  «        } ||||¬¦  «        }t          || d|¬¦  «        }|                     ||	¦  «         |                     |
¦  «        } ||||¬¦  «        }|d|z  k     sJ ‚d S )Nc                 ó†   — t          j        |¦  «        |          }t          j        ||z
  dz  ¦  «        |j        d         z  S )Nr[   r   )rg   ÚeyeÚsumÚshape)Úy_trueÚ
proba_predÚ	n_classesÚY_onehots       rJ   Úmulticlass_brierz5test_calibration_multiclass.<locals>.multiclass_brierø   s<   € Ý”6˜)Ñ$Ô$ VÔ,ˆÝŒv�x *Ñ,°Ñ2Ñ3Ô3°h´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ð Hð Hõ  Ð
#Ñ
#Ô
#€CÝØ #°DÀ"ÐRVðñ ô �D€A€qð €A€aˆ!‚e�HÝ”	˜!‘”Ô" 1Ô%€IØ˜˜˜1˜”v˜q   1 œvˆW€GØ�q�t˜!�t”W˜a   1 œgˆF€Fà‡G‚GˆG�WÑÔÐå$ S°¸AÈÐQÑQÔQ€GØ‡K‚K�˜Ñ!Ô!Ð!Ø×"Ò" 6Ñ*Ô*€Få•B”F˜6¨Ð*Ñ*Ô*­B¬GµC¸±K´KÑ,@Ô,@ÑAÔAÐAð
 �#—)’)˜F FÑ+Ô+Ð2Ð2Ò2Ð2¨dÒ2Ð2Ð2Ð2Ð2Ð2ð �=Š=˜ Ñ(Ô(¨4°#·)²)¸FÀFÑ2KÔ2KÑ+KÒKÐKÐKÐKð
 *Ð)Ø•˜×-Ò-¨fÑ5Ô5Ñ6Ô6À)ðñ ô Ðð (Ð'¨°À)ÐLÑLÔLÐà˜cÐ$6Ñ6Ò6Ð6Ð6Ð6õ !¨b¸rÐ
BÑ
BÔ
B€CØ‡G‚GˆG�WÑÔÐØ×!Ò! &Ñ)Ô)€IØ)Ð)¨&°)ÀyÐQÑQÔQÐå$ S°¸AÈÐQÑQÔQ€GØ‡K‚K�˜Ñ!Ô!Ð!Ø×)Ò)¨&Ñ1Ô1€MØ'Ð'¨°ÈÐSÑSÔSÐØ˜cÐ$6Ñ6Ò6Ð6Ð6Ð6Ð6Ð6rL   c                  ó0  —  G d„ d¦  «        } t          ddddd¬¦  «        \  }}t          ¦   «                              ||¦  «        } | ¦   «         }t          ||g|j        ¬¦  «        }|                     |¦  «        }t          |d	|j        z  ¦  «         d S )
Nc                   ó   — e Zd Zd„ ZdS )ú9test_calibration_zero_probability.<locals>.ZeroCalibratorc                 ó@   — t          j        |j        d         ¦  «        S )Nr   )rg   Úzerosr¥   ©ÚselfrH   s     rJ   ÚpredictzAtest_calibration_zero_probability.<locals>.ZeroCalibrator.predict;  s   € Ý”8˜AœG AœJÑ'Ô'Ð'rL   N)Ú__name__Ú
__module__Ú__qualname__rÉ   © rL   rJ   ÚZeroCalibratorrÄ   9  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Ö   4  sÌ   € ð
(ð (ð (ð (ð (ñ (ô (ð (õ
 Ø °!¸RÈTðñ ô �D€A€qõ Ñ
Ô
×
Ò
  1Ñ
%Ô
%€CØ�Ñ!Ô!€JÝ#Ø J <¸¼ðñ ô €Gð ×"Ò" 1Ñ%Ô%€Fõ �F˜C #¤.Ñ0Ñ1Ô1Ð1Ð1Ð1rL   c           
      ó
  — d}t          d|z  dd¬¦  «        \  }}t          j                             d¬¦  «                             |j        ¬¦  «        }||                     ¦   «         z  }|d|…         |d|…         |d|…         }}}||d	|z  …         ||d	|z  …         ||d	|z  …         }}
}	|d	|z  d…         |d	|z  d…         }}t          ¦   «         }|                     |||¦  «         | 	                    |¦  «        dd…d
f         }|	|f | |	¦  «         | |¦  «        ffD ]Ú\  }}t          t          |¦  «        |¬¦  «        }|dfD ]²}|                     ||
|¬¦  «         | 	                    |¦  «        }|                     |¦  «        }|dd…d
f         }t          |t          j        dd
g¦  «        t          j        |d
¬¦  «                 ¦  «         t!          ||¦  «        t!          ||¦  «        k    sJ ‚Œ³ŒÛdS )z'Test calibration for 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ä   M  so  € ð €IÝ¨¨Y©À1ÐSUÐVÑVÔV�D€A€qÝ”I×)Ò)¨rÐ)Ñ2Ô2×:Ò:ÀÄÐ:ÑGÔG€Màˆ�Š‰Œ�L€Að "# : I :¤°°*°9°*´¸}ÈZÈiÈZÔ?X�hˆW€Gà	ˆ)�a˜)‘mÐ
#Ô$Ø	ˆ)�a˜)‘mÐ
#Ô$Ø�i ! i¡-Ð/Ô0ð ˆW€Gð
 �q˜9‘}��Ô'¨¨1¨y©=¨?¨?Ô);ˆF€Fõ ‰/Œ/€CØ‡G‚GˆG�W˜hÑ'Ô'Ð'Ø×$Ò$ VÑ,Ô,¨Q¨Q¨Q°¨TÔ2€Lð 
�&ÐØ	ˆ�wÑ	Ô	  ¨vÑ!6Ô!6Ð7ð&ð ð Ñ!ˆ�kõ 0µÀÑ0DÔ0DÈVÐTÑTÔTˆà˜TÐ"ð 	ð 	ˆBØ×Ò˜|¨WÀBÐÑGÔGÐGà*×8Ò8¸ÑEÔEˆMØ*×2Ò2°;Ñ?Ô?ˆMØ&3°A°A°A°q°DÔ&9Ð#ÝØ�rœx¨¨A¨Ñ/Ô/µ´	¸-ÈaÐ0PÑ0PÔ0PÔQñô ð õ $ F¨LÑ9Ô9Õ<LØÐ/ñ=ô =ò ð ð ð ð ð	ðð rL   rÕ   Úclip)Úout_of_boundsr�   c                 ó  — | \  }}t          d¬¦  «        }t          ||dd¬¦  «        }|                     ||¦  «         |                     |¦  «        }t	          |||dd¬¦  «        }|                     ||¦  «         |                     ||¦  «         |                     |¦  «        }	|                     |	¦  «        }
|dk    r(|
j        d	k    r|
j        d
         d	k    r|
d d …d
f         }
t          |d d …d
f         |
¦  «         d S )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í   z  s   € ð �D€A€qÝ
 Ð
#Ñ
#Ô
#€Cå$ S°¸AÈÐNÑNÔN€GØ‡K‚K��1ÑÔÐØ×&Ò& qÑ)Ô)€Jõ ' s¨A¨q°QÐ?RÐSÑSÔS€Nà‡N‚N�> 1Ñ%Ô%Ð%à‡G‚GˆAˆq�M„M€MØ×"Ò" 1Ñ%Ô%€FØ×&Ò& vÑ.Ô.€Mà�ÒÐØÔ !Ò#Ð#¨-Ô*=¸aÔ*@ÀAÒ*EÐ*EØ)¨!¨!¨!¨Q¨$Ô/ˆMå�J˜q˜q˜q !˜tÔ$ mÑ4Ô4Ð4Ð4Ð4rL   c                  ó|  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        ddg¦  «        }t          |t          | |¦  «        d¦  «         ddt          j        |d         | z  |d         z   ¦  «        z   z  }t          ¦   «                              | |¦  «                             | ¦  «        }t          ||d	¦  «         t          j	        t          ¦  «        5  t          ¦   «                              t          j        | | f¦  «        |¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z0Test calibration values with Platt sigmoid model)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ø   œ  sc  € å
Œ(�<�<�<Ñ
 Ô
 €CÝ
Œ(�;�;�;Ñ
Ô
€Cå”HÐ2Ð4GÐHÑIÔI€MÝ˜mÕ-AÀ#ÀsÑ-KÔ-KÈQÑOÔOÐOØ�c�BœF =°Ô#3°cÑ#9¸MÈ!Ô<LÑ#LÑMÔMÑMÑN€HÝ!Ñ#Ô#×'Ò'¨¨SÑ1Ô1×9Ò9¸#Ñ>Ô>€GÝ˜h¨°Ñ3Ô3Ð3õ 
Œ•zÑ	"Ô	"ð >ð >ÝÑÔ×!Ò!¥"¤)¨S°#¨JÑ"7Ô"7¸Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð >ð >s   Ã-7D1Ä1D5Ä8D5r¨   )r[   rØ   re   c           
      óP  — t          dddd| ddd¬¦  «        \  }}t          ||d¬¦  «        \  }}}}t          t          j        d	d
d¬¦  «        }|                     ||¦  «         t          t          |¦  «        dd|¬¦  «                             ||¦  «        }	|	j        }
|
D ]E}t          |j
        ¦  «        dk    sJ ‚|j
        d         }t          |¦  «         |j        dk    sJ ‚ŒF|�s;|                     |¦  «        }|	                     |¦  «        }t          ||¦  «        t          ||¦  «        k    sJ ‚|                     |¦  «        }|	                     |¦  «        }t!          ||¦  «        t!          ||¦  «        k    sJ ‚| dk    r|dd…df         }|dd…df         }t#          t%          ||d¬¦  «        t%          ||d¬¦  «        ¦  «         |                     |¦  «        }t'          ¦   «                              ||¦  «        }t#          |j        ddd¬¦  «         dS dS )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Ñ%LÔ%LÑ"€GˆU�G˜UÝ
�rœv¨4¸#ÈAÐ
NÑ
NÔ
N€CØ‡G‚GˆG�WÑÔÐå$Ý˜ÑÔ ¨=À8ðñ ô ç	‚cˆ%�ÑÔð ð %Ô<Ðà!7ð 	$ð 	$Ðõ Ð(Ô4Ñ5Ô5¸Ò:Ð:Ð:Ð:à*Ô6°qÔ9ˆ
å˜
Ñ#Ô#Ð#àÔ !Ò#Ð#Ð#Ð#Ð#àñ :à—’˜UÑ#Ô#ˆØ—_’_ UÑ+Ô+ˆ
Ý˜e ZÑ0Ô0µNÀ5È&Ñ4QÔ4QÒQÐQÐQÐQð ×$Ò$ UÑ+Ô+ˆØ×,Ò,¨UÑ3Ô3ˆÝ˜˜|Ñ,Ô,µ¸ÀÑ0IÔ0IÒIÐIÐIÐIð
 ˜Š>ˆ>Ø    1 ”~ˆHØ'¨¨¨¨1¨Ô-ˆLÝÝ˜% °uÐ=Ñ=Ô=Ý˜% ¸5ÐAÑAÔAñ	
ô 	
ð 	
ð ×*Ò*¨7Ñ3Ô3ˆÝ Ñ"Ô"×&Ò& ~°wÑ?Ô?ˆÝ˜œ #¨D°qÐ9Ñ9Ô9Ð9Ð9Ð9ð5:ð :rL   c                 ó  — t          j        d¦  «                             | ¦  «        }|                     dd¦  «        }t           j                             dd|j        d         ¬¦  «        }t          ¦   «                              ||¦  «        }t          ¦   «                              ||¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚| 
                    |¦  «        }| 
                    |¦  «        }t          ||¦  «         d S )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¨Q¤ZÐÑ0Ô0€Aå	Ñ	Ô	×	"Ò	" 1 aÑ	(Ô	(€BÝÑ!Ô!×%Ò% d¨AÑ.Ô.€Eå�B‰<Œ<�8 E™?œ?Ò*Ð*Ð*Ð*à�jŠj˜‰mŒ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
¦  «         n# 1 swxY w Y   t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          ||dd¬¦  «        \  }}t          |¦  «        t          |¦  «        k    sJ ‚t          |¦  «        dk    sJ ‚t	          |ddg¦  «         t	          |ddg¦  «         t          j        t          ¦  «        5  t          ||d¬¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z Check calibration_curve function)r   r   r   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    sx  € åŒXÐ(Ð(Ð(Ñ)Ô)€FÝŒXÐ4Ð4Ð4Ñ5Ô5€FÝ,¨V°VÀAÐFÑFÔFÑ€IˆyÝˆy‰>Œ>�S ™^œ^Ò+Ð+Ð+Ð+Ýˆy‰>Œ>˜QÒÐÐÐÝ˜	 A q 6Ñ*Ô*Ð*Ý˜	 C¨ :Ñ.Ô.Ð.õ 
Œ•zÑ	"Ô	"ð 'ð 'Ý˜1˜# ˜vÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ ŒhÐ)Ð)Ð)Ñ*Ô*€GÝŒhÐ5Ð5Ð5Ñ6Ô6€GÝ->Ø� ¨Zð.ñ .ô .Ñ*ÐÐ*õ Ð!Ñ"Ô"¥cÐ*<Ñ&=Ô&=Ò=Ð=Ð=Ð=ÝÐ!Ñ"Ô" aÒ'Ð'Ð'Ð'ÝÐ*¨Q°¨JÑ7Ô7Ð7ÝÐ*¨S°#¨JÑ7Ô7Ð7õ 
Œ•zÑ	"Ô	"ð Cð CÝ˜' 7°\ÐBÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs$   Â6CÃCÃCÆF6Æ6F:Æ=F:c                 ó,  — t          ddddd¬¦  «        \  }}t          j        |d<   t          dt	          ¦   «         fdt          d	¬
¦  «        fg¦  «        }t          |d| |¬¦  «        }|                     ||¦  «         |                     |¦  «         dS )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€A€d�GÝ
Ø
•]‘_”_Ð	%¨Õ.DÐRSÐ.TÑ.TÔ.TÐ'UÐVñô €Cõ # 3¨1°VÀhÐOÑOÔO€EØ	‡I‚Iˆa��O„O€OØ	‡M‚M�!ÑÔÐÐÐrL   c                 ó6  — t          ddd¬¦  «        \  }}g d¢}t          dd¬¦  «        }t          || t          d	¬
¦  «        |¬¦  «        }|                     ||¦  «         t          |                     |¦  «                             d¬¦  «        d¦  «         d S )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>  3  s¬   € õ
 ¨¸ÀQÐGÑGÔG�D€A€qØ&Ð&Ð&€AÝ
�c¨Ð
*Ñ
*Ô
*€Cå%Ø�F�u¨aÐ0Ñ0Ô0¸8ðñ ô €Hð ‡L‚L��AÑÔÐÝ�H×*Ò*¨1Ñ-Ô-×1Ò1°qÐ1Ñ9Ô9¸3Ñ?Ô?Ð?Ð?Ð?rL   c           	      ó  — t           j                             dd¦  «        }g d¢g d¢z   g d¢z   }t          d¬¦  «        }t	          |dt          d	¦  «        | ¬
¦  «        }|                     ||¦  «         | r±t          j        d¦  «        }t          ddgdd	g¦  «        D ]†\  }}|j	        |          
                    |¦  «        }t          |d d …|f         t          j        t          |¦  «        ¦  «        ¦  «         t          j        |d d …||k    f         dk    ¦  «        sJ ‚Œ‡d S |j	        d          
                    |¦  «        }t          |                     d¬¦  «        t          j        |j        d         ¦  «        ¦  «         d S )Né   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  C  s�  € õ 	Œ	�Š˜˜AÑÔ€AØˆˆ�|�|�|Ñ# l l lÑ2€AÝ
 ¨aÐ
0Ñ
0Ô
0€CÝ$Ø�I¥%¨¡(¤(°Xðñ ô €Gð ‡K‚K��1ÑÔÐàð NÝ”)˜A‘,”,ˆÝ # Q¨ F¨Q°¨FÑ 3Ô 3ð 	<ð 	<ÑˆG�WØÔ3°GÔ<×JÒJÈ1ÑMÔMˆEå˜u Q Q Q¨ ZÔ0µ"´(½3¸q¹6¼6Ñ2BÔ2BÑCÔCÐCå”6˜%    7¨gÒ#5Ð 5Ô6¸Ò:Ñ;Ô;Ð;Ð;Ð;Ð;ð	<ð 	<ð Ô/°Ô2×@Ò@ÀÑCÔCˆÝ! %§)¢)° )Ñ"3Ô"3µR´W¸U¼[È¼^Ñ5LÔ5LÑMÔMÐMÐMÐMrL   rH   rA   é   re   r@   c                 óš   — g d¢} G d„ dt           t          ¦  «        }t           |¦   «         ¦  «        }|                     | |¦  «         dS )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dS )ú>test_calibration_accepts_ndarray.<locals>.MockTensorClassifierz*A toy estimator that accepts tensor inputsc                 ó8   — t          j        |¦  «        | _        | S ©N)rg   r¸   rÓ   )rÈ   rH   rI   s      rJ   rS   zBtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.fito  s   € ÝœI a™LœLˆDŒMØˆKrL   c                 ól   — |                      |j        d         d¦  «                             d¬¦  «        S )Nr   rð   rb   r³   )r  r¥   r¤   rÇ   s     rJ   r»   zPtest_calibration_accepts_ndarray.<locals>.MockTensorClassifier.decision_functions  s-   € à—9’9˜QœW QœZ¨Ñ,Ô,×0Ò0°aÐ0Ñ8Ô8Ð8rL   N)rÊ   rË   rÌ   Ú__doc__rS   r»   rÍ   rL   rJ   ÚMockTensorClassifierrL  l  s8   € € € € € Ø8Ð8ð	ð 	ð 	ð	9ð 	9ð 	9ð 	9ð 	9rL   rQ  N)r   r   r   rS   )rH   rI   rQ  r•   s       rJ   Ú test_calibration_accepts_ndarrayrR  a  sp   € ð 	6Ð5Ð5€Að	9ð 	9ð 	9ð 	9ð 	9�µñ 	9ô 	9ð 	9õ ,Ð,@Ð,@Ñ,BÔ,BÑCÔ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]  |  sX   € ð ˜wÐ'Ð'Ø˜wÐ'Ð'Ø˜wÐ'Ð'Ø˜wÐ'Ð'Ø˜wÐ'Ð'ð€Ið "�/�/€KØ�kÐ!Ð!rL   c                 ó’   — | \  }}t          dt          ¦   «         fdt          ¦   «         fg¦  «        }|                     ||¦  «        S )NÚ
vectorizerrr   )r'   r   r   rS   )r]  rH   rI   Úpipeline_prefits       rJ   Údict_data_pipelinerb  ‰  sQ   € à�D€A€qÝØ
�Ñ(Ô(Ð	)¨EÕ3IÑ3KÔ3KÐ+LÐMñô €Oð ×Ò˜q !Ñ$Ô$Ð$rL   c                 óL  — | \  }}|}t          t          |¦  «        d¬¦  «        }|                     ||¦  «         t          |j        |j        ¦  «         t          |d¦  «        rJ ‚t          |d¦  «        rJ ‚|                     |¦  «         |                     |¦  «         dS )aR  Test that calibration works in prefit pipeline with transformer

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

    Also test it can predict without running into validation errors.
    See https://github.com/scikit-learn/scikit-learn/issues/19637
    r[   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ÑBÔB€IØ‡M‚M�!�QÑÔÐå�yÔ)¨3¬<Ñ8Ô8Ð8õ �sÐ,Ñ-Ô-Ð-Ð-Ð-Ý�yÐ"2Ñ3Ô3Ð3Ð3Ð3ð ×Ò�aÑÔÐØ×Ò˜AÑÔÐÐÐrL   c                  óB  — t          dddd¬¦  «        \  } }t          t          d¬¦  «        d¬¦  «        }|                     | |¦  «         t	          ¦   «                              |¦  «        j        }t          |j        |¦  «         |j        | j        d         k    sJ ‚d S )	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  ¬  s˜   € å¨¸ÀQÐUVÐWÑWÔW�D€A€qÝ&¥y°1 ~¡~¤~¸!Ð<Ñ<Ô<€IØ‡M‚M�!�QÑÔÐå‰nŒn× Ò  Ñ#Ô#Ô,€GÝ�yÔ)¨7Ñ3Ô3Ð3ØÔ# q¤w¨q¤zÒ1Ð1Ð1Ð1Ð1Ð1rL   c                  ób  — t          dddd¬¦  «        \  } }t          d¬¦  «                             | |¦  «        }t          t	          |¦  «        ¦  «        }d}t          j        t          |¬	¦  «        5  |                     | d d …d d
…f         |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr®   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  ·  só   € õ ¨¸ÀQÐUVÐWÑWÔW�D€A€qÝ
�aˆ.‰.Œ.×
Ò
˜Q Ñ
"Ô
"€CÝ&¥°sÑ';Ô';Ñ<Ô<€Ià
M€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð #ð #Ø�Š�a˜˜˜˜2˜A˜2˜”h Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   Á4#B$Â$B(Â+B(c                  ó  — t          dddd¬¦  «        \  } }t          d„ t          d¦  «        D ¦   «         d¬	¦  «        }|                     | |¦  «         t	          t          |¦  «        ¬
¦  «        }|                     | |¦  «         d S )Nr®   re   r[   r«   rh  c                 óN   — g | ]"}d t          |¦  «        z   t          ¦   «         f‘Œ#S )Úlr)Ústrr   )Ú.0Úis     rJ   ú
<listcomp>z5test_calibration_votingclassifier.<locals>.<listcomp>É  s.   € ÐLÐLÐL¸a�T�C ™FœF‘]Õ$6Ñ$8Ô$8Ð9ÐLÐLÐLrL   rØ   Úsoft)Ú
estimatorsÚvoting©r}   )r   r   ÚrangerS   r   r   )rH   rI   Úvoter   s       rJ   Ú!test_calibration_votingclassifierr{  Ã  s’   € õ ¨¸ÀQÐUVÐWÑWÔW�D€A€qÝØLÐLÅ5ÈÁ8Ä8ÐLÑLÔLØðñ ô €Dð 	‡H‚HˆQ��N„N€Nå&µÀÑ1FÔ1FÐGÑGÔG€Ià‡M‚M�!�QÑÔÐÐÐrL   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          ¦   «                              ||¦  «        }t          j        |||||d¬¦  «        }|                     |¦  «        d d …df         }t          ||||¬¦  «        \  }	}
t          |j        |	¦  «         t          |j        |
¦  «         t          |j	        |¦  «         |j
        dk    sJ ‚dd l}t          |j        |j        j        ¦  «        sJ ‚|j                             ¦   «         dk    sJ ‚t          |j        |j        j        ¦  «        sJ ‚t          |j        |j        j        ¦  «        sJ ‚|j                             ¦   «         dk    sJ ‚|j                             ¦   «         dk    sJ ‚dd	g}|j                             ¦   «                              ¦   «         }t7          |¦  «        t7          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œd S )
Nr%  )r(  r,  Ú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   rp  Ú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 9Ñ-Ô-Ð-Ý�C”M 9Ñ-Ô-Ð-Ý�C”J Ñ'Ô'Ð'àÔÐ!5Ò5Ð5Ð5Ð5ð ÐÐÐå�c”i ¤Ô!1Ñ2Ô2Ð2Ð2Ð2ØŒ9×ÒÑ Ô  CÒ'Ð'Ð'Ð'Ý�c”g˜sœxœ}Ñ-Ô-Ð-Ð-Ð-Ý�c”k 3¤:Ô#4Ñ5Ô5Ð5Ð5Ð5àŒ7×ÒÑÔÐ#SÒSÐSÐSÐSØŒ7×ÒÑÔÐ#NÒNÐNÐNÐNà2Ð4JÐKÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;rL   c                 óž  — |\  }}t          t          ¦   «         t          ¦   «         ¦  «        }|                     ||¦  «         t	          j        |||¦  «        }|j        dg}|j                             ¦   «          	                    ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œd S )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„M€MÝ
Ô
+¨C°°AÑ
6Ô
6€Cà!Ô0Ð2HÐIÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;rL   zname, expected_label)NÚ_line1)Úmy_estr¢  c                 óà  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g ¦  «        }t          ||||¬¦  «        }|                     ¦   «          |€g n|g}|                     d¦  «         |j                             ¦   «                              ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}	|	 	                    ¦   «         |v sJ ‚Œd S )N©r   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�b‰\Œ\€Få
˜Y¨	°6È$Ð
OÑ
OÔ
O€CØ‡H‚H�J„J€Jà#' <˜R˜R°d°VÐØ×!Ò!Ð"8Ñ9Ô9Ð9Ø”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;rL   c                 óÖ  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g ¦  «        }d}t          ||||¬¦  «        }|j        |k    sJ ‚d}|                     |¬¦  «         |dg}|j                             ¦   «                              ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}| 	                    ¦   «         |v sJ ‚Œd S )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�b‰\Œ\€Fà€DÝ
˜Y¨	°6È$Ð
OÑ
OÔ
O€CØÔ Ò%Ð%Ð%Ð%Ø€DØ‡H‚H�$€HÑÔÐà"Ð$:Ð;ÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;rL   Úconstructor_namer…  Úfrom_predictionsc                 ó  — |\  }}d}t          ¦   «                              ||¦  «        }|                     |¦  «        d d …df         }t          t          | ¦  «        }| dk    r|||fn||f}	 ||	d|iŽ}
|
j        |k    sJ ‚|                     d¦  «         |
                     ¦   «          |dg}|
j         	                    ¦   «          
                    ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œ|                     d¦  «         d}|
                     |¬¦  «         t          |¦  «        t          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚Œd S )	Nzmy hand-crafted 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¹  >  sÃ  € ð �D€A€qØ%€HÝ
Ñ
Ô
×
"Ò
" 1 aÑ
(Ô
(€CØ×Ò˜qÑ!Ô! ! ! ! Q $Ô'€FåÕ,Ð.>Ñ?Ô?€KØ,Ð0@Ò@Ð@ˆc�1�aˆ[ˆ[ÀqÈ&Àk€Fà
ˆ+�vÐ
- HÐ
-Ð
-€CØÔ Ò)Ð)Ð)Ð)Ø
‡L‚L�ÑÔÐØ‡H‚H�J„J€Jà&Ð(>Ð?ÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:à
‡L‚L�ÑÔÐØ€HØ‡H‚H�(€HÑÔÐÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;rL   c                 ór  — |\  }}t          ¦   «                              ||¦  «        }t          ¦   «                              ||¦  «        }t          j        |||¦  «        }t          j        ||||j        ¬¦  «        }|j                             ¦   «         d         }|                     d¦  «        dk    sJ ‚d S )N)Úaxrb   r„  )r   rS   r,   r	   r…  r�  Úget_legend_handles_labelsÚcount)	r˜  r�  rH   rI   rp  Údtr™  Úviz2r�  s	            rJ   Ú!test_calibration_display_ref_linerÀ  a  s¬   € à�D€A€qÝ	Ñ	Ô	×	!Ò	! ! QÑ	'Ô	'€BÝ	Ñ	!Ô	!×	%Ò	% a¨Ñ	+Ô	+€Bå
Ô
+¨B°°1Ñ
5Ô
5€CÝÔ,¨R°°A¸#¼'ÐBÑBÔB€DàŒX×/Ò/Ñ1Ô1°!Ô4€FØ�<Š<Ð.Ñ/Ô/°1Ò4Ð4Ð4Ð4Ð4Ð4rL   Údtype_y_strc                 óL  — t           j                             d¦  «        }t          j        dgdz  dgdz  z   | ¬¦  «        }|                     dd|j        ¬¦  «        }d	}t          j        t          |¬
¦  «        5  t          ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zKCheck error message when a `pos_label` is not specified with `str` targets.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Ë  n  sì   € õ Œ)×
Ò
 Ñ
#Ô
#€CÝ	Œ�6�(˜Q‘, & ¨A¡Ñ-°[Ð	AÑ	AÔ	A€BØ	�Š�Q˜ ¤ˆÑ	(Ô	(€Bð	$ð õ
 
Œ•z¨Ð	1Ñ	1Ô	1ð "ð "Ý˜"˜bÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   Á;BÂBÂ Bc                 óè  — t          j        g d¢¦  «        }t          j        ddg| ¬¦  «        }||         }t          j        g d¢¦  «        }t          ||d¬¦  «        \  }}t          |g d¢¦  «         t          ||dd¬	¦  «        \  }}t          |g d¢¦  «         t          |d
|z
  dd¬	¦  «        \  }}t          |g d¢¦  «         t          |d
|z
  dd¬	¦  «        \  }}t          |g d¢¦  «         dS )z8Check the behaviour when passing explicitly `pos_label`.)	r   r   r   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Ð1Ð1Ð1Ñ2Ô2€FÝŒh˜ �¨kÐ:Ñ:Ô:€GØ˜”€JÝŒXÐDÐDÐDÑEÔE€Fõ % V¨V¸AÐ>Ñ>Ô>�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.å$ Z°ÀÈUÐSÑSÔS�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.å$ V¨Q°©ZÀÈQÐOÑOÔO�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.Ý$ Z°°V±ÀAÐQWÐXÑXÔX�L€IˆqÝ�I˜~˜~˜~Ñ.Ô.Ð.Ð.Ð.rL   ÚkwargsÚredú-.)ÚcÚlwÚls)ÚcolorÚ	linewidthÚ	linestylec                 ó6  — |\  }}t          ¦   «                              ||¦  «        }t          j        |||fi |¤Ž}|j                             ¦   «         dk    sJ ‚|j                             ¦   «         dk    sJ ‚|j                             ¦   «         dk    sJ ‚dS )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   rp  r™  s          rJ   Útest_calibration_display_kwargsrÞ  “  s§   € ð �D€A€qå	Ñ	Ô	×	!Ò	! ! QÑ	'Ô	'€BÝ
Ô
+¨B°°1Ð
?Ð
?¸Ð
?Ð
?€CàŒ9×ÒÑ Ô  EÒ)Ð)Ð)Ð)ØŒ9×"Ò"Ñ$Ô$¨Ò)Ð)Ð)Ð)ØŒ9×"Ò"Ñ$Ô$¨Ò,Ð,Ð,Ð,Ð,Ð,rL   zpos_label, expected_pos_label))Nrb   r5  )rb   rb   c                 óæ  — |\  }}t          ¦   «                              ||¦  «        }t          j        ||||¬¦  «        }|                     |¦  «        dd…|f         }t          |||¬¦  «        \  }	}
t          |j        |	¦  «         t          |j        |
¦  «         t          |j	        |¦  «         |j
                             ¦   «         d|› d�k    sJ ‚|j
                             ¦   «         d|› d�k    sJ ‚|j        j        dg}|j
                             ¦   «                              ¦   «         }t#          |¦  «        t#          |¦  «        k    sJ ‚|D ]}|                     ¦   «         |v sJ ‚ŒdS )z?Check the behaviour of `pos_label` in the `CalibrationDisplay`.)rÎ  Nz,Mean predicted probability (Positive class: ú)z'Fraction of positives (Positive class: 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   rp  r™  r†  r.  r/  r›  rœ  r�  s                 rJ   Ú"test_calibration_display_pos_labelrã  ¦  s²  € ð
 �D€A€qå	Ñ	Ô	×	!Ò	! ! QÑ	'Ô	'€BÝ
Ô
+¨B°°1À	Ð
JÑ
JÔ
J€Cà×Ò˜aÑ Ô    Ð$6Ð!6Ô7€FÝ,¨Q°À)ÐLÑLÔLÑ€Iˆyå�C”M 9Ñ-Ô-Ð-Ý�C”M 9Ñ-Ô-Ð-Ý�C”J Ñ'Ô'Ð'ð 	Œ×ÒÑÔØOÐ:LÐOÐOÐOò	Pð 	Pð 	Pð 	Pð 	Œ×ÒÑÔØJÐ5GÐJÐJÐJò	Kð 	Kð 	Kð 	Kð !œlÔ3Ð5KÐLÐØ”G×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€MÝˆ}ÑÔ¥Ð%;Ñ!<Ô!<Ò<Ð<Ð<Ð<Øð ;ð ;ˆØ�ŠÑ Ô Ð$:Ð:Ð:Ð:Ð:Ð:ð;ð ;rL   c                 óŠ  — t          d¬¦  «        \  }}t          ¦   «                              |¦  «        }|dd…         |dd…         }}t          j        |¦  «        dz  }t          j        |j        d         dz  |j        d         f|j        ¬¦  «        }||ddd…dd…f<   ||ddd…dd…f<   t          j        |j        d         dz  |j        ¬¦  «        }||ddd…<   ||ddd…<   t          ¦   «         }t          || |d¬	¦  «        }t          |¦  «        }	|	                     |||¬
¦  «         |                     ||¦  «         t          |	j        |j        ¦  «        D ])\  }
}t          |
j        j        |j        j        ¦  «         Œ*|	                     |¦  «        }|                     |¦  «        }t          ||¦  «         dS )zrCheck that passing repeating twice the dataset `X` is equivalent to
    passing a `sample_weight` with a factor 2.Tr}  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ˆTŒ7�A�d�s�d”G€q€AÝ”L ‘O”O aÑ'€Mõ Œh˜œ œ
 Q™¨¬°¬
Ð3¸1¼7ÐCÑCÔC€GØ€GˆCˆCˆaˆC���ˆF�OØ€GˆAˆDˆqˆD�!�!�!ˆGÑÝŒh�q”w˜q”z A‘~¨Q¬WÐ5Ñ5Ô5€GØ€GˆCˆCˆaˆC�LØ€GˆAˆDˆqˆD�Må"Ñ$Ô$€IÝ%;ØØØØð	&ñ &ô &Ð"õ #(Ð(FÑ"GÔ"GÐà×#Ò# A q¸Ð#ÑFÔFÐFØ"×&Ò& w°Ñ8Ô8Ð8õ 25Ø#Ô;Ø&Ô>ñ2ô 2ð 
ð 
Ñ-ÐÐ-õ 	ØÔ&Ô,ØÔ)Ô/ñ	
ô 	
ð 	
ð 	
ð 6×CÒCÀAÑFÔFÐØ;×IÒIÈ!ÑLÔLÐåÐ'Ð)?Ñ@Ô@Ð@Ð@Ð@rL   Úfit_params_typeÚlistrÙ   c                 ó²   — |\  }}t          || ¦  «        t          || ¦  «        dœ}t          ddg¬¦  «        }t          |¦  «        } |j        ||fi |¤Ž dS )z£Tests that fit_params are passed to the underlying base estimator.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12384
    )ÚaÚbrô  rõ  )Úexpected_fit_paramsN)r5   r2   r   rS   )rñ  rK   rH   rI   Ú
fit_paramsrr   Úpc_clfs          rJ   Ú test_calibration_with_fit_paramsrù  ù  sx   € ð �D€A€qå  ?Ñ3Ô3Ý  ?Ñ3Ô3ðð €Jõ
 °#°s°Ð
<Ñ
<Ô
<€CÝ# CÑ(Ô(€Fà€F„Jˆq�!Ð"Ð"�zÐ"Ð"Ð"Ð"Ð"rL   ra   rÒ   c                 ó~   — |\  }}t          d¬¦  «        }t          |¦  «        }|                     ||| ¬¦  «         dS )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ü    sH   € ð �D€A€qÝ
°DÐ
9Ñ
9Ô
9€CÝ# CÑ(Ô(€Fà
‡J‚Jˆq�! =€JÑ1Ô1Ð1Ð1Ð1rL   c                 ó$  — | \  }}t          j        |¦  «        } G d„ dt          ¦  «        } |¦   «         }t          |¦  «        }t	          j        t          ¦  «        5  |                     |||¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zÏCheck that even if the estimator doesn't support
    sample_weight, fitting with sample_weight still works.

    There should be a warning, since the sample_weight is not passed
    on to the estimator.
    c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úPtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeightc                 óF   •— d|vsJ ‚ t          ¦   «         j        ||fi |¤ŽS )Nra   ©ÚsuperrS   )rÈ   rH   rI   r÷  rá  s       €rJ   rS   zTtest_calibration_without_sample_weight_estimator.<locals>.ClfWithoutSampleWeight.fit)  s4   ø€ Ø"¨*Ð4Ð4Ð4Ð4Ø•5‘7”7”;˜q !Ð2Ð2 zÐ2Ð2Ð2rL   ©rÊ   rË   rÌ   rS   Ú__classcell__©rá  s   @rJ   ÚClfWithoutSampleWeightrÿ  (  s8   ø€ € € € € ð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	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	    sî   € ð �D€A€qÝ”L ‘O”O€Mð3ð 3ð 3ð 3ð 3Õ!3ñ 3ô 3ð 3ð
 !Ð
 Ñ
"Ô
"€CÝ# CÑ(Ô(€Få	Œ•kÑ	"Ô	"ð 6ð 6Ø�
Š
�1�a }ˆ
Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6s   ÁBÂB	ÂB	c           
      óÂ   —  G d„ dt           ¦  «        } t           |¦   «         ¬¦  «        j        | dt          j        t          | d         ¦  «        dz   ¦  «        iŽ dS )z[Check that CalibratedClassifierCV does not enforce sample alignment
    for fit parameters.c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )úJtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifierNc                 óT   •— |€J ‚t          ¦   «                              |||¬¦  «        S )Nr`   r  )rÈ   rH   rI   ra   Ú	fit_paramrá  s        €rJ   rS   zNtest_calibration_with_non_sample_aligned_fit_param.<locals>.TestClassifier.fit9  s+   ø€ ØÐ(Ð(Ð(Ý‘7”7—;’;˜q !°=�;ÑAÔAÐArL   )NNr  r  s   @rJ   ÚTestClassifierr  8  sG   ø€ € € € € ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	BrL   r  rx  r  rb   N)r   r   rS   rg   r¹   r…   )rK   r  s     rJ   Ú2test_calibration_with_non_sample_aligned_fit_paramr  4  s�   € ðBð Bð Bð Bð BÕ+ñ Bô Bð Bð
 ;Õ ^ ^Ñ%5Ô%5Ð6Ñ6Ô6Ô:Ø	ðÝœ¥ T¨!¤W¡¤°Ñ!1Ñ2Ô2ðð ð ð ð rL   z-ignore::sklearn.exceptions.ConvergenceWarningc           	      ón  — d}d}t           j                             | ¦  «                             |¬¦  «        }t          j        dgt          ||z  ¦  «        z  dg|t          ||z  ¦  «        z
  z  z   ¦  «        }d|                     d¦  «        z  |z   }t          dd	| ¬
¦  «        }t          d|d¬¦  «        }| 	                    ||¦  «        }|D ]q\  }	}
||	         ||	         }}||
         }t          |¦  «        }|                     ||¦  «         |                     |¦  «        }|dk                         ¦   «         sJ ‚Œrt          t          |¦  «        d¬¦  «        }t          |||d¬¦  «        }t          t          |¦  «        d¬¦  «        }t          |||d¬¦  «        }t!          ||¦  «         dS )z»Test that CalibratedClassifierCV works with large confidence scores when using
    the sigmoid method, particularly with the SGDClassifier.

    Non-regression test for issue #26766.
    gq=
×£på?rú   r^   rb   r   g     jø@)rð   rb   Úsquared_hingeg{®Gáz„?)Úlossr  rE   rØ   T)rd   rI   Ú
classifierg     ˆÃ@rW   rN   Úroc_auc)ÚscoringrX   N)rg   rh   Údefault_rngÚnormalrÙ   Úintr  r   r"   Úsplitr   rS   r»   Úanyr   r$   r   )Úglobal_random_seedÚprobÚnÚrandom_noiserI   rH   rr   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)  B  s¾  € ð €DØ€AÝ”9×(Ò(Ð);Ñ<Ô<×CÒCÈÐCÑKÔK€Lå
Œ�!�•s˜1˜t™8‘}”}Ñ$¨ s¨aµ#°a¸$±h±-´-Ñ.?Ñ'@Ñ@ÑAÔA€AØˆa�iŠi˜Ñ Ô Ñ  <Ñ/€Aõ ˜_°$ÐEWÐ
XÑ
XÔ
X€CÝ	�Q˜!¨Ð	-Ñ	-Ô	-€BØ�hŠh�q˜!‰nŒn€GØð )ð )‰ˆˆtØ˜Uœ8 Q u¤X�ˆØ�4”ˆÝ˜‘*”*ˆØ�Š�G˜WÑ%Ô%Ð%Ø×/Ò/°Ñ7Ô7ˆØ˜cÒ!×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(õ
 )­¨s©¬¸IÐFÑFÔF€KÝ# K°°A¸yÐIÑIÔI€Mõ *­%°©*¬*¸ZÐHÑHÔH€LÝ$ \°1°aÀÐKÑKÔK€Nõ �M >Ñ2Ô2Ð2Ð2Ð2rL   c                 óÂ  — t           j                             | ¬¦  «        }d}|                     dd|¬¦  «        }|                     ddd¬¦  «        }d}t          |||¬	¦  «        \  }}d
}t          |||¬	¦  «        \  }	}
t          ||¬¦  «        \  }}d}t          ||	|¬¦  «         t          |	||¬¦  «         t          ||
|¬¦  «         t          |
||¬¦  «         d S )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_thresholdr8  n  s(  € Ý”9×(Ò(Ð.@Ð(ÑAÔA€LØ€AØ×Ò˜Q ¨ÐÑ*Ô*€Að %×,Ò,°¸!À#Ð,ÑFÔFÐð €KÝ!Ø%Ø
Ø%0ðñ ô �F€Bˆð €KÝ!Ø%Ø
Ø%0ðñ ô �F€Bˆõ "Ø%Ø
ðñ ô �F€Bˆð €DÝ�B˜ Ð&Ñ&Ô&Ð&Ý�B˜ Ð&Ñ&Ô&Ð&Ý�B˜ Ð&Ñ&Ô&Ð&Ý�B˜ Ð&Ñ&Ô&Ð&Ð&Ð&rL   Úuse_sample_weightc                 óR  — |r't          j        | d         t           j        ¬¦  «        }nd} G d„ dt          ¦  «        } |¦   «         }t	          ||¬¦  «        } |j        | d|iŽ   |¦   «         j        | d|iŽ}t	          t          |¦  «        |¬¦  «        } |j        | d|iŽ dS )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 )ú5test_float32_predict_proba.<locals>.DummyClassifier32c                 ó€   •— t          ¦   «                              |¦  «                             t          j        ¦  «        S rN  )r  rl   r  rg   Úfloat32)rÈ   rH   rá  s     €rJ   rl   zCtest_float32_predict_proba.<locals>.DummyClassifier32.predict_proba¬  s+   ø€ Ý‘7”7×(Ò(¨Ñ+Ô+×2Ò2µ2´:Ñ>Ô>Ð>rL   )rÊ   rË   rÌ   rl   r  r  s   @rJ   ÚDummyClassifier32r<  «  s8   ø€ € € € € ð	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?rL   r?  rN   ra   )rg   ræ  Úfloat64r   r   rS   r   )rK   r9  rO   ra   r?  ÚmodelrÕ   s          rJ   Útest_float32_predict_probarB  —  sì   € ð ð õ œ T¨!¤WµB´JÐ?Ñ?Ô?ˆˆàˆð?ð ?ð ?ð ?ð ?�Oñ ?ô ?ð ?ð ÐÑÔ€EÝ'¨°fÐ=Ñ=Ô=€Jà€J„N�DÐ6¨Ð6Ð6Ð6ð $ÐÐÑÔÔ# TÐG¸ÐGÐG€EÝ'­¸Ñ(>Ô(>ÀvÐNÑNÔN€Jà€J„N�DÐ6¨Ð6Ð6Ð6Ð6Ð6rL   c                  ó¨   — t           j                             d¬¦  «        } dgdz  dgdz  z   }t          d¬¦  «                             | |¦  «         dS )	zlCheck that CalibratedClassifierCV works with string targets.

    non-regression test for issue #28841.
    )é   rØ   r^   rô  r®   rõ  rØ   r{   N)rg   rh   r  r   rS   rG   s     rJ   Ú(test_error_less_class_samples_than_foldsrE  »  sY   € õ
 	Œ	×Ò˜gÐÑ&Ô&€AØ	ˆ�‰
�c�U˜R‘ZÑ€Aå˜aÐ Ñ Ô ×$Ò$ Q¨Ñ*Ô*Ð*Ð*Ð*rL   z(array_namespace, device_name, dtype_namec           
      ó0  — t          |||¦  «        \  }}t          dddddddd¬¦  «        \  }}t          ||d¬	¦  «        \  }	}
}}|	                     |¦  «        }	|                     |¦  «        }|                     |	|¬
¦  «        }|                     ||¬
¦  «        }|
                     |¦  «        }
|                     |¦  «        }|                     |
|¬
¦  «        }|                     ||¬
¦  «        }|rt          j        |¦  «        }d|ddd…<   nd}t          ¦   «         }|                     |	|¦  «         t          t          |¦  «        dd| ¬¦  «                             |
||¬¦  «        }|j        d         j        d         }|                     |	¦  «        }t          d¬¦  «        5  t          ¦   «         }|                     ||¦  «         t          t          |¦  «        dd| ¬¦  «                             |||¬¦  «        }|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        t
          d¬¦  «        |j        |¬¦  «         |                     |¦  «        }t)          t+          |t
          d¬¦  «        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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>Úcpu©Úxpr.   ©r	  )r4   r   r%   r  Úasarrayrg   ræ  r   rS   r   r   r|   rÐ   rÉ   r   r/   r  rÊ   rÆ  Úarray_api_devicer   r0   )rY   r9  Úarray_namespaceÚdevice_nameÚ
dtype_namerM  r.   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°{ÀJÑOÔO�J€BˆÝØØØØØØØØð	ñ 	ô 	�D€A€qõ &6°a¸ÈÐ%LÑ%LÔ%LÑ"€GˆU�G˜Uà�nŠn˜ZÑ(Ô(€GØ�nŠn˜ZÑ(Ô(€GØ—’˜G¨F�Ñ3Ô3€JØ—’˜G¨F�Ñ3Ô3€Jà�LŠL˜Ñ$Ô$€EØ�LŠL˜Ñ$Ô$€EØ�zŠz˜%¨ˆzÑ/Ô/€HØ�zŠz˜%¨ˆzÑ/Ô/€Hàð Ýœ UÑ+Ô+ˆØˆ�a�d˜�dÑÐàˆå'Ñ)Ô)€FØ
‡J‚Jˆw˜Ñ Ô Ð Ý'Ý˜ÑÔ A¨mÀhðñ ô ç	‚cˆ%� m€cÑ4Ô4ð ð Ô6°qÔ9ÔEÀaÔH€MØ× Ò  Ñ)Ô)€GÝ	¨4Ð	0Ñ	0Ô	0ð Hð HÝ+Ñ-Ô-ˆØ�
Š
�:˜zÑ*Ô*Ð*Ý+Ý˜FÑ#Ô#¨°-È(ð
ñ 
ô 
ç
Š#ˆh˜°ˆ#Ñ
>Ô
>ð 	ð #Ô:¸1Ô=ÔIÈ!ÔLˆØ! YÒ.Ð.ˆtˆt°DˆÝ˜]Ô0Ñ1Ô1°!Ô4Ô=ÀÄÒLÐLÐLÐLØÔ"Ô(¨H¬NÒ:Ð:Ð:Ð:Ý Ô 3Ñ4Ô4Õ8HÈÑ8RÔ8RÒRÐRÐRÐRÝÝ�MÔ'­B°uÐ=Ñ=Ô=ØÔØð	
ñ 	
ô 	
ð 	
ð
 ×$Ò$ ZÑ0Ô0ˆÝ� ­B°uÐ=Ñ=Ô=¸wÑGÔGÐGð%Hð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hð Hð Hs   Æ.ELÌLÌLc           
      óx  — t          |||¦  «        \  }}t          dddddddd¬¦  «        \  }}t          j        g d	¢¦  «        }	|                     |¦  «        }|	|         }
|                     ||¬
¦  «        }|rt          j        |¦  «        }d|ddd…<   nd}t          t          ¦   «         dd| ¬¦  «                             ||
|¬¦  «        }|j	        d         j
        d         }|                     |¦  «        }t          d¬¦  «        5  t          t          ¦   «         dd| ¬¦  «                             ||
|¬¦  «        }|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        t          d¬¦  «        |j        |¬¦  «         |                     |¦  «        }t)          ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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Úer-   r[   NrØ   r�   )r}   rd   rO   rY   r`   TrG  r>  rI  rJ  rK  rL  rN  )r4   r   rg   rO  r  ræ  r   r   rS   r|   rÐ   rÉ   r   r/   r  rÊ   rÆ  rP  r   r0   r8   )rY   r9  rQ  rR  rS  rM  r.   rH   rI   Ústr_mappingÚy_strÚX_xpra   rY  rZ  r[  r]  r^  r	  r_  s                       rJ   ÚBtest_temperature_scaling_array_api_with_str_y_estimator_not_prefitrg    sÀ  € õ$ & o°{ÀJÑOÔO�J€BˆÝØØØØØØØØð	ñ 	ô 	�D€A€qõ ”*Ð6Ð6Ð6Ñ7Ô7€KØ	�Š�ÑÔ€AØ˜ŒN€EØ�:Š:�a ˆ:Ñ'Ô'€Dàð Ýœ Q™œˆØˆ�a�d˜�dÑÐàˆå'Ý,Ñ.Ô.ØØØð	ñ ô ÷
 
‚cˆ!ˆU -€cÑ0Ô0ð ð Ô6°qÔ9ÔEÀaÔH€MØ× Ò  Ñ#Ô#€GÝ	¨4Ð	0Ñ	0Ô	0ð -ð -Ý+Ý0Ñ2Ô2ØØ Øð	
ñ 
ô 
÷
 Š#ˆd�E¨ˆ#Ñ
7Ô
7ð 	ð #Ô:¸1Ô=ÔIÈ!ÔLˆØ! YÒ.Ð.ˆtˆt°DˆÝ˜]Ô0Ñ1Ô1°!Ô4Ô=ÀÄÒLÐLÐLÐLØÔ"Ô(¨D¬JÒ6Ð6Ð6Ð6Ý Ô 3Ñ4Ô4Õ8HÈÑ8NÔ8NÒNÐNÐNÐNÝÝ�MÔ'­B°uÐ=Ñ=Ô=ØÔØð	
ñ 	
ô 	
ð 	
ð
 ×$Ò$ TÑ*Ô*ˆÝ˜7 GÑ,Ô,Ð,ð'-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ÄDH/È/H3È6H3)•Ú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.   rP  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    ry  rÁ   rÖ   rä   rí   rø   r  r!  r3  r:  r>  rH  rh   ri   rB  rR  r]  rb  rf  rj  rm  r{  r  r�  rž  r   r¬  r¯  r¹  rÀ  rq  ÚobjectrË  rÐ  rÞ  rã  rð  rù  r¹   rü  r	  r  Úfilterwarningsr)  r8  rB  rE  r`  rg  rÍ   rL   rJ   ú<module>rŠ     sò  ðð Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )à "Ð "Ð "Ð "Ð "Ð "Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ DÐ DÐ DÐ DÐ DÐ DØ )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5Ø *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø !Ð !Ð !Ð !Ð !Ð !Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 6Ð 5Ð 5Ð 5Ð 5Ð 5Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø .Ð .Ð .Ð .Ð .Ð .Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à€	ð €„�hÐÑÔðð ñ  Ôðð
@ð @ð @ð „×Ò˜¨.Ñ9Ô9Ø„×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð8ð 8ñ 4Ô3ñ <Ô;ñ :Ô9ð8ðv+ð +ð +ð „×Ò˜ d¨E ]Ñ3Ô3ðDð Dñ 4Ô3ðDðð ð ð „×Ò˜Ð#IÐ#IÐ#IÑJÔJØ„×Ò˜ d¨E ]Ñ3Ô3ðð ñ 4Ô3ñ KÔJðð0 „ÔØ„×Ò˜Ð#IÐ#IÐ#IÑJÔJØ„×Ò˜ d¨E ]Ñ3Ô3ð6ð 6ñ 4Ô3ñ KÔJñ Ôð6ð, „×Ò˜ I¨zÐ#:Ñ;Ô;Ø„×Ò˜ d¨E ]Ñ3Ô3ð „×Ò˜   q¡¤Ñ*Ô*ð:7ð :7ñ +Ô*ñ 4Ô3ñ <Ô;ð
:7ðz2ð 2ð 2ð2 „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð#IÐ#IÐ#IÑJÔJð(ð (ñ KÔJñ :Ô9ð(ðV „×ÒØˆ|Ðà	Ð'Ð'Ñ)Ô)Ð*Ø	Ð'Ð'°fÐ=Ñ=Ô=Ð>Ø	Ð+Ð+Ñ-Ô-Ð.ðñô ð5ð 5ñô ð5ð4>ð >ð >ð" „×ÒØØ€I€Iñô ð „×ÒØØ	ˆ5€Mñô ð;:ð ;:ñ	ô ñ	ô ð;:ð|&ð &ð &ð"Cð Cð Cð> „×Ò˜Ð#IÐ#IÐ#IÑJÔJØ„×Ò˜ d¨E ]Ñ3Ô3ðð ñ 4Ô3ñ KÔJðð „×Ò˜Ð#IÐ#IÐ#IÑJÔJØ„×Ò˜ d¨E ]Ñ3Ô3ð@ð @ñ 4Ô3ñ KÔJð@ð „×Ò˜ d¨E ]Ñ3Ô3ðNð Nñ 4Ô3ðNð: „×ÒØà
Œ	×Ò˜bÑ!Ô!×'Ò'¨¨A¨qÑ1Ô1Ø
Œ	×Ò˜bÑ!Ô!×'Ò'¨¨A¨q°!Ñ4Ô4ðñô ðð ñô ðð( „ð	"ð 	"ñ „ð	"ð „ð%ð %ñ „ð%ðð ð ð42ð 2ð 2ð	#ð 	#ð 	#ðð ð ð  €„�hÐÑÔð&ð &ñ  Ôð&ð €„�hÐÑÔðð ñ  Ôðð
 „×Ò˜ A r 7Ñ+Ô+Ø„×Ò˜ i°Ð%<Ñ=Ô=ð&;ð &;ñ >Ô=ñ ,Ô+ð&;ðR;ð ;ð ;ð „×ÒØÐ-Ð/CÐDñô ð;ð ;ñô ð;ð ;ð ;ð ;ð( „×ÒÐ+Ð.>Ð@RÐ-SÑTÔTð;ð ;ñ UÔTð;ðD
5ð 
5ð 
5ð „×Ò˜¨¨f¨Ñ6Ô6ð"ð "ñ 7Ô6ð"ð „×Ò˜¨¨f¨Ñ6Ô6ð/ð /ñ 7Ô6ð/ð( „×ÒØà˜1 DÐ)Ð)Ø a°dÐ;Ð;ðñô ð	-ð 	-ñô ð	-ð „×ÒÐ8Ð:UÐ:UÐ:UÑVÔVð;ð ;ñ WÔVð;ð@ „×Ò˜Ð#IÐ#IÐ#IÑJÔJØ„×Ò˜ d¨E ]Ñ3Ô3ð-Að -Añ 4Ô3ñ KÔJð-Að` „×ÒÐ*¨V°WÐ,=Ñ>Ô>ð#ð #ñ ?Ô>ð#ð$ „×ÒØà	ˆ�	ÑØˆŒ�	ÑÔðñô ð2ð 2ñô ð2ð6ð 6ð 6ð,ð ð ð „×ÒÐKÑLÔLð(3ð (3ñ MÔLð(3ðV&'ð &'ð &'ðR „×ÒÐ,¨t°U¨mÑ<Ô<Ø„×Ò˜Ð#IÐ#IÐ#IÑJÔJð7ð 7ñ KÔJñ =Ô<ð7ðD+ð +ð +ð „×Ò˜ e¨T ]Ñ3Ô3Ø„×ÒÐ,¨u°d¨mÑ<Ô<Ø„×ÒØ.Ø-Ð-Ñ/Ô/ñô ð=Hð =Hñ	ô ñ =Ô<ñ 4Ô3ð=Hð@ „×Ò˜ e¨T ]Ñ3Ô3Ø„×ÒÐ,¨u°d¨mÑ<Ô<Ø„×ÒØ.Ø-Ð-Ñ/Ô/ñô ð>-ð >-ñ	ô ñ =Ô<ñ 4Ô3ð>-ð >-ð >-rL   