
     h                     ~	   d dl Z 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 d dlmZ d dlmZ d dlm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 eeeegZeegz   ZdZej                            de d          Z ej         ddgddgddgddgddgddgg          Z! ej         g d          Z"ej#        $                    d           Z%e%&                    d          Z'e%&                    d          d k    (                    e)          Z*e%+                    dd          Z, ej         g d          Z-d Z.d Z/d Z0d Z1d Z2d  Z3d! Z4d" Z5d# Z6d$ Z7d% Z8d& Z9ej        :                    d'e          d(             Z;ej        :                    d'e          d)             Z<ej        :                    d*e          d+             Z=d, Z>ej        :                    d'e          d-             Z?ej        :                    d'e          d.             Z@ej        :                    d'e          d/             ZAej        :                    d'e          d0             ZBej        :                    d'e          ej        :                    d1d2d3g          ej        :                    d4d2d3g          d5                                     ZCej        :                    d6d7          d8             ZDd9 ZEd: ZFd; ZGd< ZHd= ZIej        :                    d>d? ej         g d@g dAg           ej         g dAg dAg           ej         d dgg           ej         d?d?g          fd?dBg ej         g d@g dAg           ej         g dCg dCg           ej         d d?gg           ej         d?dBg          fd ej         dd gddgg           ej         ddgddgg           ej         d dgg           ej         ddg          gg          dD             ZJej        :                    dEd?dgddBggdFfg          dG             ZKdH ZLdI ZMdJ ZNej        :                    dKe          ej        :                    dLddMdNgdOg          dP                         ZOdQ ZPej        :                    dKe          dR             ZQdS )S    N)	logsumexp)load_digits	load_iris)train_test_split)cross_val_score)assert_almost_equal)assert_array_equal)assert_array_almost_equal)assert_allclose)
GaussianNBBernoulliNB)MultinomialNBComplementNB)CategoricalNBz/The default value for `force_alpha` will changezignore:z:FutureWarning      )r   r   r   r   r   r   )
      )sizer      )   d   )r   r   r   r   r   r   c                  2   t                      } |                     t          t                                        t                    }t          |t                     |                     t                    }|                     t                    }t          t          j
        |          |d           t          j        t          d          5  t                                          t          t          ddg           d d d            d S # 1 swxY w 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
   nplogpytestraises
ValueErrorpartial_fit)clfy_predy_pred_probay_pred_log_probas       Z/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/tests/test_naive_bayes.pytest_gnbr2   -   s(   
 ,,CWWQ]]""1%%Fvq!!!$$Q''L,,Q//bf\224DaHHH
 
W
 
 
 7 7 	  A1v 6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   1DDDc                  ^   t                                          t          t                    } t	          t          j        ddg          dz  | j        d           t                                          t          t                    } t	          | j        
                                d           d S )Nr         @r   r   )r   r!   r"   r#   r
   r'   arrayclass_prior_X1y1sumr-   s    r1   test_gnb_priorr;   C   s    
,,

1a
 
 Cbh1v..4c6FJJJ
,,

2r
"
"Cc.2244a88888    c                     t          j        d          } t                                          t          t
                    }t                                          t          t
          |           }t          |j        |j                   t          |j        |j                   t          
                    t
          j        d                   } t                                          t          t
          |           }t                                          t          t
          ddg| dz            }|                    t          t
          | dz             t          |j        |j                   t          |j        |j                   t                              dt          j        d         d          }t          j        |t          j        d                   }t                                          t          |         t
          |                   }t                                          t          t
          |          }t          |j        |j                   t          |j        |j                   t
          dk                        t           j                  }t                                          t          t
          |          }d	S )
z5Test whether sample weights are properly used in GNB.r   r   sample_weightr   r   r    r?      )	minlengthN)r'   onesr   r!   r"   r#   r
   theta_var_rngrandshaper,   randintbincountastypefloat64)swr-   clf_swclf1clf2indr?   clf_dupls           r1   test_gnb_sample_weightrS   L   s    
B
,,

1a
 
 C\\aB''Fcj&-888ch444 
!'!*		B<<Aq33D<<##Aq1a&Q#OODQa000dk4;777di333 ++aR
(
(CKqwqz:::M||##//H\\aM22Fhov}===hmV[999 !VOOBJ//M
,,

1a}

=
=CCCr<   c                      t          t          j        ddg                    } d}t          j        t
          |          5  |                     t          t                     ddd           dS # 1 swxY 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'   r5   r)   r*   r+   r!   r"   r#   r-   msgs     r1   test_gnb_neg_priorsr[   q   s    
BHdC[11
2
2
2C
'C	z	-	-	-  1                    !A00A47A4c                  T   t          t          j        ddg                                        t          t
                    } t          |                     ddgg          t          j        ddgg          d           t          | j        t          j        ddg                     dS )	z6Test whether the class prior override is properly used333333?gffffff?rV   皙g[9h?gs\?r   N)	r   r'   r5   r!   r"   r#   r
   r%   r6   r:   s    r1   test_gnb_priorsr`   z   s    
BHc3Z00
1
1
1
5
5a
;
;CD$<.))
$&789::	  
 c.#s0D0DEEEE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          |          }|                    | |           d S )Nr   r   r   r   r      r   )
g{Gz?Q?gQ?{Gz?)\(?rg   gQ?rf   rh           )
r   r   r   re   r   r      r   	   r   rV   )r'   r5   r   r!   )r"   rW   Yr-   s       r1   test_gnb_priors_sum_iscloserm      s    
HHHHHFFFFF	
	 	A XQQQRRF
00011A
F
#
#
#CGGAqMMMMMr<   c                      t          t          j        g d                    } d}t          j        t
          |          5  |                     t          t                     ddd           dS # 1 swxY w Y   dS )z`Test whether an error is raised if the number of prior is different
    from the number of class)      ?ro   ro   ro   rV   -Number of priors must match number of classesr   NrX   rY   s     r1   test_gnb_wrong_nb_priorsrq      s     BH%=%=%=>>
?
?
?C
9C	z	-	-	-  1                 r\   c                      t          t          j        ddg                    } d}t          j        t
          |          5  |                     t          t                     ddd           dS # 1 swxY w Y   dS )z?Test if an error is raised if the sum of prior greater than onerU         ?rV   z!The sum of the priors should be 1r   NrX   rY   s     r1   test_gnb_prior_greater_onert      s    
BHc3Z00
1
1
1C
-C	z	-	-	-  1                 r\   c                      t          t          j        ddg                    } |                     t          t
                     |                     ddgg          t          j        dg          k    sJ dS )z@Test if good prediction when class prior favor largely one classg{Gz?gGz?rV   r_   r   N)r   r'   r5   r!   r"   r#   r$   r:   s    r1   test_gnb_prior_large_biasrv      sd    
BHdD\22
3
3
3CGGAqMMM;;t~&&"(A3--777777r<   c                      d} d}d}t          j        dt          j        d         f          }t	          j        | |||          \  }}||k    sJ ||k    sJ dS )z4Test when the partial fit is called without any datar   ri   rs   r   r   N)r'   emptyr"   rH   r   _update_mean_variance)prev_pointsmeanvarx_emptytmeantvars         r1   "test_gnb_check_update_with_no_datar      sd     KD
Ch171:''G2;c7SSKE4D====3;;;;;;r<   c                  6   t                                          t          t                    } t                                          t          t          t          j        t                              }t          | j        |j                   t          | j	        |j	                   t          | j
        |j
                   t                                          t          dd dd d f         t          dd d         t          j        t                              }|                    t          dd d         t          dd d                    t          | j        |j                   t          | j	        |j	                   t          | j
        |j
                   d S )Nr   r   r   )r   r!   r"   r#   r,   r'   uniquer
   rD   rE   r6   )r-   clf_pfclf_pf2s      r1   test_gnb_partial_fitr      s)   
,,

1a
 
 C\\%%aBIaLL99Fcj&-888ch444c.0CDDDll&&qAqqqz1QTT7BIaLLIIG!$Q$14a4)))cj'.999ch555c.0DEEEEEr<   c                      t                      } | j        | j        cfddD             }t          |d         |d                    t          |d         |d                    d S )Nc                     g | ]=}t                                          |z                                |z            >S  )r   r!   r$   ).0fr"   r#   s     r1   
<listcomp>z9test_gnb_naive_bayes_scale_invariance.<locals>.<listcomp>   sC    RRRAjllq1ua((00Q77RRRr<   )绽|=r   g    _Br   r   r   )r   datatargetr	   )irislabelsr"   r#   s     @@r1   %test_gnb_naive_bayes_scale_invariancer      so    ;;D9dkDAqRRRRRAQRRRFvay&),,,vay&),,,,,r<   DiscreteNaiveBayesc                      |                                  t          t                    }t          t	          j        t	          j        g d          dz            |j        d           d S )N)r   r   r   r4   r   )r!   X2y2r
   r'   r(   r5   class_log_prior_)r   r-   s     r1   test_discretenb_priorr      se     



"
"2r
*
*C
rx			""S())3+?    r<   c                     |             }|                     ddgddgddggg d            |             }|                    ddgddgddggg dddg           t          |j        |j                   | t          u rKt          t          |j                            D ](}t          |j        |         |j        |                    )nt          |j        |j                    |             }|                    ddggdgddg           |                    ddggdg           |                    ddggdg           t          |j        |j                   | t          u rxt          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                     d S t          |j        |j                   d S )Nr   r   r   r   r   r   axisr   )r!   r,   r	   class_count_r   rangelencategory_count_feature_count_rH   r'   r9   r5   )r   rO   rP   iclf3s        r1   test_discretenb_partial_fitr      s   DHHq!fq!fq!f%yyy111Dq!fq!fq!f-yyy1a&IIIt($*;<<<]**s4/0011 	Q 	QAt3A68LQ8OPPPP	Q 	4.0CDDDDq!fXsQF333q!fXs###q!fXs###t($*;<<<]** s4/0011 	 	A$Q'-t/CA/F/L   t+A.Q777t+A.Q777    	4/215rxA7G7GHHH 	4/215rxA7G7GHHH 	4/215rxA7G7GHHH 	4/215rxA7G7GHHHHH4.0CDDDDDr<   
NaiveBayesc                    t          j        t          d          5   |                                 t          t
                     d d d            n# 1 swxY w Y    |             }|                    t          t
          t          j        t
                               t          j        t          d          5  |                    t          t
          t          j        d                     d d d            d S # 1 swxY w Y   d S )Nz8classes must be passed on the first call to partial_fit.r   r   .is not the same as on last call to partial_fit*   )	r)   r*   r+   r,   r   r   r'   r   arange)r   r-   s     r1   $test_NB_partial_fit_no_first_classesr     sd    
T
 
 
 ) ) 	
  R((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) *,,COOBBIbMMO222	J
 
 
 7 7 	B	"6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s#   )AAA:5C<<D D 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 ]\  }} |                                ||          }|                    |d	d                    d
k    sJ |                    |d         g          j        dk    sJ t          |                    |d d
                                       d          t          j
        ddg          d           g d}t          t          t          g| |g          D ]%\  }} |                                ||          }|                    |dd                   j        dk    sJ |                    |d d
                   j        dk    sJ t          t          j        |                    |d         g                    d           t          t          j        |                    |d	         g                    d           t          t          j        t          j        |j                            d           'd S )N)r   r   r   r   r   r   )r   r   r   r   r   r   re   )r   r   r   r   r   )r   r   r   rs   r   r   r   r   )r   r   )r   r   )zipr   r   r!   r$   r%   rH   r
   r9   r'   r5   r   expr   )X_bernoulliX_multinomialr#   r   r"   r-   s         r1   test_discretenb_predict_probar   %  sn   
 ;;			;;;7KVaVaV,M 			A!$	m${M&B" " 
 
A ! ""&&q!,,{{1RSS6""a''''  !A$((.&8888!ae$$((a(00"(C:2F2F	
 	
 	
 	

 			A!$	m${M&B" " E EA ! ""&&q!,,  1Q3((.&8888  2A2''-7777BF3#4#4adV#<#<==qAAABF3#4#4aeW#=#=>>BBBBF26#*>#?#?@@!DDDDE Er<   c                      |             }|                     d           |                    dgdgdggg d           t          j        |j                  }t          |t          j        ddg                     d S )NF)	fit_priorr   r   r   r   r         ?)
set_paramsr!   r'   r   r   r
   r5   )r   r-   priors      r1   test_discretenb_uniform_priorr   F  s    
 


CNNUN###GGaS1#sOYYY'''F3'((EeRXsCj%9%9:::::r<   c                 *    | ddg          }|                     dgdgdggg d           t          j        |j                  }t	          |t          j        ddg                     d}t          j        t          |          5  |                     dgdgdggg d	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  |	                    dgdggddgg d           d d d            d S # 1 swxY w Y   d S )Nr   class_priorr   r   r   rp   r   r   r   r   r   r   )
r!   r'   r   r   r
   r5   r)   r*   r+   r,   )r   r-   r   rZ   s       r1   test_discretenb_provide_priorr   R  s    
#s
4
4
4CGGaS1#sOYYY'''F3'((EeRXsCj%9%9::: :C	z	-	-	- , ,!qcA3+++, , , , , , , , , , , , , , , ;C	z	-	-	- ? ?!qc
QFIII>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s$   B22B69B6!DDDc                 |   t                      }t          |j        |j        dd          \  }}}}d g dfD ]} | |          }|                    |j        |j                    | |          }|                    ||g d           |                    ||           t          |j        |j                   d S )N皙?i  )	test_sizerandom_state)r^   r^   r   r   r   r   )r   r   r   r   r!   r,   r
   r   )	r   r   
iris_data1
iris_data2iris_target1iris_target2r   clf_fullclf_partials	            r1   .test_discretenb_provide_prior_with_partial_fitr   e  s    
 ;;D9I	4;#C: : :6J
L, ( 
 
%%%888TY,,,((U;;;
L)))LLL
L999!%{'C	
 	
 	
 	

 
r<   c                    g dg dg dg dg}g d}t          j        g dt           j                  }||                                z  } |                                 |||          }t          |                    |          g d            |             }|                    |d d	         |d d	         g d
|d d	                    |                    |d	d         |d	d         |d	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   )dtyper>   )r   r   r   r   r   r   r@   r   )r'   r5   rL   r9   r!   r	   r$   r,   )r   r"   r#   r?   r-   s        r1   (test_discretenb_sample_weight_multiclassr   z  ss    											A 	AH\\\<<<M]&&(((M




"
"1a}
"
E
ECs{{1~~|||444 


COOAbqbE1RaR5)))=QSRSQSCTOUUUOOAacFAacF-!2DOEEEOOAabbE1QRR5abb0AOBBBs{{1~~|||44444r<   use_partial_fitFTtrain_on_single_class_yc                 N   g dg dg dg}g d}|r|d d         }|d d         }t          t          t          |                              }t          |          } |             }|r|                    |||           n|                    ||           |                    |d d                   |d         k    sJ g d	}|D ]\}	t          ||	d           }
|
t          |
t          j
                  r|
j        d         |k    sJ D|
D ]}|j        d         |k    sJ ]d S )
Nr   r   r   )r   r   r   r   r   r   r   )classes_r   r   r   feature_log_prob_)sortedlistsetr   r,   r!   r$   getattr
isinstancer'   ndarrayrH   )r   r   r   r"   r#   r    num_classesr-   attribute_namesattribute_name	attributeelements               r1   )test_discretenb_degenerate_one_class_caser     s|   " 
IIIyyy)A		A crcFcrcFT#a&&\\""Gg,,K



C 1g....1;;q!u1%%%%  O * 
7 
7C66	i,, 	7?1%44444 % 7 7}Q';666667
7 
7r<   kind)densesparsec                    | dk    rt           }n*| dk    r$t          j                            t                     }t	                      }d}t          j        t          |          5  |                    | t                     d d d            n# 1 swxY w Y   |                    |t                    
                    |          }t          |t                     |                    |          }|                    |          }t          t          j        |          |d           t	                      }|                    |d d         t          d d         t          j        t                               |                    |dd         t          dd                    |                    |dd          t          dd                     |
                    |          }t          |t                     |                    |          }	|                    |          }
t          t          j        |	          |
d           t          |	|           t          |
|           t	                      }|                    |t          t          j        t                               |
                    |          }t          |t                     |                    |          }|                    |          }t          t          j        |          |d           t          ||           t          ||           d S )	Nr   r   z!Negative values in data passed tor   r   r   r   r   )r   scipyr   
csr_matrixr   r)   r*   r+   r!   r   r$   r	   r%   r&   r
   r'   r(   r,   r   )r   r"   r-   rZ   r.   r/   r0   rP   y_pred2y_pred_proba2y_pred_log_proba2r   y_pred3y_pred_proba3y_pred_log_proba3s                  r1   	test_mnnbr     s    w			L##B'' //C
-C	z	-	-	-  B              WWQ^^##A&&Fvr""" $$Q''L,,Q//bf\224DaHHH ??DQrrUBrrFBIbMM:::QqsVR!W%%%QqrrUBqrrF###ll1ooGw###&&q))M..q11bf]335FJJJm\:::/1ABBB ??DQBIbMM222ll1ooGw###&&q))M..q11bf]335FJJJm\:::/1ABBBBBs   $BBBc                  f   t          j        ddgddgg          } t          j        ddg          }t                      }t          j                    5  t          j        dt                     |                    | |g d           d d d            n# 1 swxY w Y   |                    ddgg          dk    sJ |                    ddgg          dk    sJ |                    ddgg          dk    sJ t          j                    5  t          j        dt                     |                    ddggdg           d d d            n# 1 swxY w Y   |                    ddgg          dk    sJ |                    ddgg          dk    sJ |                    ddgg          dk    sJ d S )Nr   r   errorr   r   r   )	r'   r5   r   warningscatch_warningssimplefilterRuntimeWarningr,   r$   )r"   r#   r-   s      r1   !test_mnb_prior_unobserved_targetsr     s@    	1a&1a&!""A
!QA
//C		 	"	" 1 1g~6661iii0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 ;;Ax  A%%%%;;Ax  A%%%%;;Ax  A%%%% 
	 	"	" ' 'g~666!Q1#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '
 ;;Ax  A%%%%;;Ax  A%%%%;;Ax  A%%%%%%s$   5BBB5EEEc                     t          j        g dg dg dg dg          } t          j        g d          }t          d          }|                    | |           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	          |	                    |          |           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   rs   alphag      ?ro   )r   g?皙?r   r   r   )UUUUUU?UUUUUU?r   r   r   r   g@fg;u?gy?)
r'   r5   r   r!   r
   r   r   r   r9   r%   )r"   rl   r-   r   feature_probX_testunnorm_predict_probar%   s           r1   test_bnbr     s_    				///1C1C1CEWEWEWX	 	A
 	A C
 
 
 CGGAqMMM (D$<((KbfS%9::KHHH 8***BBB	
 L bfS%:;;\JJJ X)))*++F 8&:<O%P$QRR(262F+G+GGMc//77GGGGGr<   c                     t          j        g dg dg dg dg dg          } t          j        g d          }t          d          }|                    | |           t          j        |j        dz             }t          j        t          j        |j        dz             | j        d	         d	f          j	        }t          |j        ||z
             d S )
N)r   r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   rs   r   rU   r   )r'   r5   r   r!   r(   r   tiler   rH   Tr
   r   )r"   rl   r-   numdenoms        r1   test_bnb_feature_log_probr  I  s     	)))YYY			999iiiHIIA
!!A C
 
 
 CGGAqMMM &#c)
*
*CGBF3+c122QWQZODDFE c3cEkCCCCCr<   c                  j   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 ]F}t          j        ||                    ||<   ||         ||                                         z  ||<   Gt          d	
          }t          j	        d          }t          j        t          |          5  |                    |  |           d d d            n# 1 swxY w Y   |                    | |           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          }|                    | |           t%          |j        |           d S )Nr   r   r   r   r   )qq?qq?r
  r	  r	  r
  )UUUUUU?r   UUUUUU?r  r  r  r   rs   r   z8Negative values in data passed to ComplementNB (input X)r   )r   r   r   r   r   r   r   r   )r   re   r   r   r   r   T)r   norm)r'   r5   zerosrH   r   r(   r9   r   reescaper)   r*   r+   r!   r	   r   r   feature_all_r
   r   )r"   rl   thetaweightsnormed_weightsr   r-   rZ   feature_countclass_countfeature_alls              r1   test_cnbr  `  s    				///1C1C1CEWEWEWX	 	A
 	A H    	
 E* hu{##GXek**N1XX : :fU1X&&&
#AJ)9)99q S
!
!
!C
)N
O
OC	z	-	-	-  A               GGAqMMM H0002D2D2DEFFMs)=999(Aq6""Ks'555(---..Ks'555c3W===
St
,
,
,CGGAqMMMc3^DDDDDs   D<<E E c            	         t                      } |                     t          t                                        t                    }t          |t                     t          j        ddgddgg          }t          j        ddg          }t          dd          } |                     ||           t          | j        t          j        ddg                     t          j        d	d
gg          }t          j        dg          }t          j
        d          }t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     ||           d d d            n# 1 swxY w Y   t          j        ddgg          }t          j        ddgg          }|                                }	t          |                     |          ||	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          } |                     ||           t          |                     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          } |                     |||           t          |                     t          j        d	d	gg                    t          j        dg                     t          | j        t          j        ddg                     d S )Nr   re   r   r   F)r   r   r   r   r   r   z9Negative values in data passed to CategoricalNB (input X)r   r	  qq?r   )rs   r^   r   g-C6?)r   r   r   皙?r>   )r   r!   r   r   r$   r	   r'   r5   n_categories_r  r  r)   r*   r+   r9   r
   r%   r   r   rH   )r-   r.   X3y3r"   r#   	error_msgX3_testbayes_numeratorbayes_denominatorfactorr?   s               r1   test_categoricalnbr$    s   
//CWWR__$$R((Fvr"""	Aq6Aq6"	#	#B	1a&		B
a5
1
1
1CGGBOOOs("(Aq6*:*:;;; 	1b'A
!A	UVVI	z	3	3	3  A              	z	3	3	3  1               hAx  G h >?@@O'++--'""O6G$G  
 s"##rx{2222 	1a&1a&1a&1a&122A
A
a5
1
1
1CGGAqMMMs{{28aVH#5#566!FFFs("(Aq6*:*:;;;' @ @Hq!fq!fq!fq!f566H\\\""11F:!u5551M2223;;rx!Q'9'9::BHaSMMJJJ3,bh1v.>.>????@ @s$   7EE E?F""F&)F&zDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   r  re   )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        \  }	}
t          |	|           t          |
|           |                    |          }t          ||           t          |j        |           d S )Nr   r   r   Fr   r   min_categories)r'   r5   r   r!   r   r	   r$   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predictionss               r1   &test_categoricalnb_with_min_categoriesr2    s    D X1v1v1v1v>??NXlll++N(A3--
a5
P
P
PCGGNN+++,Hhx...x...++e$$K{$788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  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r   Fr&  r   )r'   r5   r   r)   r*   r+   r!   )r'  r  r"   r#   r-   s        r1   (test_categoricalnb_min_categories_errorsr4    s     	1a&1a&1a&1a&122A
A
a5
P
P
PC	z	3	3	3  1                 s   $BBBc                     t          j        ddgddgg          } t          j        ddg          }t          d          }d}t          j        t
          |          5  |                    | |ddg           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                    | |           d d d            n# 1 swxY w Y   t          j        ddgddgg          }t          |	                    |           |           t          d          }t          j        t
          |          5  |                    | |ddg           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                    | |           d d d            n# 1 swxY w Y   t          j        dd	gddgg          }t          |	                    |           |           t          d          }t          j        t
          |          5  |                    | |           d d d            n# 1 swxY w Y   t          j        d
dgdd
gg          }t          |	                    |           |           t          j                            |           } t          d          }t          j        t
          |          5  |                    | |           d d d            n# 1 swxY w Y   t          j        ddgddgg          }t          |	                    |           |           t          d          }t          j        t
          |          5  |                    | |           d d d            n# 1 swxY w Y   t          j        dd	gddgg          }t          |	                    |           |           d S )Nr   r   ri   r   zFalpha too small will result in numeric errors, setting alpha = 1.0e-10r   r   r   r   rs   )r'   r5   r   r)   warnsUserWarningr,   r!   r
   r%   r   r   r   r   r   )r"   r#   nbrZ   probs        r1   
test_alphar:    s:   
1a&1a&!""A
!QA	3			B
RC	k	-	-	- - -
q!aV,,,- - - - - - - - - - - - - - -	k	-	-	-  
q!              8aVaV$%%Db..q114888	S	!	!	!B	k	-	-	- - -
q!aV,,,- - - - - - - - - - - - - - -	k	-	-	-  
q!              8gw'!Q011Db..q114888	S	!	!	!B	k	-	-	-  
q!              8c3Z#s,--Db..q114888 	""A	3			B	k	-	-	-  
q!              8aVaV$%%Db..q114888	S	!	!	!B	k	-	-	-  
q!              8gw'!Q011Db..q11488888s~   BB	B	+CCCE((E,/E,F11F58F5$IIIK<<L L /NNNc                  ~   t          j        ddgddgg          } t          j        ddg          }t          j        ddg          }t          |          }|                    | |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	          |                    |           |           t          j        ddg          }t          |          }d}t          j	        t          |          5  |                    | |           d d d            n# 1 swxY w Y   d}t          j        |dz  dg          }t          |          }|                    | |ddg           t	          |                                |dgd           t          j        g d          }t          |          }d}t          j	        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   g333333?grq?r  gS?gևX?rs   r_   z+All values in alpha must be greater than 0.r   r      )decimal)rs   rU   g      @z7When alpha is an array, it should contains `n_features`)r'   r5   r   r,   r
   r   r(   r%   r)   r*   r+   r!   _check_alpha)	r"   r#   r   r8  r   r9  m_nbexpected_msg	ALPHA_MINs	            r1   test_alpha_vectorrB  F  s   
1a&1a&!""A
!QA HaVE	U	#	#	#BNN1a!QN((( 8eU^eU^<==Lb2BF<4H4HIII 8eU^gw%7899Db..q114888 Hc4[!!Eu%%%D@L	z	6	6	6  A               IHi!mS)**Eu%%%DQAq6***d//11Is3CRPPPP H___%%Eu%%%DLL	z	6	6	6  A                 s$   2EEEH22H69H6c                     t          d          \  } }t          j        |dk    |dk              }| |         ||         }}t          t	          d          | |d          }|                                dk    sJ t          t	          d          ||d          }|                                d	k    sJ t          t          d          | d
k    |d          }|                                dk    sJ t          t          d          |d
k    |d          }|                                dk    sJ t          t                      | |d          }|                                dk    sJ t          t          d          | |d          }|                                dk    sJ t          t                      ||d          }|                                dk    sJ d S )NT)
return_X_yr   r   r   r   )cvgQ?gGz?re   g(\?gq=
ףp?gp=
ף?r  )var_smoothingg{Gz?)r   r'   
logical_orr   r   r{   r   r   )r"   r#   
binary_3v8X_3v8y_3v8scoress         r1   test_check_accuracy_on_digitsrL  n  s    $'''DAqqAvqAv..JZ=!J-5E ]444arBBBF;;==4]444eUrJJJF;;==4 [r222AE1DDDF;;==4[r222EAIuLLLF;;==4 Z\\1aB777F;;==4Zc:::AqRHHHF;;==4Z\\5%B???F;;==4r<   	Estimatorr   r  gdy=g-q=c                     | t           u r)t          |t                    rt          j        d           t          j        ddgddgg          }t          j        ddg          }d}d} | |	          } | |d
          }t          j        |          |k     rJt          j        t          |          5  |
                    ||           d d d            n# 1 swxY w Y   n|
                    ||           |
                    ||           d S )Nz7CategoricalNB does not support array-like alpha values.r   r   r   re   r   r   z9The default value for `force_alpha` will change to `True`r   Tr   force_alphar   )r   r   r   r)   skipr'   r5   minr6  FutureWarningr!   )rM  r   r"   r#   	alpha_minrZ   est	est_forces           r1   test_force_alpha_deprecationrW    sJ    M!!j&=&=!MNNN
1a&1a&!""A
!QAI
EC
)%
 
 
 C	4888I	ve}}y  \-s333 	 	GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1MM!Qs   3CCCc                     d} t          dd          }|                                dk    sJ t          j        ddg          }t          |d          }|j        d         |_        t          |                                |           d| z  }t          dd          }t          j        t          |	          5  |                                | k    sJ 	 d
d
d
           n# 1 swxY w Y   t          d          }t          j        t          |	          5  |                                | k    sJ 	 d
d
d
           n# 1 swxY w Y   t          |d          }|j        d         |_        t          j        t          |	          5  t          |                                t          j        | dg                     d
d
d
           d
S # 1 swxY w Y   d
S )zThe provided value for alpha must only be
    used if alpha < _ALPHA_MIN and force_alpha is True.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/10772
    r   r   TrO  ri   rs   zCalpha too small will result in numeric errors, setting alpha = %.1eFr   Nr   )
r   r>  r'   r5   rH   n_features_in_r	   r)   r6  r7  )
_ALPHA_MINbalphasrZ   s       r1   test_check_alphar]    s    J!...A>>q    XsCj!!F&d333A|AAq~~''000 	N
	  	!///A	k	-	-	- . .~~:-----. . . . . . . . . . . . . . . 	!A	k	-	-	- . .~~:-----. . . . . . . . . . . . . . . 	&e444A|AA	k	-	-	- J J1>>++RXz36G-H-HIIIJ J J J J J J J J J J J J J J J J Js6   :C""C&)C&E  EE	7GGGc                 4    |                                  t          t                    }|                    t                    }t	          |d          }|t          j        |          j        z
  }t          |	                    t                    |           d S )Nr   r   )
r!   r   r   predict_joint_log_probar   r'   
atleast_2dr  r   r&   )rM  rU  jll
log_prob_xlog_prob_x_ys        r1   test_predict_joint_probard    s{    
)++//"b
!
!C

%
%b
)
)C3Q'''Jz2244LC))"--|<<<<<r<   )Rr  numpyr'   scipy.sparser   r)   r   scipy.specialr   sklearn.datasetsr   r   sklearn.model_selectionr   r   sklearn.utils._testingr   r	   r
   r   sklearn.naive_bayesr   r   r   r   r   DISCRETE_NAIVE_BAYES_CLASSESALL_NAIVE_BAYES_CLASSESrZ   markfilterwarnings
pytestmarkr5   r"   r#   randomRandomStaterF   normalr7   rK   intr8   rI   r   r   r2   r;   rS   r[   r`   rm   rq   rt   rv   r   r   r   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  r2  r4  r:  rB  rL  rW  r]  rd  r   r<   r1   <module>rv     s   				           # # # # # # 3 3 3 3 3 3 3 3 4 4 4 4 4 4 3 3 3 3 3 3 6 6 6 6 6 6 5 5 5 5 5 5 < < < < < < 2 2 2 2 2 2 7 7 7 7 7 7 7 7 ; ; ; ; ; ; ; ; - - - - - - +]L-X 6*E 7[''(E#(E(E(EFF
 BHr2hR2r(QFQFQFCDDBH   	iAZZWZ	jjrja'',, 	[[[""RX   !!7 7 7,9 9 9"> "> ">J  F F F  .    8 8 8	 	 	F F F- - - -/KLL  ML -/KLL.E .E ML.Eb '>??7 7 @?7 E E EB -/KLL; ; ML; -/KLL? ? ML?$ -/KLL
 
 ML
( -/KLL5 5 ML5, -/KLL*UDM::2UDMBB/7 /7 CB ;: ML/7d !4553C 3C 653Cl& & &:,H ,H ,H^D D D.DE DE DEN2@ 2@ 2@j J BHiii+,,BHiii+,,BHq!fXBHaV	
 FBHiii+,,BHlllLLL122BHq!fXBHaV	
 1a&1a&)**1a&1a&)**1a&""!Q  ' >= =? >=" a&1a&	?@   '9 '9 '9T% % %P     D &BCC1sElE":;;  <; DC""J "J "JJ &=>>= = ?>= = =r<   