`L iM. ddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl m Z ddlmZej j#dddgej j#dd d gd Zej j#d ddgej j#d ddgej j#dgddZej j#dej(gddfej(ddgdfej(gddfgdZej j#d ddgej j#ddej(gdfdej(gdfgdZej j#ddd iej(ddgd!d"ggej(ddgddd#d$fd ddgddggd!d"gd!d"ggd%d&ej(ddggej(ddgddd#d'fd ddgddggd!d"gd!d"ggd%d&ej(gd(ej(gd)ddd#d*fd ddgddggd!d"gd!d"ggd%d&ej(gd(ej(gdej(d+gdd#dfd ddgddggd!d"gd!d"ggd%d&ej(gd(ej(gd,ddd#d-fgd.Zej j#d/gd0d1Zej j#d2d3d4idgej j#d5id3d4igd6Zd7Zej j#d dd8d8ggej j#d9d:d;d<ddd<gej j#d=d>d?gej j#d2dd@dAigdBZej j#d dd8gdCgej j#d9dDgdEidDgdFigej j#d=d>d?gdGZdHZdIZej j#dJdKdLdMdNdOdPdQdRdSedTdSfdSedUdSfdedTdVfdedUdWfdSedTdSfdSedUdSfdedTdWfdedUdVfgdXZej j#dYej@dZdd[d[d\fej@dZdd] d^d_fejBddd[d`dafgdbdcddfgdeZ"ej j#dfdgddhdidjidgddjdkfdgdldmdAdjdndAdjdmfdodpdqdrdsdtidodpdtdrfiiifidjdAdudvddwdgd[dxdjdAdudvddwdgd[dyfgdzZ#ej j#d{idd!d|fid}dgd~fgdZ$dZ%ej j#dddgej j#d ddgdZ&y)N)LogisticRegression)"_BinaryClassifierCurveDisplayMixin_deprecate_estimator_name_despine_interval_max_min_ratio_validate_score_name_validate_style_kwargs)_get_response_values_binary)assert_allcloseaxAxzname, expected_name_out)N TestEstimator) CustomNamerct}d|_|r|j\}}|j||\}}}||k(sJ|r||k(sJyy)z9Check `_validate_plot_params` returns the correct values.r)r nameN)restimator_namesubplots_validate_plot_params)pyplotr rexpected_name_outdisplay_ax_outname_outs g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/utils/tests/test_plotting.pytest_validate_plot_paramsrsf 12G,G !2!772D7IFAx ( (( ( V|| pos_labelrrresponse_method)auto predict_probadecision_functioncJtjddgddgddgddgg}tjgd}tj||}t j ||||||\}}}t ||||\} } t|| || k(sJ||nd } || k(sJy) zECheck `_validate_and_get_response_values` returns the correct values.r)rrr%r%)rrr)rrNr)nparrayrfitr!_validate_and_get_response_valuesr r ) rrrrXy estimatory_predrexpected_y_predexpected_pos_label expected_names r%test_validate_and_get_response_valuesr2#s 1a&1a&1a&1a&12A A"$((A.I +LL  +   FIx+F1o+'O'FO, * ** *!,D2FM } $$ $rzy_true, error_message)rr$r%zThe target y is not binary.r$z'Found input variables with inconsistent)rr%rr%z,y_true takes value in \{0, 2\} and pos_labelctjgd}tjd}tjt |5t j|||ddddy#1swYyxYw)zDCheck `_validate_from_predictions_params` raises the correct errors.皙?皙?g333333?g?matchN)y_truer. sample_weightr)r'r(onespytestraises ValueErrorr!_validate_from_predictions_params)rr: error_messager.r;s r,test_validate_from_predictions_params_errorsrBEs]XX* +FGGAJM z 7 *LL'     s A++A4zpos_label, y_true)rr$rr$r%ctjgd}tj||d||\}}||nd}||k(sJ||nd}||k(sJy)zECheck `_validate_from_predictions_params` returns the correct values.r4N)r:r.r;rr Classifierr$)r'r(rr@) rrrr:r. pos_label_outrr1r0s r-test_validate_from_predictions_params_returnsrF[ssXX* +F*LL  M8!,D,M } $$ $'0&; . .. .rzparams, err_msgr-dummyr&r7) cv_resultsr+r,r;rz2`cv_results` does not contain one of the following)testtrain)r-indicesz*`X` does not contain the correct number of)r$r%r&r7)rr%r$r&zThe target `y` is not binary?)r%r&r%r&z6y takes value in {2, 3} and pos_label is not specifiedctjt|5tjdi|dddy#1swYyxYw)z2Check parameter validation is performed correctly.r8N)r=r>r?r _validate_from_cv_results_params)rparamserr_msgs r$test_validate_from_cv_results_paramsrRysDT z 1XM*,MMWPVWXXXs AA z/curve_legend_metric, curve_name, expected_label))g333333?Nz AUC = 0.85)NModel ArS)gffffff?z Random ForestzRandom Forest (AUC = 0.95)NNNcDd}tj|||}||k(sJy)z4Check `_get_legend_label` returns the correct label.AUCN)r_get_legend_label)curve_legend_metric curve_nameexpected_labellegend_metric_namelabels rtest_get_legend_labelr]s2 . @ @Z); E N "" "r curve_kwargsalpha?kwargscd}d}ddd}d}|rA|r?tjtd5tj|||||fi|dddy|r?tj t d 5tj|||||fi|dddytj|||||fi|y#1swYyxYw#1swYyxYw) z;Check `_validate_curve_kwargs` deprecates kwargs correctly.r$N皙?r5meanstdrVz"Cannot provide both `curve_kwargs`r8z`\*\*kwargs` is deprecated and)r=r>r?r_validate_curve_kwargswarns FutureWarning)r^ran_curvesr legend_metricr[s r+test_validate_curve_kwargs_deprecate_kwargsrlsH D -M ]]:-Q R  . E E"         \\-/P Q  . E E"        +AA dM+=| OU +    sB+,B7+B47Cc d}ddd}d}tjtd5tj|d||d d ig dddtjtd 5gd }tj||||d tj||||d d i dddy#1swYhxYw#1swYyxYw)zGCheck `_validate_curve_kwargs` performs parameter validation correctly.r&rcr5rdrVz`curve_kwargs` must be Noner8Nr_r`rjrrkr[r^z#To avoid labeling individual curvesonetwothree)r=r>r?rrg)rjrkr[rs r test_validate_curve_kwargs_errorrssH -M z)F G *AA'1"C.)    z)N O &*AA'1   +AA'1!3        sB*&;B6*B36B?rYrkrcr6rdr[rVAPcolorredc d}tj|||||}t|tsJt ||k(sJd}t|tr|d}||}|d|d|dz}n |d|d}|dd |k(sJ|d d J|d d J|Qt d |DsJt d |DsJt d|DsJt d|DsJyt d|DsJt d|DsJy)zNCheck `_validate_curve_kwargs` returns correct kwargs for single legend entry.r&rnNrre (z = 0.80 +/- 0.20)z = 0.80 +/- 0.20r\r$r%c38K|]}t|dk(yw)r7Nlen.0ras r z;test_validate_curve_kwargs_single_legend..OC3v;!#Cc3,K|] }|ddk(yw)r_rLNrNr|s rr~z;test_validate_curve_kwargs_single_legend..PsIf6'?c)Ic3,K|] }|ddk(yw) linestyle--NrNr|s rr~z;test_validate_curve_kwargs_single_legend..QsN66+&$.Nrc3,K|] }|ddk(yw)rublueNrNr|s rr~z;test_validate_curve_kwargs_single_legend..RsL6'?f,Lrc38K|]}t|dk(ywr%Nrzr|s rr~z;test_validate_curve_kwargs_single_legend..Trrc3,K|] }|ddk(yw)rurvNrNr|s rr~z;test_validate_curve_kwargs_single_legend..UsK6'?e+Kr)rrg isinstancelistr{all)rrkr[r^rjcurve_kwargs_outrZs r(test_validate_curve_kwargs_single_legendrsw(H9PP #-!  & -- -  H ,, ,N$Aw   ,+3E2FFW.XXN v  *.//?@ A w '> 99 9 A w ' // / A w ' // /C2BCCCCI8HIIIIN=MNNNNL;KLLLLC2BCCCCK:JKKKKrrometric)r`r`r`rTcZd}ddiddiddig}tj|||||}t|tsJt ||k(sJgd}t|t rd}|d d  |d |d z}|g|z}nZt|tr |d d |}n?t|tr|d d |Dcgc] }|d |d  }}n|d d  |dg|z}t |D]\}} ||d| k(rJtd|DsJt||D]\} } | d| dk(rJy cc}w)zMCheck `_validate_curve_kwargs` returns correct kwargs for multi legend entry.r&rurvyellowrrnrTrYrrNrxz = 1.00)z = 1.00r\c38K|]}t|dk(ywrrzr|s rr~z:test_validate_curve_kwargs_multi_legend..s?Fs6{a?r) rrgrrr{str enumeraterzip) rrkr[rjr^rexpected_labels name_singleidxrZ curve_kwargcurve_kwarg_outs r'test_validate_curve_kwargs_multi_legendrXsHe$w&9GV;LML9PP #-!  & -- -  H ,, ,(O$&  "1 % 1-"5G4H0QQO*+h6 D$ M($;A$>$F D$ M($;A$>$JNR ?J{m201 :   x  # /019:XE(9@^$W-???@ ?.>? ?? ?(+L:J(K@$ _w';w+????@ s/D(cyNrNrNrrrrrcyrrNrNrr neg_metricrrrz6score_name, scoring, negate_score, expected_score_name)accuracyNFr)NrFAccuracy)NrTzNegative accuracy)Nneg_mean_absolute_errorFzNegative mean absolute error)NrTzMean absolute error)MAErTr)NNFScore)NNTzNegative scorez Some metricFTMetriczNegative metricc(t||||k(sJy)z*Check that we return the right score name.N)r) score_namescoring negate_scoreexpected_score_names rtest_validate_score_namers0 Z,?CVVVrzdata, lower_bound, upper_boundr5 g?g?)r$r%rr2r(c6|t|cxkr|ksJJyr)r)data lower_bound upper_bounds rtest_inverval_max_min_ratiors# 06 D DD DD Drz%default_kwargs, user_kwargs, expectedr)ru linewidthrdashed)rurrsolid)rur)clsxxxkr)r\rurrz-.blackrgreen)rrecfclwmecmfcaltms)rru edgecolor facecolorrmarkeredgecolormarkerfacecoloralt markersizecBt||}||k(sJd|d|dy)zLCheck the behaviour of `validate_style_kwargs` with various type of entries.zLThe validation of style keywords does not provide the expected results: Got z instead of .N)r )default_kwargs user_kwargsexpectedresults rtest_validate_style_kwargsrs=\$NK @F X  hl8*A / rzdefault_kwargs, user_kwargs)rrr)rrucxtjt5t||dddy#1swYyxYw)z3Check that `validate_style_kwargs` raises TypeErrorN)r=r> TypeErrorr )rrs r test_validate_style_kwargs_errorrs/ y !<~{;<<r?)rrversionversion_removerwarning_messagerrAs rtest_deprecate_estimator_namersGN%,^T7K4 0 9Q3 5 \\- ? N.~tWMF N'''  'y(@@PPR T ]]:] ; E %ndG D E E  N N E EsB! B-!B*-B6)'numpyr'r=sklearn.linear_modelrsklearn.utils._plottingrrrrrr sklearn.utils._responser sklearn.utils._testingr mark parametrizerr2r(rBrFrRr]rlrsrrrrr geomspacelinspacerrrrrrNrrrs 3@2d|, 79UV - tQi0$ !56E%71 %: ) ;< 1a& DE , !PQ    $ !56 xrxx %& HBHH\ "#/7/, +G4RXX1v1v./RXXq!f%!%!   A ")*+Q!Q(8QFQPQFCST RXX1vh'RXXq!f%!%!  9 "")*+Q!Q(8QFQPQFCSTRXXl+RXXl+!%!  + "")*+Q!Q(8QFQPQFCSTRXXl+RXXl+!)3%!  6 "")*+Q!Q(8QFQPQFCSTRXXl+RXXl+!%!  E mDGPXQGPX 5##7C.$)?@B##78 9A D >$ |n!EFS!d#-t}= %(L>G (LV$ 6M!NOx1H>P3QR-t}=$@>P $@N  <--5PF7$, }5 m4 vuh' vt./  E=9  D-8 z5"34 z4*!*+*$ c1a !Q' ",,sAr " "Aq) Q1 sC( B' EE+1 - ( #18 D 7 3x (( 3 c = 4Lc = R   &$%#*&,  #(+XY+X! #$rv+F&GH< < 4)M<+HI$ !23E4JEr