o
    Ó\ip‰  ã                   @   sè  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e dd	gd	d	gd	dgd
d
gd
dgdd
gg¡Ze g d¢¡Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'dd „ Z(d!d"„ Z)d#d$„ Z*d%d&„ Z+d'd(„ Z,ej- .d)e¡d*d+„ ƒZ/ej- .d)e¡d,d-„ ƒZ0ej- .d.e¡d/d0„ ƒZ1d1d2„ Z2ej- .d)e¡d3d4„ ƒZ3ej- .d)e¡d5d6„ ƒZ4ej- .d)e¡d7d8„ ƒZ5ej- .d)e¡d9d:„ ƒZ6ej- .d)e¡ej- .d;d<d=g¡ej- .d>d<d=g¡d?d@„ ƒƒƒZ7ej- .dAdB¡ej- .dCe¡dDdE„ ƒƒZ8dFdG„ Z9dHdI„ Z:dJdK„ Z;dLdM„ Z<dNdO„ Z=ej- .dPdQe g dR¢g dS¢g¡e g dS¢g dS¢g¡e d dgg¡e dQdQg¡fdQdTge g dR¢g dS¢g¡e g dU¢g dU¢g¡e d dQgg¡e dQdTg¡fd
e dd gd
d
gg¡e d
d
gd
d
gg¡e d d
gg¡e ddg¡gg¡dVdW„ ƒZ>ej- .dXdQdgddTggdYfg¡dZd[„ ƒZ?ej- .dCe¡d\d]„ ƒZ@d^d_„ ZAd`da„ ZBdbdc„ ZCej- .dde¡dedf„ ƒZDej- .dde¡dgdh„ ƒZEdS )ié    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                 C   s6   t j | ¡}|jdd}|jdddk t¡}||fS )N)é
   é   ©Úsizer   r   )ÚnpÚrandomÚRandomStateÚnormalÚastypeÚint)Úglobal_random_seedÚrngÚX1Úy1© r#   ú/var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/tests/test_naive_bayes.pyÚget_random_normal_x_binary_y!   s   r%   c                 C   s0   t j | ¡}|jddd}t  g d¢¡}||fS )Né   )é   éd   r   )r   r   r   r   r   r   )r   r   r   ÚrandintÚarray)r   r    ÚX2Úy2r#   r#   r$   Ú$get_random_integer_x_three_classes_y)   s   r-   c                  C   s’   t ƒ } |  tt¡ t¡}t|tƒ |  t¡}|  t¡}tt	 
|¡|dƒ tjtdd t ƒ jttddgd W d   ƒ d S 1 sBw   Y  d S )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_probar#   r#   r$   Útest_gnb2   s   


ÿ"ýrB   c                 C   sX   t ƒ  tt¡}tt ddg¡d |jdƒ t| ƒ\}}t ƒ  ||¡}t|j 	¡ dƒ d S )Nr   ç      @r.   r   )
r
   r3   r4   r5   r   r   r*   Úclass_prior_r%   Úsum)r   r>   r!   r"   r#   r#   r$   Útest_gnb_priorH   s
   rF   c           
      C   sN  t  d¡}tƒ  tt¡}tƒ  tt|¡}t|j|jƒ t|j|jƒ t j	 
| ¡}| tjd ¡}tƒ jtt|d}tƒ jttddg|d d}|jtt|d d t|j|jƒ t|j|jƒ | dtjd d¡}t j|tjd d}tƒ  t| t| ¡}	tƒ  tt|¡}t|	j|jƒ t|	j|jƒ tdk t j¡}tƒ jtt|d}d	S )
z5Test whether sample weights are properly used in GNB.r'   r   ©Úsample_weightr   r   ©r2   rH   é   )Ú	minlengthN)r   Úonesr
   r3   r4   r5   r   Útheta_Úvar_r   r   ÚrandÚshaper=   r)   Úbincountr   Úfloat64)
r   Úswr>   Úclf_swr    Úclf1Úclf2ÚindrH   Úclf_duplr#   r#   r$   Útest_gnb_sample_weightR   s(   
rY   c                  C   óX   t t ddg¡d} d}tjt|d |  tt¡ W d  ƒ dS 1 s%w   Y  dS )z:Test whether an error is raised in case of negative priorsg      ð¿ç       @©ÚpriorszPriors must be non-negativer/   N©	r
   r   r*   r:   r;   r<   r3   r4   r5   ©r>   Úmsgr#   r#   r$   Útest_gnb_neg_priorsy   ó
   "ÿra   c                  C   sZ   t t ddg¡d tt¡} t|  ddgg¡t ddgg¡dƒ t| jt ddg¡ƒ dS )	z6Test whether the class prior override is properly usedç333333Ó?gffffffæ?r\   çš™™™™™¹¿g[È9ãhê?g–Žßs\Æ?r.   N)	r
   r   r*   r3   r4   r5   r   r7   rD   ©r>   r#   r#   r$   Útest_gnb_priors‚   s   ýrf   c                  C   s|   t  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  g d¢¡}t  g d¢¡}t|d}| | |¡ d S )Nr   r   éýÿÿÿéüÿÿÿéûÿÿÿr   r   r   é   r&   )
g{®Gáz´?çìQ¸…ëÁ?g¸…ëQ¸ž?ç{®GázÄ?ç)\Âõ(¼?rl   gìQ¸…ë±?rk   rm   ç        )
r   r   r   rj   r&   r'   é   r.   é	   r   r\   )r   r*   r
   r3   )r4   r]   ÚYr>   r#   r#   r$   Útest_gnb_priors_sum_isclose   s"   öÿ
rr   c                  C   sX   t t g d¢¡d} d}tjt|d |  tt¡ W d  ƒ dS 1 s%w   Y  dS )z`Test whether an error is raised if the number of prior is different
    from the number of class)ç      Ð?rs   rs   rs   r\   ú-Number of priors must match number of classesr/   Nr^   r_   r#   r#   r$   Útest_gnb_wrong_nb_priors¤   s
   "ÿru   c                  C   rZ   )z?Test if an error is raised if the sum of prior greater than oner[   ç      ð?r\   z!The sum of the priors should be 1r/   Nr^   r_   r#   r#   r$   Útest_gnb_prior_greater_one®   rb   rw   c                  C   sD   t t ddg¡d} |  tt¡ |  ddgg¡t dg¡ks J ‚dS )z@Test if good prediction when class prior favor largely one classg{®Gáz„?g®Gáz®ï?r\   rd   r   N)r
   r   r*   r3   r4   r5   r6   re   r#   r#   r$   Útest_gnb_prior_large_bias·   s   $rx   c                  C   sP   d} d}d}t  dtjd f¡}t | |||¡\}}||ks J ‚||ks&J ‚dS )z4Test when the partial fit is called without any datar(   rn   rv   r   r   N)r   Úemptyr4   rP   r
   Ú_update_mean_variance)Úprev_pointsÚmeanÚvarÚx_emptyÚtmeanÚtvarr#   r#   r$   Ú"test_gnb_check_update_with_no_data¾   s   r   c                  C   sÎ   t ƒ  tt¡} t ƒ  ttt t¡¡}t| j|jƒ t| j	|j	ƒ t| j
|j
ƒ t ƒ  tdd d…d d …f tdd d… t t¡¡}| tdd d… tdd d… ¡ t| j|jƒ t| j	|j	ƒ t| j
|j
ƒ d S )Nr   r   r   )r
   r3   r4   r5   r=   r   Úuniquer   rM   rN   rD   )r>   Úclf_pfÚclf_pf2r#   r#   r$   Útest_gnb_partial_fitÊ   s   2 r…   c                     sP   t ƒ } | j| j‰ ‰‡ ‡fdd„dD ƒ}t|d |d ƒ t|d |d ƒ d S )Nc                    s(   g | ]}t ƒ  |ˆ  ˆ¡ |ˆ  ¡‘qS r#   )r
   r3   r6   )Ú.0Úf©r4   r5   r#   r$   Ú
<listcomp>Ü   s   ( z9test_gnb_naive_bayes_scale_invariance.<locals>.<listcomp>)ç»½×Ùß|Û=r   g    _ Br   r   r   )r   ÚdataÚtargetr   )ÚirisÚlabelsr#   rˆ   r$   Ú%test_gnb_naive_bayes_scale_invarianceØ   s
   r   ÚDiscreteNaiveBayesc                 C   s@   t |ƒ\}}| ƒ  ||¡}tt t g d¢¡d ¡|jdƒ d S )N)r   r   r   rC   r.   )r-   r3   r   r   r9   r*   Úclass_log_prior_)r   r   r+   r,   r>   r#   r#   r$   Útest_discretenb_priorá   s
   ÿr’   c                 C   sî  | ƒ }|  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d t|j|jƒ | tu rMtt|jƒƒD ]}t|j| |j| ƒ q>nt|j|jƒ | ƒ }|jddggdgddgd | ddggdg¡ | ddggdg¡ t|j|jƒ | tu rîtt|jƒƒD ]$}t|j| j	|j| j	ƒ tt
j|j| ddt
j|j| ddƒ q‹t|jd d t
 ddg¡ƒ t|jd d t
 ddg¡ƒ t|jd d t
 ddg¡ƒ t|jd d t
 ddg¡ƒ d S t|j|jƒ d S )Nr   r   ©r   r   r   r1   ©Úaxisr   )r3   r=   r   Úclass_count_r   ÚrangeÚlenÚcategory_count_Úfeature_count_rP   r   rE   r*   )r   rU   rV   ÚiÚclf3r#   r#   r$   Útest_discretenb_partial_fitë   s:   "*ÿÿþ"r   Ú
NaiveBayesc                 C   s®   t |ƒ\}}tjtdd | ƒ  ||¡ W d   ƒ n1 sw   Y  | ƒ }|j||t |¡d tjtdd |j||t d¡d W d   ƒ d S 1 sPw   Y  d S )Nz8classes must be passed on the first call to partial_fit.r/   r1   ú.is not the same as on last call to partial_fité*   )r-   r:   r;   r<   r=   r   r‚   Úarange)rž   r   r+   r,   r>   r#   r#   r$   Ú$test_NB_partial_fit_no_first_classes  s   ÿýÿ"ýr¢   c                  C   s|  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 ];\}}|ƒ  ||¡}| |d	d … ¡d
ks;J ‚| |d g¡jdksHJ ‚t| |d d
… ¡jddt	 
ddg¡dƒ q#g d¢}t ttg| |gƒD ]O\}}|ƒ  ||¡}| |dd… ¡jdks…J ‚| |d d
… ¡jdks“J ‚tt	 | |d g¡¡dƒ tt	 | |d	 g¡¡dƒ tt	 t	 |j¡¡dƒ qld S )N)r   r(   r   ©r   r   r   )r   r(   r   r   r   r   rj   )r   r   r   r   r   )r   r   r”   rv   r'   ©r   r   r   )r   r   )r   r   )Úzipr   r   r3   r6   r7   rP   r   rE   r   r*   r   Úexpr‘   )ÚX_bernoulliÚX_multinomialr5   r   r4   r>   r#   r#   r$   Útest_discretenb_predict_proba0  s.   ÿ&ÿÿør©   c                 C   sR   | ƒ }|j dd | dgdgdggg d¢¡ t |j¡}t|t ddg¡ƒ d S )NF)Ú	fit_priorr   r   ©r   r   r   ç      à?)Ú
set_paramsr3   r   r¦   r‘   r   r*   )r   r>   Úpriorr#   r#   r$   Útest_discretenb_uniform_priorQ  s
   r¯   c                 C   sð   | ddgd}|  dgdgdggg d¢¡ t |j¡}t|t ddg¡ƒ d}tjt|d |  dgdgdggg d	¢¡ W d   ƒ n1 sGw   Y  d
}tjt|d |j	dgdggddgg d¢d W d   ƒ d S 1 sqw   Y  d S )Nr¬   ©Úclass_priorr   r   r«   rt   r/   r   r¤   rŸ   r“   r1   )
r3   r   r¦   r‘   r   r*   r:   r;   r<   r=   )r   r>   r®   r`   r#   r#   r$   Útest_discretenb_provide_prior]  s   ÿ""ÿr²   c           	      C   sŠ   t ƒ }t|j|jddd\}}}}d g d¢fD ]+}| |d}| |j|j¡ | |d}|j||g d¢d | ||¡ t|j|jƒ qd S )Nçš™™™™™Ù?iŸ  )Ú	test_sizeÚrandom_state)rc   rc   r³   r°   r¤   r1   )r   r   r‹   rŒ   r3   r=   r   r‘   )	r   r   Ú
iris_data1Ú
iris_data2Úiris_target1Úiris_target2r®   Úclf_fullÚclf_partialr#   r#   r$   Ú.test_discretenb_provide_prior_with_partial_fitp  s   ÿ

ÿúr¼   c                 C   s  g d¢g d¢g d¢g d¢g}g d¢}t jg d¢t jd}|| ¡  }| ƒ j|||d}t| |¡g d¢ƒ | ƒ }|j|d d	… |d d	… g d
¢|d d	… d |j|d	d… |d	d… |d	d… d |j|dd … |dd … |dd … d t| |¡g d¢ƒ d S )Nr«   r“   ©r   r   r   )r   r   r   r   ©r   r   r   r   )ÚdtyperG   )r   r   r   r   r   r¤   rI   r   )r   r*   rR   rE   r3   r   r6   r=   )r   r4   r5   rH   r>   r#   r#   r$   Ú(test_discretenb_sample_weight_multiclass…  s   ü.((rÀ   Úuse_partial_fitFTÚtrain_on_single_class_yc                 C   s   g d¢g d¢g d¢g}g d¢}|r|d d… }|d d… }t tt|ƒƒƒ}t|ƒ}| ƒ }|r7|j|||d n| ||¡ | |d d… ¡|d ksLJ ‚g d	¢}|D ]+}	t||	d ƒ}
|
d u r_qRt|
t	j
ƒro|
jd |ksnJ ‚qR|
D ]}|jd |ks|J ‚qqqRd S )
Nr½   r£   r«   )r   r   r   r   r1   r   r   )Úclasses_r–   r‘   rš   Úfeature_log_prob_)ÚsortedÚlistÚsetr˜   r=   r3   r6   ÚgetattrÚ
isinstancer   ÚndarrayrP   )r   rÁ   rÂ   r4   r5   r2   Únum_classesr>   Úattribute_namesÚattribute_nameÚ	attributeÚelementr#   r#   r$   Ú)test_discretenb_degenerate_one_class_caseœ  s.   ÿ÷rÐ   Úkind)ÚdenseÚsparseÚcsr_containerc                 C   sÒ  t |ƒ\}}| dkr|}n| dkr||ƒ}tƒ }d}tjt|d | | |¡ W d   ƒ n1 s3w   Y  | ||¡ |¡}t||ƒ | |¡}	| 	|¡}
t
t |	¡|
dƒ tƒ }|j|d d… |d d… t |¡d | |dd… |dd… ¡ | |dd … |dd … ¡ | |¡}t||ƒ | |¡}| 	|¡}t
t |¡|dƒ t
||	ƒ t
||
ƒ tƒ }|j||t |¡d | |¡}t||ƒ | |¡}| 	|¡}t
t |¡|dƒ t
||	ƒ t
||
ƒ d S )	NrÒ   rÓ   z!Negative values in data passed tor/   r.   r   r1   r&   )r-   r   r:   r;   r<   r3   r6   r   r7   r8   r   r   r9   r=   r‚   )rÑ   r   rÔ   r+   r,   r4   r>   r`   r?   r@   rA   rV   Úy_pred2Úy_pred_proba2Úy_pred_log_proba2rœ   Úy_pred3Úy_pred_proba3Úy_pred_log_proba3r#   r#   r$   Ú	test_mnnbÑ  sF   ÿ


&










rÛ   c                  C   sN  t  ddgddgg¡} t  ddg¡}tƒ }t ¡  t dt¡ |j| |g d¢d W d   ƒ n1 s4w   Y  | ddgg¡dksEJ ‚| ddgg¡dksQJ ‚| ddgg¡dks]J ‚t ¡  t dt¡ | ddggdg¡ W d   ƒ n1 s|w   Y  | ddgg¡dksJ ‚| ddgg¡dks™J ‚| ddgg¡dks¥J ‚d S )Nr   r   Úerrorr¤   r1   r   )	r   r*   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr=   r6   )r4   r5   r>   r#   r#   r$   Ú!test_mnb_prior_unobserved_targets
  s"   
ý
ýrá   c                  C   sÐ   t  g d¢g d¢g d¢g d¢g¡} t  g d¢¡}tdd}| | |¡ t  dd	g¡}tt  |j¡|ƒ t  g d
¢g d¢g¡}tt  |j¡|ƒ t  g d¢g¡}t  ddgg¡}|t  |¡ }t| 	|¡|ƒ d S )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   rv   ©Úalphag      è?rs   )r³   gš™™™™™é?çš™™™™™É?r³   r³   ré   )çUUUUUUÕ?çUUUUUUå?rë   rê   rê   rë   g¦@fgÑ;u?gÇ¿à€y–?)
r   r*   r   r3   r   r¦   r‘   rÄ   rE   r7   )r4   rq   r>   r±   Úfeature_probÚX_testÚunnorm_predict_probar7   r#   r#   r$   Útest_bnb'  s$   ÿ
þÿrï   c                  C   s”   t  g d¢g d¢g d¢g d¢g d¢g¡} t  g d¢¡}tdd}| | |¡ t  |jd ¡}t  t  |jd ¡| jd	 d	f¡j	}t
|j|| ƒ d S )
N)r   r   r   ©r   r   r   r£   )r   r   r   )r   r   r   r   r   rv   rç   r[   r   )r   r*   r   r3   r9   rš   Útiler–   rP   ÚTr   rÄ   )r4   rq   r>   ÚnumÚdenomr#   r#   r$   Útest_bnb_feature_log_probV  s   (
$rõ   c                  C   s~  t  g d¢g d¢g d¢g d¢g¡} t  g d¢¡}t  g d¢g d¢g¡}t  |j¡}t  |j¡}tdƒD ]}t  || ¡ ||< || ||  ¡  ||< q3td	d
}t 	d¡}t
jt|d | |  |¡ W d   ƒ n1 sow   Y  | | |¡ t  g d¢g d¢g¡}t|j|ƒ t  ddg¡}	t|j|	ƒ t  g d¢¡}
t|j|
ƒ t|j|ƒ td	dd}| | |¡ t|j|ƒ d S )Nrâ   rã   rä   rå   ræ   )çÇqÇq¼?çÇqÇqÌ?r÷   rö   rö   r÷   )çUUUUUUÅ?rê   çUUUUUUµ?rø   rø   rù   r   rv   rç   z8Negative values in data passed to ComplementNB (input X)r/   )r   r   r   r   r   r   r   r   )r   rj   r   r   r   r   T)rè   Únorm)r   r*   ÚzerosrP   r—   r9   rE   r	   ÚreÚescaper:   r;   r<   r3   r   rš   r–   Úfeature_all_r   rÄ   )r4   rq   ÚthetaÚweightsÚnormed_weightsr›   r>   r`   Úfeature_countÚclass_countÚfeature_allr#   r#   r$   Útest_cnbm  s<   ÿ÷ÿ

ÿr  c                 C   s”  t ƒ }t| ƒ\}}| ||¡ |¡}t||ƒ t ddgddgg¡}t ddg¡}t ddd}| ||¡ t|jt ddg¡ƒ t d	d
gg¡}t dg¡}t 	d¡}	t
jt|	d | |¡ W d   ƒ n1 sjw   Y  t
jt|	d | ||¡ W d   ƒ n1 s‡w   Y  t ddgg¡}
t ddgg¡}| ¡ }t| |
¡|| ƒ t|jƒ|jd ks¶J ‚t d	d	gd	dgd	d	gddgg¡}t g d¢¡}t ddd}| ||¡ t| t d	d	gg¡¡t dg¡ƒ t|jt ddg¡ƒ dD ]N}t d	d	gd	dgd	d	gddgg¡}t g d¢¡}t g d¢¡| }t ddd}|j|||d t| t d	d	gg¡¡t dg¡ƒ t|jt ddg¡ƒ qùd S )Nr   rj   r   r&   F)rè   rª   r   r'   r   r   z9Negative values in data passed to CategoricalNB (input X)r/   rö   çÇqÇqÜ?r¾   )rv   rc   r&   g-Cëâ6?)r   r   r   çš™™™™™¹?rG   )r   r-   r3   r6   r   r   r*   Ún_categories_rü   rý   r:   r;   r<   rE   r   r7   r˜   r™   rP   )r   r>   r+   r,   r?   ÚX3Úy3r4   r5   Ú	error_msgÚX3_testÚbayes_numeratorÚbayes_denominatorÚfactorrH   r#   r#   r$   Útest_categoricalnb´  sP   

ÿÿÿ"$"$ùr  zDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   rð   rj   )r   r   r   r   c                 C   s˜   t  ddgddgddgddgg¡}t  g d¢¡}t  dg¡}tdd| d}| ||¡ |j\}	}
t|	|ƒ t|
|ƒ | |¡}t||ƒ t|j|ƒ d S )Nr   r   r¾   F©rè   rª   Úmin_categories)r   r*   r   r3   r™   r   r6   r  )r  Úexp_X1_countÚexp_X2_countÚnew_XÚexp_n_categories_ÚX_n_categoriesÚy_n_categoriesÚexpected_predictionr>   ÚX1_countÚX2_countÚpredictionsr#   r#   r$   Ú&test_categoricalnb_with_min_categoriesë  s   ""




r  zmin_categories, error_msgz"'min_categories' should have shapec                 C   s~   t  ddgddgddgddgg¡}t  g d¢¡}tdd| d}tjt|d | ||¡ W d   ƒ d S 1 s8w   Y  d S )Nr   r   r¾   Fr  r/   )r   r*   r   r:   r;   r<   r3   )r  r  r4   r5   r>   r#   r#   r$   Ú(test_categoricalnb_min_categories_errors  s   ""ÿr  c                 C   sØ  t  ddgddgg¡}t  ddg¡}tddd}d}tjt|d |j||ddgd W d   ƒ n1 s6w   Y  tjt|d | ||¡ W d   ƒ n1 sSw   Y  t  ddgddgg¡}t| 	|¡|ƒ t
ddd}tjt|d |j||ddgd W d   ƒ n1 sw   Y  tjt|d | ||¡ W d   ƒ n1 sªw   Y  t  d	d
gddgg¡}t| 	|¡|ƒ tddd}tjt|d | ||¡ W d   ƒ n1 sàw   Y  t  ddgddgg¡}t| 	|¡|ƒ | |ƒ}tddd}tjt|d | ||¡ W d   ƒ n	1 sw   Y  t  ddgddgg¡}t| 	|¡|ƒ t
ddd}tjt|d | ||¡ W d   ƒ n	1 sRw   Y  t  d	d
gddgg¡}t| 	|¡|ƒ d S )Nr   r   rn   F©rè   Úforce_alphazFalpha too small will result in numeric errors, setting alpha = 1.0e-10r/   r1   rë   rê   rv   )r   r*   r   r:   ÚwarnsÚUserWarningr=   r3   r   r7   r   r   )rÔ   r4   r5   Únbr`   Úprobr#   r#   r$   Ú
test_alpha*  sP   ÿÿÿÿÿÿÿr%  c            	      C   s¢  t  ddgddgg¡} t  ddg¡}t  ddg¡}t|dd}|j| |ddgd t  ddgdd	gg¡}t|jt  |¡ƒ t  d
dgddgg¡}t| | ¡|ƒ t  ddg¡}t|dd}d}tj	t
|d | | |¡ W d   ƒ n1 sww   Y  d}t  |d dg¡}t|dd}|j| |ddgd t| ¡ |dgdd t  g d¢¡}t|dd}d}tj	t
|d | | |¡ W d   ƒ d S 1 sÊw   Y  d S )Nr   r   r   Fr  r1   r¬   r³   g333333ã?grÇqÇá?r  g¼œ‚—Sà?gÖ‡ÆúÐXß?rv   rd   z+All values in alpha must be greater than 0.r/   rŠ   é   )Údecimal)rv   r[   g      @z7When alpha is an array, it should contains `n_features`)r   r*   r   r=   r   rÄ   r9   r7   r:   r;   r<   r3   Ú_check_alpha)	r4   r5   rè   r#  rì   r$  Úm_nbÚexpected_msgÚ	ALPHA_MINr#   r#   r$   Útest_alpha_vectorU  s4   ÿ"ÿr,  c                  C   sB  t dd\} }t |dk|dk¡}| | || }}ttdd| |dd}| ¡ dks-J ‚ttdd||dd}| ¡ d	ks@J ‚ttdd| d
k|dd}| ¡ dksUJ ‚ttdd|d
k|dd}| ¡ dksjJ ‚ttƒ | |dd}| ¡ dks{J ‚ttdd| |dd}| ¡ dksŽJ ‚ttƒ ||dd}| ¡ dksŸJ ‚d S )NT)Ú
return_X_yr   r.   r   rç   )Úcvg…ëQ¸…ë?g®Gázî?rj   gÂõ(\ê?gq=
×£pí?g¤p=
×£è?r  )Úvar_smoothingg{®Gázì?)r   r   Ú
logical_orr   r   r|   r   r
   )r4   r5   Ú
binary_3v8ÚX_3v8Úy_3v8Úscoresr#   r#   r$   Útest_check_accuracy_on_digits}  s"   r5  c                  C   sT  d} t ddd}| ¡ dksJ ‚t ddg¡}t |dd}|jd |_t| ¡ |ƒ d|  }t ddd}tjt	|d	 | ¡ | ksDJ ‚W d
  ƒ n1 sNw   Y  t ddd}tjt	|d	 | ¡ | ksiJ ‚W d
  ƒ n1 ssw   Y  t |dd}|jd |_tjt	|d	 t| ¡ t | dg¡ƒ W d
  ƒ d
S 1 s£w   Y  d
S )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  rn   rv   zCalpha too small will result in numeric errors, setting alpha = %.1eFr/   N)
r   r(  r   r*   rP   Ún_features_in_r   r:   r!  r"  )Ú
_ALPHA_MINÚbÚalphasr`   r#   r#   r$   Útest_check_alphaž  s0   ÿÿÿÿ"ÿr:  Ú	Estimatorc                 C   sT   t |ƒ\}}| ƒ  ||¡}| |¡}t|dd}|t |¡j }t| |¡|ƒ d S )Nr   r”   )	r-   r3   Úpredict_joint_log_probar   r   Ú
atleast_2drò   r   r8   )r;  r   r+   r,   ÚestÚjllÚ
log_prob_xÚlog_prob_x_yr#   r#   r$   Útest_predict_joint_probaÃ  s   
rB  c                 C   s2   | ƒ   ¡ }| tu r|jjsJ ‚d S |jjrJ ‚d S )N)Ú__sklearn_tags__r   Ú
input_tagsÚcategorical)r;  Útagsr#   r#   r$   Útest_categorical_input_tagÍ  s   
rG  )Frü   rÝ   Únumpyr   r:   Úscipy.specialr   Úsklearn.datasetsr   r   Úsklearn.model_selectionr   r   Úsklearn.naive_bayesr   r   r	   r
   r   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.fixesr   ÚDISCRETE_NAIVE_BAYES_CLASSESÚALL_NAIVE_BAYES_CLASSESr*   r4   r5   r%   r-   rB   rF   rY   ra   rf   rr   ru   rw   rx   r   r…   r   ÚmarkÚparametrizer’   r   r¢   r©   r¯   r²   r¼   rÀ   rÐ   rÛ   rá   rï   rõ   r  r  r  r  r%  r,  r5  r:  rB  rG  r#   r#   r#   r$   Ú<module>   sº    
.	
'	
		
	
1
!



27/G7û	û
ûíþ
ÿþ
	
*(!%
	