`L iϦ ddlZddlZddlmZddlmZmZmZddl m Z m Z m Z m Z mZmZddlmZmZmZddlmZddlmZmZddlmZdd lmZdd lmZdd lm Z dd l!m"Z"dd l#m$Z$m%Z%ddl&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.ddl/m0Z0ddl1m2Z2m3Z3ddl4m5Z5m6Z6ddl7m8Z8ddl9m:Z:ddl;mZ>m?Z?m@Z@mAZAmBZBddlCmDZDddlEmFZFdZGejddZIejjdeFejjddd gejjd!d"d#gd$ZLd%ZMejjd!d"d#gd&ZNd'ZOejjddd gejjd!d"d#gd(ZPejjddd gejjd!d"d#gd)ZQejjddd gejjd!d"d#gejjd*eRd+d,ZSd-ZTeBeU.ejjdeFd/ZVejjddd gd0ZWd1ZXd2ZYejjd!d"d#gd3ZZejjd!d"d#gd4Z[ejjd!d"d#gd5Z\ejjd6ejjd7jd8d9d+ejjd7jd8d9d+d:gd;Z`ejd<Zaejd=Zbd>Zcejjd?eje8d@Ad+eje8d@AdBgdCZedDZfdEZgejddFZhejddGZiejjdHd9dIgejjdJdKdLgdMZjdNZkejjdOdPdQgdRZldSZmejjdTdUdVgdWZndXZoejjdYepeqgdZZrejjdYepeqgd[Zsejjd\d]d+d^d_d]d+d^d`gdaZtejjdbgdcddZuejjddd gejjd!d"d#gdeZvejjdfdgdhgdiZwejjdjdkgeGzejeGgdlZydmZzdnZ{doZ|dpZ}ejjdqd"d#gejjddd gdrZ~dsZy)tN)assert_allclose) BaseEstimatorClassifierMixinclone)CalibratedClassifierCVCalibrationDisplay_CalibratedClassifier_sigmoid_calibration_SigmoidCalibrationcalibration_curve) load_iris make_blobsmake_classification)DummyClassifier)RandomForestClassifierVotingClassifier)NotFittedError)DictVectorizer)FrozenEstimator) SimpleImputer)IsotonicRegression)LogisticRegression SGDClassifier)brier_score_loss)KFold LeaveOneOutcheck_cvcross_val_predictcross_val_scoretrain_test_split) MultinomialNB)Pipeline make_pipeline) LabelEncoderStandardScaler) LinearSVC)DecisionTreeClassifier)CheckingClassifier)_convert_containerassert_almost_equalassert_array_almost_equalassert_array_equalignore_warnings)softmax)CSR_CONTAINERSmodule)scopec4ttdd\}}||fS)N* n_samples n_features random_state)r N_SAMPLESXys d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_calibration.pydatar?9s qr RDAq a4K csr_containermethodsigmoidisotonicensembleTFctdz}|\}}tjjdj |j }||j z}|d||d||d|} } }||d||d} } tj|| | } | j| dddf}t| |j dz|}tjt5|j||ddd|| f|||| ffD]>\}}t| |d| }|j|| | |j|dddf}t| |t| |kDsJ|j|| dz| |j|dddf}t|||j|d| zdz | |j|dddf}t|||j|| dzdz| |j|dddf}|d k(rt|d|z t| |t| dzdz|kDr?Jy#1swYaxYw) Nr5seedsize sample_weightcvrErBrPrErC)r:nprandom RandomStateuniformrKminr!fit predict_probarpytestraises ValueErrorrr+)r?rBrArEr7r<r=rMX_trainy_trainsw_trainX_testy_testclf prob_pos_clfcal_clf this_X_train this_X_testprob_pos_cal_clfprob_pos_cal_clf_relabeleds r>test_calibrationri?s QI DAqII))r)2:::GMLA"#:I*9 }Zi?XhWGyz]AijMFF /  gwh  GC$$V,QT2L$SQVVaZ(KG z " Aq & w v!67&#! k)VHU  L' B"00=adC  58H $9     L'A+X F%,%:%:;%G1%M"!"24NO  L!g+/ J%,%:%:;%G1%M"!"24NO  L7Q;!"38 L%,%:%:;%G1%M" Y  %&6"test_calibration_default_estimatorrq}sI DAq&!,I MM!Q003==H h ** *r@c|\}}d}t|}t||}t|jtsJ|jj|k(sJ|j |||r|nd}t |j|k(sJy)NrQn_splitsrOrN)rrrnrPrtrXlenrl)r?rEr<r=splitskfoldroexpected_n_clfs r>test_calibration_cv_splitterrys DAq F 6 "E&%(CI illE ** * << F ** * MM!Q'VQN y00 1^ CC Cr@cr|\}}td}t|d}tjtd5|j ||dddtt d}tjtd5|j ||dddy#1swYUxYw#1swYyxYw)NersTrOz$Requesting 101-fold cross-validationmatchz!LeaveOneOut cross-validation does)rrrZr[r\rXr)r?r<r=rwros r>test_calibration_cv_nfoldr~s DAq 3 E&%$?I z)O P a'+-$GI z)L M a sB!B-!B*-B6ctdz}|\}}tjjdj t |}|d||d||d|} }}||d} t d} t| ||} | j||| | j| } | j||| j| }tjj| |z }|dkDsJy) NrGr5rHrJr9)rBrErL皙?) r:rSrTrUrVrur&rrXrYlinalgnorm)r?rBrEr7r<r=rMr]r^r_r`rmcalibrated_clf probs_with_swprobs_without_swdiffs r>test_sample_weightrsQI DAqII))r)2::A:GM!":I*9 }Zi?XhWG yz]Fr*I+IfxXNwx@"008Mw(%33F; 99>>-*:: ;D #::r@cP|\}}t||d\}}}}tttd} t | |d|} | j ||| j |} t | |d|} | j ||| j |} t| | y)zTest parallel calibrationr5rrG)rBn_jobsrErNN)r r#r%r&rrXrYr)r?rBrEr<r=r]r`r^rarmcal_clf_parallelprobs_parallelcal_clf_sequentialprobs_sequentials r>test_parallel_executionrs DAq'712'N$GVWfn. r0JKI-&X'*%33F;N/&X7G,)77?N$45r@rIrGcd}td}tdd|dd\}}d ||d kD<tj|jd }|ddd |ddd } }|d dd |d dd } } |j || t ||d | } | j || | j| } ttj| d tjt| d|j| | cxkrdksJJ| j| | d|j| | zkDsJ|| t|j| |}|| | |}|d|zksJtdd}|j || |j| }|| ||}t ||d | } | j || | j| }|| ||}|d|zksJy)Nctj||}tj||z dz|jdz S)NrGr)rSeyesumshape)y_true proba_pred n_classesY_onehots r>multiclass_brierz5test_calibration_multiclass..multiclass_briers<66)$V,vvx*,23hnnQ6GGGr@rid .@r7r8r9centers cluster_stdrGrrNrQrRaxis?gffffff?)rg?r5) n_estimatorsr9)r&rrSuniquerrXrrYrronesruscorer.decision_functionr)rBrErIrrbr<r=rr]r^r`rardprobasuncalibrated_briercalibrated_brier clf_probs cal_clf_probss r>test_calibration_multiclassrs H  #C #D"RV DAqAa!eH ! ""1%I1vq1vWGqt!tWa1gFFGGGW$SAQG KK!  " "6 *FBFF6*BGGCK,@A #))FF+ 2d 22 22 2 == (4#))FF2K+K KK K *--f56)()L c$66 66 6 !br BCGGGW!!&)I)&)yQ$SAQG KK!))&1M' S c$66 66 6r@cGdd}tddddd\}}tj||}|}t||g|j}|j |}t |d |jz y) NceZdZdZy)9test_calibration_zero_probability..ZeroCalibratorcFtj|jdS)Nr)rSzerosrselfr<s r>predictzAtest_calibration_zero_probability..ZeroCalibrator.predicts88AGGAJ' 'r@N)__name__ __module__ __qualname__rr@r>ZeroCalibratorrs (r@r2rrrr)rm calibratorsclasses?)rrrXr classes_rYr n_classes_)rr<r=rb calibratorrdrs r>!test_calibration_zero_probabilityrs (( !RT DAq    1 %C!J#J<G " "1 %FFC#..01r@)categoryc d}td|zdd\}}tjjdj |j }||j z}|d||d||d|}}}||d |z||d |z||d |z} } }|d |zd|d |zd} } t} t| d }tjt5|j|| ddd| j|||| j| ddd f}|| f|||| ffD]\}}d D]}t| |d }tt| |}| dfD]}|j|| ||j|| ||j|}|j|}|j|}|j|}|ddd f}|ddd f}t!||t!|tj"dd gtj$|d t'| |t'| |kDrJy#1swYhxYw)z*Test calibration for prefitted classifiersrr4r5r6rHrJNrGprefitrkrN)rDrCrBrPrBrLrr)rrSrTrUrVrKrWr!rrZr[rrXrYrrr,arrayargmaxr)rAr7r<r=rMr]r^r_X_caliby_calibsw_calibr`rarb unfit_clfrc this_X_calibrfrBcal_clf_prefitcal_clf_frozensw y_prob_prefit y_prob_frozen y_pred_prefit y_pred_frozenprob_pos_cal_clf_prefitprob_pos_cal_clf_frozens r>test_calibration_prefitr0s I Y1SU VDAqII))r)2:::GMLA"#:I*9 }Zi?XhWG )a)m$ )a)m$i!i-0WG q9}'1y=?);FF /C&sx8I ~ &( gw'(GGGWh'$$V,QT2L & w v!67&! k. F3C8TN3OC4HQWXN& ""<"K""<"K . < <[ I . < <[ I . 6 6{ C . 6 6{ C *71*='*71*='"=-@"!288QF#3BIImRS4T#U( =@P3A    ((s IIc|\}}td}t||dd}|j|||j|}t |||dd}|dk(r t d }n t }|j|||j|||j|} |j| } t|ddd f| y) NrrrFrRr)rPrBrDclip) out_of_boundsrN) r&rrXrYrrr rrr) r?rBr<r=rbrd cal_probasunbiased_predsrclf_df manual_probass r>test_calibration_ensemble_falserjs DAq  #C$SANG KK1&&q)J'sAqQ?RSN 'f= (* NN>1%GGAqM  " "1 %F&&v.MJq!t$m4r@c0tjgd}tjgd}tjddg}t|t||dddtj|d|z|dzzz }t j ||j|}t||d tjt5t j tj||f|d d d y #1swYy xYw) z0Test calibration values with Platt sigmoid model)rQr)rNrgj=ɿgY90(?rrrrNr4N) rSrr+r expr rXrrZr[r\vstack)exFexY AB_lin_libsvmlin_probsk_probs r>test_sigmoid_calibrationrs ((< C ((; CHH24GHIMm-A#s-KQOcBFF=#3c#9M!Gh3 z ">!!"))S#J"7=>>>s 0D  Dctjgd}tjgd}t||d\}}t|t|k(sJt|dk(sJt |ddgt |ddgt j t5tdgd gd d d tjgd }tjgd }t||dd \}}t|t|k(sJt|dk(sJt |ddgt |ddgt j t5t||dd d d y #1swYxYw#1swYy xYw)z Check calibration_curve function)rrrrNrNrN)r皙?皙??rrGn_binsrrNrrgN)rrrrrNrN)rrr?rrquantilerstrategygUUUUUU?r percentile)r)rSrr rur*rZr[r\)ry_pred prob_true prob_predy_true2y_pred2prob_true_quantileprob_pred_quantiles r>test_calibration_curversi XX( )F XX4 5F,VVAFIy y>S^ ++ + y>Q   Aq6* C:. z "'1#v&'hh)*Ghh56G->Z.** ! "c*<&= == = ! "a '' '*QJ7*S#J7 z "C'7\BCC!'' CCsE+E7+E47Fctddddd\}}tj|d<tdt fdt d fg}t |dd | }|j|||j|y )z$Test that calibration can accept nanrrGrr5)r7r8 n_informative n_redundantr9rrimputerrfrN)rrD)rPrBrEN) rrSnanr"rrrrXr)rEr<r=rbclf_cs r>test_calibration_nan_imputerr s} !QS DAqffAdG  ]_ %.DRS.T'UV C #31Z( SE IIaO MM!r@ctddd\}}gd}tdd}t|d td | }|j ||t |j |jd dy)NrrQrG)r7r8r) rNrNrNrNrNrrrrrrr)Cr9rCrrsrRrNr)rr&rrrXrrYr)rEr<_r=rbclf_probs r>test_calibration_prob_sumrsr Q GDAq&A c *C% I%"3hH LLAH**1-11q193?r@c tjjdd}gdgdzgdz}td}t |dt d | }|j |||rtjd }td d gd d gD]v\}}|j|j|}t|dd|ftjt|tj|dd||k7fd kDrvJy|jd j|}t|j!dtj"|j$d y)N rQ)rrrrN)rNrNrGrG)rGrrrrrrCrrRrrGrNr)rSrTrandnr'rrrXarangeziprlrYr,rruallr+rrr) rEr<r=rbrdrcalib_iclass_iprobas r>test_calibration_less_classesrs/ AA|#l2A a 0C$ I%(XG KK1))A, #QFQF 3 < GW33G<JJ1ME uQZ0"((3q62B C66%7g#5 56:; ;;  <//2@@C!%)))"3RWWU[[^5LMr@r<r5rQr4cxgd}Gddtt}t|}|j||y)z;Test that calibration accepts n-dimensional arrays as input)rNrrrNrNrrNrNrrrNrrrNrceZdZdZdZdZy)>test_calibration_accepts_ndarray..MockTensorClassifierz*A toy estimator that accepts tensor inputsc:tj||_|SN)rSrr)rr<r=s r>rXzBtest_calibration_accepts_ndarray..MockTensorClassifier.fitsIIaLDMKr@c`|j|jddjdS)NrrrNr)reshaperrrs r>rzPtest_calibration_accepts_ndarray..MockTensorClassifier.decision_functions)99QWWQZ,00a08 8r@N)rrr__doc__rXrrr@r>MockTensorClassifierrs8  9r@r%N)rrrrX)r<r=r%rs r> test_calibration_accepts_ndarrayr&s7 6A 9 9,,@,BCNq!r@c>dddddddddddddddg}gd }||fS) NNYadult)stateageTXVTchildCTBR)rNrrNrNrr) dict_data text_labelss r>r1r1 sEw'w'w'w'w' I"K k !!r@cr|\}}tdtfdtfg}|j||S)N vectorizerrb)r"rrrX)r1r<r=pipeline_prefits r>dict_data_pipeliner6sC DAq ( )E3I3K+LMO   q! $$r@c|\}}|}tt|d}|j||t|j|jt |drJt |drJ|j ||j|y)aRTest 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 rGrkn_features_in_N)rrrXr,rhasattrrrY)r1r6r<r=rbros r>test_calibration_dict_pipeliner: s DAq C&s';BI MM!Qy))3<<8s,-- -y"233 3a Ar@zclf, cvrNr rc`tdddd\}}|dk(rT|j||}t||}tjt 5|j||dddnt||}|j|||dk(rtest_calibration_attributesr@:s QUV WDAq X~ggam*326 \\- ( MM!Q   +326  a X~9--s||<''3+=+====.$$Q'009--w7''1771:555  s D$$D-c"tdddd\}}tdj||}tt |}d}t j t| 5|j|dddd f|dddy#1swYyxYw) NrrQrGrr=rNr;zAX has 3 features, but LinearSVC is expecting 5 features as input.r|r)rr&rXrrrZr[r\)r<r=rbromsgs r>2test_calibration_inconsistent_prefit_n_features_inrCVs QUV WDAq a.  Q "C&s';!test_calibration_votingclassifierrNbs{ QUV WDAq CH8LaTCF]$6$89L D HHQN&1FGI MM!QMsBctdS)NT return_X_y)r rr@r> iris_datarRrs  %%r@c,|\}}||dk||dkfS)NrGr)rRr<r=s r>iris_data_binaryrTws& DAq QU8Qq1uX r@rrrrVrc|\}}tj||}tj|||||d}|j |dddf}t ||||\} } t |j| t |j| t |j||jdk(sJddl } t|j| jjsJ|jj!dk(sJt|j"| j$j&sJt|j(| j*j,sJ|j"j/dk(sJ|j"j1dk(sJdd g} |j"j3j5} t7| t7| k(sJ| D]}|j9| vrJy) Nr)rralpharNrrrz.Mean predicted probability (Positive class: 1)z)Fraction of positives (Positive class: 1)Perfectly calibrated)rrXrfrom_estimatorrYr rrry_probestimator_name matplotlibrnline_linesLine2D get_alphaax_axesAxesfigure_figureFigure get_xlabel get_ylabel get_legend get_textsruget_text)pyplotrTrrr<r=rEvizrYrrmplexpected_legend_labels legend_labelslabelss r> test_calibration_display_computerq}s DAq   ! !!Q 'B  + + Aq(# C  a A &F, 6&8IyCMM9-CMM9-CJJ'   !5 55 5 cii!1!1 22 2 99   C '' ' cggsxx}} -- - ckk3::#4#4 55 5 77   #S SS S 77   #N NN N24JKGG&&(224M } %;!< << <; $::::;r@cl|\}}ttt}|j||t j |||}|j dg}|jjj}t|t|k(sJ|D]}|j|vrJy)NrW) r#r%rrXrrXrZr`rhrirurj) rkrTr<r=rbrlrnrorps r>$test_plot_calibration_curve_pipelinerss DAq (*<*> ?CGGAqM  + +CA 6C!002HIGG&&(224M } %;!< << <; $::::;r@zname, expected_label)N_line1)my_estructjgd}tjgd}tjg}t||||}|j|gn|g}|j d|j j j}t|t|k(sJ|D]} | j|vrJy)NrrNrNrrrr皙?rZrW) rSrrplotappendr`rhrirurj) rknameexpected_labelrrrYrlrnrorps r>'test_calibration_display_default_labelsrs&I-.I XXb\F Y 6$ OCHHJ#')test_calibration_display_label_class_plotrs&I-.I XXb\F D Y 6$ OC    %% % DHH$H"$:;GG&&(224M } %;!< << <; $::::;r@constructor_namerXfrom_predictionsc|\}}d}tj||}|j|dddf}tt|}|dk(r|||fn||f} || d|i} | j |k(sJ|j d| j|dg} | jjj} t| t| k(sJ| D]} | j| vrJ|j dd}| j|t| t| k(sJ| D]} | j| vrJy) Nzmy hand-crafted namerNrXr}rrW another_namer) rrXrYgetattrrrZcloser{r`rhrirurj)rrkrTr<r=clf_namerbrY constructorparamsrlrnrorps r>,test_calibration_display_name_multiple_callsrsc DAq%H   " "1a (C   q !!Q$ 'F,.>?K,0@@c1a[q&kF v -H -C    )) ) LLHHJ&(>?GG&&(224M } %;!< << <; $::::; LLHHH(H } %;!< << <; $::::;r@cP|\}}tj||}tj||}tj|||}tj||||j }|j j d}|jddk(sJy)N)axrNrW)rrXr'rrXr`get_legend_handles_labelscount) rkrTr<r=rEdtrlviz2rps r>!test_calibration_display_ref_liners DAq   ! !!Q 'B  ! % %a +B  + +B1 5C  , ,RA#'' BD XX / / 1! 4F <<. /1 44 4r@ dtype_y_strc>tjjd}tjdgdzdgdzz|}|j dd|j }d }t jt| 5t||d d d y #1swYy xYw) zKCheck error message when a `pos_label` is not specified with `str` targets.r5spamreggsrGdtyperrJzy_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) rSrTrUrrandintrKrZr[r\r )rrngy1y2err_msgs r>*test_calibration_curve_pos_label_error_strr s ))   #C 6(Q,&A-[ AB Q (B $ z 1""b!"""s = BBctjgd}tjddg|}||}tjgd}t||d\}}t|gdt||dd \}}t|gdt|d |z dd \}}t|gd t|d |z dd \}}t|gd y )z8Check the behaviour when passing explicitly `pos_label`.) rrrrNrNrNrNrNrNreggr) rrg333333?ryrgffffff?rrrrr)rrrNrN)r pos_labelrNr)rrrrNN)rSrr r)rrr y_true_strrrrs r> test_calibration_curve_pos_labelrsXX1 2Fhhk:GJ XXD EF%VVA>LIqI~.$ZUSLIqI~.$VQZQOLIqI~.$ZVAQWXLIqI~.r@kwargsred-.)clwls)color linewidth linestylec,|\}}tj||}tj|||fi|}|jj dk(sJ|jj dk(sJ|jjdk(sJy)z*Check that matplotlib aliases are handled.rrGrN)rrXrrXr\ get_color get_linewidth get_linestyle)rkrTrr<r=rErls r>test_calibration_display_kwargsr2s DAq   ! !!Q 'B  + +B1 ? ?C 99   E )) ) 99 " " $ )) ) 99 " " $ ,, ,r@zpos_label, expected_pos_label))NrNr)rNrNc|\}}tj||}tj||||}|j |dd|f}t |||\} } t |j| t |j| t |j||jjd|dk(sJ|jjd|dk(sJ|jjdg} |jjj!} t#| t#| k(sJ| D]} | j%| vrJy)z?Check the behaviour of `pos_label` in the `CalibrationDisplay`.)rNz,Mean predicted probability (Positive class: )z'Fraction of positives (Positive class: rW)rrXrrXrYr rrrrYr`rfrg __class__rrhrirurj)rkrTrexpected_pos_labelr<r=rErlrYrrrnrorps r>"test_calibration_display_pos_labelrEsc DAq   ! !!Q 'B  + +B1 JC   a $6!6 7F,Q)LIyCMM9-CMM9-CJJ'  9:L9MQ O P P  45G4H J K K!ll335KLGG&&(224M } %;!< << <; $::::;r@crtd\}}tj|}|dd|dd}}tj|dz}tj |j ddz|j df|j}||dddddf<||dddddf<tj |j ddz|j}||ddd<||ddd<t}t|||d }t|} | j||| |j||t| j|jD]9\} } t| jj | jj ;| j#|} |j#|} t| | y) zrCheck that passing repeating twice the dataset `X` is equivalent to passing a `sample_weight` with a factor 2.TrPNrrGrrNr)rBrErPrL)r r% fit_transformrS ones_likerrrrrrrXrrlrrmcoef_rY)rBrEr<r=rMX_twicey_twicermcalibrated_clf_without_weightscalibrated_clf_with_weightsest_with_weightsest_without_weightsy_pred_with_weightsy_pred_without_weightss r>?test_calibrated_classifier_cv_double_sample_weights_equivalencerfs  %DAq&&q)A Tc7AdsGqALLOa'Mhh Q 3177CGGCaCFOGADqD!GhhqwwqzA~QWW5GGCaCLGADqDM"$I%; &" #((F"G##Aq #F"&&w825#;;&>>2 --   & & , ,  ) ) / /  6CCAF;II!L')?@r@fit_params_typelistrc|\}}t||t||d}tddg}t|}|j||fi|y)zTests that fit_params are passed to the underlying base estimator. Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/12384 )abrr)expected_fit_paramsN)r)r(rrX)rr?r<r= fit_paramsrbpc_clfs r> test_calibration_with_fit_paramsrsW DAq ? 3 ? 3J #s -test_calibration_with_sample_weight_estimatorrs3 DAq D 9C #C (F JJq!=J1r@c|\}}tj|}Gddt}|}t|}t j t 5|j|||dddy#1swYyxYw)zCheck 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. ceZdZfdZxZS)Ptest_calibration_without_sample_weight_estimator..ClfWithoutSampleWeightc2d|vsJt|||fi|S)NrMsuperrX)rr<r=rrs r>rXzTtest_calibration_without_sample_weight_estimator..ClfWithoutSampleWeight.fits'"*4 447;q!2z2 2r@rrrrX __classcell__rs@r>ClfWithoutSampleWeightrs  3 3r@rrLN)rSrr(rrZr> UserWarningrX)r?r<r=rMrrbrs r>0test_calibration_without_sample_weight_estimatorrsn DAqLLOM3!33 ! "C #C (F k "6 1a} 5666s A33A<c Gddt}t|j|dtjt |ddziy)z[Check that CalibratedClassifierCV does not enforce sample alignment for fit parameters.c eZdZdfd ZxZS)Jtest_calibration_with_non_sample_aligned_fit_param..TestClassifierc0|Jt||||S)NrLr)rr<r=rM fit_paramrs r>rXzNtest_calibration_with_non_sample_aligned_fit_param..TestClassifier.fits$( ((7;q!=;A Ar@)NNrrs@r>TestClassifierrs B Br@rrIrrNN)rrrXrSrru)r?rs r>2test_calibration_with_non_sample_aligned_fit_paramrsMB+B ;^%56:: T!W!12r@c d}d}tjj|j|}tjdgt ||zzdg|t ||zz zz}d|j dz|z}td|d }|j||}|D]Y\}} ||||} } || } td | } | j| | | j| }|d kDjrYJttd | d}t|||d}ttd | d}t|||d}t||y)zTest 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?irJrNrgj@)rrNNT)rPr= classifier squared_hinge)lossr9g@rCrroc_auc)scoringrD)rSrT default_rngnormalrintr#rsplitrrXranyrrr)global_random_seedprobn random_noiser=r<rPindicestraintestr]r^r`sgd_clf predictions clf_sigmoid score_sigmoid clf_isotonicscore_isotonics r>@test_calibrated_classifier_cv_works_with_large_confidence_scoresrsq D A99(();<CCCKL !s1t8}$sa#a$h-.?'@@AA aii  </A TQ4 0Bhhq!nG) tU8QuX4_CUV GW%//7 c!&&((( ))?9KLK$KAyIM*?9KLL%\1aKNM>2r@cxtjj|}d}|jdd|}|j ddd}d}t ||| \}}d }t ||| \} } t || \} } d } t || | t | | | t || | t | | | y)NrHrrrGrJ)lowhighrKr)rr=max_abs_prediction_thresholdr)rr=gư>)atol)rSrTrUrrVr r)rr9rr=predictions_small threshold_1a1b1 threshold_2a2b2a3b3rs r>5test_sigmoid_calibration_max_abs_prediction_thresholdr s99((.@(AL AQ*A%,,!#,FK !% %0FBK !% %0FB"% FB DB&B&B&B&r@use_sample_weightc|r)tj|dtj}nd}Gddt}|}t ||}|j |d|i|j |d|i}t t ||}|j |d|i|j |d|i}t ||d }tjt5|j |d|idddy#1swYyxYw) z|Check that CalibratedClassifierCV works with float32 predict proba. Non-regression test for gh-28245 and gh-28247. rNrNceZdZfdZxZS)4test_float32_predict_proba..DummyClassifer32c\t||jtjSr!)rrYastyperSfloat32)rr<rs r>rYzBtest_float32_predict_proba..DummyClassifer32.predict_probaQs"7(+222::> >r@)rrrrYrrs@r>DummyClassifer32rPs  ? ?r@rrrMrr) rSrfloat64rrrXrrZr>r?)r?r rBrMrmodelrs r>test_float32_predict_probar<s T!WBJJ?  ???  E'f=JJNND6 6 #   " "D F FE'(>vNJJNND6 6 #   " "D F FE'fJJ m $; :M:;;;s C<<Dctjjd}dgdzdgdzz}tdj ||y) zlCheck that CalibratedClassifierCV works with string targets. non-regression test for issue #28841. )rrJrrrrrkN)rSrTrrrXr;s r>(test_error_less_class_samples_than_foldsrhsF g&A  cURZAa $$Q*r@)numpyrSrZ numpy.testingr sklearn.baserrrsklearn.calibrationrrr r r r sklearn.datasetsr rr sklearn.dummyrsklearn.ensemblerrsklearn.exceptionsrsklearn.feature_extractionrsklearn.frozenrsklearn.imputersklearn.isotonicrsklearn.linear_modelrrsklearn.metricsrsklearn.model_selectionrrrrrr sklearn.naive_bayesr!sklearn.pipeliner"r#sklearn.preprocessingr$r% sklearn.svmr& sklearn.treer'sklearn.utils._mockingr(sklearn.utils._testingr)r*r+r,r-sklearn.utils.extmathr.sklearn.utils.fixesr/r:fixturer?mark parametrizerirqryr~rrrJrrr?rrrrr rrrTrUrr&r1r6r:paramr@rCrNrRrTrqrsrrrrrKobjectrrrrrrrrrrrr rrrr@r>r8s )>>HG).5*(/B,.4>!/5*.  h  .9Iz#:;dE]384<:8v+dE]3 D4 D Iz#:;dE]34<,Iz#:;dE]364<6,Iz#:;dE]3q*:7+4< :7z22-(.95:)5pIz#:;5<50>"C>dE]3 4 dE]3 @4 @dE]3N4N: b!''Aq1 b!''Aq!4( " "%%4  Y^Q' Y^X.66* #  h& &h  Ar7+i%<=&;>,&;R ;-/CD ; ; ;(+.>@R-ST;U;D 5f 6 "7 "f 6/7/( 1D)ad; - -8:UV;W;@Iz#:;dE]3-A4<-A`*VW,=>#?#$   226, /3d&'R,tUm<Iz#:;';<=';T+r@