ó
‡ˆ\c        	   @   sw  d  d l  Z  d  d l Z d  d l Z d  d l 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 l m Z m Z m Z m Z d  d	 l m Z d  d
 l m 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 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 d d g Z* d „  Z+ d e, f d „  ƒ  YZ- d „  Z. d „  Z/ d  „  Z0 d! „  Z1 d" „  Z2 d# „  Z3 d$ „  Z4 d% „  Z5 d& „  Z6 d' „  Z7 d( „  Z8 d) „  Z9 d* „  Z: d+ „  Z; e j< j= d, ƒ e j< j> d- dJ dK dL dM g ƒ d6 „  ƒ ƒ Z? d7 „  Z@ d8 „  ZA d9 „  ZB d: „  ZC d; „  ZD d< „  ZE d= „  ZF d> „  ZG e j< j= d, ƒ e j< j> d? dN ƒ d@ „  ƒ ƒ ZH e) dA e ƒ dB „  ƒ ZI dC „  ZJ dD „  ZK dE „  ZL dF „  ZM dG „  ZN dH „  ZO e) dA e ƒ dI „  ƒ ZP d S(O   iÿÿÿÿN(   t   statst   linalg(   t   EmpiricalCovariance(   t   make_spd_matrix(   t	   cStringIO(   t   adjusted_rand_score(   t   GaussianMixture(   t#   _estimate_gaussian_covariances_fullt#   _estimate_gaussian_covariances_tiedt#   _estimate_gaussian_covariances_diagt(   _estimate_gaussian_covariances_spherical(   t   _compute_precision_cholesky(   t   _compute_log_det_cholesky(   t   ConvergenceWarningt   NotFittedError(   t   fast_logdet(   t   assert_allclose(   t   assert_almost_equal(   t   assert_array_almost_equal(   t   assert_array_equal(   t   assert_equal(   t   assert_greater(   t   assert_greater_equal(   t   assert_raise_message(   t   assert_warns_message(   t   ignore_warningst   fullt   tiedt   diagt	   sphericalc      	   C   s  t  j j d ƒ } g  } | d k r™ xr t t | | | d ƒ ƒ D]Q \ } \ }	 }
 } | j | j |
 | t  j | ƒ t t  j	 |	 |  ƒ ƒ ƒ ƒ qA Wn  | d k rxn t t | | | d ƒ ƒ D]M \ } \ }	 }
 } | j | j |
 t  j
 | ƒ t t  j	 |	 |  ƒ ƒ ƒ ƒ qÂ Wn  | d k r„x_ t t | | ƒ ƒ D]E \ } \ }	 }
 | j | j |
 | d t t  j	 |	 |  ƒ ƒ ƒ ƒ q8Wn  | d k røxe t t | | | d ƒ ƒ D]D \ } \ }	 }
 } | j | j |
 | t t  j	 |	 |  ƒ ƒ ƒ ƒ q­Wn  t  j | ƒ } | S(   Ni    R   R   R   R   (   t   npt   randomt   RandomStatet	   enumeratet   zipt   appendt   multivariate_normalt   eyet   intt   roundR   t   vstack(   t	   n_samplest
   n_featurest   weightst   meanst
   precisionst   covariance_typet   rngt   Xt   _t   wt   mt   c(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   generate_data*   s.    #$#$($#$t
   RandomDatac           B   s   e  Z d  d d d d „ Z RS(   iô  i   i2   c         C   s  | |  _  | |  _ | |  _ | j | ƒ |  _ |  j |  j j ƒ  |  _ | j | | ƒ | |  _ i d | j | ƒ d 6d | j | | ƒ d d 6t | d | ƒd 6t j	 g  t
 | ƒ D] } t | d | ƒd ^ q· ƒ d 6|  _ i d |  j d d 6d |  j d d 6t j |  j d ƒ d 6t j	 g  |  j d D] } t j | ƒ ^ q5ƒ d 6|  _ t t t g  t D]* } t | | |  j |  j |  j | ƒ ^ qjƒ ƒ |  _ t j g  t |  j ƒ D]: \ }	 }
 t j t t j |
 | ƒ ƒ |	 d	 t j ƒ^ q¹ƒ |  _ d  S(
   Ng      à?R   i   R   t   random_stateR   R   g      ð?t   dtype(   R)   t   n_componentsR*   t   randR+   t   sumR,   R   R   t   arrayt   ranget   covariancesR   t   invR-   t   dictR"   t   COVARIANCE_TYPER5   R0   t   hstackR!   R   R&   R'   t   Y(   t   selfR/   R)   R9   R*   t   scaleR1   t
   covariancet
   covar_typet   kR2   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   __init__H   s.    			6	0=	(   t   __name__t
   __module__RI   (    (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyR6   G   s   	c          C   s>  t  j j d ƒ }  |  j d d ƒ } d } t d | ƒ } t t d | | j | ƒ d } t d | ƒ } t t d | | j | ƒ d	 } t d
 | ƒ } t t d | | j | ƒ d	 } t d | ƒ } t t d | | j | ƒ d } t d | ƒ } t t d | | j | ƒ d } t d | ƒ } t t d | | j | ƒ d }	 t d |	 ƒ } t t d |	 | j | ƒ d \ }
 } } } } d \ } } t d |
 d
 | d | d | d | d | d | ƒ j | ƒ } t | j	 |
 ƒ t | j
 | ƒ t | j | ƒ t | j | ƒ t | j | ƒ t | j | ƒ t | j | ƒ d  S(   Ni    i
   i   R9   sO   Invalid value for 'n_components': %d Estimation requires at least one componentt   bad_covariance_typeR.   sl   Invalid value for 'covariance_type': %s 'covariance_type' should be in ['spherical', 'tied', 'diag', 'full']iÿÿÿÿt   tolsK   Invalid value for 'tol': %.5f Tolerance used by the EM must be non-negativet	   reg_covarsU   Invalid value for 'reg_covar': %.5f regularization on covariance must be non-negativet   max_itersK   Invalid value for 'max_iter': %d Estimation requires at least one iterationt   n_initsC   Invalid value for 'n_init': %d Estimation requires at least one runt
   bad_methodt   init_paramss(   Unimplemented initialization method '%s'g-Cëâ6?i   i   gš™™™™™¹?R   R   (   i   g-Cëâ6?i   i   gš™™™™™¹?(   R   R   (   R   R   R    R:   R   R   t
   ValueErrort   fitR   R9   R.   RM   RN   RO   RP   RR   (   R/   R0   t   n_components_badt   gmmt   covariance_type_badt   tol_badt   reg_covar_badt   max_iter_badt
   n_init_badt   init_params_badR9   RM   RP   RO   RN   R.   RR   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt    test_gaussian_mixture_attributesg   sh    c          C   sÝ   d d l  m }  t j j d ƒ } d	 \ } } } | j | d | ƒ } t t d | | j d f |  | | ƒ | j | | d ƒ } t t d | | j d f |  | | | ƒ | j | | ƒ } t	 | |  | | | ƒ ƒ d  S(
   Niÿÿÿÿ(   t   _check_Xi    i
   i   i   sL   Expected n_samples >= n_components but got n_components = %d, n_samples = %ds?   Expected the input data X have %d features, but got %d features(   i
   i   i   (
   t   sklearn.mixture.baseR^   R   R   R    R:   R   RS   t   shapeR   (   R^   R/   R)   R9   R*   t	   X_bad_dimR0   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_check_X±   s    c    	      C   sc  t  j j d ƒ }  t |  ƒ } | j } | j d } t d | ƒ } |  j | d ƒ } | | _ t	 t
 d | t | j ƒ f | j | ƒ |  j | ƒ d } | | _ t	 t
 d t  j | ƒ t  j | ƒ f | j | ƒ |  j | ƒ } | | j ƒ  d } | | _ t	 t
 d t  j | ƒ | j | ƒ | j } t d | d | ƒ } | j | ƒ t | | j ƒ d  S(	   Ni    R   R9   i   sB   The parameter 'weights' should have the shape of (%d,), but got %ss]   The parameter 'weights' should be in the range [0, 1], but got max value %.5f, min value %.5fsI   The parameter 'weights' should be normalized, but got sum(weights) = %.5ft   weights_init(   R   R   R    R6   R9   R0   R   R:   Rc   R   RS   t   strR`   RT   t   mint   maxR;   R+   R   (	   R/   t	   rand_dataR9   R0   t   gt   weights_bad_shapet   weights_bad_ranget   weights_bad_normR+   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_check_weightsÉ   s:    					c          C   sµ   t  j j d ƒ }  t |  ƒ } | j | j } } | j d } t d | ƒ } |  j | d | ƒ } | | _	 t
 t d | j | ƒ | j } | | _	 | j | ƒ t | | j	 ƒ d  S(   Ni    R   R9   i   s/   The parameter 'means' should have the shape of (   R   R   R    R6   R9   R*   R0   R   R:   t
   means_initR   RS   RT   R,   R   (   R/   Rg   R9   R*   R0   Rh   t   means_bad_shapeR,   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_check_meansö   s    			c          C   s
  t  j j d ƒ }  t |  ƒ } | j | j } } i t  j | d | | f ƒ d 6t  j | d | d f ƒ d 6t  j | d | f ƒ d 6t  j | d ƒ d 6} t  j | | | f ƒ } t  j | ƒ | d <d | d <i | d 6| d d 6t  j | | f d ƒ d 6t  j | d ƒ d 6} i d d 6d d 6d	 d 6d	 d 6} xÈ t	 D]À } t |  ƒ j
 | }	 t d
 | d | d |  ƒ }
 | | |
 _ t t d | |
 j |	 ƒ | | |
 _ t t d | | | f |
 j |	 ƒ | j | |
 _ |
 j |	 ƒ t | j | |
 j ƒ qBWd  S(   Ni    i   R   R   R   R   g      ð¿s   symmetric, positive-definitet   positiveR9   R.   R7   s5   The parameter '%s precision' should have the shape ofs   '%s precision' should be %s(   i    i    i    (   R   R   R    R6   R9   R*   t   onesR%   R   RA   R0   R   t   precisions_initR   RS   RT   R-   R   (   R/   Rg   R9   R*   t   precisions_bad_shapet   precisions_not_post   precisions_not_positivet   not_positive_errorsRG   R0   Rh   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_check_precisions  sN    

	c          C   sš  t  j j d ƒ }  d \ } } |  j | | ƒ } |  j | d ƒ } t  j | ƒ | } t  j | g ƒ } t  j d | f ƒ } t | | | | d ƒ } t d t	 ƒ }	 |	 j
 | ƒ t |	 j | d d d ƒd ƒ t |	 j | d d d ƒd ƒ t | d	 ƒ }
 t  j g  |
 D] } t  j | | j ƒ ^ qƒ } t  j g  | D] } t j | ƒ ^ q=ƒ } t | | ƒ t  j | d f ƒ } t  j | g ƒ } | j d
 d ƒ j d ƒ } t | | | | d ƒ } t d t ƒ }	 |	 j
 | ƒ t |	 j | d d d ƒd ƒ t |	 j | d d d ƒd ƒ t | d	 ƒ }
 t  j g  |
 D] } t  j | | j ƒ ^ q:ƒ } t  j g  | D] } t j | ƒ ^ qkƒ } t | | ƒ d  S(   Ni    iô  i   i   t   assume_centeredt   normt	   frobeniust   spectralR   t   axisiÿÿÿÿ(   iô  i   (   i   iÿÿÿÿ(   R   R   R    R:   t   sqrtR<   t   zerosR   R   t   TrueRT   R   t
   error_normR   t   dott   TR   R?   R   Rq   t   meant   reshapet   False(   R/   R)   R*   R0   t   respt   X_respt   nkt   xkt   covars_predt   ecovt   precs_chol_predt   prect
   precs_predt   covt	   precs_est(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_suffstat_sk_fullE  s8      1+  1+c          C   s  t  j j d ƒ }  d
 \ } } } |  j | | ƒ } | | j d d ƒ d  d  … t  j f } |  j | | ƒ } | j d d ƒ } t  j | j | ƒ | d  d  … t  j f } t | | | | d ƒ } t  j | d  d  … t  j t  j f | d ƒ | } t	 | | | | d ƒ }	 t
 ƒ  }
 | |
 _ t |
 j |	 d d ƒd ƒ t |
 j |	 d d ƒd ƒ t |	 d	 ƒ } t  j | | j ƒ } t j |	 ƒ } t | | ƒ d  S(   Ni    iô  i   R|   i   Ry   Rz   R{   R   (   iô  i   i   (   R   R   R    R:   R;   t   newaxisR   R‚   R   R   R   t   covariance_R   R€   R   R   R?   R   (   R/   R)   R*   R9   R†   R0   Rˆ   R‰   t   covars_pred_fullt   covars_pred_tiedR‹   RŒ   RŽ   R   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_suffstat_sk_tiedo  s&    ),&		c          C   s  t  j j d ƒ }  d \ } } } |  j | | ƒ } | | j d d ƒ d  d  … t  j f } |  j | | ƒ } | j d d ƒ } t  j | j | ƒ | d  d  … t  j f } t | | | | d ƒ } t	 | | | | d ƒ }	 t
 ƒ  }
 x t | |	 ƒ D]n \ } } t  j t  j | ƒ ƒ |
 _ t  j | ƒ } t |
 j | d d ƒd ƒ t |
 j | d d ƒd ƒ qõ Wt |	 d	 ƒ } t |	 d
 | d ƒ d  S(   Ni    iô  i   R|   i   Ry   Rz   R{   R   g      ð?(   iô  i   i   (   R   R   R    R:   R;   R’   R   R‚   R   R	   R   R"   R   R“   R   R€   R   (   R/   R)   R*   R9   R†   R0   Rˆ   R‰   R”   t   covars_pred_diagR‹   t   cov_fullt   cov_diagRŒ   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_suffstat_sk_diagŒ  s"    ),	 c    
      C   sé   t  j j d ƒ }  d \ } } |  j | | ƒ } | | j ƒ  } t  j | d f ƒ } t  j | g ƒ } | j ƒ  } t | | | | d ƒ } t  j | j	 ƒ  j
 | j	 ƒ  ƒ | | } t | | ƒ t | d ƒ }	 t | d |	 d ƒ d  S(   Ni    iô  i   i   R   g      ð?(   iô  i   (   R   R   R    R:   Rƒ   Rq   R<   R
   R   t   flattenR‚   R   R   (
   R/   R)   R*   R0   R†   Rˆ   R‰   t   covars_pred_sphericalt   covars_pred_spherical2RŒ   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt#   test_gaussian_suffstat_sk_spherical¥  s    		c          C   s#  d }  t  t j j d ƒ ƒ } xþ t D]ö } | j | } | d k rr t j g  | D] } t j | ƒ ^ qQ ƒ } nq | d k r t j | ƒ } nS | d k rÊ t j g  | D] } t j	 | ƒ ^ q© ƒ } n | d k rã | |  } n  t
 t | | ƒ | d |  ƒ} t | d t j | ƒ ƒ q% Wd  S(	   Ni   i    R   R   R   R   R*   g      à¿(   R6   R   R   R    RA   R>   R<   R   t   dett   prodR   R   R   t   log(   R*   Rg   RG   RF   R   t   predected_dett   expected_det(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_compute_log_det_cholesky¼  s    ..c         C   s”   t  j t |  ƒ t | ƒ f ƒ } t  j | ƒ } x] t t | | ƒ ƒ D]F \ } \ } } t j j |  | | ƒ j	 d d ƒ | d  d  … | f <qF W| S(   NR|   i   (
   R   t   emptyt   lenR}   R!   R"   R    Ry   t   logpdfR;   (   R0   R,   t   covarsR†   t   stdst   iRƒ   t   std(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   _naive_lmvnpdf_diagÒ  s
    !(8c          C   s  d d l  m }  t j j d ƒ } t | ƒ } d } | j } | j } | j } | j	 | | ƒ } | j	 | | ƒ } t
 | | | ƒ }	 t j g  | D]" }
 t j d t j |
 ƒ ƒ ^ q’ ƒ } |  | | | d ƒ } t | |	 ƒ d t j | ƒ } |  | | | d ƒ } t | |	 ƒ t j g  | D] }
 |
 ^ q!ƒ j d d ƒ } t j t j d | ƒ ƒ } t
 | | | g | ƒ }	 |  | | | d	 ƒ } t | |	 ƒ | j d d
 ƒ } d t j | j d d
 ƒ ƒ } t
 | | g  | D] } | g | ^ qÚƒ }	 |  | | | d ƒ } t | |	 ƒ d  S(   Niÿÿÿÿ(   t   _estimate_log_gaussian_probi    iô  g      ð?R   R   R|   R   i   R   (   t    sklearn.mixture.gaussian_mixtureR­   R   R   R    R6   R*   R9   R,   R:   R¬   R<   R   R}   R   Rƒ   (   R­   R/   Rg   R)   R*   R9   R,   t   covars_diagR0   t   log_prob_naivet   xt
   precs_fullt   log_probt   precs_chol_diagt   covars_tiedt
   precs_tiedt   covars_sphericalt   precs_sphericalRH   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt'   test_gaussian_mixture_log_probabilitiesÚ  s<    			8.		 	c          C   s   t  j j d ƒ }  t |  d d ƒ} | j } | j } | j } |  j | | ƒ } xÈ t D]À } | j	 } | j
 } | j | }	 t d | d |  d | d | d |	 d	 | ƒ }
 |
 j | ƒ |
 j | ƒ } t | j d
 d ƒ t  j | ƒ ƒ t |
 j | ƒ t |
 j | ƒ t |
 j |	 ƒ qX Wd  S(   Ni    RE   i   R9   R7   Rc   Rm   Rr   R.   R|   i   (   R   R   R    R6   R)   R*   R9   R:   RA   R+   R,   R-   R   RT   t   predict_probaR   R;   Rq   R   Rc   Rm   Rr   (   R/   Rg   R)   R*   R9   R0   RG   R+   R,   R-   Rh   R†   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt,   test_gaussian_mixture_estimate_log_prob_resp  s(    						"c          C   sö   t  j j d ƒ }  t |  ƒ } xÑ t D]É } | j | } | j } t d | j d |  d | j	 d | j
 d | j | d | ƒ } t t d | j | ƒ | j | ƒ | j | ƒ } | j | ƒ j d	 d
 ƒ } t | | ƒ t t | | ƒ d ƒ q% Wd  S(   Ni    R9   R7   Rc   Rm   Rr   R.   sp   This GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.R|   i   gffffffî?(   R   R   R    R6   RA   R0   RC   R   R9   R+   R,   R-   R   R   t   predictRT   Rº   t   argmaxR   R   R   (   R/   Rg   RG   R0   RC   Rh   t   Y_predt   Y_pred_proba(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt+   test_gaussian_mixture_predict_predict_proba$  s$    			s   ignore:.*did not converge.*s   seed, max_iter, toli    i   gH¯¼šò×z>i   gš™™™™™¹?i   i,  i   c         C   së   t  j j |  ƒ } t | ƒ } xÆ t D]¾ } | j | } | j } t d | j d | d | j	 d | j
 d | j | d | d | d | ƒ } t j | ƒ }	 |	 j | ƒ j | ƒ }
 | j | ƒ } t |
 | ƒ t t | | ƒ d	 ƒ q% Wd  S(
   NR9   R7   Rc   Rm   Rr   R.   RO   RM   gffffffî?(   R   R   R    R6   RA   R0   RC   R   R9   R+   R,   R-   t   copyt   deepcopyRT   R¼   t   fit_predictR   R   R   (   t   seedRO   RM   R/   Rg   RG   R0   RC   Rh   t   ft   Y_pred1t   Y_pred2(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt!   test_gaussian_mixture_fit_predict=  s     		c          C   s  t  j j d ƒ }  t |  ƒ } | j } | j } xÍt D]Å} | j | } t d | d d d d d |  d | ƒ } | j	 | ƒ t
 t  j | j ƒ t  j | j ƒ d d	 d
 d ƒ| j d  d  … d f j ƒ  } | j d  d  … d f j ƒ  } t
 | j | | j | d d	 d
 d ƒ| d k r9| j }	 | j d }
 n+| d k r~t  j | j g | ƒ }	 t  j | j d g | ƒ }
 næ | d k rõt  j g  | j D] } t  j | ƒ | ^ qšƒ }	 t  j g  | j d D] } t  j | ƒ | ^ qÐƒ }
 no | d k rdt  j g  | j D] } t  j | ƒ ^ qƒ }	 t  j g  | j d D] } t  j | ƒ ^ qCƒ }
 n  t  j |	 d d d d ƒj ƒ  } t  j |
 d d d d ƒj ƒ  } xS t | | ƒ D]B \ } } t ƒ  } |
 | | _ t
 | j |	 | ƒ d d
 d	 ƒq¶Wq7 Wd  S(   Ni    R9   RP   i   RN   R7   R.   t   rtolgš™™™™™¹?t   atolg{®Gáz„?R   R   R   R   t   axis1i   t   axis2i   (   R   R   R    R6   R*   R9   RA   R0   R   RT   R   t   sortt   weights_R+   t   means_t   argsortR,   t   precisions_R-   R<   R%   R   t   traceR"   R   R“   R€   (   R/   Rg   R*   R9   RG   R0   Rh   t   arg_idx1t   arg_idx2t	   prec_predt	   prec_testR4   t   dRH   t   hR‹   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_gaussian_mixture_fitY  sJ    			$	 	)	0.	,!!	c    
      C   s  t  j j d ƒ }  t |  ƒ } | j } d } xá t D]Ù } | j | } t d | d d d d d |  d | ƒ } g  } x7 t | ƒ D]) } | j	 | ƒ | j
 | j | ƒ ƒ q Wt  j | ƒ } t d | d | d d d |  d | ƒ }	 |	 j	 | ƒ t | j ƒ  |	 j | ƒ ƒ q4 Wd  S(	   Ni    i
   R9   RP   i   RN   R7   R.   (   R   R   R    R6   R9   RA   R0   R   R=   RT   R#   t   scoreR<   R   Re   (
   R/   Rg   R9   RP   RG   R0   Rh   t   llR1   t   g_best(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt%   test_gaussian_mixture_fit_best_params‰  s$    		c          C   sœ   t  j j d ƒ }  t |  d d ƒ} | j } d } xb t D]Z } | j | } t d | d d d | d d d |  d	 | ƒ } t t	 d
 | | j
 | ƒ q: Wd  S(   Ni    RE   i   R9   RP   RO   RN   R7   R.   sz   Initialization %d did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.(   R   R   R    R6   R9   RA   R0   R   R   R   RT   (   R/   Rg   R9   RO   RG   R0   Rh   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt-   test_gaussian_mixture_fit_convergence_warningž  s    		c       
   C   sµ   t  j j d ƒ }  d	 \ } } } |  j | | ƒ } x{ t D]s } t d | d | d d ƒ j | ƒ j | ƒ } t d | d | d d d d ƒ j | ƒ j | ƒ } t | | ƒ q: Wd  S(
   Ni    i2   i   i   R9   R.   R7   RP   (   i2   i   i   (	   R   R   R    t   randnRA   R   RT   RÚ   R   (   R/   R)   R*   R9   R0   t   cv_typet   train1t   train2(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_multiple_init°  s    !c          C   s¥   t  j j d ƒ }  d \ } } } |  j | | ƒ } i d d 6d d 6d	 d
 6d d 6} xI t D]A } t d | d | d |  ƒ j | ƒ } t | j ƒ  | | ƒ q\ Wd  S(   Ni    i2   i   i   i   R   i   R   i   R   i)   R   R9   R.   R7   (   i2   i   i   (	   R   R   R    Rß   RA   R   RT   R   t   _n_parameters(   R/   R)   R*   R9   R0   t   n_paramsRà   Rh   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt"   test_gaussian_mixture_n_parameters¿  s    "c          C   s¸   t  j j d ƒ }  d \ } } } |  j | | ƒ } t d | d d d |  ƒ j | ƒ j | ƒ } xQ d d	 d
 g D]@ } t d | d | d |  ƒ j | ƒ j | ƒ } t | | ƒ qp Wd  S(   Ni    id   i   R9   R.   R   R7   R   R   R   (   id   i   i   (   R   R   R    Rß   R   RT   t   bicR   (   R/   R)   t   n_dimR9   R0   t   bic_fullR.   Rç   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_bic_1d_1componentÌ  s    c       
   C   sN  t  j j d ƒ }  d \ } } } |  j | | ƒ } d t t  j | j d d ƒƒ | d t  j d t  j ƒ } xÖ t	 D]Î } t
 d | d	 | d
 |  d d ƒ } | j | ƒ d | | d | j ƒ  } d | | t  j | ƒ | j ƒ  }	 | t  j | ƒ }
 | j | ƒ | | |
 k  s#t ‚ | j | ƒ |	 | |
 k  sx t ‚ qx Wd  S(   Ni    i2   i   i   g      à?t   biasi   R9   R.   R7   RO   iÈ   (   i2   i   i   (   R   R   R    Rß   R   R   R‚   R¡   t   piRA   R   RT   Rä   R}   t   aict   AssertionErrorRç   (   R/   R)   R*   R9   R0   t   sghRà   Rh   Rí   Rç   t   bound(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_gaussian_mixture_aic_bicÜ  s      #c          C   sã   t  j j d ƒ }  t |  ƒ } | j } xµ t D]­ } | j | } t d | d d d d d |  d | d d ƒ } t d | d d d d d |  d | d d	 ƒ } t j	 } t
 ƒ  t _	 z | j | ƒ | j | ƒ Wd  | t _	 Xq. Wd  S(
   Ni    R9   RP   i   RN   R7   R.   t   verbosei   (   R   R   R    R6   R9   RA   R0   R   t   syst   stdoutt   StringIORT   (   R/   Rg   R9   RG   R0   Rh   RØ   t
   old_stdout(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_gaussian_mixture_verboseñ  s"    				RÄ   c         C   sï  |  } t  j j | ƒ } d \ } } } | j | | ƒ } t d | d d d d d d d	 | d
 t ƒ } t d | d d d d d d d	 | d
 t ƒ } | j | ƒ | j | ƒ j | ƒ }	 | j | ƒ j | ƒ }
 t	 | j
 | j
 ƒ t	 | j | j ƒ t	 | j | j ƒ |
 |	 k st ‚ t d | d d d d d d d	 | d
 t d d ƒ } t d | d d d d d d d	 | d
 t d d ƒ } | j | ƒ | j sžt ‚ | j | ƒ x. t d ƒ D]  } | j | ƒ | j r¸Pq¸q¸W| j sët ‚ d  S(   Niô  i   R9   RP   i   RO   RN   i    R7   t
   warm_starti   RM   gíµ ÷Æ°>iè  (   iô  i   i   (   R   R   R    R:   R   R…   R   RT   RÚ   R   RÎ   RÏ   RÑ   Rî   t
   converged_R=   (   RÄ   R7   R/   R)   R*   R9   R0   Rh   RØ   t   score1t   score2R1   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_warm_start  s>    			t   categoryc       
   C   s¿   t  j j d ƒ }  t |  ƒ } | j } | j d } x„ d D]| } t d | d t d | d	 |  ƒ } x. t d
 ƒ D]  } | j	 | ƒ | j
 ro Pqo qo W| j
 s¢ t ‚ | | j k s; t ‚ q; Wd  S(   Ni    R   i   i   i2   R9   Rø   RO   R7   id   (   i   i   i2   (   R   R   R    R6   R9   R0   R   R   R=   RT   Rù   Rî   t   n_iter_(   R/   Rg   R9   R0   RO   RV   R1   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt)   test_convergence_detected_with_warm_start5  s    		c    	      C   s7  d }  t  j j d ƒ } t | d d ƒ} | j } | j |  } t d | d d d d d	 d d
 | d |  ƒ } t t d | j	 | ƒ t
 j ƒ  " t
 j d t ƒ | j | ƒ Wd  QX| j	 | ƒ } | j | ƒ j ƒ  } t | | ƒ t d | d d d	 d d
 | d |  ƒ j | ƒ } t | j	 | ƒ | j	 | ƒ ƒ d  S(   NR   i    RE   i   R9   RP   i   RO   RN   R7   R.   sp   This GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.t   ignore(   R   R   R    R6   R9   R0   R   R   R   RÚ   t   warningst   catch_warningst   simplefilterR   RT   t   score_samplesRƒ   R   R   (	   RG   R/   Rg   R9   R0   t   gmm1t	   gmm_scoret   gmm_score_probat   gmm2(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt
   test_scoreH  s*    		c          C   s°   d }  t  j j d ƒ } t | d d ƒ} | j } | j |  } t d | d d d d d	 | d
 |  ƒ } t t d | j	 | ƒ | j
 | ƒ j	 | ƒ } t | j d | j ƒ d  S(   NR   i    RE   i   R9   RP   i   RN   R7   R.   sp   This GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.(   R   R   R    R6   R9   R0   R   R   R   R  RT   R   R`   R)   (   RG   R/   Rg   R9   R0   RV   t   gmm_score_samples(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_score_samplesg  s    	c    	      C   s%  t  j j d ƒ }  t |  d d ƒ} | j } xñ t D]é } | j | } t d | d | d d d t d d	 d
 |  d d ƒ } t  j	 } t
 j ƒ  ‹ t
 j d t ƒ xd t d ƒ D]V } | } y | j | ƒ j | ƒ } Wn t k
 ré n Xt | | ƒ | j r® Pq® q® W| j st ‚ Wd  QXq4 Wd  S(   Ni    RE   i   R9   R.   RN   Rø   RO   i   R7   RM   gH¯¼šò×z>R   iX  (   R   R   R    R6   R9   RA   R0   R   R   t   inftyR  R  R  R   R=   RT   RÚ   R   Rù   Rî   (	   R/   Rg   R9   RG   R0   RV   t   current_log_likelihoodR1   t   prev_log_likelihood(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_monotonic_likelihoodz  s.    		
	c       
   C   sá   t  j j d ƒ }  d \ } } t  j t  j | d | f ƒ t  j | d | f ƒ f ƒ } x t D]y } t d | d d d | d |  ƒ } t j	 ƒ  D t j
 d	 t ƒ t t d
 | j | ƒ | j d d ƒ j | ƒ Wd  QXq` Wd  S(   Ni    i
   i   i   R9   RN   R.   R7   R   sØ   Fitting the mixture model failed because some components have ill-defined empirical covariance (for instance caused by singleton or collapsed samples). Try to decrease the number of components, or increase reg_covar.gíµ ÷Æ°>(   i
   i   (   R   R   R    R(   Rq   R~   RA   R   R  R  R  t   RuntimeWarningR   RS   RT   t
   set_params(   R/   R)   R*   R0   RG   RV   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_regularisation›  s    c       
   C   s
  t  j j d ƒ }  t |  d d ƒ} | j } xÖ t D]Î } | j | } t d | d | d |  d d ƒ } | j | ƒ | d	 k rÀ x~ t	 | j
 | j ƒ D]" \ } } t t j | ƒ | ƒ q— Wq4 | d
 k rë t t j | j
 ƒ | j ƒ q4 t | j
 d | j ƒ q4 Wd  S(   Ni    RE   i   R9   R.   R7   RP   i   R   R   g      ð?(   R   R   R    R6   R9   RA   R0   R   RT   R"   RÑ   t   covariances_R   R   R?   (   R/   Rg   R9   RG   R0   RV   R   t   covar(    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_propertyµ  s     		"c       	   C   sŽ  t  j j d ƒ }  t |  d d d d ƒ} | j | j } } xJt D]B} | j | } t d | d | d |  ƒ } t	 t
 d | j d ƒ | j | ƒ t	 t d	 | j d ƒ d
 } | j | ƒ \ } }	 xt | ƒ D] }
 | d k rt | j |
 t  j | |	 |
 k j ƒ d d ƒqÓ | d k rSt | j t  j | |	 |
 k j ƒ d d ƒqÓ | d k r›t | j |
 t  j t  j | |	 |
 k j ƒ ƒ d d ƒqÓ t | j |
 t  j | |	 |
 k | j |
 ƒ d d ƒqÓ Wt  j g  t | ƒ D]" }
 t  j | |	 |
 k d ƒ ^ qêƒ } t | j | d d ƒt | j | | f ƒ xB t d d ƒ D]1 } | j | ƒ \ } } t | j | | f ƒ qQWqD Wd  S(   Ni    RE   i   R9   i   R.   R7   s+   This GaussianMixture instance is not fitteds   Invalid value for 'n_samplesi N  R   t   decimali   R   R   id   (   R   R   R    R6   R*   R9   RA   R0   R   R   R   t   sampleRT   RS   R=   R   R  R   R‚   R   t   varRÏ   R<   Rƒ   R   R`   (   R/   Rg   R*   R9   RG   R0   RV   R)   t   X_st   y_sRH   t   means_st   sample_sizeR1   (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   test_sampleË  sF    		&	&%
.	5c       
   C   s»   x´ t  d ƒ D]¦ }  t t j j |  ƒ d d ƒ} | j } | j d } t d | d d d d d |  ƒ j | ƒ } t d | d d	 d d d |  ƒ j | ƒ } | j	 | j	 k s t
 ‚ q Wd  S(
   Ni   RE   i   R   R9   RP   RO   R7   i
   (   R=   R6   R   R   R    R9   R0   R   RT   t   lower_bound_Rî   (   R7   Rg   R9   R0   R  R  (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt	   test_initþ  s    	(   i    i   gH¯¼šò×z>(   i   i   gš™™™™™¹?(   i   i,  gH¯¼šò×z>(   i   i,  gš™™™™™¹?(   i    i   i   (Q   Ró   RÁ   R  t   pytestt   numpyR   t   scipyR    R   t   sklearn.covarianceR   t"   sklearn.datasets.samples_generatorR   t   sklearn.externals.six.movesR   Rõ   t   sklearn.metrics.clusterR   R®   R   R   R   R	   R
   R   R   t   sklearn.exceptionsR   R   t   sklearn.utils.extmathR   t   sklearn.utils.testingR   R   R   R   R   R   R   R   R   R   RA   R5   t   objectR6   R]   Rb   Rl   Ro   Rw   R‘   R–   Rš   Rž   R¤   R¬   R¹   R»   RÀ   t   markt   filterwarningst   parametrizeRÈ   RÙ   RÝ   RÞ   Rã   Ræ   Rê   Rñ   R÷   Rü   Rÿ   R	  R  R  R  R  R  R  (    (    (    sJ   lib/python2.7/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyt   <module>   s„   "	 	J		-		8	*						1			0							!.			!			3