
    >[gS                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZmZmZmZmZ d dlmZmZmZmZ d dlmZ eeeegZeegz   Z ej8                  dd	gd	d	gd	dgd
d
gd
dgdd
gg      Z ej8                  g d      Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,ejZ                  j]                  de      d        Z/ejZ                  j]                  de      d        Z0ejZ                  j]                  de      d        Z1d  Z2ejZ                  j]                  de      d!        Z3ejZ                  j]                  de      d"        Z4ejZ                  j]                  de      d#        Z5ejZ                  j]                  de      d$        Z6ejZ                  j]                  de      ejZ                  j]                  d%d&d'g      ejZ                  j]                  d(d&d'g      d)                      Z7ejZ                  j]                  d*d+      ejZ                  j]                  d,e      d-               Z8d. Z9d/ Z:d0 Z;d1 Z<d2 Z=ejZ                  j]                  d3d4 ej8                  g d5g d6g       ej8                  g d6g d6g       ej8                  d dgg       ej8                  d4d4g      fd4d7g ej8                  g d5g d6g       ej8                  g d8g d8g       ej8                  d d4gg       ej8                  d4d7g      fd
 ej8                  dd gd
d
gg       ej8                  d
d
gd
d
gg       ej8                  d d
gg       ej8                  ddg      gg      d9        Z>ejZ                  j]                  d:d4dgdd7ggd;fg      d<        Z?ejZ                  j]                  d,e      d=        Z@d> ZAd? ZBd@ ZCejZ                  j]                  dAe      dB        ZDy)C    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                     t         j                  j                  |       }|j                  d      }|j                  d      dkD  j	                  t
              }||fS )N)
      sizer   r   )nprandomRandomStatenormalastypeint)global_random_seedrngX1y1s       Y/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/tests/test_naive_bayes.pyget_random_normal_x_binary_yr&   !   sP    
))

 2
3C		!B
**"*

!	)	)#	.Br6M    c                     t         j                  j                  |       }|j                  dd      }t        j                  g d      }||fS )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   )   sC     ))

 2
3C	QX	&B	$	%Br6Mr'   c                     t               } | j                  t        t              j	                  t              }t        |t               | j                  t              }| j                  t              }t        t        j                  |      |d       t        j                  t        d      5  t               j                  t        t        ddg       d d d        y # 1 sw Y   y xY w)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                 >   t               j                  t        t              }t	        t        j                  ddg      dz  |j                  d       t        |       \  }}t               j                  ||      }t	        |j                  j                         d       y )Nr         @r2   r   )
r   r7   r8   r9   r   r   r-   class_prior_r&   sum)r!   rB   r#   r$   s       r%   test_gnb_priorrK   H   sv    
,

1a
 Cbhh1v.4c6F6FJ)*<=FB
,

2r
"Cc..224a8r'   c                 V   t        j                  d      }t               j                  t        t
              }t               j                  t        t
        |      }t        |j                  |j                         t        |j                  |j                         t         j                  j                  |       }|j                  t
        j                  d         }t               j                  t        t
        |      }t               j                  t        t
        ddg|dz        }|j                  t        t
        |dz         t        |j                  |j                         t        |j                  |j                         |j                  dt        j                  d   d      }t        j                  |t        j                  d         }t               j                  t        |   t
        |         }	t               j                  t        t
        |      }t        |	j                  |j                         t        |	j                  |j                         t
        dk(  j!                  t         j"                        }t               j                  t        t
        |      }y	)
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                      t        t        j                  ddg            } d}t        j                  t
        |      5  | j                  t        t               ddd       y# 1 sw Y   yxY w)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   t        t        j                  ddg            j                  t        t
              } t        | j                  ddgg      t        j                  ddgg      d       t        | j                  t        j                  ddg             y)	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                     t        j                  ddgddgddgddgddgddgddgddgd	d	gd
d
gg
      } t        j                  g d      }t        j                  g d      }t        |      }|j                  | |       y )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GGAqMr'   c                      t        t        j                  g d            } d}t        j                  t
        |      5  | j                  t        t               ddd       y# 1 sw Y   yxY w)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                      t        t        j                  ddg            } d}t        j                  t
        |      5  | j                  t        t               ddd       y# 1 sw Y   yxY w)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                      t        t        j                  ddg            } | j                  t        t
               | j                  ddgg      t        j                  dg      k(  sJ y)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                      d} d}d}t        j                  dt        j                  d   f      }t	        j
                  | |||      \  }}||k(  sJ ||k(  sJ y)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      s_     KD
Chh1771:'G22;c7SKE4D==3;;r'   c                     t               j                  t        t              } t               j	                  t        t        t        j                  t                    }t        | j                  |j                         t        | j                  |j                         t        | j                  |j                         t               j	                  t        dd dd d f   t        dd d   t        j                  t                    }|j	                  t        dd d   t        dd d          t        | j                  |j                         t        | j                  |j                         t        | j                  |j                         y )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                     t               } | j                  | j                  }}dD cg c]1  }t               j	                  ||z  |      j                  ||z        3 }}t        |d   |d          t        |d   |d          y c c}w )N)绽|=r   g    _Br   r   r   )r   datatargetr   r7   r:   r   )irisr8   r9   flabelss        r%   %test_gnb_naive_bayes_scale_invariancer      s|    ;D99dkkqAAQRAQAjlq1ua(00Q7AQFRvay&),vay&), Ss   6BDiscreteNaiveBayesc                     t        |      \  }} |        j                  ||      }t        t        j                  t        j
                  g d      dz        |j                  d       y )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      sT     22DEFB


"
"2r
*C
rxx	"S()3+?+?r'   c                     |        }|j                  ddgddgddggg d        |        }|j                  ddgddgddggg dddg       t        |j                  |j                         | t        u rJt        t        |j                              D ](  }t        |j                  |   |j                  |          * n t        |j                  |j                          |        }|j                  ddggdgddg       |j                  ddggdg       |j                  ddggdg       t        |j                  |j                         | t        u rrt        t        |j                              D ]  }t        |j                  |   j                  |j                  |   j                         t        t        j                  |j                  |   d      t        j                  |j                  |   d              t        |j                  d   d   t        j                  ddg             t        |j                  d   d   t        j                  ddg             t        |j                  d   d   t        j                  ddg             t        |j                  d   d   t        j                  ddg             y t        |j                  |j                         y )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                    t        |      \  }}t        j                  t        d      5   |        j	                  ||       d d d         |        }|j	                  ||t        j                  |             t        j                  t        d      5  |j	                  ||t        j                  d             d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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
 	  R(
 ,COOBBIIbMO2	J
 	B		"6
 

 

 
s   C(CCCc            	         g dg dg dg} ddgddgddgg}g d}t        t        t        g| |g      D ]  \  }} |       j                  ||      }|j	                  |d	d        d
k(  sJ |j                  |d   g      j                  dk(  sJ t        |j                  |d d
       j                  d      t        j                  ddg      d        g d}t        t        t        g| |g      D ]  \  }} |       j                  ||      }|j                  |dd       j                  dk(  sJ |j                  |d d
       j                  dk(  sJ t        t        j                  |j                  |d   g            d       t        t        j                  |j                  |d	   g            d       t        t        j                  t        j                  |j                              d        y )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${M&B"A !"&&q!,{{1RS6"a'''  !A$(..&888!ae$((a(0"((C:2F	
" 	A!$	m${M&B"A !"&&q!,  1Q(..&888  2A'--777BFF3#4#4adV#<=qABFF3#4#4aeW#=>BBFF266#*>*>#?@!D"r'   c                      |        }|j                  d       |j                  dgdgdggg d       t        j                  |j                        }t        |t        j                  ddg             y )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                     | ddg      }|j                  dgdgdggg d       t        j                  |j                        }t	        |t        j
                  ddg             d}t        j                  t        |      5  |j                  dgdgdggg d	       d d d        d
}t        j                  t        |      5  |j                  dgdggddgg d       d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)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)C5)C25C>c                 ~   t               }t        |j                  |j                  dd      \  }}}}d g dfD ]  } | |      }|j	                  |j                  |j                          | |      }|j                  ||g d       |j                  ||       t        |j                  |j                          y )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:6J
L, (%%8TYY,(U;
L)L
L9!%%{'C'C	
 )r'   c                    g dg dg dg dg}g d}t        j                  g dt         j                        }||j                         z  } |        j	                  |||      }t        |j                  |      g d        |        }|j                  |d d	 |d d	 g d
|d d	        |j                  |d	d |d	d |d	d        |j                  |dd  |dd  |dd         t        |j                  |      g d       y )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


"
"1a}
"
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                    g dg dg dg}g d}|r
|d d }|d d }t        t        t        |                  }t        |      } |        }|r|j	                  |||       n|j                  ||       |j                  |d d       |d   k(  sJ g d	}|D ]\  }	t        ||	d       }
|
t        |
t        j                        r|
j                  d   |k(  r@J |
D ]  }|j                  d   |k(  rJ  ^ y )
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1g.1;;q!u1%%%O *C6	i,??1%444 %}}Q';666 % *r'   kind)densesparsecsr_containerc                    t        |      \  }}| dk(  r|}n| dk(  r ||      }t               }d}t        j                  t        |      5  |j                   |       d d d        |j                  |      j                  |      }t        ||       |j                  |      }	|j                  |      }
t        t        j                  |	      |
d       t               }|j                  |d d |d d t        j                  |             |j                  |dd |dd        |j                  |dd  |dd         |j                  |      }t        ||       |j                  |      }|j                  |      }t        t        j                  |      |d       t        ||	       t        ||
       t               }|j                  ||t        j                  |             |j                  |      }t        ||       |j                  |      }|j                  |      }t        t        j                  |      |d       t        ||	       t        ||
       y # 1 sw Y    xY w)	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vr" $$Q'L,,Q/bff\24DaH ?DQrUBrFBIIbM:QqVR!W%QqrUBqrF#ll1oGw#&&q)M..q1bff]35FJm\:/1AB ?DQBIIbM2ll1oGw#&&q)M..q1bff]35FJm\:/1ABK 
.	-s   II'c                     t        j                  ddgddgg      } t        j                  ddg      }t               }t        j                         5  t        j
                  dt               |j                  | |g d       d d d        |j                  ddgg      dk(  sJ |j                  ddgg      dk(  sJ |j                  ddgg      dk(  sJ t        j                         5  t        j
                  dt               |j                  ddggdg       d d d        |j                  ddgg      dk(  sJ |j                  ddgg      dk(  sJ |j                  ddgg      dk(  sJ y # 1 sw Y   xY w# 1 sw Y   axY w)Nr   r   errorr   r5   r   )	r   r-   r   warningscatch_warningssimplefilterRuntimeWarningrA   r:   )r8   r9   rB   s      r%   !test_mnb_prior_unobserved_targetsr   
  sh    	1a&1a&!"A
!QA
/C		 	 	"g~61i0 
#
 ;;Ax A%%%;;Ax A%%%;;Ax A%%% 
	 	 	"g~6!Q1#& 
#
 ;;Ax A%%%;;Ax A%%%;;Ax A%%%# 
#	" 
#	"s   1E.)1E:.E7:Fc                  ~   t        j                  g dg dg dg dg      } t        j                  g d      }t        d      }|j                  | |       t        j                  dd	g      }t	        t        j
                  |j                        |       t        j                  g d
g dg      }t	        t        j
                  |j                        |       t        j                  g dg      }t        j                  ddgg      }|t        j                  |      z  }t	        |j                  |      |       y )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GGAqM ((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                     t        j                  g dg dg dg dg dg      } t        j                  g d      }t        d      }|j                  | |       t        j                  |j
                  dz         }t        j                  t        j                  |j                  dz         | j                  d	   d	f      j                  }t        |j                  ||z
         y )
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GGAqM &&##c)
*CGGBFF3++c12QWWQZODFFE c33cEkCr'   c                  N   t        j                  g dg dg dg dg      } t        j                  g d      }t        j                  g dg dg      }t        j                  |j                        }t        j                  |j                        }t	        d      D ]:  }t        j
                  ||          ||<   ||   ||   j                         z  ||<   < t        d	
      }t        j                  d      }t        j                  t        |      5  |j                  |  |       d d d        |j                  | |       t        j                  g dg dg      }t        |j                  |       t        j                  ddg      }	t        |j                   |	       t        j                  g d      }
t        |j"                  |
       t%        |j&                  |       t        d	d      }|j                  | |       t%        |j&                  |       y # 1 sw Y   xY w)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ffU1X&&
#AJ)99q 
 S
!C
))N
OC	z	-A 
. GGAqM HH02DEFMs))=9((Aq6"Ks''5((-.Ks''5c33W=
St
,CGGAqMc33^D! 
.	-s   HH$c           	         t               }t        |       \  }}|j                  ||      j                  |      }t	        ||       t        j                  ddgddgg      }t        j                  ddg      }t        dd      }|j                  ||       t	        |j                  t        j                  ddg             t        j                  d	d
gg      }t        j                  dg      }t        j                  d      }	t        j                  t        |	      5  |j                  |       d d d        t        j                  t        |	      5  |j                  ||       d d d        t        j                  ddgg      }
t        j                  ddgg      }|j                         }t        |j                  |
      ||z         t!        |j"                        |j$                  d   k(  sJ t        j                  d	d	gd	dgd	d	gddgg      }t        j                  g d      }t        dd      }|j                  ||       t	        |j                  t        j                  d	d	gg            t        j                  dg             t	        |j                  t        j                  ddg             dD ]  }t        j                  d	d	gd	dgd	d	gddgg      }t        j                  g d      }t        j                  g d      |z  }t        dd      }|j                  |||       t	        |j                  t        j                  d	d	gg            t        j                  dg             t	        |j                  t        j                  ddg              y # 1 sw Y   wxY w# 1 sw Y   NxY w)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vr"	Aq6Aq6"	#B	1a&	B
a5
1CGGBOs(("((Aq6*:; 	1b'A
!A		UVI	z	3A 
4	z	31 
4 hhAx G hh >?@O'++-'"O6G$G
 s""#rxx{222 	1a&1a&1a&1a&12A
A
a5
1CGGAqMs{{288aVH#56!Fs(("((Aq6*:;'HHq!fq!fq!fq!f56HH\"1F:!u51M23;;rxx!Q'9:BHHaSMJ3,,bhh1v.>? (5 
4	3	3	3s    N'N4'N14N>zDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   r  rr   )r   r   r   r   c                    t        j                  ddgddgddgddgg      }t        j                  g d      }t        j                  dg      }t        dd|       }|j                  ||       |j                  \  }	}
t        |	|       t        |
|       |j                  |      }t        ||       t        |j                  |       y )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GGNN+,,Hhx.x.++e$K{$78s((*;<r'   zmin_categories, error_msgz"'min_categories' should have shapec                    t        j                  ddgddgddgddgg      }t        j                  g d      }t        dd|       }t        j                  t
        |      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   r   r   Fr,  r3   )r   r-   r	   r>   r?   r@   r7   )r-  r%  r8   r9   rB   s        r%   (test_categoricalnb_min_categories_errorsr:    sn     	1a&1a&1a&1a&12A
A
a5
PC	z	31 
4	3	3s   "A>>Bc                    t        j                  ddgddgg      }t        j                  ddg      }t        dd      }d}t        j                  t
        |      5  |j                  ||ddg       d d d        t        j                  t
        |      5  |j                  ||       d d d        t        j                  ddgddgg      }t        |j                  |      |       t        dd      }t        j                  t
        |      5  |j                  ||ddg       d d d        t        j                  t
        |      5  |j                  ||       d d d        t        j                  d	d
gddgg      }t        |j                  |      |       t        dd      }t        j                  t
        |      5  |j                  ||       d d d        t        j                  ddgddgg      }t        |j                  |      |        | |      }t        dd      }t        j                  t
        |      5  |j                  ||       d d d        t        j                  ddgddgg      }t        |j                  |      |       t        dd      }t        j                  t
        |      5  |j                  ||       d d d        t        j                  d	d
gddgg      }t        |j                  |      |       y # 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   xY w# 1 sw Y   xY w)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	-
q!aV, 
.	k	-
q! 
.88aVaV$%Db..q148	Se	4B	k	-
q!a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   LLL)
L6MM=MLL&)L36M MMM%c                  *   t        j                  ddgddgg      } t        j                  ddg      }t        j                  ddg      }t        |d      }|j                  | |ddg       t        j                  ddgdd	gg      }t	        |j
                  t        j                  |             t        j                  d
dgddgg      }t	        |j                  |       |       t        j                  ddg      }t        |d      }d}t        j                  t        |      5  |j                  | |       d d d        d}t        j                  |dz  dg      }t        |d      }|j                  | |ddg       t	        |j                         |dgd       t        j                  g d      }t        |d      }d}t        j                  t        |      5  |j                  | |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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NN1a!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A 
7 IHHi!mS)*Eu%8DQAq6*d//1Is3CRP HH_%Eu%8DLL	z	6A 
7	6 
7	6 
7	6s   (G=!H	=H	Hc                     t        d      \  } }t        j                  |dk(  |dk(        }| |   ||   }}t        t	        d      | |d      }|j                         dkD  sJ t        t	        d      ||d      }|j                         d	kD  sJ t        t        d      | d
kD  |d      }|j                         dkD  sJ t        t        d      |d
kD  |d      }|j                         dkD  sJ t        t               | |d      }|j                         dkD  sJ t        t        d      | |d      }|j                         dkD  sJ t        t               ||d      }|j                         dkD  sJ y )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  }  sb    $'DAqqAvqAv.JZ=!J-5E ]4arBF;;=4]4eUrJF;;=4 [r2AE1DF;;=4[r2EAIuLF;;=4 Z\1aB7F;;=4Zc:AqRHF;;=4Z\5%B?F;;=4r'   c                  F   d} t        dd      }|j                         dk(  sJ t        j                  ddg      }t        |d      }|j                  d   |_        t        |j                         |       d| z  }t        dd      }t        j                  t        |	      5  |j                         | k(  sJ 	 d
d
d
       t        dd      }t        j                  t        |	      5  |j                         | k(  sJ 	 d
d
d
       t        |d      }|j                  d   |_        t        j                  t        |	      5  t        |j                         t        j                  | dg             d
d
d
       y
# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y
xY w)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0F?FFF 	Estimatorc                    t        |      \  }} |        j                  ||      }|j                  |      }t        |d      }|t	        j
                  |      j                  z
  }t        |j                  |      |       y )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    sm    12DEFB
+//"b
!C

%
%b
)C3Q'Jz2444LC))"-|<r'   )Er  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   r'   r%   <module>rp     s   	    # 3 E   / +]L-X 6*E  BHHr2hR2r(QFQFQFCDBHH 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 BHHi+,BHHi+,BHHq!fXBHHaV	
 FBHHi+,BHHlL12BHHq!fXBHHaV	
 1a&1a&)*1a&1a&)*1a&"!Q '>=?>=" a&1a&	?@ .9'9 :'9T%P B"JJ &=>= ?=r'   