
    -ip                     <   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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  \\\\/r\\/-   r\R8                  " SS	/S	S	/S	S/S
S
/S
S/SS
//5      r\R8                  " / SQ5      rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,\RZ                  R]                  S\5      S 5       r/\RZ                  R]                  S\5      S 5       r0\RZ                  R]                  S\5      S 5       r1S  r2\RZ                  R]                  S\5      S! 5       r3\RZ                  R]                  S\5      S" 5       r4\RZ                  R]                  S\5      S# 5       r5\RZ                  R]                  S\5      S$ 5       r6\RZ                  R]                  S\5      \RZ                  R]                  S%S&S'/5      \RZ                  R]                  S(S&S'/5      S) 5       5       5       r7\RZ                  R]                  S*S+5      \RZ                  R]                  S,\5      S- 5       5       r8S. r9S/ r:S0 r;S1 r<S2 r=\RZ                  R]                  S3S4\R8                  " / S5Q/ S6Q/5      \R8                  " / S6Q/ S6Q/5      \R8                  " S S//5      \R8                  " S4S4/5      4S4S7/\R8                  " / S5Q/ S6Q/5      \R8                  " / S8Q/ S8Q/5      \R8                  " S S4//5      \R8                  " S4S7/5      4S
\R8                  " SS /S
S
//5      \R8                  " S
S
/S
S
//5      \R8                  " S S
//5      \R8                  " SS/5      //5      S9 5       r>\RZ                  R]                  S:S4S/SS7//S;4/5      S< 5       r?\RZ                  R]                  S,\5      S= 5       r@S> rAS? rBS@ rC\RZ                  R]                  SA\5      SB 5       rD\RZ                  R]                  SA\5      SC 5       rEg)D    N)	logsumexp)load_digits	load_iris)cross_val_scoretrain_test_split)BernoulliNBCategoricalNBComplementNB
GaussianNBMultinomialNB)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       Q/var/www/html/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_yr0   )   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_gnbrF   2   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         @r2   r   )
r   r7   r8   r9   r   r   r-   class_prior_r&   sum)r!   rB   r#   r$   s       r%   test_gnb_priorrK   H   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.r*   r   sample_weightr   r   r6   rN      )	minlengthN)r   onesr   r7   r8   r9   r   theta_var_r   r   randshaperA   r,   bincountr   float64)
r!   swrB   clf_swr"   clf1clf2indrN   clf_dupls
             r%   test_gnb_sample_weightr_   R   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-negativer3   N	r   r   r-   r>   r?   r@   r7   r8   r9   rB   msgs     r%   test_gnb_neg_priorsrg   y   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?rb   皙g[9h?gs\?r2   N)	r   r   r-   r7   r8   r9   r   r;   rI   rB   s    r%   test_gnb_priorsrm      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?)\(?rt   gQ?rs   ru           )
r   r   r   rr   r)   r*      r2   	   r   rb   )r   r-   r   r7   )r8   rc   YrB   s       r%   test_gnb_priors_sum_iscloserz      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|   rb   -Number of priors must match number of classesr3   Nrd   re   s     r%   test_gnb_wrong_nb_priorsr~      sD     BHH%=>
?C
9C	z	-1 
.	-	-rh   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 onera         ?rb   z!The sum of the priors should be 1r3   Nrd   re   s     r%   test_gnb_prior_greater_oner      sE    
BHHc3Z0
1C
-C	z	-1 
.	-	-rh   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?rb   rk   r   N)r   r   r-   r7   r8   r9   r:   rl   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 datar+   rv   r   r   r   N)r   emptyr8   rV   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                      [        5       R                  [        [        5      n [        5       R	                  [        [        [
        R                  " [        5      5      n[        U R                  UR                  5        [        U R                  UR                  5        [        U R                  UR                  5        [        5       R	                  [        SS S2S S 24   [        SS S2   [
        R                  " [        5      5      nUR	                  [        SS S2   [        SS S2   5        [        U R                  UR                  5        [        U R                  UR                  5        [        U R                  UR                  5        g )Nr   r   r   )r   r7   r8   r9   rA   r   uniquer   rS   rT   rI   )rB   clf_pfclf_pf2s      r%   test_gnb_partial_fitr      s   
,

1a
 C\%%aBIIaL9Fcjj&--8chh4c..0C0CDl&&qAqz1QTT7BIIaLIG!$Q$14a4)cjj'..9chh5c..0D0DEr'   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   r7   r:   r   )irisr8   r9   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   rH   r2   )r0   r7   r   r   r=   r-   class_log_prior_)r   r!   r.   r/   rB   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   r5   axisr   )r7   rA   r   class_count_r	   rangelencategory_count_feature_count_rV   r   rJ   r-   )r   r[   r\   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.r3   r5   .is not the same as on last call to partial_fit*   )r0   r>   r?   r@   rA   r   r   arange)r   r!   r.   r/   rB   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   r+   r   r   r   r   )r   r+   r   r   r   r   rr   )r   r   r   r   r   )r   r   r   r   r*   r   r   r   )r   r   )r   r   )zipr   r   r7   r:   r;   rV   r   rJ   r   r-   r   expr   )X_bernoulliX_multinomialr9   r   r8   rB   s         r%   test_discretenb_predict_probar   0  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_paramsr7   r   r   r   r   r-   )r   rB   priors      r%   test_discretenb_uniform_priorr   Q  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}   r3   r   r   r   r   r5   )
r7   r   r   r   r   r-   r>   r?   r@   rA   )r   rB   r   rf   s       r%   test_discretenb_provide_priorr   ]  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)rj   rj   r   r   r   r5   )r   r   r   r   r7   rA   r   r   )	r   r   
iris_data1
iris_data2iris_target1iris_target2r   clf_fullclf_partials	            r%   .test_discretenb_provide_prior_with_partial_fitr   p  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   )dtyperM   )r   r   r   r   r   r   rO   r   )r   r-   rX   rJ   r7   r   r:   rA   )r   r8   r9   rN   rB   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   r5   r   r   )classes_r   r   r   feature_log_prob_)sortedlistsetr   rA   r7   r:   getattr
isinstancer   ndarrayrV   )r   r   r   r8   r9   r6   num_classesrB   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 tor3   r2   r   r5   r)   )r0   r   r>   r?   r@   r7   r:   r   r;   r<   r   r   r=   rA   r   )r   r!   r   r.   r/   r8   rB   rf   rC   rD   rE   r\   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   r5   r   )	r   r-   r   warningscatch_warningssimplefilterRuntimeWarningrA   r:   )r8   r9   rB   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   r-   r   r7   r   r   r   r   rJ   r;   )r8   ry   rB   r   feature_probX_testunnorm_predict_probar;   s           r%   test_bnbr  '  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   ra   r   )r   r-   r   r7   r=   r   tiler   rV   Tr   r   )r8   ry   rB   numdenoms        r%   test_bnb_feature_log_probr  V  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)r3   )r   r   r   r   r   r   r   r   )r   rr   r   r   r   r   T)r   norm)r   r-   zerosrV   r   r=   rJ   r
   reescaper>   r?   r@   r7   r   r   r   feature_all_r   r   )r8   ry   thetaweightsnormed_weightsr   rB   rf   feature_countclass_countfeature_alls              r%   test_cnbr  m  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   rr   r   r)   F)r   r   r   r*   r   r   z9Negative values in data passed to CategoricalNB (input X)r3   r  qq?r   )r   rj   r)   g-C6?)r   r   r   皙?rM   )r	   r0   r7   r:   r   r   r-   n_categories_r  r  r>   r?   r@   rJ   r   r;   r   r   rV   )r!   rB   r.   r/   rC   X3y3r8   r9   	error_msgX3_testbayes_numeratorbayes_denominatorfactorrN   s                  r%   test_categoricalnbr*    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  rr   )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   r-   r	   r7   r   r   r:   r"  )r-  exp_X1_countexp_X2_countnew_Xexp_n_categories_X_n_categoriesy_n_categoriesexpected_predictionrB   X1_countX2_countpredictionss               r%   &test_categoricalnb_with_min_categoriesr8    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   Fr,  r3   )r   r-   r	   r>   r?   r@   r7   )r-  r%  r8   r9   rB   s        r%   (test_categoricalnb_min_categories_errorsr:    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   rv   Fr   force_alphazFalpha too small will result in numeric errors, setting alpha = 1.0e-10r3   r5   r  r  r   )r   r-   r   r>   warnsUserWarningrA   r7   r   r;   r   r	   )r   r8   r9   nbrf   probs         r%   
test_alpharB  *  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   Fr<  r5   r   r   g333333?grq?r   gS?gևX?r   rk   z+All values in alpha must be greater than 0.r3   r      )decimal)r   ra   g      @z7When alpha is an array, it should contains `n_features`)r   r-   r   rA   r   r   r=   r;   r>   r?   r@   r7   _check_alpha)	r8   r9   r   r@  r  rA  m_nbexpected_msg	ALPHA_MINs	            r%   test_alpha_vectorrJ  U  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   r2   r   r   )cvgQ?gGz?rr   g(\?gq=
ףp?gp=
ף?r!  )var_smoothingg{Gz?)r   r   
logical_orr   r   r   r   r   )r8   r9   
binary_3v8X_3v8y_3v8scoress         r%   test_check_accuracy_on_digitsrT  }  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   Tr<  rv   r   zCalpha too small will result in numeric errors, setting alpha = %.1eFr3   N)
r   rF  r   r-   rV   n_features_in_r   r>   r>  r?  )
_ALPHA_MINbalphasrf   s       r%   test_check_alpharZ    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   )	r0   r7   predict_joint_log_probar   r   
atleast_2dr
  r   r<   )r[  r!   r.   r/   estjll
log_prob_xlog_prob_x_ys           r%   test_predict_joint_probarc    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)r[  tagss     r%   test_categorical_input_tagri    sC    ;'')DM!****??.....r'   )Fr  r   numpyr   r>   scipy.specialr   sklearn.datasetsr   r   sklearn.model_selectionr   r   sklearn.naive_bayesr   r	   r
   r   r   sklearn.utils._testingr   r   r   r   sklearn.utils.fixesr   DISCRETE_NAIVE_BAYES_CLASSESALL_NAIVE_BAYES_CLASSESr-   r8   r9   r&   r0   rF   rK   r_   rg   rm   rz   r~   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r  r  r  r*  r8  r:  rB  rJ  rT  rZ  rc  ri   r'   r%   <module>rv     s   	    # 3 E   / +]L-X 6*E  HHr2hR2r(QFQFQFCDHH 7,9$>NF.8	F- -/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 &=>= ?= &=>/ ?/r'   