ó
\c           @   s(  d  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 d d l m Z d d	 l m Z d
 d d
 g d d d g d d d
 g d d d
 g g Z d d d
 d
 g Z d   Z d   Z d   Z d   Z d   Z d   Z d S(   ss   
Tests for chi2, currently the only feature selection function designed
specifically to work with sparse matrices.
i’’’’N(   t
   coo_matrixt
   csr_matrix(   t   SelectKBestt   chi2(   t
   _chisquare(   t   assert_raises(   t   assert_array_almost_equal(   t   assert_array_equal(   t   clean_warning_registryi   i   i	   i   i    c         C   s   t  t d |  S(   s   Make k-best chi2 selectort   k(   R   R   (   R	   (    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt   mkchi2   s    c          C   s  t  d d  j t t  }  t  d d  j t t  }  t |  j d t  d g  t |  j t  t j	 t  d  d   d g f  t  d d  j t t  }  t t
 |  j d t   d d g  t t d t j } t  d d  j | t  }  t t
 |  j d t   d d g  |  j |  } t | j | j d d g  | j   } t  d d  j | t  j   } t | |  d  S(   NR	   i   t   indicesi    i   t   dtype(   R
   t   fitt   Xt   yR   t   get_supportt   Truet	   transformt   npt   arrayt   sortedR   t   float64t   shapet   toarrayt   fit_transformR   (   R   t   Xspt   Xtranst   Xtrans2(    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt	   test_chi2"   s    2%%!c          C   s)   t  t  }  t d d  j |  t  d  S(   NR	   i   (   R    R   R
   R   R   (   t   Xcoo(    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt   test_chi2_coo9   s    c          C   se   d d g d d g g d d g }  } x9 |  t  j |   t |   f D] }  t t t |  |  qD Wd  S(   Ni    i   g#B”Ē»(   R   R   R   R   t
   ValueErrorR   (   R   R   (    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt   test_chi2_negativeA   s    %%c          C   sĄ   t    t j d t  w }  t j d  t d d g d d g g d d g  \ } } x3 |  D]+ } d t |  k r] t d |   q] q] WWd  QXt | d t	 j
 g  t | d t	 j
  d  S(   Nt   recordt   alwaysi   i    s   divide by zeros   Found unexpected warning %s(   R   t   warningst   catch_warningsR   t   simplefilterR   t   reprt   AssertionErrorR   R   t   nan(   t   warnedt   chit   pt   w(    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt   test_chi2_unused_featureH   s    -c          C   s   t  j d d g d d g g  }  t  j d d g d d g g  } t j j |  |  \ } } t |  |  \ } } t | |  t | |  d  S(   Ng       @g      š?g      ų?(   R   R   t   scipyt   statst	   chisquareR   R   (   t   obst   expt   chi_scpt   p_scpt   chi_ourt   p_our(    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt   test_chisquareV   s    (   t   __doc__R$   t   numpyR   t   scipy.sparseR    R   t   scipy.statsR/   t   sklearn.feature_selectionR   R   t.   sklearn.feature_selection.univariate_selectionR   t   sklearn.utils.testingR   R   R   R   R   R   R
   R   R   R!   R.   R8   (    (    (    sH   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_chi2.pyt   <module>   s*   					