
    /ii                     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 d dl	m
Z
mZ d dlmZmZ d dlmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZmZmZmZ d d	l m!Z! eeeegZ"e"egz   Z# e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&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4ej5        6                    de"          d             Z7ej5        6                    de"          d             Z8ej5        6                    d e#          d!             Z9d" Z:ej5        6                    de"          d#             Z;ej5        6                    de"          d$             Z<ej5        6                    de"          d%             Z=ej5        6                    de"          d&             Z>ej5        6                    de"          ej5        6                    d'd(d)g          ej5        6                    d*d(d)g          d+                                     Z?ej5        6                    d,d-          ej5        6                    d.e!          d/                         Z@d0 ZAd1 ZBd2 ZCd3 ZDd4 ZEej5        6                    d5d6 ej$        g d7g d8g           ej$        g d8g d8g           ej$        d dgg           ej$        d6d6g          fd6d9g ej$        g d7g d8g           ej$        g d:g d:g           ej$        d d6gg           ej$        d6d9g          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          d;             ZFej5        6                    d<d6dgdd9ggd=fg          d>             ZGej5        6                    d.e!          d?             ZHd@ ZIdA ZJdB ZKej5        6                    dCe#          dD             ZLej5        6                    dCe#          dE             ZMej5        6                    dFd(d)g          ej5        6                    dGd(d)g          ej5        6                    dH e            eI          dJ                                     ZNdS )K    N)	logsumexp)config_context)load_digits	load_iris)cross_val_scoretrain_test_split)BernoulliNBCategoricalNBComplementNB
GaussianNBMultinomialNB)_convert_to_numpy_get_namespace_device_dtype_idsdevice)yield_namespace_device_dtype_combinations)_array_api_for_testsassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)CSR_CONTAINERS      )r   r   r   r   r   r   c                     t           j                            |           }|                    d          }|                    d          dk                        t
                    }||fS )N)
      sizer   r   )nprandomRandomStatenormalastypeint)global_random_seedrngX1y1s       d/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/tests/test_naive_bayes.pyget_random_normal_x_binary_yr,   )   sZ    
)

 2
3
3C		!	!B
**"*


!	)	)#	.	.Br6M    c                     t           j                            |           }|                    dd          }t          j        g d          }||fS )N   )   d   r   )r   r   r   r   r   r   )r!   r"   r#   randintarray)r'   r(   X2y2s       r+   $get_random_integer_x_three_classes_yr6   1   sN     )

 2
3
3C	QX	&	&B	$$$	%	%Br6Mr-   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   r!   logpytestraises
ValueErrorpartial_fit)clfy_predy_pred_probay_pred_log_probas       r+   test_gnbrL   :   s(   
 ,,CWWQ]]""1%%Fvq!!!$$Q''L,,Q//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                 n   t                                          t          t                    }t	          t          j        ddg          dz  |j        d           t          |           \  }}t                                          ||          }t	          |j        	                                d           d S )Nr         @r8   r   )
r   r=   r>   r?   r   r!   r3   class_prior_r,   sum)r'   rH   r)   r*   s       r+   test_gnb_priorrQ   P   s    
,,

1a
 
 Cbh1v..4c6FJJJ)*<==FB
,,

2r
"
"Cc.2244a88888r-   c                    t          j        d          }t                                          t          t
                    }t                                          t          t
          |          }t          |j        |j                   t          |j        |j                   t           j	        
                    |           }|                    t
          j        d                   }t                                          t          t
          |          }t                                          t          t
          ddg|dz            }|                    t          t
          |dz             t          |j        |j                   t          |j        |j                   |                    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.r0   r   sample_weightr   r   r<   rT      )	minlengthN)r!   onesr   r=   r>   r?   r   theta_var_r"   r#   randshaperG   r2   bincountr%   float64)
r'   swrH   clf_swr(   clf1clf2indrT   clf_dupls
             r+   test_gnb_sample_weightre   Z   s    
B
,,

1a
 
 C\\aB''Fcj&-888ch444 )

 2
3
3C	!'!*		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-negativer9   N	r   r!   r3   rD   rE   rF   r=   r>   r?   rH   msgs     r+   test_gnb_neg_priorsrm      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?rh   皙g[9h?gs\?r8   N)	r   r!   r3   r=   r>   r?   r   rA   rO   rH   s    r+   test_gnb_priorsrs      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?)\(?rz   gQ?ry   r{           )
r   r   r   rx   r/   r0      r8   	   r   rh   )r!   r3   r   r=   )r>   ri   YrH   s       r+   test_gnb_priors_sum_iscloser      s    
HHHHHFFFFF	
	 	A 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)      ?r   r   r   rh   -Number of priors must match number of classesr9   Nrj   rk   s     r+   test_gnb_wrong_nb_priorsr      s     BH%=%=%=>>
?
?
?C
9C	z	-	-	-  1                 rn   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 onerg         ?rh   z!The sum of the priors should be 1r9   Nrj   rk   s     r+   test_gnb_prior_greater_oner      s    
BHc3Z00
1
1
1C
-C	z	-	-	-  1                 rn   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?rh   rq   r   N)r   r!   r3   r=   r>   r?   r@   rr   s    r+   test_gnb_prior_large_biasr      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 datar1   r|   r   r   r   N)r!   emptyr>   r\   r   _update_mean_variance)prev_pointsmeanvarx_emptytmeantvars         r+   "test_gnb_check_update_with_no_datar      sd     KD
Ch171:''G2;c7SSKE4D====3;;;;;;r-   c                 ^   t                               |           }t                                          |t                    }t                                          |t          t          j        t                              }dD ]R}t          ||          }t          ||          }|j	        |j	        cxk    r|j	        k    sn J t          ||           St                                          |dd dd d f         t          dd d         t          j        t                              }|                    |dd d         t          dd d                    dD ]R}t          ||          }t          ||          }|j	        |j	        cxk    r|j	        k    sn J t          ||           Sd S )N)rO   rY   rZ   r   r   r   )r>   r%   r   r=   r?   rG   r!   uniquegetattrdtyper   )	global_dtypeX_rH   clf_pffitted_attrclf_attrclf_pf_attrclf_pf2clf_pf2_attrs	            r+   test_gnb_partial_fitr      s   	
,		B
,,

2q
!
!C\\%%b!RYq\\::F9 9 93,,fk22~!2>>>>bh>>>>>>!(K8888ll&&r!$Q$'{AaddGRYq\\JJG14a4!ADqD'***9 : :3,,w44~!3????rx??????!(L9999	: :r-   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     r+   
<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     @@r+   %test_gnb_naive_bayes_scale_invariancer      so    ;;D9dkDAqRRRRRAQRRRFvay&),,,vay&),,,,,r-   DiscreteNaiveBayesc                     t          |          \  }} |                                 ||          }t          t          j        t          j        g d          dz            |j        d           d S )N)r   r   r   rN   r8   )r6   r=   r   r!   rC   r3   class_log_prior_)r   r'   r4   r5   rH   s        r+   test_discretenb_priorr      sw     22DEEFB




"
"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=   rG   r   class_count_r
   rangelencategory_count_feature_count_r\   r!   rP   r3   )r   ra   rb   iclf3s        r+   test_discretenb_partial_fitr      s   DHHq!fq!fq!f%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          |          \  }}t          j        t          d          5   |                                 ||           d d d            n# 1 swxY w Y    |             }|                    ||t          j        |                     t          j        t          d          5  |                    ||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.r9   r;   .is not the same as on last call to partial_fit*   )r6   rD   rE   rF   rG   r!   r   arange)r   r'   r4   r5   rH   s        r+   $test_NB_partial_fit_no_first_classesr   *  sv    22DEEFB	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3+C++C/2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 ]\  }} |                                ||          }|                    |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   r1   r   r   r   r   )r   r1   r   r   r   r   rx   )r   r   r   r   r   )r   r   r   r   r0   r   r   r   )r   r   )r   r   )zipr	   r   r=   r@   rA   r\   r   rP   r!   r3   r   expr   )X_bernoulliX_multinomialr?   r   r>   rH   s         r+   test_discretenb_predict_probar   =  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   r3   )r   rH   priors      r+   test_discretenb_uniform_priorr   ^  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   r   r9   r   r   r   r   r;   )
r=   r!   r   r   r   r3   rD   rE   rF   rG   )r   rH   r   rl   s       r+   test_discretenb_provide_priorr   j  s    
#s
4
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)rp   rp   r   r   r   r;   )r   r   r   r   r=   rG   r   r   )	r   r   
iris_data1
iris_data2iris_target1iris_target2r   clf_fullclf_partials	            r+   .test_discretenb_provide_prior_with_partial_fitr   }  s    
 ;;D9I	4;#C: : :6J
L, ( 
 
%%%8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   )r   rS   )r   r   r   r   r   r   rU   r   )r!   r3   r^   rP   r=   r   r@   rG   )r   r>   r?   rT   rH   s        r+   (test_discretenb_sample_weight_multiclassr     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   rG   r=   r@   r   
isinstancer!   ndarrayr\   )r   r   r   r>   r?   r<   num_classesrH   attribute_namesattribute_name	attributeelements               r+   )test_discretenb_degenerate_one_class_caser     s|   " 
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sparsecsr_containerc                    t          |          \  }}| dk    r|}n| dk    r ||          }t                      }d}t          j        t          |          5  |                    | |           d d d            n# 1 swxY w Y   |                    ||                              |          }t          ||           |                    |          }	|	                    |          }
t          t          j        |	          |
d           t                      }|                    |d d         |d d         t          j        |                     |                    |dd         |dd                    |                    |dd          |dd                     |                    |          }t          ||           |                    |          }|	                    |          }t          t          j        |          |d           t          ||	           t          ||
           t                      }|                    ||t          j        |                     |                    |          }t          ||           |                    |          }|	                    |          }t          t          j        |          |d           t          ||	           t          ||
           d S )	Nr   r   z!Negative values in data passed tor9   r8   r   r;   r/   )r6   r   rD   rE   rF   r=   r@   r   rA   rB   r   r!   rC   rG   r   )r   r'   r   r4   r5   r>   rH   rl   rI   rJ   rK   rb   y_pred2y_pred_proba2y_pred_log_proba2r   y_pred3y_pred_proba3y_pred_log_proba3s                      r+   	test_mnnbr     s
    22DEEFBw			M" //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   A<<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!   r3   r   warningscatch_warningssimplefilterRuntimeWarningrG   r@   )r>   r?   rH   s      r+   !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   r   alphag      ?r   )r   g?皙?r   r   r  )UUUUUU?UUUUUU?r  r  r  r  g@fg;u?gy?)
r!   r3   r	   r=   r   r   r   r   rP   rA   )r>   r   rH   r   feature_probX_testunnorm_predict_probarA   s           r+   test_bnbr  4  s_    				///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   r   r  rg   r   )r!   r3   r	   r=   rC   r   tiler   r\   Tr   r   )r>   r   rH   numdenoms        r+   test_bnb_feature_log_probr  c  s     	)))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   r   r  z8Negative values in data passed to ComplementNB (input X)r9   )r   r   r   r   r   r   r   r   )r   rx   r   r   r   r   T)r  norm)r!   r3   zerosr\   r   rC   rP   r   reescaperD   rE   rF   r=   r   r   r   feature_all_r   r   )r>   r   thetaweightsnormed_weightsr   rH   rl   feature_countclass_countfeature_alls              r+   test_cnbr.  z  s    				///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          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   rx   r   r/   F)r  r   r   r0   r   r   z9Negative values in data passed to CategoricalNB (input X)r9   r  qq?r   )r   rp   r/   g-C6?)r   r   r   皙?rS   )r
   r6   r=   r@   r   r!   r3   n_categories_r%  r&  rD   rE   rF   rP   r   rA   r   r   r\   )r'   rH   r4   r5   rI   X3y3r>   r?   	error_msgX3_testbayes_numeratorbayes_denominatorfactorrT   s                  r+   test_categoricalnbr:    s%   
//C12DEEFB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$   5EEE=F  F$'F$zDmin_categories, exp_X1_count, exp_X2_count, new_X, exp_n_categories_r   )r   r   r   r  rx   )r   r   r   r   c                    t          j        ddgddgddgddgg          }t          j        g d          }t          j        dg          }t          dd|           }|                    ||           |j        \  }	}
t          |	|           t          |
|           |                    |          }t          ||           t          |j        |           d S )Nr   r   r   Fr  r   min_categories)r!   r3   r
   r=   r   r   r@   r2  )r=  exp_X1_countexp_X2_countnew_Xexp_n_categories_X_n_categoriesy_n_categoriesexpected_predictionrH   X1_countX2_countpredictionss               r+   &test_categoricalnb_with_min_categoriesrH    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<  r9   )r!   r3   r
   rD   rE   rF   r=   )r=  r5  r>   r?   rH   s        r+   (test_categoricalnb_min_categories_errorsrJ  (  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          }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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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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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   r|   Fr  force_alphazFalpha too small will result in numeric errors, setting alpha = 1.0e-10r9   r;   r  r  r   )r!   r3   r	   rD   warnsUserWarningrG   r=   r   rA   r   r
   )r   r>   r?   nbrl   probs         r+   
test_alpharR  7  s@    	1a&1a&!""A
!QA	3E	2	2	2B
RC	k	-	-	- - -
q!aV,,,- - - - - - - - - - - - - - -	k	-	-	-  
q!              8aVaV$%%Db..q114888	Se	4	4	4B	k	-	-	- - -
q!aV,,,- - - - - - - - - - - - - - -	k	-	-	-  
q!              8gw'!Q011Db..q114888	Se	4	4	4B	k	-	-	-  
q!              8c3Z#s,--Db..q114888 	aA	3E	2	2	2B	k	-	-	-  
q!              8aVaV$%%Db..q114888	Se	4	4	4B	k	-	-	-  
q!              8gw'!Q011Db..q11488888s~   BB
B
,CCCE**E.1E.F33F7:F7'I

II	K,,K03K0 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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          }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dg           t	          |                                |dgd           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   FrL  r;   r   r   g333333?grq?r0  gS?gևX?r   rq   z+All values in alpha must be greater than 0.r9   r      )decimal)r   rg   g      @z7When alpha is an array, it should contains `n_features`)r!   r3   r   rG   r   r   rC   rA   rD   rE   rF   r=   _check_alpha)	r>   r?   r  rP  r  rQ  m_nbexpected_msg	ALPHA_MINs	            r+   test_alpha_vectorrZ  b  s   
1a&1a&!""A
!QA HaVE	U	6	6	6B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%888D@L	z	6	6	6  A               IHi!mS)**Eu%888DQAq6***d//11Is3CRPPPP H___%%Eu%888DLL	z	6	6	6  A                 s$   4EEEH66H:=H: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   r8   r   r  )cvgQ?gGz?rx   g(\?gq=
ףp?gp=
ף?r1  )var_smoothingg{Gz?)r   r!   
logical_orr   r   r   r	   r   )r>   r?   
binary_3v8X_3v8y_3v8scoress         r+   test_check_accuracy_on_digitsrd    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-   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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   TrL  r|   r   zCalpha too small will result in numeric errors, setting alpha = %.1eFr9   N)
r	   rV  r!   r3   r\   n_features_in_r   rD   rN  rO  )
_ALPHA_MINbalphasrl   s       r+   test_check_alpharj    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	Estimatorc                 0   t          |          \  }} |                                 ||          }|                    |          }t          |d          }|t	          j        |          j        z
  }t          |                    |          |           d S )Nr   r   )	r6   r=   predict_joint_log_probar   r!   
atleast_2dr  r   rB   )rk  r'   r4   r5   estjll
log_prob_xlog_prob_x_ys           r+   test_predict_joint_probars    s    12DEEFB
)++//"b
!
!C

%
%b
)
)C3Q'''Jz2244LC))"--|<<<<<r-   c                      |                                              }| t          u r|j        j        sJ d S |j        j        rJ d S )N)__sklearn_tags__r
   
input_tagscategorical)rk  tagss     r+   test_categorical_input_tagry    sR    9;;''))DM!!******?......r-   	use_str_yuse_sample_weightz$array_namespace, device_, dtype_name)idsc                 F   t          ||          }t                              |          }|                    ||          }| r-t	          j        g d          }t	          j        g d          }	n1t                              |          }|                    ||          }	|rt	          j        g d          }
nd}
t                                          |||
          }|	                    |          }|
                    |          }|                    |          }t          d          5  t                                          ||	|
          }dD ]u}t          ||          }t          ||          }|j        |j        k    sJ t          |          t          |          k    sJ t!          t#          ||	          |           v|	                    |          }| s3t          |          t          |          k    sJ t#          ||	          }t%          ||           |j        |j        k    sJ |
                    |          }|j        |j        k    sJ t          |          t          |          k    sJ t!          t#          ||	          |           |                    |          }|j        |j        k    sJ t          |          t          |          k    sJ t!          t#          ||	          |           ddd           dS # 1 swxY w Y   dS )
zETests that :class:`GaussianNB` works correctly with array API inputs.)r   )ar~  r~  rh  rh  rh  )r   r   r   r   r   r   NrS   T)array_api_dispatch)r   rO   rY   rZ   )xp)r   r>   r%   asarrayr!   r3   r?   r   r=   r@   rA   rB   r   r   r   r   r   r   r   )rz  r{  array_namespacedevice_
dtype_namer  X_npX_xpy_np
y_xp_or_nprT   clf_np	y_pred_npy_pred_proba_npy_pred_log_proba_npclf_xpr   xp_attrnp_attr	y_pred_xpy_pred_proba_xpy_pred_log_proba_xps                         r+   test_gnb_array_api_compliancer    sj    
ow	7	7B88JD::d7:++D 6x66677X<<<==

xx
##ZZWZ55
 !3!3!344\\dDFFFt$$I**400O 22488	4	0	0	0 
 
!!$
-!PPM 	H 	HKfk22Gfk22G=DJ....'??fTll2222-g"===wGGGGNN4((	 	<)$$t4444));;;I9i000)/1111 ..t44$
2222o&&&,,6666)/bAAA?SSS$66t<<"(DJ6666)**fTll::::1b999;N	
 	
 	
1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   0GLLL)Or%  r  numpyr!   rD   scipy.specialr   sklearn._configr   sklearn.datasetsr   r   sklearn.model_selectionr   r   sklearn.naive_bayesr	   r
   r   r   r   sklearn.utils._array_apir   r   r   r   sklearn.utils._testingr   r   r   r   r   sklearn.utils.fixesr   DISCRETE_NAIVE_BAYES_CLASSESALL_NAIVE_BAYES_CLASSESr3   r>   r?   r,   r6   rL   rQ   re   rm   rs   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r  r  r  r.  r:  rH  rJ  rR  rZ  rd  rj  rs  ry  r  r   r-   r+   <module>r     sK   				       # # # # # # * * * * * * 3 3 3 3 3 3 3 3 E E E E E E E E                                      / . . . . . +]L-X 6*E  BHr2hR2r(QFQFQFCDDBH      7 7 7,9 9 9$> $> $>N  F F F  .    8 8 8	 	 	: : :&- - - -/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.994C 4C :9 654Cn& & &:,H ,H ,H^D D D.DE DE DEN4@ 4@ 4@n 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'9 '9 :9'9T% % %P     B"J "J "JJ &=>>= = ?>= &=>>/ / ?>/ udm44,udm<<*--//'   
1
 1
  =< 541
 1
 1
r-   