
\c           @   sl  d  Z  d d l Z d d l Z d d l m 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 m Z 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 l m Z d d  Z d   Z d   Z d   Z e j  j! d  d d   Z" e j  j! d  e j  j# e d d d d    Z$ d S(   s"    Test the graphical_lasso module.
iN(   t   linalg(   t   assert_array_almost_equal(   t   assert_array_less(   t   assert_warns_message(   t   graphical_lassot   GraphicalLassot   GraphicalLassoCVt   empirical_covariance(   t   make_sparse_spd_matrix(   t   StringIO(   t   check_random_state(   t   datasets(   t   PY3_OR_LATER(   t   assert_equali    c      
   C   s  d } d } t  |   }  t | d d d |  } t j |  } |  j t j |  | d | } t |  } x d D] } t   } t   }	 x d D]~ }
 t	 | d t
 d | d |
 \ } } } | | |
 <| |	 |
 <t j |  j \ } } | d k s t t j |  d  q q Wt | d
 | d d d t |	 d
 |	 d d d qs Wt d d	  j |  } | j |  t | j | d
 d d t | j | d d d | | j d  } t   } x< t t
 f D]. } t d |  j |  j } | j |  qWt | d | d  d  S(   Ni   id   t   alphagffffff?t   random_statet   sizeg        g?g      ?t   cdt   larst   return_costst   modei    t   decimali   t   assume_centeredi   (   g        g?g      ?(   R   R   (   R
   R   R    t   invt   multivariate_normalt   npt   zerosR   t   dictR   t   Truet   arrayt   TR   t   diffR   R   t   fitt   scoret   covariance_t   meant   listt   Falset
   precision_t   append(   R   t   dimt	   n_samplest   prect   covt   Xt   emp_covR   t   covst   icovst   methodt   cov_t   icov_t   costst   dual_gapt   modelt   Zt   precsR   t   prec_(    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt   test_graphical_lasso   s@    	!		

	c       	   C   s  t  j d d d d g d d d d g d d d d g d d d d g g  }  t  j d	 d d
 d g d d d d g d
 d d d g d d d d g g  } t j   j } t |  } xL d D]D } t | d d d t d | \ } } t | |   t | |  q Wd  S(   NgJSo?g        gڧ1?g{!<?g-ꊾ'?g[@gο]?gdw?glE!N?g',g5Ry;2@ggC%d?gXIſgv?R   R   R   g      ?R   R   (   R   R   (	   R   R   R   t	   load_irist   dataR   R   R%   R   (   t   cov_Rt   icov_RR,   R-   R0   R+   t   icov(    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt   test_graphical_lasso_irisD   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 d  d   d d   f } t |  } xL d D]D } t | d
 d d t d | \ } } t | |   t | |  qz Wd  S(   Ng@gHZ?gdw?gɉ1t?gO{̓%	g4#(#e @i   R   R   R   g?R   R   (   R   R   (	   R   R   R   R:   R;   R   R   R%   R   (   t	   cov_skggmt
   icov_skggmR,   R-   R0   R+   R>   (    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt   test_graph_lasso_2D\   s    %c       	   C   s2  t  j d d  }  t  j d d d d g d d d d	 g d
 d d d g d d d d	 g g  } t  j d d d d g d d d d g d d d d g d d d d g g  } t j   j |  d  d   f } t |  } xX d# D]P } t | d d d t d  | \ } } t	 | | d! d" t	 | | d! d" q Wd  S($   Ni
   i   g{Gz?gt<i?gb?gHWY?gիr?gH紁Nk?gۨxV4b?gb?g`ܴNk?gR*贁N{?gLgם?g:glWY?gExV4b?gR%l8@g,0g        g0gCKZ8@gg      )gTs gGrO#c@gm>(g     |@R   R   R   g{Gz?R   R   R   i   (   R   R   (
   R   t   arangeR   R   R:   R;   R   R   R%   R   (   t   indicesR<   R=   R,   R-   R0   R+   R>   (    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt"   test_graphical_lasso_iris_singularm   s$    s"   ignore: You should specify a valuei   c         C   s   d } d } t  |   }  t | d d d |  } t j |  } |  j t j |  | d | } t j } z2 t	   t _ t
 d d d	 d d
 d  j |  Wd  | t _ Xt
 d	 d d g d
 d d d  j |  d  S(   Ni   i   R   gQ?R   R   t   verboseid   t   alphast   tolg?g?g      ?t   n_jobsi   (   R
   R   R    R   R   R   R   t   syst   stdoutR	   R   R    (   R   R(   R)   R*   R+   R,   t   orig_stdout(    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt   test_graphical_lasso_cv   s    	!	&
t   reasonsD   On Python 2 DeprecationWarning is not issued for some unkown reason.c         C   s   d } d } t  |   }  t | d d d |  } t j |  } |  j t j |  | d | } t d d d	 g d
 d d d  } | j |  d } t	 j
 t d |  t | j | j  Wd  QXd  S(   Ni   i   R   gQ?R   R   RG   g?g      ?RH   g?RI   i   sn   Attribute grid_scores was deprecated in version 0.19 and will be removed in 0.21. Use ``grid_scores_`` insteadt   match(   R
   R   R    R   R   R   R   R   R    t   pytestt   warnst   DeprecationWarningR   t   grid_scorest   grid_scores_(   R   R(   R)   R*   R+   R,   R   t   depr_message(    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt   test_deprecated_grid_scores   s    	!!(%   t   __doc__RJ   t   numpyR   t   scipyR    RP   t   sklearn.utils.testingR   R   R   t   sklearn.covarianceR   R   R   R   t"   sklearn.datasets.samples_generatorR   t   sklearn.externals.six.movesR	   t   sklearn.utilsR
   t   sklearnR   t   sklearn.utils.fixesR   t   numpy.testingR   R9   R?   RB   RE   t   markt   filterwarningsRM   t   skipifRV   (    (    (    sL   lib/python2.7/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyt   <module>   s0   ",			