ó
‡ˆ\c        
   @   sX  d  d l  Z  d  d l Z d  d l j Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z m Z d  d l m Z d  d	 l m  Z  d
 „  Z! d „  Z" d „  Z# e  j$ j% d d d g ƒ e  j$ j% d e j& e j' g ƒ d „  ƒ ƒ Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. e  j$ j% d e j/ e j0 g ƒ e  j$ j% d d d d g ƒ e  j$ j% d e j' e j& g ƒ e  j$ j% d d e j2 e j3 e4 f e j5 e j6 e j7 e8 f g ƒ d „  ƒ ƒ ƒ ƒ Z9 d „  Z: d „  Z; d „  Z< d „  Z= d S(    iÿÿÿÿN(   t   linalg(   t   assert_array_almost_equalt   assert_array_equalt   assert_equal(   t   RandomState(   t   make_classification(	   t   mean_variance_axist   incr_mean_variance_axist   inplace_column_scalet   inplace_row_scalet   inplace_swap_rowt   inplace_swap_columnt   min_max_axist   count_nonzerot   csc_median_axis_0(   t   assign_rows_csrt   inplace_csr_row_normalize_l1t   inplace_csr_row_normalize_l2(   t   assert_raises(   t   assert_allclosec          C   s’  t  d d d d ƒ\ }  } d |  d	 <d |  d
 <d |  d <t j |  ƒ } d | d <d |  d <t t t | d d ƒt j | ƒ } t j | ƒ } t j	 t j	 f t j
 t j
 f t j t j
 f t j t j
 f g } x¹ | D]± \ } } |  j | ƒ } x“ | | f D]… }	 |	 j | ƒ }	 t |	 d d ƒ\ }
 } t |
 j | ƒ t | j | ƒ t |
 t j | d d ƒƒ t | t j | d d ƒƒ qWqÙ Wd  S(   Ni   i   t   random_statei    i   i   i   t   axis(   i    i    (   i   i   (   i   i   (   i   i    (   i   i    (   R   t   spt
   lil_matrixR   t	   TypeErrorR   t
   csr_matrixt
   csc_matrixt   npt   float32t   float64t   int32t   int64t   astypeR   t   dtypeR   t   meant   var(   t   Xt   _t   X_lilt   X_csrt   X_csct   expected_dtypest   input_dtypet   output_dtypet   X_testt   X_sparset   X_meanst   X_vars(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_mean_variance_axis0   s.    




c          C   s’  t  d d d d ƒ\ }  } d |  d	 <d |  d
 <d |  d <t j |  ƒ } d | d <d |  d <t t t | d d ƒt j | ƒ } t j | ƒ } t j	 t j	 f t j
 t j
 f t j t j
 f t j t j
 f g } x¹ | D]± \ } } |  j | ƒ } x“ | | f D]… }	 |	 j | ƒ }	 t |	 d d ƒ\ }
 } t |
 j | ƒ t | j | ƒ t |
 t j | d d ƒƒ t | t j | d d ƒƒ qWqÙ Wd  S(   Ni   i   R   i    i   i   i   R   (   i    i    (   i   i   (   i   i   (   i   i    (   i   i    (   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-   R.   R/   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_mean_variance_axis19   s.    




c       	   C   sA  x:d d g D],}  t  j j d ƒ } d } d } g  t | ƒ D] } | j d d d | ƒ^ q> } t  j | ƒ } t  j | ƒ } t  j | d t  j ƒ} t  j | d ƒ }	 t  j	 |	 ƒ }	 t
 j |	 ƒ }
 t
 j |
 ƒ } t t t |  | | | ƒ t t t |  | | | ƒ t t t |
 |  | | | ƒ t | |  ƒ \ } } t | |  | | | ƒ \ } } } t | | ƒ t | | ƒ t |	 j |  | ƒ t
 j |
 ƒ } t | |  ƒ \ } } t | | ƒ t | | ƒ t |	 j |  | ƒ t  j | ƒ }	 t
 j |	 ƒ }
 t
 j |
 ƒ } t
 j |
 ƒ } t  j t  j f t  j t  j f t  j t  j f t  j t  j f g } xÜ | D]Ô \ } } xÅ | | f D]· } | j | ƒ } | j | ƒ } | j | ƒ } t | |  ƒ \ } } t | |  | | | ƒ \ } } } t | j | ƒ t | j | ƒ t | | ƒ t | | ƒ t |	 j |  | ƒ qzWqaWq Wd  S(   Ni    i   i2   i
   i   t   sizeR!   (   R   t   randomR   t   ranget   randintt   zerost
   zeros_likeR   t   arrayt
   atleast_2dR   R   R   R   R   R   R   R   R   t   shapeR   t   vstackR   R   R   R    R!   (   R   t   rngt
   n_featurest	   n_samplest   it   data_chunkst	   last_meant   last_vart   last_nR$   R&   R'   R.   R/   t   X_means_incrt   X_vars_incrt   n_incrR(   R)   R*   R+   R-   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_incr_mean_variance_axisX   sd    .!R   i    i   t   sparse_constructorc      	   C   s¥  t  j d d d d g ƒ } t  j d d d d g ƒ } t  j d d d d g d t  j ƒ} | t  j d d d d g d d d d g d d d d g g ƒ ƒ } | t  j d t  j d d g t  j d d d g d d t  j d g d d d t  j g g ƒ ƒ } |  r| j } | j } n  t | |  | j ƒ  | j ƒ  | j ƒ  ƒ \ } } }	 t | |  | j ƒ  | j ƒ  | j ƒ  ƒ \ }
 } } t |
 | ƒ t | | ƒ t | |	 ƒ d  S(   Ng     ¸€@g     °@i   R!   iª   i®  i,  (   R   R8   R   t   nant   TR   t   copyR   (   R   RH   t	   old_meanst   old_variancest   old_sample_countR$   t   X_nanR.   R/   t   X_sample_countt   X_nan_meanst
   X_nan_varst   X_nan_sample_count(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt'   test_incr_mean_variance_axis_ignore_nanš   s0    $	c          C   s  t  d d d d ƒ\ }  } d |  d <d |  d <d |  d <t j |  ƒ } t t t | d d	 ƒt t t | d d ƒt t t | d d
 ƒt t t | d d	 d d  d d  d d  ƒt t t | d d d d  d d  d d  ƒt t t | d d
 d d  d d  d d  ƒd  S(   Ni   i   R   i    i   i   i   R   iýÿÿÿiÿÿÿÿRA   RB   RC   (   i    i    (   i   i   (   i   i   (   R   R   R   R   t
   ValueErrorR   R   t   None(   R$   R%   R'   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_mean_variance_illegal_axis¿   s    


c       	   C   s%  xt  j t  j f D]
}  t j d d d g d d d g d d d g d d d g d d d g g d	 |  ƒ} t  j d d d g d	 t  j ƒ} t  j d
 | j d f d	 |  ƒ} t  j d d d g d	 t  j ƒ} t  j	 | ƒ } | | d  d  … f j
 ƒ  | | <t | | | | ƒ t | | ƒ q Wd  S(   Ni    i   i   i   i	   i   i   i   R!   i   i   (   R   R   R   R   R   R8   t   intpt   onesR:   t	   ones_liket   toarrayR   R   (   R!   R$   t   X_rowst   outt   out_rowst   expect(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_densify_rowsÒ   s    !"! c          C   sž  t  j j d ƒ }  t j d d d ƒ } | j ƒ  } | j ƒ  } | j ƒ  } |  j d ƒ } | | 9} t | | ƒ t | | ƒ t	 | j ƒ  | j ƒ  ƒ t	 | | j ƒ  ƒ t	 | | j ƒ  ƒ t
 t t | j ƒ  | ƒ | j t  j ƒ } | j t  j ƒ } | j ƒ  } | j ƒ  } | j ƒ  } | | 9} t | | ƒ t | | ƒ t	 | j ƒ  | j ƒ  ƒ t	 | | j ƒ  ƒ t	 | | j ƒ  ƒ t
 t t | j ƒ  | ƒ d  S(   Ni    id   iÈ   gš™™™™™©?(   R   R3   R   R   t   randt   tocsrt   tocscR[   R   R   R   R   t   tolilR    R   (   R<   R$   t   Xrt   Xct   XAt   scale(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_inplace_column_scaleä   s2    

c          C   s¶  t  j j d ƒ }  t j d d d ƒ } | j ƒ  } | j ƒ  } | j ƒ  } |  j d ƒ } | | j d d ƒ 9} t	 | | ƒ t	 | | ƒ t
 | j ƒ  | j ƒ  ƒ t
 | | j ƒ  ƒ t
 | | j ƒ  ƒ t t t | j ƒ  | ƒ | j t  j ƒ } | j t  j ƒ } | j ƒ  } | j ƒ  } | j ƒ  } | | j d d ƒ 9} t	 | | ƒ t	 | | ƒ t
 | j ƒ  | j ƒ  ƒ t
 | | j ƒ  ƒ t
 | | j ƒ  ƒ t t t | j ƒ  | ƒ d  S(   Ni    id   iÈ   gš™™™™™©?iÿÿÿÿi   (   R   R3   R   R   Ra   Rb   Rc   R[   t   reshapeR	   R   R   R   R   Rd   R    R   (   R<   R$   Re   Rf   Rg   Rh   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_inplace_row_scale  s2    c          C   sb  t  j d d d g d d d g d d d g d d d g d d d g g d	 t  j ƒ}  t j |  ƒ } t j |  ƒ } t j d |  f ƒ } | d } | |  d |  d ƒ \ |  d <|  d <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ | |  d |  d ƒ \ |  d <|  d <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t t t | j ƒ  ƒ t  j d d d g d d d g d d d g d d d g d d d g g d	 t  j ƒ}  t j |  ƒ } t j |  ƒ } t j d |  f ƒ } | d } | |  d |  d ƒ \ |  d <|  d <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ | |  d |  d ƒ \ |  d <|  d <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t t t | j ƒ  ƒ d  S(   Ni    i   i   i   i	   i   i   i   R!   t   swapiÿÿÿÿ(   Rl   (   Rl   (   R   R8   R   R   R   R   R    t   get_blas_funcsR
   R   R[   R   R   Rd   R   (   R$   R'   R(   Rl   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_inplace_swap_row   sX    
%%
%%c          C   s"  t  j d d d g d d d g d d d g d d d g d d d g g d	 t  j ƒ}  t j |  ƒ } t j |  ƒ } t j d |  f ƒ } | d } | |  d  d  … d f |  d  d  … d f ƒ \ |  d  d  … d f <|  d  d  … d f <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ | |  d  d  … d f |  d  d  … d f ƒ \ |  d  d  … d f <|  d  d  … d f <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t t t | j ƒ  ƒ t  j d d d g d d d g d d d g d d d g d d d g g d	 t  j ƒ}  t j |  ƒ } t j |  ƒ } t j d |  f ƒ } | d } | |  d  d  … d f |  d  d  … d f ƒ \ |  d  d  … d f <|  d  d  … d f <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ | |  d  d  … d f |  d  d  … d f ƒ \ |  d  d  … d f <|  d  d  … d f <t | d d ƒ t | d d ƒ t	 | j
 ƒ  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t	 |  | j
 ƒ  ƒ t t t | j ƒ  ƒ d  S(   Ni    i   i   i   i	   i   i   i   R!   Rl   iÿÿÿÿi   (   Rl   (   Rl   (   R   R8   R   R   R   R   R    Rm   R   R   R[   R   R   Rd   R   (   R$   R'   R(   Rl   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_inplace_swap_columnR  sX    
UU
UUR!   t   sparse_formats.   missing_values, min_func, max_func, ignore_nanc         C   s±   t  j d d d g d d | g d d d g d | d g d d d g g d	 |  ƒ} | | ƒ } t | d
 | d | ƒ\ }	 }
 t |	 | | d
 | ƒƒ t |
 | | d
 | ƒƒ d  S(   Ni    i   i   iÿÿÿÿi	   i   i   i   R!   R   t
   ignore_nan(   R   R8   R   R   (   R!   R   Rp   t   missing_valuest   min_funct   max_funcRq   R$   R-   t   mins_sparset   maxs_sparse(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_min_max„  s    
c          C   s¾   t  j d d d g d d d g d d d g d d d g d d d	 g g d
 t  j ƒ}  t j |  ƒ } t j |  ƒ } t t t | j	 ƒ  d d ƒt t
 t | d d ƒt t
 t | d d ƒd  S(   Ni    i   i   iÿÿÿÿi	   i   i   i   i   R!   R   iýÿÿÿ(   R   R8   R   R   R   R   R   R   R   Rd   RU   (   R$   R'   R(   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_min_max_axis_errors›  s    c          C   sP  t  j d d d g d d d g d d d g d d d g d d d	 g g d
 t  j ƒ}  t j |  ƒ } t j |  ƒ } |  d k } d d d d d g } | t  j | ƒ d  d  … d  f } xm d d d d d  g D]V } t t | d | ƒ| j	 d | ƒ ƒ t t | d | d | ƒ| j	 d | ƒ ƒ qÌ Wt
 t t | ƒ t
 t t | d d ƒd  S(   Ni    i   i   iÿÿÿÿi	   i   i   i   i   R!   g      à?gš™™™™™É?g333333Ó?gš™™™™™¹?i   iþÿÿÿR   t   sample_weight(   R   R8   R   R   R   R   RV   R   R   t   sumR   R   RU   (   R$   R'   R(   t	   X_nonzeroRy   t   X_nonzero_weightedR   (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_count_nonzero¨  s$    #c          C   s®  t  j j d ƒ }  |  j d d ƒ } t  j | d d ƒ} t j | ƒ } t | ƒ } t | | ƒ |  j d d ƒ } d | | d k  <|  j	 d d d ƒ } | | | | <t j | ƒ } t  j | d d ƒ} t | ƒ } t | | ƒ d d	 g d
 d
 g d d g d d g g } t j | ƒ } t t | ƒ t  j
 d d g ƒ ƒ d d	 g d
 d g d d g g } t j | ƒ } t t | ƒ t  j
 d d g ƒ ƒ t t t t j | ƒ ƒ d  S(   Ni    id   i2   R   i3   g        gffffffæ?i
   iþÿÿÿiÿÿÿÿi   i   g      à?g      à¿iûÿÿÿiýÿÿÿ(   R   R3   R   Ra   t   medianR   R   R   R   R5   R8   R   R   R   (   R<   R$   t   dense_mediant   csct   sparse_mediant   ind(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_csc_row_median¿  s*    *"!"c          C   s`  t  j d ƒ }  t d ƒ } x>t t f D]0} x't  j t  j f D]} | j d d ƒ j | ƒ } t	 j
 | ƒ } xà t  j t  j g D]Ì } | t  j k rÆ | j j | ƒ | _ | j j | ƒ | _ n  | j j | k sÞ t ‚ | j j | k sö t ‚ | | ƒ t | j | ƒ | t k r.| j d C_ n  t t  j | ƒ j d d ƒ |  ƒ q„ WqA Wq( Wd  S(   Ni
   i   i   i   R   (   i
   i   (   R   RY   R   R   R   R   R   t   randnR    R   R   R   R   t   indptrt   indicesR!   t   AssertionErrorR   t   dataR   t   absRz   (   RY   t   rst   inplace_csr_row_normalizeR!   R$   R'   t   index_dtype(    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   test_inplace_normalizeà  s$    
(>   t   pytestt   numpyR   t   scipy.sparset   sparseR   t   scipyR    t   numpy.testingR   R   R   t   numpy.randomR   t   sklearn.datasetsR   t   sklearn.utils.sparsefuncsR   R   R   R	   R
   R   R   R   R   t   sklearn.utils.sparsefuncs_fastR   R   R   t   sklearn.utils.testingR   R   R0   R1   RG   t   markt   parametrizeR   R   RT   RW   R`   Ri   Rk   Rn   Ro   R   R   RV   t   mint   maxt   FalseRI   t   nanmint   nanmaxt   TrueRw   Rx   R}   Rƒ   R   (    (    (    sC   lib/python2.7/site-packages/sklearn/utils/tests/test_sparsefuncs.pyt   <module>   s@   @			B-$					2	2	3			!