
    ri                     :	   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 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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jH                  d
dgddgdd
gddgddgddgg      Z% ejH                  g d      Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4ejj                  jm                  de"      d        Z7ejj                  jm                  de"      d        Z8ejj                  jm                  d e#      d!        Z9d" Z:ejj                  jm                  de"      d#        Z;ejj                  jm                  de"      d$        Z<ejj                  jm                  de"      d%        Z=ejj                  jm                  de"      d&        Z>ejj                  jm                  de"      ejj                  jm                  d'd(d)g      ejj                  jm                  d*d(d)g      d+                      Z?ejj                  jm                  d,d-      ejj                  jm                  d.e!      d/               Z@d0 ZAd1 ZBd2 ZCd3 ZDd4 ZEejj                  jm                  d5d6 ejH                  g d7g d8g       ejH                  g d8g d8g       ejH                  d dgg       ejH                  d6d6g      fd6d9g ejH                  g d7g d8g       ejH                  g d:g d:g       ejH                  d d6gg       ejH                  d6d9g      fd ejH                  dd gddgg       ejH                  ddgddgg       ejH                  d dgg       ejH                  ddg      gg      d;        ZFejj                  jm                  d<d6dgdd9ggd=fg      d>        ZGejj                  jm                  d.e!      d?        ZHd@ ZIdA ZJdB ZKejj                  jm                  dCe#      dD        ZLejj                  jm                  dCe#      dE        ZMejj                  jm                  dFd(d)g      ejj                  jm                  dGd(d)g      ejj                  jm                  dH e       eI      dJ                      ZNy)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                     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       \/var/www/auto_recruiter/arenv/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_yr6   1   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_gnbrL   :   s    
 ,CWWQ]""1%Fvq!$$Q'L,,Q/bff\24DaH
 
W
 7 	  A1v 67 7 7s   -'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         @r8   r   )
r   r=   r>   r?   r   r!   r3   class_prior_r,   sum)r'   rH   r)   r*   s       r+   test_gnb_priorrQ   P   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.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                      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-negativer9   N	r   r!   r3   rD   rE   rF   r=   r>   r?   rH   msgs     r+   test_gnb_neg_priorsrm      sN    
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?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                     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?)\(?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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   rh   -Number of priors must match number of classesr9   Nrj   rk   s     r+   test_gnb_wrong_nb_priorsr      sM     BHH%=>
?C
9C	z	- 1  rn   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 onerg         ?rh   z!The sum of the priors should be 1r9   Nrj   rk   s     r+   test_gnb_prior_greater_oner      sN    
BHHc3Z0
1C
-C	z	- 1  rn   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?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                      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 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      s_     KD
Chh1771:'G22;c7SKE4D==3;;r-   c                 
   t         j                  |       }t               j                  |t              }t               j                  |t        t        j                  t                    }dD ]T  }t        ||      }t        ||      }|j                  |j                  cxk(  r|j                  k(  sJ  J t        ||       V t               j                  |dd dd d f   t        dd d   t        j                  t                    }|j                  |dd d   t        dd d          dD ]T  }t        ||      }t        ||      }|j                  |j                  cxk(  r|j                  k(  sJ  J t        ||       V y )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      sN   	
,	B
,

2q
!C\%%b!RYYq\:F9 93,fk2~~!2!2>bhh>>>>>!(K8	9 l&&r!$Q$'{AaddGRYYq\JG14a4!ADqD'*9 :3,w4~~!3!3?rxx?????!(L9	:r-   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   r=   r@   r   )irisr>   r?   flabelss        r+   %test_gnb_naive_bayes_scale_invariancer      sy    ;D99dkkqAAQRAjlq1ua(00Q7RF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   rN   r8   )r6   r=   r   r!   rC   r3   class_log_prior_)r   r'   r4   r5   rH   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   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1 	QAt33A68L8LQ8OP	Q 	4..0C0CDDq!fXsQF3q!fXs#q!fXs#t(($*;*;<]* s4//01 	A$$Q'--t/C/CA/F/L/L t++A.Q7t++A.Q7		 	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.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
 ) 	  R() ,COOBBIIbMO2	J
 7 	B		"67 7) )7 7s   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   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${M&B" 
A !"&&q!,{{1RS6"a'''  !A$(..&888!ae$((a(0"((C:2F	

 	A!$	m${M&B" EA !"&&q!,  1Q(..&888  2A'--777BFF3#4#4adV#<=qABFF3#4#4aeW#=>BBFF266#*>*>#?@!DE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_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                     | 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   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)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)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: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   )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


"
"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   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1g.1;;q!u1%%%O * 
7C6	i,??1%444 % 7}}Q';6667
7r-   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 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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   r;   r   )	r!   r3   r   warningscatch_warningssimplefilterRuntimeWarningrG   r@   )r>   r?   rH   s      r+   !test_mnb_prior_unobserved_targetsr    sv    	1a&1a&!"A
!QA
/C		 	 	" 1g~61i01
 ;;Ax A%%%;;Ax A%%%;;Ax A%%% 
	 	 	" 'g~6!Q1#&'
 ;;Ax A%%%;;Ax A%%%;;Ax A%%%#1 1' '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!   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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
  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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)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 :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   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vr"	Aq6Aq6"	#B	1a&	B
a5
1CGGBOs(("((Aq6*:; 	1b'A
!A		UVI	z	3 A	z	3 1 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  s    N'N4'N14N>zDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   r  rx   )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!   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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   Fr8  r9   )r!   r3   r
   rD   rE   rF   r=   )r9  r1  r>   r?   rH   s        r+   (test_categoricalnb_min_categories_errorsrF  (  sw     	1a&1a&1a&1a&12A
A
a5
PC	z	3 1  s   "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   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	- -
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   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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 IHHi!mS)*Eu%8DQAq6*d//1Is3CRP HH_%Eu%8DLL	z	6 A   s   (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   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`    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   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    sr    J!.A>>q   XXsCj!F&d3A||AAq~~'0 	N
	  	!/A	k	- .~~:---. 	!/A	k	- .~~:---. 	&e4A||AA	k	- J1>>+RXXz36G-HIJ J. .. .J Js$   $E?+F0F?FFF 	Estimatorc                    t        |      \  }} |        j                  ||      }|j                  |      }t        |d      }|t	        j
                  |      j                  z
  }t        |j                  |      |       y )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    sm    12DEFB
+//"b
!C

%
%b
)C3Q'Jz2444LC))"-|<r-   c                      |        j                         }| t        u r|j                  j                  sJ y |j                  j                  rJ y )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                 r   t        ||      }t        j                  |      }|j                  ||      }| r/t	        j
                  g d      }t	        j
                  g d      }	n(t        j                  |      }|j                  ||      }	|rt	        j
                  g d      }
nd}
t               j                  |||
      }|j                  |      }|j                  |      }|j                  |      }t        d      5  t               j                  ||	|
      }dD ]e  }t        ||      }t        ||      }|j                  |j                  k(  sJ t        |      t        |      k(  sJ t!        t#        ||	      |       g |j                  |      }| s&t        |      t        |      k(  sJ t#        ||	      }t%        ||       |j                  |j                  k(  sJ |j                  |      }|j                  |j                  k(  sJ t        |      t        |      k(  sJ t!        t#        ||	      |       |j                  |      }|j                  |j                  k(  sJ t        |      t        |      k(  sJ t!        t#        ||	      |       ddd       y# 1 sw Y   yxY w)
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    sk    
ow	7B88JD::d7:+Dxx67XX<=
xx
#ZZWZ5
!34\dDFFt$I**40O 2248	4	0 
!!$
-!PM 	HKfk2Gfk2G==DJJ...'?fTl222-g"=wG	H 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
 
 
s   FJ--J6)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     sL   	    # * 3 E    / +]L-X 6*E  BHHr2hR2r(QFQFQFCDBHH 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 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 &=>= ?= &=>/ ?/ udm4,udm<*-/'  
1
 = 51
r-   