Ë
    ÷Q(hSˆ  ã                   óø  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZmZmZmZmZ d dlmZmZmZmZ d dlmZ eeeegZeegz   Z ej8                  dd	gd	d	gd	dgd
d
gd
dgdd
gg«      Z ej8                  g d¢«      Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,ejZ                  j]                  de«      d„ «       Z/ejZ                  j]                  de«      d„ «       Z0ejZ                  j]                  de«      d„ «       Z1d „ Z2ejZ                  j]                  de«      d!„ «       Z3ejZ                  j]                  de«      d"„ «       Z4ejZ                  j]                  de«      d#„ «       Z5ejZ                  j]                  de«      d$„ «       Z6ejZ                  j]                  de«      ejZ                  j]                  d%d&d'g«      ejZ                  j]                  d(d&d'g«      d)„ «       «       «       Z7ejZ                  j]                  d*d+«      ejZ                  j]                  d,e«      d-„ «       «       Z8d.„ Z9d/„ Z:d0„ Z;d1„ Z<d2„ Z=ejZ                  j]                  d3d4 ej8                  g d5¢g d6¢g«       ej8                  g d6¢g d6¢g«       ej8                  d dgg«       ej8                  d4d4g«      fd4d7g ej8                  g d5¢g d6¢g«       ej8                  g d8¢g d8¢g«       ej8                  d d4gg«       ej8                  d4d7g«      fd
 ej8                  dd gd
d
gg«       ej8                  d
d
gd
d
gg«       ej8                  d d
gg«       ej8                  ddg«      gg«      d9„ «       Z>ejZ                  j]                  d:d4dgdd7ggd;fg«      d<„ «       Z?ejZ                  j]                  d,e«      d=„ «       Z@d>„ ZAd?„ ZBd@„ ZCejZ                  j]                  dAe«      dB„ «       ZDy)Cé    N)Ú	logsumexp)Úload_digitsÚ	load_iris)Úcross_val_scoreÚtrain_test_split)ÚBernoulliNBÚCategoricalNBÚComplementNBÚ
GaussianNBÚMultinomialNB)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)ÚCSR_CONTAINERSéþÿÿÿéÿÿÿÿé   é   )r   r   r   r   r   r   c                 ó¼   — t         j                  j                  | «      }|j                  d¬«      }|j                  d¬«      dkD  j	                  t
        «      }||fS )N)é
   é   ©Úsizer   r   )ÚnpÚrandomÚRandomStateÚnormalÚastypeÚint)Úglobal_random_seedÚrngÚX1Úy1s       ú\/var/www/skyplay_api_hub/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_yr0   )   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_gnbrF   2   s¬   € ô
 ‹,€CØ�W‰W”Qœ‹]×"Ñ"¤1Ó%€FÜ�vœqÔ!à×$Ñ$¤QÓ'€LØ×,Ñ,¬QÓ/ÐÜœbŸf™f \Ó2Ð4DÀaÔHô
 
�‰ÜÐWô
ñ 7ô 	‹× Ñ ¤¤A°°1¨vÐ Ô6÷7÷ 7ñ 7ús   Â-'CÃC&c                 ó>  — t        «       j                  t        t        «      }t	        t        j                  ddg«      dz  |j                  d«       t        | «      \  }}t        «       j                  ||«      }t	        |j                  j                  «       d«       y )Nr   ç      @r2   r   )
r   r7   r8   r9   r   r   r-   Úclass_prior_r&   Úsum)r!   rB   r#   r$   s       r%   Útest_gnb_priorrK   H   sv   € ä
‹,×
Ñ
œ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.r*   r   ©Úsample_weightr   r   ©r6   rN   é   )Ú	minlengthN)r   Úonesr   r7   r8   r9   r   Útheta_Úvar_r   r   ÚrandÚshaperA   r,   Úbincountr   Úfloat64)
r!   ÚswrB   Úclf_swr"   Úclf1Úclf2ÚindrN   Úclf_dupls
             r%   Útest_gnb_sample_weightr_   R   sÀ  € ô 
�‰�‹€BÜ
‹,×
Ñ
œ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-negativer3   N©	r   r   r-   r>   r?   r@   r7   r8   r9   ©rB   Úmsgs     r%   Útest_gnb_neg_priorsrg   y   sN   € ä
œ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æ?rb   çš™™™™™¹¿g[È9ãhê?g–Žßs\Æ?r2   N)	r   r   r-   r7   r8   r9   r   r;   rI   ©rB   s    r%   Útest_gnb_priorsrm   ‚   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Ä?ç)\�Âõ(¼?rt   gìQ¸…ë±?rs   ru   ç        )
r   r   r   rr   r)   r*   é   r2   é	   r   rb   )r   r-   r   r7   )r8   rc   ÚYrB   s       r%   Útest_gnb_priors_sum_iscloserz   �   s’   € ä
�‰à�ˆHØ�ˆHØ�ˆHØ�ˆHØ�ˆHØ�ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFð	
ó	€Aô �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|   rb   ú-Number of priors must match number of classesr3   Nrd   re   s     r%   Útest_gnb_wrong_nb_priorsr~   ¤   sM   € ô œBŸH™HÒ%=Ó>Ô
?€Cà
9€CÜ	�‰”z¨Ô	-ñ Ø�‰””1Œ÷÷ ñ úrh   c                  óÞ   — t        t        j                  ddg«      ¬«      } d}t        j                  t
        |¬«      5  | j                  t        t        «       ddd«       y# 1 sw Y   yxY w)z?Test if an error is raised if the sum of prior greater than onera   ç      ð?rb   z!The sum of the priors should be 1r3   Nrd   re   s     r%   Útest_gnb_prior_greater_oner�   ®   sN   € ä
œBŸH™H c¨3 ZÓ0Ô
1€Cà
-€CÜ	�‰”z¨Ô	-ñ Ø�‰””1Œ÷÷ ñ úrh   c                  óÔ   — t        t        j                  ddg«      ¬«      } | j                  t        t
        «       | j                  ddgg«      t        j                  dg«      k(  sJ ‚y)z@Test if good prediction when class prior favor largely one classg{®Gáz„?g®Gáz®ï?rb   rk   r   N)r   r   r-   r7   r8   r9   r:   rl   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 datar+   rv   r€   r   r   N)r   Úemptyr8   rV   r   Ú_update_mean_variance)Úprev_pointsÚmeanÚvarÚx_emptyÚtmeanÚtvars         r%   Ú"test_gnb_check_update_with_no_datar�   ¾   s_   € ð €KØ€DØ
€CÜ�h‰h˜œ1Ÿ7™7 1™:�Ó'€GÜ×2Ñ2°;ÀÀcÈ7ÓS�K€Eˆ4Ø�DŠ=Ðˆ=Ø�3Š;Ð‰;r'   c                  ó  — t        «       j                  t        t        «      } t        «       j	                  t        t        t        j                  t        «      «      }t        | j                  |j                  «       t        | j                  |j                  «       t        | j                  |j                  «       t        «       j	                  t        dd d…d d …f   t        dd d…   t        j                  t        «      «      }|j	                  t        dd d…   t        dd d…   «       t        | j                  |j                  «       t        | j                  |j                  «       t        | j                  |j                  «       y )Nr   r   r   )r   r7   r8   r9   rA   r   Úuniquer   rS   rT   rI   )rB   Úclf_pfÚclf_pf2s      r%   Útest_gnb_partial_fitr’   Ê   s  € Ü
‹,×
Ñ
œ1œaÓ
 €CÜ‹\×%Ñ%¤a¬¬B¯I©I´a«LÓ9€FÜ˜cŸj™j¨&¯-©-Ô8Ü˜cŸh™h¨¯©Ô4Ü˜c×.Ñ.°×0CÑ0CÔDä‹l×&Ñ&¤q¨¨¨A¨ªq¨¡z´1°Q°T¸°T±7¼B¿I¹IÄa»LÓI€GØ×Ñœ˜!˜$˜Q˜$™¤ 1 4 a 4¡Ô)Ü˜cŸj™j¨'¯.©.Ô9Ü˜cŸh™h¨¯©Ô5Ü˜c×.Ñ.°×0DÑ0DÕEr'   c                  ó  — t        «       } | j                  | j                  }}dD �cg c]1  }t        «       j	                  ||z  |«      j                  ||z  «      ‘Œ3 }}t        |d   |d   «       t        |d   |d   «       y c c}w )N)ç»½×Ùß|Û=r   g    _ Br   r   r   )r   ÚdataÚtargetr   r7   r:   r   )Úirisr8   r9   ÚfÚlabelss        r%   Ú%test_gnb_naive_bayes_scale_invariancerš   Ø   sy   € ä‹;€DØ�9‰9�d—k‘k€q€AØAQÖR¸AŒj‹l×Ñ˜q 1™u aÓ(×0Ñ0°°Q±Õ7ÐR€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   rH   r2   )r0   r7   r   r   r=   r-   Úclass_log_prior_)r›   r!   r.   r/   rB   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   r5   ©Úaxisr   )r7   rA   r   Úclass_count_r	   ÚrangeÚlenÚcategory_count_Úfeature_count_rV   r   rJ   r-   )r›   r[   r\   ÚiÚclf3s        r%   Útest_discretenb_partial_fitrª   ë   s“  € áÓ€DØ‡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ò 	QˆAÜ˜t×3Ñ3°AÑ6¸×8LÑ8LÈQÑ8OÕPñ	Qô 	˜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õð		ô 	˜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.r3   r5   ú.is not the same as on last call to partial_fité*   )r0   r>   r?   r@   rA   r   r�   Úarange)r«   r!   r.   r/   rB   s        r%   Ú$test_NB_partial_fit_no_first_classesr°     s¹   € ô 2Ð2DÓE�F€Bˆä	�‰ÜÐTô
ñ )ñ 	‹× Ñ   RÔ(÷)ñ ‹,€CØ‡O�O�B˜¤B§I¡I¨b£M€OÔ2Ü	�‰ÜÐJô
ñ 7ð 	�‰˜˜B¬¯	©	°"«ˆÔ6÷7ð 7÷)ð )ú÷7ð 7ús   ªCÂ(CÃCÃCc            	      óî  — g d¢g d¢g d¢g} ddgddgddgg}g d¢}t        t        t        g| |g«      D ]�  \  }} |«       j                  ||«      }|j	                  |d	d  «      d
k(  sJ ‚|j                  |d   g«      j                  dk(  sJ ‚t        |j                  |d d
 «      j                  d¬«      t        j                  ddg«      d«       ŒŸ g d¢}t        t        t        g| |g«      D �]  \  }} |«       j                  ||«      }|j                  |dd «      j                  dk(  sJ ‚|j                  |d d
 «      j                  dk(  sJ ‚t        t        j                  |j                  |d   g«      «      d«       t        t        j                  |j                  |d	   g«      «      d«       t        t        j                  t        j                  |j                  «      «      d«       �Œ y )N)r   r+   r   ©r   r   r   )r   r+   r   r   r   r   rr   )r   r   r   r   r   )r   r   r¡   r€   r*   ©r   r   r   )r   r   )r   r   )Úzipr   r   r7   r:   r;   rV   r   rJ   r   r-   r   Úexpr�   )ÚX_bernoulliÚX_multinomialr9   r›   r8   rB   s         r%   Útest_discretenb_predict_probar¸   0  sé  € ò
 ¢	ª;Ð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ó"ó EÑÐ˜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ñ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_paramsr7   r   rµ   r�   r   r-   )r›   rB   Úpriors      r%   Útest_discretenb_uniform_priorr¿   Q  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}   r3   r   r³   r­   r    r5   )
r7   r   rµ   r�   r   r-   r>   r?   r@   rA   )r›   rB   r¾   rf   s       r%   Útest_discretenb_provide_priorrÃ   ]  sè   € ñ ¨#¨s¨Ô
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)rj   rj   rÅ   rÁ   r³   r5   )r   r   r•   r–   r7   rA   r   r�   )	r›   r—   Ú
iris_data1Ú
iris_data2Úiris_target1Úiris_target2r¾   Úclf_fullÚclf_partials	            r%   Ú.test_discretenb_provide_prior_with_partial_fitrÎ   p  s­   € ô
 ‹;€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   )ÚdtyperM   )r   r   r   r   r   r³   rO   r   )r   r-   rX   rJ   r7   r   r:   rA   )r›   r8   r9   rN   rB   s        r%   Ú(test_discretenb_sample_weight_multiclassrÓ   …  s   € ò 	ÚÚÚð		€Aò 	€AÜ—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   r5   r   r   )Úclasses_r£   r�   r§   Úfeature_log_prob_)ÚsortedÚlistÚsetr¥   rA   r7   r:   ÚgetattrÚ
isinstancer   ÚndarrayrV   )r›   rÔ   rÕ   r8   r9   r6   Únum_classesrB   Úattribute_namesÚattribute_nameÚ	attributeÚelements               r%   Ú)test_discretenb_degenerate_one_class_caserä   œ  s  € ò" 
’IšyÐ)€AÚ€AÙØˆcˆrˆFˆØˆcˆrˆFˆÜ”Tœ#˜a›&“\Ó"€GÜ�g“,€Ká
Ó
€CÙØ�‰˜˜1 gˆÕ.à�‰��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 tor3   r2   r   r5   r)   )r0   r   r>   r?   r@   r7   r:   r   r;   r<   r   r   r=   rA   r�   )rå   r!   rè   r.   r/   r8   rB   rf   rC   rD   rE   r\   Úy_pred2Úy_pred_proba2Úy_pred_log_proba2r©   Úy_pred3Úy_pred_proba3Úy_pred_log_proba3s                      r%   Ú	test_mnnbrð   Ñ  s'  € ô 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³   r5   r   )	r   r-   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningrA   r:   )r8   r9   rB   s      r%   Ú!test_mnb_prior_unobserved_targetsr÷   
  sv  € ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€Aä
‹/€Cä	×	 Ñ	 Ó	"ñ 1Ü×Ñ˜g¤~Ô6à�‰˜˜1¢iˆÔ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   r-   r   r7   r   rµ   r�   rØ   rJ   r;   )r8   ry   rB   rÂ   Úfeature_probÚX_testÚunnorm_predict_probar;   s           r%   Útest_bnbr  '  s  € ô 	�‰Ú	Ò/Ò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þ   ra   r   )r   r-   r   r7   r=   r§   Útiler£   rV   ÚTr   rØ   )r8   ry   rB   ÚnumÚdenoms        r%   Útest_bnb_feature_log_probr  V  s«   € ô 	�‰’)šYª	²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)r3   )r   r   r   r   r   r   r   r   )r   rr   r   r   r   r   T)rÿ   Únorm)r   r-   ÚzerosrV   r¤   r=   rJ   r
   ÚreÚescaper>   r?   r@   r7   r   r§   r£   Úfeature_all_r   rØ   )r8   ry   ÚthetaÚweightsÚnormed_weightsr¨   rB   rf   Úfeature_countÚclass_countÚfeature_alls              r%   Útest_cnbr  m  s½  € ô 	�‰Ú	Ò/Ò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   rr   r   r)   F)rÿ   rº   r   r*   r   r   z9Negative values in data passed to CategoricalNB (input X)r3   r  çÇqÇqÜ?rÑ   )r€   rj   r)   g-Cëâ6?)r   r   r   çš™™™™™¹?rM   )r	   r0   r7   r:   r   r   r-   Ún_categories_r  r  r>   r?   r@   rJ   r   r;   r¥   r¦   rV   )r!   rB   r.   r/   rC   ÚX3Úy3r8   r9   Ú	error_msgÚX3_testÚbayes_numeratorÚbayes_denominatorÚfactorrN   s                  r%   Útest_categoricalnbr*  ´  s  € ä
‹/€CÜ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Œ÷ä	�‰”z¨Ô	3ñ Ø�‰��1Œ÷ô �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ñ ú÷ñ ús   Ä N'ÅN4Î'N1Î4N>zDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   r  rr   )r   r   r   r   c                 ó”  — t        j                  ddgddgddgddgg«      }t        j                  g d¢«      }t        j                  dg«      }t        dd| ¬«      }|j                  ||«       |j                  \  }	}
t        |	|«       t        |
|«       |j                  |«      }t        ||«       t        |j                  |«       y )Nr   r   rÑ   F©rÿ   rº   Úmin_categories)r   r-   r	   r7   r¦   r   r:   r"  )r-  Úexp_X1_countÚexp_X2_countÚnew_XÚexp_n_categories_ÚX_n_categoriesÚy_n_categoriesÚexpected_predictionrB   ÚX1_countÚX2_countÚpredictionss               r%   Ú&test_categoricalnb_with_min_categoriesr8  ë  s´   € ôD —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Ñ   Fr,  r3   )r   r-   r	   r>   r?   r@   r7   )r-  r%  r8   r9   rB   s        r%   Ú(test_categoricalnb_min_categories_errorsr:    sw   € ô 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ
�‰’Ó€Aä
˜a¨5ÀÔ
P€CÜ	�‰”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   rv   F©rÿ   Úforce_alphazFalpha too small will result in numeric errors, setting alpha = 1.0e-10r3   r5   r  r  r€   )r   r-   r   r>   ÚwarnsÚUserWarningrA   r7   r   r;   r   r	   )rè   r8   r9   Únbrf   Úprobs         r%   Ú
test_alpharB  *  sÓ  € ô 	�‰�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   Fr<  r5   r¼   rÅ   g333333ã?grÇqÇá?r   g¼œ‚—Sà?gÖ‡ÆúÐXß?r€   rk   z+All values in alpha must be greater than 0.r3   r”   é   )Údecimal)r€   ra   g      @z7When alpha is an array, it should contains `n_features`)r   r-   r   rA   r   rØ   r=   r;   r>   r?   r@   r7   Ú_check_alpha)	r8   r9   rÿ   r@  r  rA  Úm_nbÚexpected_msgÚ	ALPHA_MINs	            r%   Útest_alpha_vectorrJ  U  sÖ  € Ü
�‰�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Œ÷ð €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Œ÷ð ÷ð ú÷ð ú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   r2   r   rþ   )Úcvg…ëQ¸…ë?g®Gázî?rr   g�Âõ(\�ê?gq=
×£pí?g¤p=
×£è?r!  )Úvar_smoothingg{®Gázì?)r   r   Ú
logical_orr   r   rˆ   r   r   )r8   r9   Ú
binary_3v8ÚX_3v8Úy_3v8Úscoress         r%   Útest_check_accuracy_on_digitsrT  }  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   Tr<  rv   r€   zCalpha too small will result in numeric errors, setting alpha = %.1eFr3   N)
r   rF  r   r-   rV   Ún_features_in_r   r>   r>  r?  )Ú
_ALPHA_MINÚbÚalphasrf   s       r%   Útest_check_alpharZ  ž  sr  € ð €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¨Ô	-ñ JÜ˜1Ÿ>™>Ó+¬R¯X©X°zÀ3Ð6GÓ-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¡   )	r0   r7   Úpredict_joint_log_probar   r   Ú
atleast_2dr
  r   r<   )r[  r!   r.   r/   ÚestÚjllÚ
log_prob_xÚlog_prob_x_ys           r%   Útest_predict_joint_probarc  Ã  sm   € ä1Ð2DÓE�F€BˆÙ
‹+�/‰/˜"˜bÓ
!€CØ
×
%Ñ
% bÓ
)€CÜ˜3 QÔ'€JØœŸ™ zÓ2×4Ñ4Ñ4€LÜ�C×)Ñ)¨"Ó-¨|Õ<r'   )Er  ró   Únumpyr   r>   Úscipy.specialr   Úsklearn.datasetsr   r   Úsklearn.model_selectionr   r   Úsklearn.naive_bayesr   r	   r
   r   r   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.fixesr   ÚDISCRETE_NAIVE_BAYES_CLASSESÚALL_NAIVE_BAYES_CLASSESr-   r8   r9   r&   r0   rF   rK   r_   rg   rm   rz   r~   r�   rƒ   r�   r’   rš   ÚmarkÚparametrizerž   rª   r°   r¸   r¿   rÃ   rÎ   rÓ   rä   rð   r÷   r  r  r  r*  r8  r:  rB  rJ  rT  rZ  rc  © r'   r%   ú<module>rp     s«  ðÛ 	Û ã Û Ý #ç 3ß E÷õ ÷ó õ /à +¨]¸LÈ-ÐXÐ Ø6¸*¸ÑEÐ ð €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ò	òFò-ð ‡�×ÑÐ-Ð/KÓLñó Mðð ‡�×ÑÐ-Ð/KÓLñ.Eó Mð.Eðb ‡�×Ñ˜Ð'>Ó?ñ7ó @ð7ò$EðB ‡�×ÑÐ-Ð/KÓLñ;ó Mð;ð ‡�×ÑÐ-Ð/KÓLñ?ó Mð?ð$ ‡�×ÑÐ-Ð/KÓLñ
ó Mð
ð( ‡�×ÑÐ-Ð/KÓLñ5ó Mð5ð, ‡�×ÑÐ-Ð/KÓLØ‡�×ÑÐ*¨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 ‡�×Ñ˜Ð&=Ó>ñ=ó ?ñ=r'   