ó
‡ˆ\c           @   s¼  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 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 m Z d  d
 l m Z d d „ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z e j j d ƒ e j j d e e g ƒ e d „  ƒ ƒ ƒ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z e j j d ƒ e j j d e e g ƒ d „  ƒ ƒ Z  d „  Z! d „  Z" e j j d e e g ƒ d „  ƒ Z# d S(   iÿÿÿÿN(   t   assert_array_almost_equal(   t   assert_equal(   t   assert_allclose(   t   SkipTest(   t   assert_false(   t   assert_warns_message(   t!   if_safe_multiprocessing_with_blas(   t	   SparsePCAt   MiniBatchSparsePCAt   PCA(   t   check_random_statec         C   sf  | d | d } t  | ƒ } | j | |  ƒ } | j |  | ƒ } d
 d d g } d d d g }	 x¼ t |  ƒ D]® }
 t j | ƒ } | |
 d |	 |
 | |
 d |	 |
 } } | |
 d |	 |
 | |
 d |	 |
 } } d | | | !d  d  … | | … f <| j ƒ  | |
 d  d  … f <qm Wt j | | ƒ } | d	 | j | j d | j d ƒ 7} | | | f S(   Ni    i   i   i   i   i   i   g      ð?gš™™™™™¹?(   i   i   (   i   i   (   i   i   (   R
   t   randnt   ranget   npt   zerost   ravelt   dott   shape(   t   n_componentst	   n_samplest
   image_sizet   random_statet
   n_featurest   rngt   Ut   Vt   centerst   szt   kt   imgt   xmint   xmaxt   ymint   ymaxt   Y(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   generate_toy_data   s    --# (s   ignore:normalize_componentst	   norm_compc         C   sÂ   t  j j d ƒ } | j d d ƒ } t d d d | d |  ƒ } | j | ƒ } t | j j d	 ƒ t | j d
 ƒ t d d d | d |  ƒ } | j | ƒ } t | j j d ƒ t | j d ƒ d  S(   Ni    i   i
   R   i   R   t   normalize_componentsi   (   i   i
   (   i   i   (   i   i
   (   i   i   (	   R   t   randomt   RandomStateR   R   t   fit_transformR   t   components_R   (   R$   R   t   Xt   spcaR   (    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_correct_shapes.   s    		c         C   sö   d } t  j j d ƒ } t d d d d | ƒ\ } } } t d d d d	 d
 | d d d |  ƒ } | j | ƒ t d d d d d d d
 | d |  ƒ } | j | ƒ t | j | j ƒ d } t t	 | | j
 | d d ƒt t	 | | j
 | d d  ƒd  S(   Ni   i    i   i
   i   R   R   t   methodt   larst   alphaR%   t   cds(   The ridge_alpha parameter on transform()t   ridge_alphag{®Gáz„?(   i   i   (   R   R&   R'   R#   R   t   fitR    R)   R   t   DeprecationWarningt	   transformt   None(   R$   R/   R   R"   t   _t	   spca_larst
   spca_lassot   warning_msg(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_fit_transform@   s    !c   	      C   sñ   d } t  j j d ƒ } t d d d d | ƒ\ } } } t d d d d	 d
 | d d d |  ƒ } | j | ƒ | j | ƒ } t d d d d d d	 d
 | d d d |  ƒ j | ƒ } | j | ƒ } t  j | j d k ƒ sà t	 ‚ t
 | | ƒ d  S(   Ni   i    i   i
   i   R   R   R-   R.   R/   R%   t   n_jobsi   (   i   i   (   R   R&   R'   R#   R   R2   R4   t   allR)   t   AssertionErrorR    (	   R$   R/   R   R"   R6   R7   t   U1R+   t   U2(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_fit_transform_parallelX   s    !c         C   s‡   t  j j d ƒ } t d d d d | ƒ\ } } } d | d  d  … d f <t d d d |  ƒ } t t  j t  j | j | ƒ ƒ ƒ ƒ d  S(	   Ni    i   i
   i   R   R   R%   (   i   i   (	   R   R&   R'   R#   R   R   t   anyt   isnanR(   (   R$   R   R"   R6   t	   estimator(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_transform_nank   s
    !c      	   C   s­   t  j j d ƒ } t d d d d | ƒ\ } } } t d d d d d | d	 |  ƒ } | j | ƒ } t d d d d
 d | d	 |  ƒ } | j | ƒ j | ƒ } t | | ƒ d  S(   Ni    i   iA   i   R   R   R-   R.   R%   R0   (   i   i   (	   R   R&   R'   R#   R   R(   R2   R4   R    (   R$   R   R"   R6   R7   R>   R8   R?   (    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_fit_transform_tallw   s    !c         C   sÏ   t  j j d ƒ } | j d d ƒ } | j d d ƒ } t d d d | d | d d d	 | d
 |  ƒ } | j | j d d ƒ ƒ |  r» t | j | t  j j	 | d d ƒd  d  … d  f ƒ n t | j | ƒ d  S(   Ni    i   i   i   R   t   U_initt   V_initt   max_iterR   R%   t   axisi   (   R   R&   R'   R   R   R2   R   R)   t   linalgt   normR5   (   R$   R   RF   RG   t   model(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_initialization…   s    	0c         C   sÂ   t  j j d ƒ } | j d d ƒ } t d d d | d |  ƒ } | j | ƒ } t | j j d	 ƒ t | j d
 ƒ t d d d | d |  ƒ } | j | ƒ } t | j j d ƒ t | j d ƒ d  S(   Ni    i   i
   R   i   R   R%   i   (   i   i
   (   i   i   (   i   i
   (   i   i   (	   R   R&   R'   R   R   R(   R   R)   R   (   R$   R   R*   t   pcaR   (    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_mini_batch_correct_shapes•   s    		c         C   s¹  t  d ƒ ‚ d } t j j d ƒ } t d d d d | ƒ\ } } } t d d d d d	 | d
 |  ƒ j | ƒ } | j | ƒ } t j	 d k rd d  l
 j j j } | j } d  | _ zC t d d d d d	 | d d d
 |  ƒ }	 |	 j | ƒ j | ƒ }
 Wd  | | _ Xn? t d d d d d	 | d d d
 |  ƒ }	 |	 j | ƒ j | ƒ }
 t j | j d k ƒ set ‚ t | |
 ƒ t d d d d d	 | d d d
 |  ƒ j | ƒ } t | j | j ƒ d  S(   Ns"   skipping mini_batch_fit_transform.i   i    i   i
   i   R   R   R/   R%   t   win32iÿÿÿÿR;   i   R-   R0   (   i   i   (   R   R   R&   R'   R#   R   R2   R4   t   syst   platformt   sklearn.utils._joblib.parallelt   utilst   _joblibt   parallelt   multiprocessingR5   R<   R)   R=   R    (   R$   R/   R   R"   R6   R7   R>   t
   joblib_part   _mpR+   R?   R8   (    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_mini_batch_fit_transform§   s8    !				c          C   s›   d }  t  j j d ƒ } t d d d d | ƒ\ } } } t d d d d	 d
 |  d | d t ƒ } | j | ƒ } | j | d  ƒ } t | d | d ƒ d  S(   Ni   i    i   iè  i   R   R   R-   R.   R/   R%   i
   (   i   i   (	   R   R&   R'   R#   R   t   TrueR(   R4   R   (   R/   R   R"   R6   R7   t   results_traint   results_test(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_scaling_fit_transformÌ   s    !c       	   C   sJ  t  j j d ƒ }  t d d d d |  ƒ\ } } } t d d d d |  ƒ\ } } } t d d d d d	 d
 d t ƒ } t d	 d
 ƒ } | j | ƒ | j | ƒ | j | ƒ } | j | ƒ } t	 t  j
 | j j | j j ƒ ƒ t  j d
 ƒ d d ƒ| t  j | d d  d  … f ƒ 9} | t  j | d d  d  … f ƒ 9} t	 | | ƒ d  S(   Ni    i   iè  i   R   i
   R/   R1   R   i   R%   t   atolgñhãˆµøä>(   i   i   (   i   i   (   R   R&   R'   R#   R   R[   R	   R2   R4   R   t   absR)   R   t   Tt   eyet   sign(   R   R"   R6   t   ZR+   RN   t   results_test_pcat   results_test_spca(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_pca_vs_spca×   s    !!	!##R+   c         C   s\   t  j j d ƒ } t d d d d | ƒ\ } } } d } t t | |  d t ƒ j | ƒ d  S(   Ni    i   i
   i   R   R%   (   i   i   (   R   R&   R'   R#   R   R3   t   FalseR2   (   R+   R   R"   R6   t   warn_message(    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   test_spca_deprecation_warningé   s
    !	($   RQ   t   pytestt   numpyR   t   sklearn.utils.testingR    R   R   R   R   R   R   t   sklearn.decompositionR   R   R	   t   sklearn.utilsR
   R5   R#   t   markt   filterwarningst   parametrizeRh   R[   R,   R:   R@   RD   RE   RM   RO   RZ   R^   Rg   Rj   (    (    (    sJ   lib/python2.7/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyt   <module>   s@   '''''''$		