
    _ndx                         d Z ddlZddlZddlZddlmZmZ ddlZ	ddl
mZmZ ddlmZ ddlmZ ddlmZ g dg d	g d
g dgZg dZd Zd Zd Zd Zd Zd ZdS )zs
Tests for chi2, currently the only feature selection function designed
specifically to work with sparse matrices.
    N)
coo_matrix
csr_matrixSelectKBestchi2)
_chisquare)assert_array_almost_equal)assert_array_equal)      r   )	   r   r   )   r   r   )r   r   r   )r   r   r   r   c                 .    t          t          |           S )zMake k-best chi2 selectorkr   r   s    Ilib/python3.11/site-packages/sklearn/feature_selection/tests/test_chi2.pymkchi2r      s    tq!!!!    c                  P   t          d                              t          t                    } t          d                              t          t                    } t	           | j        d          dg           t	           | j        t                    t          j        t                    d d dgf                    t          d                              t          t                    } t	          t           | j        d                    ddg           t          t          t          j                  }t          d                              |t                    } t	          t           | j        d                    ddg            | j        |          }t	          |j        |j        d         dg           |                                }t          d                              |t                                                    }t          ||           d S )Nr   r   T)indicesr   r   )dtype)r   fitXyr
   get_support	transformnparraysortedr   float64shapetoarrayfit_transformr	   )r   XspXtransXtrans2s       r   	test_chi2r'      s    A;;;??1a  DA;;;??1a  D't'555s;;;~t~a(("(1++aaa!f*=>>>A;;;??1a  Dv.d.t<<<==1vFFF
Qbj
)
)
)CA;;;??3""Dv.d.t<<<==1vFFFT^C  Fv|cilA%6777 ^^Fqkkk''Q//7799Gfg.....r   c                      t          t                    } t          d                              | t                     d S )Nr   r   )r   r   r   r#   r   )Xcoos    r   test_chi2_coor*   5   s3     a==D
QKKKdA&&&&&r   c                      ddgddggddg}} | t          j        |           t          |           fD ]C} t          j        t
                    5  t          | |           d d d            n# 1 swxY w Y   Dd S )Nr   r   g#Bǻ)r   r   r   pytestraises
ValueErrorr   )r   r   s     r   test_chi2_negativer/   =   s    FVQK 1a&qA!jmm,  ]:&& 	 	AJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   A))A-	0A-	c                     t          j        d          5 } t          j        d           t          ddgddggddg          \  }}| D ]%}dt	          |          v rt          d|z            &	 d d d            n# 1 swxY w Y   t          |dt          j        g           t          |d         t          j                   d S )NT)recordalwaysr   r   zdivide by zerozFound unexpected warning %s)	warningscatch_warningssimplefilterr   reprAssertionErrorr
   r   nan)warnedchipws       r   test_chi2_unused_featurer=   E   s$    
	 	-	-	- Hh'''1v1v&A//Q 	H 	HA477**$%BQ%FGGG +	HH H H H H H H H H H H H H H H sQK(((qtRV$$$$$s   AA;;A?A?c                     t          j        ddgddgg          } t          j        ddgddgg          }t          j                            | |          \  }}t          | |          \  }}t          ||           t          ||           d S )Ng       @g      ?g      ?)r   r   scipystats	chisquarer   r	   )obsexpchi_scpp_scpchi_ourp_ours         r   test_chisquarerH   R   s    
(S#Jc
+
,
,C
(S#Jc
+
,
,C[**344NGUS))NGUgw///eU+++++r   )__doc__r3   numpyr   r,   scipy.sparser   r   scipy.statsr?   sklearn.feature_selectionr   r   /sklearn.feature_selection._univariate_selectionr   sklearn.utils._testingr	   r
   r   r   r   r'   r*   r/   r=   rH    r   r   <module>rQ      s.   
       / / / / / / / /     7 7 7 7 7 7 7 7 F F F F F F < < < < < < 5 5 5 5 5 5
 YY			999iii0LL" " "
/ / /.' ' '  
% 
% 
%	, 	, 	, 	, 	,r   