Ë
    êÿæiç”  ã                   ó:	  — 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       ús/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/tests/test_naive_bayes.pyÚget_random_normal_x_binary_yr,   )   sP   € ä
�)‰)×
Ñ
Ð 2Ó
3€CØ	�‰˜ˆÓ	!€BØ
�*‰*˜"ˆ*Ó
 Ñ
!×	)Ñ	)¬#Ó	.€BØˆrˆ6€Mó    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Ó
3€CØ	�‰�Q˜XˆÓ	&€BÜ	�‰Ò$Ó	%€BØˆrˆ6€Mr-   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Ø�W‰W”Qœ‹]×"Ñ"¤1Ó%€FÜ�vœqÔ!à×$Ñ$¤QÓ'€LØ×,Ñ,¬QÓ/ÐÜœbŸf™f \Ó2Ð4DÀaÔHô
 
�‰ÜÐWö
ô 	‹× Ñ ¤¤A°°1¨vÐ Ô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   ç      @r8   r   )
r   r=   r>   r?   r   r!   r3   Úclass_prior_r,   Úsum)r'   rH   r)   r*   s       r+   Útest_gnb_priorrQ   P   sv   € ä
‹,×
Ñ
œ1œaÓ
 €CÜœbŸh™h¨¨1 vÓ.°Ñ4°c×6FÑ6FÈÔJÜ)Ð*<Ó=�F€BˆÜ
‹,×
Ñ
˜2˜rÓ
"€Cä˜c×.Ñ.×2Ñ2Ó4°aÕ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Ü
‹,×
Ñ
œ1œaÓ
 €CÜ‹\×Ñœa¤ BÓ'€Fä˜cŸj™j¨&¯-©-Ô8Ü˜cŸh™h¨¯©Ô4ô �)‰)×
Ñ
Ð 2Ó
3€Cà	�‰”!—'‘'˜!‘*Ó	€BÜ‹<×ÑœAœq°ÐÓ3€DÜ‹<×#Ñ#¤A¤q°1°a°&ÈÈQÉÐ#ÓO€DØ×Ñ”Qœ¨¨a©ÐÔ0ä˜dŸk™k¨4¯;©;Ô7Ü˜dŸi™i¨¯©Ô3ð �+‰+�aœŸ™ ™ RÓ
(€CÜ—K‘K ¬q¯w©w°q©zÔ:€Mä‹|×Ñ¤ #¡¬¨#©Ó/€HÜ‹\×Ñœa¤ MÓ2€Fä˜hŸo™o¨v¯}©}Ô=Ü˜hŸm™m¨V¯[©[Ô9ô ˜!‘V—O‘O¤B§J¡JÓ/€MÜ
‹,×
Ñ
œ1œa¨}Ð
Ó
=�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   �   sE   € ä
œBŸH™H d¨C [Ó1Ô
2€Cà
'€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 usedç333333Ó?gffffffæ?rh   çš™™™™™¹¿g[È9ãhê?g–Žßs\Æ?r8   N)	r   r!   r3   r=   r>   r?   r   rA   rO   ©rH   s    r+   Útest_gnb_priorsrs   Š   sz   € ä
œBŸH™H c¨3 ZÓ0Ô
1×
5Ñ
5´a¼Ó
;€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{®Gáz´?çìQ¸…ëÁ?g¸…ëQ¸ž?ç{®GázÄ?ç)\�Âõ(¼?rz   gìQ¸…ë±?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ô �X‰XÒQÓR€FÜ
�‰Ò0Ó1€AÜ
˜FÔ
#€Cà‡G�GˆAˆq…Mr-   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„   ¬   sD   € ô œBŸH™HÒ%=Ó>Ô
?€Cà
9€CÜ	�‰”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‡   ¶   sE   € ä
œBŸH™H c¨3 ZÓ0Ô
1€Cà
-€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{®Gáz„?g®Gáz®ï?rh   rq   r   N)r   r!   r3   r=   r>   r?   r@   rr   s    r+   Útest_gnb_prior_large_biasr‰   ¿   sM   € ä
œBŸH™H d¨D \Ó2Ô
3€CØ‡G�GŒAŒq„MØ�;‰;˜˜t˜�~Ó&¬"¯(©(°A°3«-Ò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Ü�h‰h˜œ1Ÿ7™7 1™:�Ó'€GÜ×2Ñ2°;ÀÀcÈ7ÓS�K€Eˆ4Ø�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    Ò   sD  € Ü	
�‰�,Ó	€BÜ
‹,×
Ñ
˜2œqÓ
!€CÜ‹\×%Ñ% b¬!¬R¯Y©Y´q«\Ó:€FÛ9ˆÜ˜3 Ó,ˆÜ˜f kÓ2ˆØ�~‰~ ×!2Ñ!2Ô>°b·h±hÒ>Ð>Ñ>Ð>Ð>Ü! (¨KÕ8ð	 :ô ‹l×&Ñ& r¨!¨$¨Q¨$²¨'¡{´A°a°d¸°d±G¼R¿Y¹YÄq»\ÓJ€GØ×Ñ˜˜1˜4˜a˜4™¤! A D q D¡'Ô*Û9ˆÜ˜3 Ó,ˆÜ˜w¨Ó4ˆØ�~‰~ ×!3Ñ!3Ô?°r·x±xÒ?Ð?Ñ?Ð?Ð?Ü! (¨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¨   å   s|   € ä‹;€DØ�9‰9�d—k‘k€q€AÙAQÓRÑAQ¸AŒj‹l×Ñ˜q 1™u aÓ(×0Ñ0°°Q±Õ7ÐAQ€FÐRÜ�v˜a‘y &¨¡)Ô,Ü�v˜a‘y &¨¡)Õ,ùò 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   € ô 2Ð2DÓE�F€BˆÙ
Ó
×
"Ñ
" 2 rÓ
*€CÜÜ
�‰Œr�x‰xš	Ó" 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Ø‡H�Hˆq�!ˆf�q˜!�f˜q !˜fÐ%¢yÔ1áÓ€DØ×Ñ�q˜!�f˜q !˜f q¨! fÐ-ªyÀ1ÀaÀ&ÐÔIÜ�t×(Ñ(¨$×*;Ñ*;Ô<Øœ]Ñ*Ü”s˜4×/Ñ/Ó0Ö1ˆAÜ˜t×3Ñ3°AÑ6¸×8LÑ8LÈQÑ8OÕPñ 2ô 	˜4×.Ñ.°×0CÑ0CÔDáÓ€Dà×Ñ�q˜!�f�X ˜s¨Q°¨FÐÔ3Ø×Ñ�q˜!�f�X ˜sÔ#Ø×Ñ�q˜!�f�X ˜sÔ#Ü�t×(Ñ(¨$×*;Ñ*;Ô<Øœ]Ò*ô ”s˜4×/Ñ/Ó0Ö1ˆAÜØ×$Ñ$ QÑ'×-Ñ-¨t×/CÑ/CÀAÑ/F×/LÑ/Lôô Ü—‘�t×+Ñ+¨AÑ.°QÔ7Ü—‘�t×+Ñ+¨AÑ.°QÔ7õð	 2ô 	˜4×/Ñ/°Ñ2°1Ñ5´r·x±xÀÀAÀÓ7GÔHô 	˜4×/Ñ/°Ñ2°1Ñ5´r·x±xÀÀAÀÓ7GÔHô 	˜4×/Ñ/°Ñ2°1Ñ5´r·x±xÀÀAÀÓ7GÔHô 	˜4×/Ñ/°Ñ2°1Ñ5´r·x±xÀÀAÀÓ7GÕHä˜4×.Ñ.°×0CÑ0CÕ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¯   € ô 2Ð2DÓE�F€Bˆä	�‰ÜÐTö
ñ 	‹× Ñ   RÔ(÷
ñ ‹,€CØ‡O�O�B˜¤B§I¡I¨b£M€OÔ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   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Ý  € ò
 ¢	ª;Ð7€KØ˜�V˜a ˜V a¨ VÐ,€Mò 	€AÜ!$Ü	”mÐ$ {°MÐ&Bö"ÑÐ˜Añ !Ó"×&Ñ& q¨!Ó,ˆØ�{‰{˜1˜R˜S˜6Ó" aÒ'Ð'Ð'Ø× Ñ  ! A¡$ Ó(×.Ñ.°&Ò8Ð8Ð8Ü!Ø×Ñ˜a  ˜eÓ$×(Ñ(¨aÐ(Ó0´"·(±(¸CÀ¸:Ó2FÈõ	
ð"ò 	€AÜ!$Ü	”mÐ$ {°MÐ&B÷"ÑÐ˜Añ !Ó"×&Ñ& q¨!Ó,ˆØ× Ñ   1 Q Ó(×.Ñ.°&Ò8Ð8Ð8Ø× Ñ   2 A Ó'×-Ñ-°Ò7Ð7Ð7ÜœBŸF™F 3×#4Ñ#4°a¸±d°VÓ#<Ó=¸qÔAÜœBŸF™F 3×#4Ñ#4°a¸±e°WÓ#=Ó>ÀÔBÜœBŸF™F¤2§6¡6¨#×*>Ñ*>Ó#?Ó@À!Ö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_paramsr=   r!   rÃ   r«   r   r3   )r©   rH   Úpriors      r+   Útest_discretenb_uniform_priorrÍ   ^  s_   € ñ
 Ó
€CØ‡N�N˜U€NÔ#Ø‡G�GˆaˆS�1�#˜�sˆOšYÔ'Ü�F‰F�3×'Ñ'Ó(€EÜ˜e¤R§X¡X¨s°C¨jÓ%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¨Ô
4€CØ‡G�GˆaˆS�1�#˜�sˆOšYÔ'Ü�F‰F�3×'Ñ'Ó(€EÜ˜e¤R§X¡X¨s°C¨jÓ%9Ô:ð :€CÜ	�‰”z¨Ö	-Ø�‰�!��q�c˜A˜3�¢Ô+÷ 
.ð ;€CÜ	�‰”z¨Ö	-Ø�‰˜!˜˜q˜c˜
 Q¨ F²IˆÔ>÷ 
.Ð	-÷	 
.Ð	-ú÷ 
.Ð	-ú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¨   € ô
 ‹;€DÜ9IØ�	‰	�4—;‘;¨#¸Cô:Ñ6€J�
˜L¨,ð šÓ(ˆÙ%°%Ô8ˆØ�‰�T—Y‘Y §¡Ô,Ù(°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Ü—H‘Hš\´·±Ô<€MØ�]×&Ñ&Ó(Ñ(€MÙ
Ó
×
"Ñ
" 1 a°}Ð
"Ó
E€CÜ�s—{‘{ 1“~¢|Ô4ñ Ó
€CØ‡O�O�A�b�q�E˜1˜R˜a˜5ª)À=ÐQSÐRSÐCT€OÔUØ‡O�O�A�a˜�F˜A˜a ˜F°-ÀÀ!Ð2D€OÔEØ‡O�O�A�a�b�E˜1˜Q˜R˜5°¸a¸bÐ0A€OÔ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  € ò" 
’IšyÐ)€AÚ€AÙØˆcˆrˆFˆØˆcˆrˆFˆÜ”Tœ#˜a›&“\Ó"€GÜ�g“,€Ká
Ó
€CÙØ�‰˜˜1 gˆÕ.à�‰��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 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   € ô 2Ð2DÓE�F€Bˆàˆw‚Ø‰Ø	�Ò	Ù˜"Óˆô ‹/€Cà
-€CÜ	�‰”z¨Ö	-Ø�‰���BŒ÷ 
.à�W‰W�Q˜‹^×#Ñ# AÓ&€Fä�v˜rÔ"ð ×$Ñ$ QÓ'€LØ×,Ñ,¨QÓ/ÐÜœbŸf™f \Ó2Ð4DÀaÔHô ‹?€DØ×Ñ�Q�r˜�U˜B˜r ˜F¬B¯I©I°b«MÐÔ:Ø×Ñ�Q�q˜�V˜R  !˜WÔ%Ø×Ñ�Q�q�r�U˜B˜q˜r˜FÔ#à�l‰l˜1‹o€GÜ�w Ô#à×&Ñ& qÓ)€MØ×.Ñ.¨qÓ1ÐÜœbŸf™f ]Ó3Ð5FÈÔJÜ˜m¨\Ô:ÜÐ/Ð1AÔBô ‹?€DØ×Ñ�Q˜¤B§I¡I¨b£MÐÔ2à�l‰l˜1‹o€GÜ�w Ô#Ø×&Ñ& qÓ)€MØ×.Ñ.¨qÓ1ÐÜœbŸf™f ]Ó3Ð5FÈÔJÜ˜m¨\Ô:ÜÐ/Ð1AÕB÷K 
.Ñ	-ú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    sh  € ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€Aä
‹/€Cä	×	 Ñ	 Õ	"Ü×Ñ˜g¤~Ô6à�‰˜˜1¢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   Á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  € ô 	�‰Ú	Ò/Ò1CÒEWÐXó	€Aô
 	�‰’Ó€Aô ˜CÔ
 €CØ‡G�GˆAˆq„Mô —(‘(˜D $˜<Ó(€KÜœbŸf™f S×%9Ñ%9Ó:¸KÔHô —8‘8â*ÚBð	
ó€Lô œbŸf™f S×%:Ñ%:Ó;¸\ÔJô �X‰XÒ)Ð*Ó+€Fô Ÿ8™8Ð&:Ð<OÐ%PÐ$QÓRÐØ(¬2¯6©6Ð2FÓ+GÑG€MÜ˜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ª	²9ºiÐHÓI€AÜ
�‰’Ó!€Aô ˜CÔ
 €CØ‡G�GˆAˆq„Mô �&‰&�×#Ñ# cÑ)Ó
*€CÜ�G‰G”B—F‘F˜3×+Ñ+¨cÑ1Ó2°Q·W±W¸Q±ZÀ°OÓD×FÑF€Eô ˜c×3Ñ3°c¸E±kÕ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±  € ô 	�‰Ú	Ò/Ò1CÒEWÐXó	€Aô
 	�‰’Ó€Aô �H‰Hòòð	
ó€Eô* �h‰h�u—{‘{Ó#€GÜ—X‘X˜eŸk™kÓ*€NÜ�1ŽXˆÜ—f‘f˜U 1™XÓ&Ð&ˆ�‰
Ø# A™J¨°©¯©Ó)9Ñ9ˆ�qÒð ô
 ˜SÔ
!€Cä
�)‰)ÐNÓ
O€CÜ	�‰”z¨Ö	-Ø�‰���AŒ÷ 
.ð ‡G�GˆAˆq„Mô —H‘HÒ0Ò2DÐEÓF€MÜ�s×)Ñ)¨=Ô9Ü—(‘(˜A˜q˜6Ó"€KÜ�s×'Ñ'¨Ô5Ü—(‘(Ò-Ó.€KÜ�s×'Ñ'¨Ô5Ü˜c×3Ñ3°WÔ=ä
˜S tÔ
,€CØ‡G�GˆAˆq„MÜ˜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Ü1Ð2DÓE�F€Bˆà�W‰W�R˜‹_×$Ñ$ RÓ(€FÜ�v˜rÔ"ä	�‰�A�q�6˜A˜q˜6Ð"Ó	#€BÜ	�‰�1�a�&Ó	€BÜ
˜a¨5Ô
1€Cà‡G�GˆB�„OÜ�s×(Ñ(¬"¯(©(°A°q°6Ó*:Ô;ô 	�‰�1�b�'�Ó€AÜ
�‰�!�‹€AÜ—	‘	ÐUÓV€IÜ	�‰”z¨Ö	3Ø�‰�AŒ÷ 
4ä	�‰”z¨Ö	3Ø�‰��1Œ÷ 
4ô �h‰h˜˜A˜�xÓ €Gô —h‘h °Ð >Ð?Ó@€OØ'×+Ñ+Ó-ÐÜØ×Ñ˜'Ó" OÐ6GÑ$Gôô
 ˆs×"Ñ"Ó# r§x¡x°¡{Ò2Ð2Ð2ô 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ
�‰’Ó€AÜ
˜a¨5Ô
1€CØ‡G�GˆAˆq„MÜ�s—{‘{¤2§8¡8¨a°¨V¨HÓ#5Ó6¼¿¹À!À»ÔFÜ�s×(Ñ(¬"¯(©(°A°q°6Ó*:Ô;ã'ˆÜ�H‰H�q˜!�f˜q !˜f q¨! f¨q°!¨fÐ5Ó6ˆÜ�H‰H’\Ó"ˆÜŸ™¢Ó1°FÑ:ˆÜ !¨uÔ5ˆØ�‰��1 MˆÔ2Ü˜3Ÿ;™;¤r§x¡x°!°Q°°Ó'9Ó:¼B¿H¹HÀaÀS»MÔJÜ˜3×,Ñ,¬b¯h©h¸¸1°vÓ.>Õ?ñ (÷5 
4Ñ	3úç	3Ñ	3ú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 —X‘X  1˜v¨¨1 v°°1¨v¸¸1°vÐ>Ó?€NÜ—X‘XšlÓ+€NÜŸ(™( A 3›-Ðä
˜a¨5ÀÔ
P€CØ‡G�GˆN˜NÔ+Ø×,Ñ,Ñ€HˆhÜ�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  (  sn   € ô 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ
�‰’Ó€Aä
˜a¨5ÀÔ
P€CÜ	�‰”z¨Ö	3Ø�‰��1Œ÷ 
4×	3Ñ	3ú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ž  € ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€AÜ	˜3¨EÔ	2€BØ
R€CÜ	�‰”k¨Ö	-Ø
�‰�q˜! a¨ VˆÔ,÷ 
.ä	�‰”k¨Ö	-Ø
�‰ˆq�!Œ÷ 
.ä�8‰8�a˜�V˜a ˜VÐ$Ó%€DÜ˜b×.Ñ.¨qÓ1°4Ô8ä	˜S¨eÔ	4€BÜ	�‰”k¨Ö	-Ø
�‰�q˜! a¨ VˆÔ,÷ 
.ä	�‰”k¨Ö	-Ø
�‰ˆq�!Œ÷ 
.ä�8‰8�g˜wÐ'¨!¨Q¨Ð0Ó1€DÜ˜b×.Ñ.¨qÓ1°4Ô8ä	˜S¨eÔ	4€BÜ	�‰”k¨Ö	-Ø
�‰ˆq�!Œ÷ 
.ä�8‰8�c˜3�Z # s Ð,Ó-€DÜ˜b×.Ñ.¨qÓ1°4Ô8ñ 	�aÓ€AÜ	˜3¨EÔ	2€BÜ	�‰”k¨Ö	-Ø
�‰ˆq�!Œ÷ 
.ä�8‰8�a˜�V˜a ˜VÐ$Ó%€DÜ˜b×.Ñ.¨qÓ1°4Ô8ä	˜S¨eÔ	4€BÜ	�‰”k¨Ö	-Ø
�‰ˆq�!Œ÷ 
.ä�8‰8�g˜wÐ'¨!¨Q¨Ð0Ó1€DÜ˜b×.Ñ.¨qÓ1°4Õ8÷C 
.Ñ	-úç	-Ñ	-ú÷ 
.Ñ	-úç	-Ñ	-ú÷ 
.Ñ	-ú÷ 
.Ð	-ú÷ 
.Ð	-ú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Æ  € Ü
�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€Aô �H‰H�a˜�VÓ€EÜ	˜U°Ô	6€BØ‡N�N�1�a ! Q €NÔ(ô —8‘8˜e U˜^¨e°U¨^Ð<Ó=€LÜ˜b×2Ñ2´B·F±F¸<Ó4HÔIô �8‰8�e˜U�^ g¨wÐ%7Ð8Ó9€DÜ˜b×.Ñ.¨qÓ1°4Ô8ô �H‰H�c˜4�[Ó!€EÜ˜u°%Ô8€DØ@€LÜ	�‰”z¨Ö	6Ø�‰��AŒ÷ 
7ð €IÜ�H‰H�i !‘m SÐ)Ó*€EÜ˜u°%Ô8€DØ×Ñ�Q˜ A q 6ÐÔ*Ü˜d×/Ñ/Ó1°I¸sÐ3CÈRÕPô �H‰H’_Ó%€EÜ˜u°%Ô8€DØL€LÜ	�‰”z¨Ö	6Ø�‰��AŒ÷ 
7Ð	6÷ 
7Ð	6ú÷ 
7Ð	6ú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
  )Úcvg…ëQ¸…ë?g®Gázî?rx   g�Âõ(\�ê?gq=
×£pí?g¤p=
×£è?r-  )Úvar_smoothingg{®Gázì?)r   r!   Ú
logical_orr   r   rŽ   r	   r   )r>   r?   Ú
binary_3v8ÚX_3v8Úy_3v8Úscoress         r+   Útest_check_accuracy_on_digitsr`  Š  sb  € ô  $Ô'�D€A€qÜ—‘˜q A™v q¨A¡vÓ.€JØ�Z‘= ! J¡-ˆ5€Eô œ]°Ô4°a¸¸rÔB€FØ�;‰;‹=˜4ÒÐÐäœ]°Ô4°e¸UÀrÔJ€FØ�;‰;‹=˜4ÒÐÐô œ[¨rÔ2°A¸±E¸1ÀÔD€FØ�;‰;‹=˜4ÒÐÐäœ[¨rÔ2°E¸A±I¸uÈÔL€FØ�;‰;‹=˜4ÒÐÐô œZ›\¨1¨a°BÔ7€FØ�;‰;‹=˜4ÒÐÐäœZ°cÔ:¸A¸qÀRÔH€FØ�;‰;‹=˜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)zÂThe provided value for alpha must only be
    used if alpha < _ALPHA_MIN and force_alpha is True.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/10772
    r¢   r   TrH  r|   r†   zCalpha too small will result in numeric errors, setting alpha = %.1eFr9   N)
r	   rR  r!   r3   r\   Ún_features_in_r   rD   rJ  rK  )Ú
_ALPHA_MINÚbÚalphasrl   s       r+   Útest_check_alpharf  «  sV  € ð €JÜ˜!¨Ô.€AØ�>‰>Ó˜qÒ Ð Ð ä�X‰X�s˜C�jÓ!€Fä˜&¨dÔ3€Aà—|‘| A‘€AÔÜ�q—~‘~Ó'¨Ô0ð 	NØ
ñ	ð ô 	˜!¨Ô/€AÜ	�‰”k¨Ö	-Ø�~‰~Ó :Ò-Ð-Ñ-÷ 
.ô 	˜!¨Ô/€AÜ	�‰”k¨Ö	-Ø�~‰~Ó :Ò-Ð-Ñ-÷ 
.ô 	˜&¨eÔ4€Aà—|‘| A‘€AÔÜ	�‰”k¨Ö	-Ü˜1Ÿ>™>Ó+¬R¯X©X°zÀ3Ð6GÓ-HÔI÷ 
.Ð	-÷ 
.Ð	-ú÷ 
.Ð	-ú÷ 
.Ð	-ú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   € ä1Ð2DÓE�F€BˆÙ
‹+�/‰/˜"˜bÓ
!€CØ
×
%Ñ
% bÓ
)€CÜ˜3 QÔ'€JØœŸ™ zÓ2×4Ñ4Ñ4€LÜ�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�  ã  s\  € ô 
˜o¨wÓ	7€BÜ�8‰8�JÓ€DØ�:‰:�d 7ˆ:Ó+€DÙÜ�x‰xÒ6Ó7ˆÜ—X‘XÒ<Ó=‰
ä�x‰x˜
Ó#ˆØ—Z‘Z ¨W�ZÓ5ˆ
áÜŸ™Ò!3Ó4‰àˆä‹\×Ñ˜d D¸ÐÓF€FØ—‘˜tÓ$€IØ×*Ñ*¨4Ó0€OØ ×2Ñ2°4Ó8ÐÜ	¨4Ö	0Ü“×!Ñ! $¨
À-Ð!ÓPˆÛMˆKÜ˜f kÓ2ˆGÜ˜f kÓ2ˆGØ—=‘= D§J¡JÒ.Ð.Ð.Ü˜'“?¤f¨T£lÒ2Ð2Ð2ÜÔ-¨g¸"Ô=¸wÕGð Nð —N‘N 4Ó(ˆ	ÙÜ˜)Ó$¬¨t«Ò4Ð4Ð4Ü)¨)¸Ô;ˆIÜ˜9 iÔ0Ø�‰ )§/¡/Ò1Ð1Ð1à ×.Ñ.¨tÓ4ˆØ×$Ñ$¨¯
©
Ò2Ð2Ð2Ü�oÓ&¬&°«,Ò6Ð6Ð6ÜÔ)¨/¸bÔAÀ?ÔSà$×6Ñ6°tÓ<ÐØ"×(Ñ(¨D¯J©JÒ6Ð6Ð6ÜÐ)Ó*¬f°T«lÒ:Ð:Ð:ÜÜÐ1°bÔ9Ð;Nô	
÷1 
1×	0Ñ	0ú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Ð ð €B‡H�Hˆr�2ˆh˜˜R˜ 2 r (¨Q°¨F°Q¸°F¸QÀ¸FÐCÓD€Ø€B‡H�HÒÓ €òòò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Ø‡�×ÑÐ*¨U°D¨MÓ:Ø‡�×ÑÐ2°U¸D°MÓBñ/7ó Có ;ó Mð/7ðd ‡�×Ñ˜Ð!4Ó5Ø‡�×Ñ˜¨.Ó9ñ4Có :ó 6ð4Còn&ò:,Hò^Dò.DEòN4@ðn ‡�×ÑØJð ØˆB�H‰H’i¢Ð+Ó,ØˆB�H‰H’i¢Ð+Ó,ØˆB�H‰H�q˜!�f�XÓØˆB�H‰H�a˜�VÓð	
ð �ˆFØˆB�H‰H’i¢Ð+Ó,ØˆB�H‰H’l¢LÐ1Ó2ØˆB�H‰H�q˜!�f�XÓØˆB�H‰H�a˜�VÓð	
ð Ø�—‘˜1˜a˜& 1 a &Ð)Ó*Ø�—‘˜1˜a˜& 1 a &Ð)Ó*Ø�—‘˜1˜a˜&˜Ó"Ø�—‘˜!˜Q˜Ó ðð'óñ>=ó?ð>=ð" ‡�×ÑØàˆaˆ&�1�a�&Ð	Ð?Ð@ðóñóðð ‡�×Ñ˜¨.Ó9ñ'9ó :ð'9òT%òP òB"JðJ ‡�×Ñ˜Ð&=Ó>ñ=ó ?ð=ð ‡�×Ñ˜Ð&=Ó>ñ/ó ?ð/ð ‡�×Ñ˜ u¨d mÓ4Ø‡�×ÑÐ,¨u°d¨mÓ<Ø‡�×ÑØ*Ù-Ó/Ø'ð ó ñ
1
óó =ó 5ñ1
r-   