
    Ki                     4	   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
Jr  S SKJrJr  S SKJrJrJrJrJr  S SKJrJrJrJr  S SKJrJrJrJrJr  S S	K J!r!  \\\\/r"\"\/-   r#\RH                  " S
S/SS/SS
/SS/SS/SS//5      r%\RH                  " / SQ5      r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4\Rj                  Rm                  S\"5      S 5       r7\Rj                  Rm                  S\"5      S 5       r8\Rj                  Rm                  S \#5      S! 5       r9S" r:\Rj                  Rm                  S\"5      S# 5       r;\Rj                  Rm                  S\"5      S$ 5       r<\Rj                  Rm                  S\"5      S% 5       r=\Rj                  Rm                  S\"5      S& 5       r>\Rj                  Rm                  S\"5      \Rj                  Rm                  S'S(S)/5      \Rj                  Rm                  S*S(S)/5      S+ 5       5       5       r?\Rj                  Rm                  S,S-5      \Rj                  Rm                  S.\!5      S/ 5       5       r@S0 rAS1 rBS2 rCS3 rDS4 rE\Rj                  Rm                  S5S6\RH                  " / S7Q/ S8Q/5      \RH                  " / S8Q/ S8Q/5      \RH                  " S S//5      \RH                  " S6S6/5      4S6S9/\RH                  " / S7Q/ S8Q/5      \RH                  " / S:Q/ S:Q/5      \RH                  " S S6//5      \RH                  " S6S9/5      4S\RH                  " SS /SS//5      \RH                  " SS/SS//5      \RH                  " S S//5      \RH                  " SS/5      //5      S; 5       rF\Rj                  Rm                  S<S6S/SS9//S=4/5      S> 5       rG\Rj                  Rm                  S.\!5      S? 5       rHS@ rISA rJSB rK\Rj                  Rm                  SC\#5      SD 5       rL\Rj                  Rm                  SC\#5      SE 5       rM\Rj                  Rm                  SFS(S)/5      \Rj                  Rm                  SGS(S)/5      \Rj                  Rm                  SH\" 5       \SI9SJ 5       5       5       rNg)K    N)	logsumexp)config_context)load_digits	load_iris)cross_val_scoretrain_test_split)BernoulliNBCategoricalNBComplementNB
GaussianNBMultinomialNB)_convert_to_numpy_get_namespace_device_dtype_idsdevice)yield_namespace_device_dtype_combinations)_array_api_for_testsassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)CSR_CONTAINERS      )r   r   r   r   r   r   c                     [         R                  R                  U 5      nUR                  SS9nUR                  SS9S:  R	                  [
        5      nX#4$ )N)
      sizer   r   )nprandomRandomStatenormalastypeint)global_random_seedrngX1y1s       `/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/sklearn/tests/test_naive_bayes.pyget_random_normal_x_binary_yr,   )   sN    
))

 2
3C		!B
**"*

!	)	)#	.B6M    c                     [         R                  R                  U 5      nUR                  SSS9n[         R                  " / SQ5      nX#4$ )N   )   d   r   )r   r   r   r   r   r   )r!   r"   r#   randintarray)r'   r(   X2y2s       r+   $get_random_integer_x_three_classes_yr6   1   sA     ))

 2
3C	QX	&B	$	%B6Mr-   c                     [        5       n U R                  [        [        5      R	                  [        5      n[        U[        5        U R                  [        5      nU R                  [        5      n[        [        R                  " U5      US5        [        R                  " [        SS9   [        5       R                  [        [        SS/S9  S S S 5        g ! , (       d  f       g = f)N   z;The target label.* in y do not exist in the initial classesmatchr   r   classes)r   fitXypredictr   predict_probapredict_log_probar   r!   logpytestraises
ValueErrorpartial_fit)clfy_predy_pred_probay_pred_log_probas       r+   test_gnbrL   :   s    
 ,CWWQ]""1%Fvq!$$Q'L,,Q/bff\24DaH
 
W
 	  A1v 6
 
 
s   ,$C
C'c                 <   [        5       R                  [        [        5      n[	        [
        R                  " SS/5      S-  UR                  S5        [        U 5      u  p#[        5       R                  X#5      n[	        UR                  R                  5       S5        g )Nr         @r8   r   )
r   r=   r>   r?   r   r!   r3   class_prior_r,   sum)r'   rH   r)   r*   s       r+   test_gnb_priorrQ   P   sr    
,

1a
 Cbhh1v.4c6F6FJ)*<=FB
,

2
"Cc..224a8r-   c                 <   [         R                  " S5      n[        5       R                  [        [
        5      n[        5       R                  [        [
        U5      n[        UR                  UR                  5        [        UR                  UR                  5        [         R                  R                  U 5      nUR                  [
        R                  S   5      n[        5       R                  [        [
        US9n[        5       R                  [        [
        SS/US-  S9nUR                  [        [
        US-  S9  [        UR                  UR                  5        [        UR                  UR                  5        UR                  S[        R                  S   S5      n[         R                  " U[        R                  S   S9n[        5       R                  [        U   [
        U   5      n	[        5       R                  [        [
        U5      n[        U	R                  UR                  5        [        U	R                  UR                  5        [
        S:H  R!                  [         R"                  5      n[        5       R                  [        [
        US9ng	)
z5Test whether sample weights are properly used in GNB.r0   r   sample_weightr   r   r<   rT      )	minlengthN)r!   onesr   r=   r>   r?   r   theta_var_r"   r#   randshaperG   r2   bincountr%   float64)
r'   swrH   clf_swr(   clf1clf2indrT   clf_dupls
             r+   test_gnb_sample_weightre   Z   s    
B
,

1a
 C\aB'Fcjj&--8chh4 ))

 2
3C	!''!*	B<Aq3D<##Aq1a&Q#ODQa0dkk4;;7dii3 ++aR
(CKKqwwqz:M|##/H\aM2Fhoov}}=hmmV[[9 !VOOBJJ/M
,

1a}

=Cr-   c                      [        [        R                  " SS/5      S9n Sn[        R                  " [
        US9   U R                  [        [        5        SSS5        g! , (       d  f       g= f)z:Test whether an error is raised in case of negative priorsg             @priorszPriors must be non-negativer9   N	r   r!   r3   rD   rE   rF   r=   r>   r?   rH   msgs     r+   test_gnb_neg_priorsrm      sE    
BHHdC[1
2C
'C	z	-1 
.	-	-   A
A-c                  6   [        [        R                  " SS/5      S9R                  [        [
        5      n [        U R                  SS//5      [        R                  " SS//5      S5        [        U R                  [        R                  " SS/5      5        g)	z6Test whether the class prior override is properly used333333?gffffff?rh   皙g[9h?gs\?r8   N)	r   r!   r3   r=   r>   r?   r   rA   rO   rH   s    r+   test_gnb_priorsrs      sz    
BHHc3Z0
1
5
5a
;CD$<.)
$&789:	
 c..#s0DEr-   c                      [         R                  " SS/SS/SS/SS/SS/SS/SS/SS/S	S	/S
S
//
5      n [         R                  " / SQ5      n[         R                  " / SQ5      n[        US9nUR                  X5        g )Nr   r   r   r   r      r/   )
g{Gz?Q?gQ?{Gz?)\(?rz   gQ?ry   r{           )
r   r   r   rx   r/   r0      r8   	   r   rh   )r!   r3   r   r=   )r>   ri   YrH   s       r+   test_gnb_priors_sum_iscloser      s    
HHHHHFFFFF	
	A XXQRF
01A
F
#CGGAMr-   c                      [        [        R                  " / SQ5      S9n Sn[        R                  " [
        US9   U R                  [        [        5        SSS5        g! , (       d  f       g= f)z\Test whether an error is raised if the number of prior is different
from the number of class)      ?r   r   r   rh   -Number of priors must match number of classesr9   Nrj   rk   s     r+   test_gnb_wrong_nb_priorsr      sD     BHH%=>
?C
9C	z	-1 
.	-	-rn   c                      [        [        R                  " SS/5      S9n Sn[        R                  " [
        US9   U R                  [        [        5        SSS5        g! , (       d  f       g= f)z?Test if an error is raised if the sum of prior greater than onerg         ?rh   z!The sum of the priors should be 1r9   Nrj   rk   s     r+   test_gnb_prior_greater_oner      sE    
BHHc3Z0
1C
-C	z	-1 
.	-	-rn   c                      [        [        R                  " SS/5      S9n U R                  [        [
        5        U R                  SS//5      [        R                  " S/5      :X  d   eg)z@Test if good prediction when class prior favor largely one classg{Gz?gGz?rh   rq   r   N)r   r!   r3   r=   r>   r?   r@   rr   s    r+   test_gnb_prior_large_biasr      sM    
BHHdD\2
3CGGAqM;;t~&"((A3-777r-   c                      Sn SnSn[         R                  " S[        R                  S   45      n[        R
                  " XX#5      u  pEXA:X  d   eXR:X  d   eg)z4Test when the partial fit is called without any datar1   r|   r   r   r   N)r!   emptyr>   r\   r   _update_mean_variance)prev_pointsmeanvarx_emptytmeantvars         r+   "test_gnb_check_update_with_no_datar      sU     KD
Chh1771:'G22;cSKE==;;r-   c                    [         R                  U 5      n[        5       R                  U[        5      n[        5       R                  U[        [        R                  " [        5      5      nS HT  n[        X$5      n[        X45      nUR                  UR                  s=:X  a  UR                  :X  d   e   e[        XV5        MV     [        5       R                  USS S2S S 24   [        SS S2   [        R                  " [        5      5      nUR                  USS S2   [        SS S2   5        S HT  n[        X$5      n[        Xt5      nUR                  UR                  s=:X  a  UR                  :X  d   e   e[        XX5        MV     g )N)rO   rY   rZ   r   r   r   )r>   r%   r   r=   r?   rG   r!   uniquegetattrdtyper   )	global_dtypeX_rH   clf_pffitted_attrclf_attrclf_pf_attrclf_pf2clf_pf2_attrs	            r+   test_gnb_partial_fitr      s8   	
,	B
,

2q
!C\%%b!RYYq\:F93,f2~~!2!2>bhh>>>>>!(8	 : l&&r!$Q$'{AaddGRYYq\JG14a4!ADqD'*93,w4~~!3!3?rxx?????!(9	 :r-   c                     [        5       n U R                  U R                  p!S Vs/ s H0  n[        5       R	                  X1-  U5      R                  X1-  5      PM2     nn[        US   US   5        [        US   US   5        g s  snf )N)绽|=r   g    _Br   r   r   )r   datatargetr   r=   r@   r   )irisr>   r?   flabelss        r+   %test_gnb_naive_bayes_scale_invariancer      sv    ;D99dkkqAQRAQAjlqua(007AQFRvay&),vay&), Ss   7BDiscreteNaiveBayesc                     [        U5      u  p#U " 5       R                  X#5      n[        [        R                  " [        R
                  " / SQ5      S-  5      UR                  S5        g )N)r   r   r   rN   r8   )r6   r=   r   r!   rC   r3   class_log_prior_)r   r'   r4   r5   rH   s        r+   test_discretenb_priorr      sP     22DEFB


"
"2
*C
rxx	"S()3+?+?r-   c           	         U " 5       nUR                  SS/SS/SS/// SQ5        U " 5       nUR                  SS/SS/SS/// SQSS/S9  [        UR                  UR                  5        U [        L aL  [        [        UR                  5      5       H)  n[        UR                  U   UR                  U   5        M+     O [        UR                  UR                  5        U " 5       nUR                  SS//S/SS/S9  UR                  SS//S/5        UR                  SS//S/5        [        UR                  UR                  5        U [        L Gat  [        [        UR                  5      5       H  n[        UR                  U   R                  UR                  U   R                  5        [        [        R                  " UR                  U   SS9[        R                  " UR                  U   SS95        M     [        UR                  S   S   [        R                  " SS/5      5        [        UR                  S   S   [        R                  " SS/5      5        [        UR                  S   S   [        R                  " SS/5      5        [        UR                  S   S   [        R                  " SS/5      5        g [        UR                  UR                  5        g )Nr   r   r   r   r   r;   axisr   )r=   rG   r   class_count_r
   rangelencategory_count_feature_count_r\   r!   rP   r3   )r   ra   rb   iclf3s        r+   test_discretenb_partial_fitr      s   DHHq!fq!fq!f%y1Dq!fq!fq!f-y1a&It(($*;*;<]*s4//01At33A68L8LQ8OP 2 	4..0C0CDDq!fXsQF3q!fXs#q!fXs#t(($*;*;<]* s4//01A$$Q'--t/C/CA/F/L/L t++A.Q7t++A.Q7	 2 	4//215rxxA7GH 	4//215rxxA7GH 	4//215rxxA7GH 	4//215rxxA7GH4..0C0CDr-   
NaiveBayesc                    [        U5      u  p#[        R                  " [        SS9   U " 5       R	                  X#5        S S S 5        U " 5       nUR	                  X#[
        R                  " U5      S9  [        R                  " [        SS9   UR	                  X#[
        R                  " S5      S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz8classes must be passed on the first call to partial_fit.r9   r;   .is not the same as on last call to partial_fit*   )r6   rD   rE   rF   rG   r!   r   arange)r   r'   r4   r5   rH   s        r+   $test_NB_partial_fit_no_first_classesr   *  s     22DEFB	T
 	  (
 ,COOBBIIbMO2	J
 			"6
 

 

 
s   B8
%C	8
C	
Cc            	         / SQ/ SQ/ SQ/n SS/SS/SS//n/ SQn[        [        [        /X/5       H  u  p4U" 5       R                  XB5      nUR	                  US	S  5      S
:X  d   eUR                  US   /5      R                  S:X  d   e[        UR                  US S
 5      R                  SS9[        R                  " SS/5      S5        M     / SQn[        [        [        /X/5       GH  u  p4U" 5       R                  XB5      nUR                  USS 5      R                  S:X  d   eUR                  US S
 5      R                  S:X  d   e[        [        R                  " UR                  US   /5      5      S5        [        [        R                  " UR                  US	   /5      5      S5        [        [        R                  " [        R                  " UR                  5      5      S5        GM     g )N)r   r1   r   r   r   r   )r   r1   r   r   r   r   rx   )r   r   r   r   r   )r   r   r   r   r0   r   r   r   )r   r   )r   r   )zipr	   r   r=   r@   rA   r\   r   rP   r!   r3   r   expr   )X_bernoulliX_multinomialr?   r   r>   rH   s         r+   test_discretenb_predict_probar   =  s   
 	;7KVaVaV,M 	A!$	m${&B" !"&&q,{{1RS6"a'''  !A$(..&888!ae$((a(0"((C:2F	
" 	A!$	m${&B" !"&&q,  1Q(..&888  2A'--777BFF3#4#4adV#<=qABFF3#4#4aeW#=>BBFF266#*>*>#?@!D"r-   c                     U " 5       nUR                  SS9  UR                  S/S/S/// SQ5        [        R                  " UR                  5      n[        U[        R                  " SS/5      5        g )NF)	fit_priorr   r   r   r   r         ?)
set_paramsr=   r!   r   r   r   r3   )r   rH   priors      r+   test_discretenb_uniform_priorr   ^  s_    
 
CNNUN#GGaS1#sOY'FF3''(EeRXXsCj%9:r-   c                    U " SS/S9nUR                  S/S/S/// SQ5        [        R                  " UR                  5      n[	        U[        R
                  " SS/5      5        Sn[        R                  " [        US9   UR                  S/S/S/// S	Q5        S S S 5        S
n[        R                  " [        US9   UR                  S/S//SS// SQS9  S S S 5        g ! , (       d  f       NL= f! , (       d  f       g = f)Nr   class_priorr   r   r   r   r9   r   r   r   r   r;   )
r=   r!   r   r   r   r3   rD   rE   rF   rG   )r   rH   r   rl   s       r+   test_discretenb_provide_priorr   j  s     #s
4CGGaS1#sOY'FF3''(EeRXXsCj%9: :C	z	-!qcA3+ 
. ;C	z	-!qc
QFI> 
.	-	 
.	- 
.	-s    C!>C2!
C/2
D c                 b   [        5       n[        UR                  UR                  SSS9u  p#pES / SQ4 Hx  nU " US9nUR	                  UR                  UR                  5        U " US9nUR                  X$/ SQS9  UR                  X55        [        UR                  UR                  5        Mz     g )N皙?i  )	test_sizerandom_state)rp   rp   r   r   r   r;   )r   r   r   r   r=   rG   r   r   )	r   r   
iris_data1
iris_data2iris_target1iris_target2r   clf_fullclf_partials	            r+   .test_discretenb_provide_prior_with_partial_fitr   }  s    
 ;D9I		4;;#C:6JL (%%8TYY,(U;
)L
9!%%{'C'C	
 )r-   c                    / SQ/ SQ/ SQ/ SQ/n/ SQn[         R                  " / SQ[         R                  S9nX3R                  5       -  nU " 5       R	                  XUS9n[        UR                  U5      / SQ5        U " 5       nUR                  US S	 US S	 / S
QUS S	 S9  UR                  US	S US	S US	S S9  UR                  USS  USS  USS  S9  [        UR                  U5      / SQ5        g )Nr   r   r   r   r   )r   r   r   r   r   r   r   r   )r   rS   )r   r   r   r   r   r   rU   r   )r!   r3   r^   rP   r=   r   r@   rG   )r   r>   r?   rT   rH   s        r+   (test_discretenb_sample_weight_multiclassr     s     			A 	AHH\<M&&((M


"
"1}
"
ECs{{1~|4 
COOAbqE1Ra5)=QSRSCTOUOOAaFAaF-!2DOEOOAabE1QR5ab0AOBs{{1~|4r-   use_partial_fitFTtrain_on_single_class_yc                    / SQ/ SQ/ SQ/n/ SQnU(       a
  US S nUS S n[        [        [        U5      5      5      n[        U5      nU " 5       nU(       a  UR	                  X4US9  OUR                  X45        UR                  US S 5      US   :X  d   e/ S	QnU Hh  n	[        XyS 5      n
U
c  M  [        U
[        R                  5      (       a  U
R                  S   U:X  d   eMJ  U
 H  nUR                  S   U:X  a  M   e   Mj     g )
Nr   r   r   )r   r   r   r   r;   r   r   )classes_r   r   r   feature_log_prob_)sortedlistsetr   rG   r=   r@   r   
isinstancer!   ndarrayr\   )r   r   r   r>   r?   r<   num_classesrH   attribute_namesattribute_name	attributeelements               r+   )test_discretenb_degenerate_one_class_caser     s   " 
Iy)AAcrFcrFT#a&\"Gg,K

Cg.;;q!u1%%%O *C6	i,,??1%444 %}}Q';666 % *r-   kind)densesparsecsr_containerc                    [        U5      u  p4U S:X  a  UnOU S:X  a  U" U5      n[        5       nSn[        R                  " [        US9   UR                  W* U5        S S S 5        UR                  WU5      R                  U5      n[        X5        UR                  U5      n	UR                  U5      n
[        [        R                  " U	5      U
S5        [        5       nUR                  US S US S [        R                  " U5      S9  UR                  USS USS 5        UR                  USS  USS  5        UR                  U5      n[        X5        UR                  U5      nUR                  U5      n[        [        R                  " U5      US5        [        X5        [        X5        [        5       nUR                  XT[        R                  " U5      S9  UR                  U5      n[        UU5        UR                  U5      nUR                  U5      n[        [        R                  " U5      US5        [        UU	5        [        UU
5        g ! , (       d  f       GN= f)	Nr   r   z!Negative values in data passed tor9   r8   r   r;   r/   )r6   r   rD   rE   rF   r=   r@   r   rA   rB   r   r!   rC   rG   r   )r   r'   r   r4   r5   r>   rH   rl   rI   rJ   rK   rb   y_pred2y_pred_proba2y_pred_log_proba2r   y_pred3y_pred_proba3y_pred_log_proba3s                      r+   	test_mnnbr     s    22DEFBw		" /C
-C	z	-B 
.WWQ^##A&Fv" $$Q'L,,Q/bff\24DaH ?DQrUBrFBIIbM:QqVR!W%QqrUBqrF#ll1oGw#&&q)M..q1bff]35FJm:/B ?DQBIIbM2ll1oGw#&&q)M..q1bff]35FJm\:/1ABK 
.	-s   
I
I%c                  0   [         R                  " SS/SS//5      n [         R                  " SS/5      n[        5       n[        R                  " 5          [        R
                  " S[        5        UR                  X/ SQS9  S S S 5        UR                  SS//5      S:X  d   eUR                  SS//5      S:X  d   eUR                  SS//5      S:X  d   e[        R                  " 5          [        R
                  " S[        5        UR                  SS//S/5        S S S 5        UR                  SS//5      S:X  d   eUR                  SS//5      S:X  d   eUR                  SS//5      S:X  d   eg ! , (       d  f       N= f! , (       d  f       Nn= f)Nr   r   errorr   r;   r   )	r!   r3   r   warningscatch_warningssimplefilterRuntimeWarningrG   r@   )r>   r?   rH   s      r+   !test_mnb_prior_unobserved_targetsr    sf    	1a&1a&!"A
!QA
/C		 	 	"g~6i0 
#
 ;;Ax A%%%;;Ax A%%%;;Ax A%%% 
	 	 	"g~6!Q1#& 
#
 ;;Ax A%%%;;Ax A%%%;;Ax A%%%# 
#	" 
#	"s   .E6-2F6
F
Fc                     [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ5      n[        SS9nUR                  X5        [         R                  " SS	/5      n[	        [         R
                  " UR                  5      U5        [         R                  " / S
Q/ SQ/5      n[	        [         R
                  " UR                  5      U5        [         R                  " / SQ/5      n[         R                  " SS//5      nU[         R                  " U5      -  n[	        UR                  U5      U5        g )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   alphag      ?r   )r   g?皙?r   r   r  )UUUUUU?UUUUUU?r  r  r  r  g@fg;u?gy?)
r!   r3   r	   r=   r   r   r   r   rP   rA   )r>   r   rH   r   feature_probX_testunnorm_predict_probarA   s           r+   test_bnbr  4  s    		/1CEWX	A
 	A C
 CGGAM ((D$<(KbffS%9%9:KH 88*B	
L bffS%:%:;\J XX)*+F 88&:<O%P$QR(2662F+GGMc//7Gr-   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ5      n[        SS9nUR                  X5        [         R                  " UR
                  S-   5      n[         R                  " [         R                  " UR                  S-   5      U R                  S	   S	45      R                  n[        UR                  X4-
  5        g )
N)r   r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   r   r
  rg   r   )r!   r3   r	   r=   rC   r   tiler   r\   Tr   r   )r>   r   rH   numdenoms        r+   test_bnb_feature_log_probr  c  s     	)Y	9iHIA
!A C
 CGGAM &&##c)
*CGGBFF3++c12QWWQZODFFE c33ckCr-   c                  R   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ5      n[         R                  " / SQ/ SQ/5      n[         R                  " UR                  5      n[         R                  " UR                  5      n[	        S5       H7  n[         R
                  " X%   5      * X5'   X5   X5   R                  5       -  XE'   M9     [        S	S
9n[        R                  " S5      n[        R                  " [        US9   UR                  U * U5        S S S 5        UR                  X5        [         R                  " / SQ/ SQ/5      n[        UR                  U5        [         R                  " SS/5      n	[        UR                   U	5        [         R                  " / SQ5      n
[        UR"                  U
5        [%        UR&                  U5        [        S	SS9nUR                  X5        [%        UR&                  U5        g ! , (       d  f       N= f)Nr  r  r  r  r	  )qq?qq?r  r  r  r  )UUUUUU?r  UUUUUU?r  r  r  r   r   r
  z8Negative values in data passed to ComplementNB (input X)r9   )r   r   r   r   r   r   r   r   )r   rx   r   r   r   r   T)r  norm)r!   r3   zerosr\   r   rC   rP   r   reescaperD   rE   rF   r=   r   r   r   feature_all_r   r   )r>   r   thetaweightsnormed_weightsr   rH   rl   feature_countclass_countfeature_alls              r+   test_cnbr*  z  s    		/1CEWX	A
 	A HH	
E* hhu{{#GXXekk*N1XffUX&&
#J)99 
 S
!C
))N
OC	z	-A 
. GGAM HH02DEFMs))=9((Aq6"Ks''5((-.Ks''5c33W=
St
,CGGAMc33^D! 
.	-s   H
H&c           	         [        5       n[        U 5      u  p#UR                  X#5      R                  U5      n[	        XC5        [
        R                  " SS/SS//5      n[
        R                  " SS/5      n[        SSS9nUR                  XV5        [	        UR                  [
        R                  " SS/5      5        [
        R                  " S	S
//5      n[
        R                  " S/5      n[        R                  " S5      n	[        R                  " [        U	S9   UR                  U5        S S S 5        [        R                  " [        U	S9   UR                  Xx5        S S S 5        [
        R                  " SS//5      n
[
        R                  " SS//5      nUR                  5       n[        UR                  U
5      X-  5        [!        UR"                  5      UR$                  S   :X  d   e[
        R                  " S	S	/S	S/S	S	/SS//5      n[
        R                  " / SQ5      n[        SSS9nUR                  Xx5        [	        UR                  [
        R                  " S	S	//5      5      [
        R                  " S/5      5        [	        UR                  [
        R                  " SS/5      5        S H  n[
        R                  " S	S	/S	S/S	S	/SS//5      n[
        R                  " / SQ5      n[
        R                  " / SQ5      U-  n[        SSS9nUR                  XxUS9  [	        UR                  [
        R                  " S	S	//5      5      [
        R                  " S/5      5        [	        UR                  [
        R                  " SS/5      5        M     g ! , (       d  f       GN}= f! , (       d  f       GN\= f)Nr   rx   r   r/   F)r  r   r   r0   r   r   z9Negative values in data passed to CategoricalNB (input X)r9   r  qq?r   )r   rp   r/   g-C6?)r   r   r   皙?rS   )r
   r6   r=   r@   r   r!   r3   n_categories_r!  r"  rD   rE   rF   rP   r   rA   r   r   r\   )r'   rH   r4   r5   rI   X3y3r>   r?   	error_msgX3_testbayes_numeratorbayes_denominatorfactorrT   s                  r+   test_categoricalnbr6    s   
/C12DEFBWWR_$$R(Fv"	Aq6Aq6"	#B	1a&	B
a5
1CGGBOs(("((Aq6*:; 	1b'A
!A		UVI	z	3A 
4	z	3 
4 hhAx G hh >?@O'++-'"O$G
 s""#rxx{222 	1a&1a&1a&1a&12A
A
a5
1CGGAMs{{288aVH#56!Fs(("((Aq6*:;'HHq!fq!fq!fq!f56HH\"1F:!u5M23;;rxx!Q'9:BHHaSMJ3,,bhh1v.>? (5 
4	3	3	3s   N%N7%
N47
OzDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   r  rx   )r   r   r   r   c                    [         R                  " SS/SS/SS/SS//5      n[         R                  " / SQ5      n[         R                  " S/5      n[        SSU S9nUR                  XV5        UR                  u  p[        X5        [        X5        UR                  U5      n[        X5        [        UR                  U5        g )Nr   r   r   Fr  r   min_categories)r!   r3   r
   r=   r   r   r@   r.  )r9  exp_X1_countexp_X2_countnew_Xexp_n_categories_X_n_categoriesy_n_categoriesexpected_predictionrH   X1_countX2_countpredictionss               r+   &test_categoricalnb_with_min_categoriesrD    s    D XX1v1v1v1v>?NXXl+N((A3-
a5
PCGGN+,,Hx.x.++e$K{8s((*;<r-   zmin_categories, error_msgz"'min_categories' should have shapec                    [         R                  " SS/SS/SS/SS//5      n[         R                  " / SQ5      n[        SSU S9n[        R                  " [
        US9   UR                  X#5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   Fr8  r9   )r!   r3   r
   rD   rE   rF   r=   )r9  r1  r>   r?   rH   s        r+   (test_categoricalnb_min_categories_errorsrF  (  sl     	1a&1a&1a&1a&12A
A
a5
PC	z	3 
4	3	3s   A::
Bc                    [         R                  " SS/SS//5      n[         R                  " SS/5      n[        SSS9nSn[        R                  " [
        US9   UR                  XSS/S9  S S S 5        [        R                  " [
        US9   UR                  X5        S S S 5        [         R                  " SS/SS//5      n[        UR                  U5      U5        [        SSS9n[        R                  " [
        US9   UR                  XSS/S9  S S S 5        [        R                  " [
        US9   UR                  X5        S S S 5        [         R                  " S	S
/SS//5      n[        UR                  U5      U5        [        SSS9n[        R                  " [
        US9   UR                  X5        S S S 5        [         R                  " SS/SS//5      n[        UR                  U5      U5        U " U5      n[        SSS9n[        R                  " [
        US9   UR                  X5        S S S 5        [         R                  " SS/SS//5      n[        UR                  U5      U5        [        SSS9n[        R                  " [
        US9   UR                  X5        S S S 5        [         R                  " S	S
/SS//5      n[        UR                  U5      U5        g ! , (       d  f       GN= f! , (       d  f       GNe= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f)Nr   r   r|   Fr  force_alphazFalpha too small will result in numeric errors, setting alpha = 1.0e-10r9   r;   r  r  r   )r!   r3   r	   rD   warnsUserWarningrG   r=   r   rA   r   r
   )r   r>   r?   nbrl   probs         r+   
test_alpharN  7  s    	1a&1a&!"A
!QA	3E	2B
RC	k	-
qaV, 
.	k	-
q 
.88aVaV$%Db..q148	Se	4B	k	-
qaV, 
.	k	-
q 
.88gw'!Q01Db..q148	Se	4B	k	-
q 
.88c3Z#s,-Db..q148 	aA	3E	2B	k	-
q 
.88aVaV$%Db..q148	Se	4B	k	-
q 
.88gw'!Q01Db..q148C 
.	-	-	- 
.	-	-	- 
.	- 
.	- 
.	-sT   K,K>L6L"*L4&MM,
K;>
L
L"
L14
M
M
M&c                     [         R                  " SS/SS//5      n [         R                  " SS/5      n[         R                  " SS/5      n[        USS9nUR                  XSS/S9  [         R                  " SS/SS	//5      n[	        UR
                  [         R                  " U5      5        [         R                  " S
S/SS//5      n[	        UR                  U 5      U5        [         R                  " SS/5      n[        USS9nSn[        R                  " [        US9   UR                  X5        S S S 5        Sn[         R                  " US-  S/5      n[        USS9nUR                  XSS/S9  [	        UR                  5       US/SS9  [         R                  " / SQ5      n[        USS9nSn[        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   FrH  r;   r   r   g333333?grq?r,  gS?gևX?r   rq   z+All values in alpha must be greater than 0.r9   r      )decimal)r   rg   g      @z7When alpha is an array, it should contains `n_features`)r!   r3   r   rG   r   r   rC   rA   rD   rE   rF   r=   _check_alpha)	r>   r?   r  rL  r  rM  m_nbexpected_msg	ALPHA_MINs	            r+   test_alpha_vectorrV  b  s   
1a&1a&!"A
!QA HHaVE	U	6BNN1!QN( 88eU^eU^<=Lb22BFF<4HI 88eU^gw%789Db..q148 HHc4[!Eu%8D@L	z	6 
7 IHHi!mS)*Eu%8DQAq6*d//1Is3CRP HH_%Eu%8DLL	z	6 
7	6 
7	6 
7	6s   #G)G:)
G7:
Hc                     [        SS9u  p[        R                  " US:H  US:H  5      nX   X   pC[        [	        SS9XSS9nUR                  5       S:  d   e[        [	        SS9X4SS9nUR                  5       S	:  d   e[        [        SS9U S
:  USS9nUR                  5       S:  d   e[        [        SS9US
:  USS9nUR                  5       S:  d   e[        [        5       XSS9nUR                  5       S:  d   e[        [        SS9XSS9nUR                  5       S:  d   e[        [        5       X4SS9nUR                  5       S:  d   eg )NT)
return_X_yr   r8   r   r
  )cvgQ?gGz?rx   g(\?gq=
ףp?gp=
ף?r-  )var_smoothingg{Gz?)r   r!   
logical_orr   r   r   r	   r   )r>   r?   
binary_3v8X_3v8y_3v8scoress         r+   test_check_accuracy_on_digitsr`    sP    $'DAqAvqAv.J=!-5 ]4arBF;;=4]4erJF;;=4 [r2AE1DF;;=4[r2EAIuLF;;=4 Z\1B7F;;=4Zc:ARHF;;=4Z\5B?F;;=4r-   c                  D   Sn [        SSS9nUR                  5       S:X  d   e[        R                  " SS/5      n[        USS9nUR                  S   Ul        [        UR                  5       U5        SU -  n[        SSS9n[        R                  " [        US	9   UR                  5       U :X  d   e S
S
S
5        [        SSS9n[        R                  " [        US	9   UR                  5       U :X  d   e S
S
S
5        [        USS9nUR                  S   Ul        [        R                  " [        US	9   [        UR                  5       [        R                  " U S/5      5        S
S
S
5        g
! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g
= f)zThe provided value for alpha must only be
used if alpha < _ALPHA_MIN and force_alpha is True.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/10772
r   r   TrH  r|   r   zCalpha too small will result in numeric errors, setting alpha = %.1eFr9   N)
r	   rR  r!   r3   r\   n_features_in_r   rD   rJ  rK  )
_ALPHA_MINbalphasrl   s       r+   test_check_alpharf    sV    J!.A>>q   XXsCj!F&d3A||AAq~~'0 	N
	  	!/A	k	-~~:--- 
. 	!/A	k	-~~:--- 
. 	&e4A||AA	k	-1>>+RXXz36G-HI 
.	- 
.	- 
.	- 
.	-s$   E/F 51F/
E= 
F
F	Estimatorc                     [        U5      u  p#U " 5       R                  X#5      nUR                  U5      n[        USS9nU[        R
                  " U5      R                  -
  n[        UR                  U5      U5        g )Nr   r   )	r6   r=   predict_joint_log_probar   r!   
atleast_2dr  r   rB   )rg  r'   r4   r5   estjll
log_prob_xlog_prob_x_ys           r+   test_predict_joint_probaro    si    12DEFB
+//"
!C

%
%b
)C3Q'Jz2444LC))"-|<r-   c                     U " 5       R                  5       nU [        L a  UR                  R                  (       d   eg UR                  R                  (       a   eg )N)__sklearn_tags__r
   
input_tagscategorical)rg  tagss     r+   test_categorical_input_tagru    sC    ;'')DM!****??.....r-   	use_str_yuse_sample_weightz$array_namespace, device_, dtype_name)idsc           	      t   [        X#5      n[        R                  U5      nUR                  XcS9nU (       a1  [        R
                  " / SQ5      n[        R
                  " / SQ5      n	O$[        R                  U5      nUR                  XS9n	U(       a  [        R
                  " / SQ5      n
OSn
[        5       R                  XhU
S9nUR                  U5      nUR                  U5      nUR                  U5      n[        SS9   [        5       R                  XyU
S9nS He  n[        UU5      n[        UU5      nUR                  UR                  :X  d   e[        U5      [        U5      :X  d   e[!        [#        UUS	9U5        Mg     UR                  U5      nU (       d$  [        U5      [        U5      :X  d   e[#        UUS	9n[%        UU5        UR                  UR                  :X  d   eUR                  U5      nUR                  UR                  :X  d   e[        U5      [        U5      :X  d   e[!        [#        UUS	9U5        UR                  U5      nUR                  UR                  :X  d   e[        U5      [        U5      :X  d   e[!        [#        UUS	9U5        SSS5        g! , (       d  f       g= f)
zETests that :class:`GaussianNB` works correctly with array API inputs.)r   )arz  rz  rd  rd  rd  )r   r   r   r   r   r   NrS   T)array_api_dispatch)r   rO   rY   rZ   )xp)r   r>   r%   asarrayr!   r3   r?   r   r=   r@   rA   rB   r   r   r   r   r   r   r   )rv  rw  array_namespacedevice_
dtype_namer|  X_npX_xpy_np
y_xp_or_nprT   clf_np	y_pred_npy_pred_proba_npy_pred_log_proba_npclf_xpr   xp_attrnp_attr	y_pred_xpy_pred_proba_xpy_pred_log_proba_xps                         r+   test_gnb_array_api_compliancer    sR    
o	7B88JD::d:+Dxx67XX<=
xx
#ZZZ5
!34\dFFt$I**40O 2248	4	0!!$-!PMKfk2Gfk2G==DJJ...'?fTl222-g"=wG N NN4(	)$t444));I9i0)//111 ..t4$$

222o&&,666)/bA?S$66t<"((DJJ666)*fTl:::1b9;N	
1 
1	0	0s   FJ))
J7)Or!  r   numpyr!   rD   scipy.specialr   sklearn._configr   sklearn.datasetsr   r   sklearn.model_selectionr   r   sklearn.naive_bayesr	   r
   r   r   r   sklearn.utils._array_apir   r   r   r   sklearn.utils._testingr   r   r   r   r   sklearn.utils.fixesr   DISCRETE_NAIVE_BAYES_CLASSESALL_NAIVE_BAYES_CLASSESr3   r>   r?   r,   r6   rL   rQ   re   rm   rs   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r  r  r  r*  r6  rD  rF  rN  rV  r`  rf  ro  ru  r   r-   r+   <module>r     s0   	    # * 3 E    / +]L-X 6*E  HHr2hR2r(QFQFQFCDHH 7,9$>NF.8	:&- -/KL M -/KL.E M.Eb '>?7 @7$EB -/KL; M; -/KL? M?$ -/KL
 M
( -/KL5 M5, -/KL*UDM:2UDMB/7 C ; M/7d !45.94C : 64Cn&:,H^D.DEN4@n J HHi+,HHi+,HHq!fXHHaV	
 FHHi+,HHlL12HHq!fXHHaV	
 1a&1a&)*1a&1a&)*1a&"!Q '>=?>=" a&1a&	?@ .9'9 :'9T%P B"JJ &=>= ?= &=>/ ?/ udm4,udm<*-/'  
1
 = 51
r-   