ó
‡ˆ\c           @   s1  d  Z  d d l 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 e
 j ƒ  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d S(   s   Tests for Incremental PCA.iÿÿÿÿN(   t   assert_almost_equal(   t   assert_array_almost_equal(   t   assert_raises(   t   assert_raises_regex(   t   assert_allclose_dense_sparse(   t   datasets(   t   PCAt   IncrementalPCAc          C   s$  t  j }  |  j d d } t d d d | ƒ } t d d ƒ } | j |  ƒ | j |  ƒ } t j j | j |  j d d f ƒ t	 | j
 j ƒ  | j
 j ƒ  d ƒ x~ d d |  j d g D]f } t | d | ƒ} | j |  ƒ | j ƒ  } | j ƒ  } t t j | | ƒ t j |  j d ƒ ƒ q¶ Wd  S(   Ni    i   t   n_componentsi   t
   batch_sizei   (   t   irist   datat   shapeR   R   t   fit_transformt   npt   testingt   assert_equalR    t   explained_variance_ratio_t   sumt   fitt   get_covariancet   get_precisionR   t   dott   eye(   t   XR	   t   ipcat   pcat   X_transformedR   t   covt	   precision(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_incremental_pca   s     	#c          C   så   t  j j d ƒ }  d \ } } |  j | | ƒ d } | d c  t  j d d d g ƒ 7*d |  j d | ƒ t  j d d d g ƒ } t d	 d
 ƒ j | ƒ j | ƒ } | t  j | d
 j	 ƒ  ƒ :} t
 t  j | d d ƒ d d ƒ d  S(   NiÏ  id   i   gš™™™™™¹?i
   i   i   i   R   i   i    g      ð?(   id   i   (   R   t   randomt   RandomStatet   randnt   arrayR   R   t	   transformt   sqrtR   R    t   abs(   t   rngt   nt   pR   t   Xtt   Yt(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt%   test_incremental_pca_check_projection'   s    ",!c          C   s²   t  j j d ƒ }  d \ } } |  j | | ƒ } | d  d  … d f c d 9<| d d d g 7} t d d	 d
 d ƒ j | ƒ } | j | ƒ } | j | ƒ } t | | d d ƒd  S(   NiÏ  i2   i   i   gñhãˆµøä>i   i   R   i   R	   i
   t   decimal(   i2   i   (	   R   R   R    R!   R   R   R#   t   inverse_transformR    (   R&   R'   R(   R   R   t   Yt	   Y_inverse(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_incremental_pca_inverse<   s    c          C   s¶   t  j d d d g d d d g g ƒ }  |  j \ } } xH d d d d g D]4 } t t d j | | ƒ t | d d ƒj |  ƒ qI Wd	 } t t d
 j | | ƒ t d | ƒ j |  ƒ d  S(   Ni    i   iÿÿÿÿg®Gáz®ï?i   sd   n_components={} invalid for n_features={}, need more rows than columns for IncrementalPCA processingR	   i
   i   sG   n_components={} must be less or equal to the batch number of samples {}R   (	   R   R"   R   R   t
   ValueErrort   formatR   R   t   partial_fit(   R   t	   n_samplest
   n_featuresR   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_incremental_pca_validationL   s    '		c          C   s«   t  j j d ƒ }  x’ d d g D]„ \ } } |  j | | ƒ } t d d  ƒ } | j | ƒ | j t | j	 ƒ k sw t
 ‚ | j | ƒ | j | j j	 d k s t
 ‚ q Wd  S(   NiÏ  i2   i
   R   i    (   i2   i
   (   i
   i2   (   R   R   R    t   randR   t   NoneR3   t   n_components_t   minR   t   AssertionErrort   components_(   R&   R4   R5   R   R   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_n_components_nonea   s    c          C   s×   t  j j d ƒ }  d } d } |  j | | ƒ } |  j | | ƒ } |  j | | ƒ } t d d ƒ } | j | ƒ | j d d ƒ t t | j	 | ƒ | j d d ƒ t t | j	 | ƒ | j d d ƒ | j	 | ƒ d  S(   NiÏ  id   i   R   i
   i   (
   R   R   R    R!   R   R   t
   set_paramsR   R1   R3   (   R&   R4   R5   R   t   X2t   X3R   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_incremental_pca_set_paramss   s    c          C   so   t  j j d ƒ }  d } |  j | d ƒ } |  j | d ƒ } t d d  ƒ } | j | ƒ t t | j	 | ƒ d  S(   NiÏ  id   i   i2   R   (
   R   R   R    R!   R   R8   R   R   R1   R3   (   R&   R4   R   R?   R   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt(   test_incremental_pca_num_features_changeˆ   s    c    
      C   sØ   t  j j d ƒ }  d } d } |  j | | ƒ } g  } t  j d d ƒ } x< | D]4 } t d d  d | ƒ j | ƒ } | j | j	 ƒ qO WxJ t
 | d  | d	 ƒ D]1 \ } }	 t t  j | ƒ t  j |	 ƒ d
 d ƒqŸ Wd  S(   NiÏ  id   i   i
   i   R   R	   iÿÿÿÿi   R,   i   (   R   R   R    R!   t   arangeR   R8   R   t   appendR<   t   zipR    t   sign(
   R&   R4   R5   R   t   all_componentst   batch_sizesR	   R   t   it   j(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt    test_incremental_pca_batch_signs“   s    $c    
      C   sÉ   t  j j d ƒ }  d } d } |  j | | ƒ } g  } t  j d d d ƒ } x< | D]4 } t d d  d | ƒ j | ƒ } | j | j	 ƒ qR Wx8 t
 | d  | d	 ƒ D] \ } }	 t | |	 d
 d	 ƒq¢ Wd  S(   NiÏ  id   i   i   i(   R   R	   iÿÿÿÿi   R,   (   R   R   R    R!   RC   R   R8   R   RD   R<   RE   R    (
   R&   R4   R5   R   RG   RH   R	   R   RI   RJ   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt!   test_incremental_pca_batch_values£   s    $c    
      C   sÃ   t  j j d ƒ }  d } d } |  j | | ƒ } g  } t  j d d d ƒ } x< | D]4 } t d d d | ƒ j | ƒ } | j | j ƒ qR Wx2 t	 | d  | d	 ƒ D] \ } }	 t
 | |	 ƒ q¢ Wd  S(
   NiÏ  id   i   iZ   i   R   R	   iÿÿÿÿi   (   R   R   R    R!   RC   R   R   RD   R<   RE   R   (
   R&   R4   R5   R   RG   RH   R	   R   t   components_it   components_j(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_incremental_pca_batch_rank³   s    c    
      C   s  t  j j d ƒ }  d \ } } |  j | | ƒ } | d  d  … d f c d 9<| d d d g 7} d } t d	 d
 d | ƒ j | ƒ } t d	 d
 d | ƒ } t  j d | d | ƒ } xH t | d  | d ƒ D]/ \ } }	 | j | | |	 … d  d  … f ƒ qÉ Wt	 | j
 | j
 d d ƒd  S(   NiÏ  i2   i   i   gñhãˆµøä>i   i   i
   R   i   R	   i    iÿÿÿÿR,   (   i2   i   (   R   R   R    R!   R   R   RC   RE   R3   R    R<   (
   R&   R'   R(   R   R	   R   t   pipcat	   batch_itrRI   RJ   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt    test_incremental_pca_partial_fitÄ   s    $'c          C   se   t  j }  t d d ƒ j |  ƒ } t d d d d ƒ j |  ƒ } t t j | ƒ t j | ƒ d ƒ d  S(   NR   i   R	   i   i   (   R
   R   R   R   R   R    R   R%   (   R   t   Y_pcat   Y_ipca(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt%   test_incremental_pca_against_pca_irisØ   s    	c          C   s    t  j j d ƒ }  d } d } |  j | | ƒ d |  j d | ƒ } t d d ƒ j | ƒ } t d d d d ƒ j | ƒ } t t  j	 | ƒ t  j	 | ƒ d ƒ d  S(	   NiÏ  id   i   i   i   R   R	   i   (
   R   R   R    R!   R7   R   R   R   R    R%   (   R&   R4   R5   R   RS   RT   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt,   test_incremental_pca_against_pca_random_dataâ   s    &c       	   C   sÕ   t  j d d d d d d d d ƒ}  d	 } |  j \ } } x• d  d
 g D]‡ } t d | ƒ j |  ƒ } t d | d d ƒ j |  ƒ } t | j | j d | ƒt | j	 | j	 d | ƒt | j
 | j
 d | ƒqF Wd  S(   Niè  id   t   tail_strengthg        t   effective_ranki
   t   random_stateiÏ  i   ic   R   R	   R,   (   R   t   make_low_rank_matrixR   R8   R   R   R   R    t   explained_variance_R   t   noise_variance_(   R   t   precR4   R5   t   ncR   R   (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_explained_variancesï   s    	c    	   	   C   sÆ  t  j j d ƒ }  d } d } t j | | d d d d d |  ƒ} t d	 d d
 d d |  ƒ j | ƒ } t d	 d d d ƒ j | ƒ } t | j	 | j	 d ƒ | j
 | ƒ } | j
 | ƒ } t t  j | j	 d ƒ t  j j | d ƒ d d ƒ t t  j | j	 d ƒ t  j j | d ƒ d d ƒ t | j	 t  j t  j | d d d ƒƒ d ƒ t | j	 t  j t  j | d d d ƒƒ d ƒ t  j j d ƒ }  d } d } t j | | d d d d d |  ƒ} t d	 d d
 d d |  ƒ } t d	 d d d ƒ } | j | ƒ } | t  j t  j | d d d ƒƒ :} | d  d  … d f c d 9<| d  d  … d f c d 9<t  j | | j ƒ } | j | ƒ | j | ƒ t | j	 d d d g d ƒ t | j	 d d d g d ƒ d  S(   Ni    iè  id   RW   g        RX   i
   RY   R   t
   svd_solvert   fullR	   i   g       @t   froi   t   axisin   i   g‰A`åÐ"	@i   gX9´Èv¾@g      ð?i   (   R   R   R    R   RZ   R   R   R   R   t   singular_values_R#   R   t   linalgt   normR$   R   R   R<   (	   R&   R4   R5   R   R   R   t   X_pcat   X_ipcat   X_hat(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_singular_values   sD    $	&	&&c       	   C   s0  t  j d d d d d d d d ƒ}  d	 } |  j \ } } xð d  d
 g D]â } t d t d | ƒ j |  ƒ } t d t d | d d ƒ j |  ƒ } | j |  ƒ } | j |  ƒ } t	 t
 j | ƒ t
 j | ƒ d | ƒ| j | ƒ }	 | j | ƒ }
 t	 |  |	 d | ƒt	 |  |
 d | ƒt	 |
 |	 d | ƒqF Wd  S(   Niè  i
   RW   g        RX   i   RY   iÏ  i   i	   t   whitenR   R	   iú   R,   (   R   RZ   R   R8   R   t   TrueR   R   R#   R    R   R%   R-   (   R   R]   R4   R5   R^   R   R   t   Xt_pcat   Xt_ipcat	   Xinv_ipcat   Xinv_pca(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   test_whitening3  s     %c          C   sË   t  j j d ƒ }  |  j d d ƒ d } |  j d d ƒ d } t d d ƒ } | j | ƒ t | j ƒ | _ | j | ƒ | j } t d d ƒ } | j | ƒ | j | ƒ | j } t  j	 j
 | | ƒ d  S(   Ni    i   i   i   i   R   (   R   R   R    R!   R   R3   t   floatt   n_samples_seen_Rd   R   t   assert_allclose(   R&   t   At   BR   t    singular_vals_float_samples_seent   pca2t   singular_vals_int_samples_seen(    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt/   test_incremental_pca_partial_fit_float_divisionH  s    		(!   t   __doc__t   numpyR   t   sklearn.utils.testingR    R   R   R   R   t   sklearnR   t   sklearn.decompositionR   R   t	   load_irisR
   R   R+   R0   R6   R=   RA   RB   RK   RL   RO   RR   RU   RV   R_   Rj   Rq   Rz   (    (    (    sO   lib/python2.7/site-packages/sklearn/decomposition/tests/test_incremental_pca.pyt   <module>   s4   												
			3	