ó
‡ˆ\c           @   s›  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 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 l m Z e j d d ƒ Z d e d Z e j e e g ƒ Z e j j d ƒ Z e j  e j! e" e ƒ d d ƒƒ Z# e e# d d … f c d e j$ e" e# ƒ d ƒ d 7<e d d … d f d d … e j% f Z e d d … d f Z d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d  „  Z, d! „  Z- 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; d0 „  Z< d S(1   iÿÿÿÿN(   t   sparse(   t   assert_equal(   t   assert_array_almost_equal(   t   assert_array_equal(   t   check_random_state(   t   assert_less(   t   assert_warns(   t   assert_almost_equal(   t   assert_raises_regexp(   t   assert_raises(   t   LinearRegressiont   RANSACRegressort   Lasso(   t   _dynamic_max_trials(   t   ConvergenceWarningi8ÿÿÿiÈ   gš™™™™™É?i   iè  t   sizei2   i   i
   i    i   c          C   ss   t  ƒ  }  t |  d d d d d d ƒ} | j t t ƒ t j | j ƒ j t j	 ƒ } t
 | t <t | j | ƒ d  S(   Nt   min_samplesi   t   residual_thresholdi   t   random_statei    (   R
   R   t   fitt   Xt   yt   npt	   ones_liket   inlier_mask_t   astypet   bool_t   Falset   outliersR   (   t   base_estimatort   ransac_estimatort   ref_inlier_mask(    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_inliers_outliers!   s    	
c       
   C   s†   d „  }  t  j j d ƒ } | j d d ƒ } | j d d ƒ } t ƒ  } t | d d d d d	 |  d
 d ƒ} t t | j | | ƒ d  S(   Nc         S   s,   t  |  j d d ƒ t  | j d d ƒ t S(   Ni    i   (   R   t   shapeR   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   is_data_valid3   s    i    i
   i   i   R   R   i   R"   R   (	   R   t   randomt   RandomStatet   randR
   R   R	   t
   ValueErrorR   (   R"   t   rngR   R   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_is_data_valid2   s    			c       
   C   sP   d „  }  t  ƒ  } t | d d d d d |  d d ƒ} t t | j t t ƒ d  S(	   Nc         S   s,   t  | j d d ƒ t  | j d d ƒ t S(   Ni    i   (   R   R!   R   (   t	   estimatorR   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   is_model_validF   s    R   i   R   i   R*   R   i    (   R
   R   R	   R&   R   R   R   (   R*   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_is_model_validE   s    			c       
   C   sÖ   t  ƒ  }  t |  d d d d d d d d ƒ} t t | j t t ƒ t t t ƒ t t	 ƒ t j
 d d d ƒ } t |  d d ƒ} xN t d
 ƒ D]@ } | j d d d | ƒ | j t t ƒ t | j | d ƒ qŽ Wd  S(   NR   i   R   i   t
   max_trialsi    R   i   g•Ö&è.>i2   g¡vÿÿÿï?(   R
   R   R	   R&   R   R   R   R   t   lenR   R!   t   ranget
   set_paramsR   t	   n_trials_(   R   R   R,   t   i(    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_max_trialsT   s    		)c       
   C   sQ   t  ƒ  }  t |  d d d d d d d d ƒ} | j t t ƒ t | j d ƒ d  S(	   NR   i   R   i   t   stop_n_inliersR   i    i   (   R
   R   R   R   R   R   R0   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_stop_n_inliersg   s    		c       
   C   sQ   t  ƒ  }  t |  d d d d d d d d ƒ} | j t t ƒ t | j d ƒ d  S(	   NR   i   R   i   t
   stop_scorei    R   i   (   R
   R   R   R   R   R   R0   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_stop_scoreq   s    		c          C   s¿   t  j d ƒ d  d  … d  f }  t  j d	 ƒ } d | d <d | d <t ƒ  } t | d d d d d d ƒ} | j |  | ƒ t | j |  d | d ƒ d ƒ t	 | j |  d  | d  ƒ d ƒ d  S(
   Nid   i   i    R   i   R   g      à?R   (   id   (
   R   t   aranget   Nonet   zerosR
   R   R   R   t   scoreR   (   R   R   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_score{   s    

	!c          C   sœ   t  j d ƒ d  d  … d  f }  t  j d	 ƒ } d | d <d | d <t ƒ  } t | d d d d d d ƒ} | j |  | ƒ t | j |  ƒ t  j d ƒ ƒ d  S(
   Nid   i   i    R   i   R   g      à?R   (   id   (	   R   R7   R8   R9   R
   R   R   R   t   predict(   R   R   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_predictŠ   s    

	c       
   C   s€   t  ƒ  }  t |  d d d d d d d d ƒ} d	 } t t | | j t t ƒ t | j d ƒ t | j	 d ƒ t | j
 d ƒ d  S(
   NR   i   R   g        R   i    R,   i   s+   RANSAC could not find a valid consensus set(   R
   R   R   R&   R   R   R   R   t   n_skips_no_inliers_t   n_skips_invalid_data_t   n_skips_invalid_model_(   R   R   t   msg(    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt#   test_ransac_resid_thresh_no_inliers˜   s    		c          C   s}   d „  }  t  ƒ  } t | d |  d d ƒ} d } t t | | j t t ƒ t | j d ƒ t | j	 d ƒ t | j
 d ƒ d  S(   Nc         S   s   t  S(   N(   R   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyR"   ¨   s    R"   R,   i   s+   RANSAC could not find a valid consensus seti    (   R
   R   R   R&   R   R   R   R   R>   R?   R@   (   R"   R   R   RA   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_no_valid_data§   s    				c          C   s}   d „  }  t  ƒ  } t | d |  d d ƒ} d } t t | | j t t ƒ t | j d ƒ t | j	 d ƒ t | j
 d ƒ d  S(   Nc         S   s   t  S(   N(   R   (   R)   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyR*   ¸   s    R*   R,   i   s+   RANSAC could not find a valid consensus seti    (   R
   R   R   R&   R   R   R   R   R>   R?   R@   (   R*   R   R   RA   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_no_valid_model·   s    				c          C   sƒ   d „  }  t  ƒ  } t | d |  d d d d ƒ} d } t t | | j t t ƒ t | j d ƒ t | j	 d	 ƒ t | j
 d ƒ d  S(
   Nc         S   s   t  S(   N(   R   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyR"   È   s    R"   R,   i   t	   max_skipsi   s/   RANSAC skipped more iterations than `max_skips`i    i   (   R
   R   R   R&   R   R   R   R   R>   R?   R@   (   R"   R   R   RA   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_exceed_max_skipsÇ   s    				c          C   s€   t  a d „  }  t ƒ  } t | d |  d d d d ƒ} t t | j t t ƒ t	 | j
 d ƒ t	 | j d ƒ t	 | j d ƒ d  S(	   Nc         S   s   t  s t a  t St Sd  S(   N(   t
   cause_skipt   TrueR   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyR"   Ü   s    R"   RE   i   R,   i   i    i   (   R   RG   R
   R   R   R   R   R   R   R   R>   R?   R@   (   R"   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt!   test_ransac_warn_exceed_max_skipsØ   s    				c          C   s‚   t  j t ƒ }  t ƒ  } t | d d d d d d ƒ} | j |  t ƒ t j | j	 ƒ j
 t j ƒ } t | t <t | j	 | ƒ d  S(   NR   i   R   i   R   i    (   R    t
   coo_matrixR   R
   R   R   R   R   R   R   R   R   R   R   R   (   t   X_sparseR   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_sparse_cooð   s    	
c          C   s‚   t  j t ƒ }  t ƒ  } t | d d d d d d ƒ} | j |  t ƒ t j | j	 ƒ j
 t j ƒ } t | t <t | j	 | ƒ d  S(   NR   i   R   i   R   i    (   R    t
   csr_matrixR   R
   R   R   R   R   R   R   R   R   R   R   R   (   RK   R   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_sparse_csrÿ   s    	
c          C   s‚   t  j t ƒ }  t ƒ  } t | d d d d d d ƒ} | j |  t ƒ t j | j	 ƒ j
 t j ƒ } t | t <t | j	 | ƒ d  S(   NR   i   R   i   R   i    (   R    t
   csc_matrixR   R
   R   R   R   R   R   R   R   R   R   R   R   (   RK   R   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_sparse_csc  s    	
c          C   s‚   t  ƒ  }  t |  d d d d d d ƒ} t d  d d d d ƒ} | j t t ƒ | j t t ƒ t | j t ƒ | j t ƒ ƒ d  S(   NR   i   R   i   R   i    (   R
   R   R8   R   R   R   R   R<   (   R   R   t   ransac_none_estimator(    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_none_estimator  s    	c          C   sÎ  t  ƒ  }  t |  d d d d d d ƒ} t |  d d t j d d d d d ƒ} t |  d d d d d d ƒ} t |  d d	 d d d d ƒ} t |  d d d d d d ƒ} t |  d d d d ƒ} t |  d t j d d
 d d d d ƒ} | j t t ƒ | j t t ƒ | j t t ƒ | j t t ƒ t | j t ƒ | j t ƒ ƒ t | j t ƒ | j t ƒ ƒ t | j t ƒ | j t ƒ ƒ t t	 | j t t ƒ t t	 | j t t ƒ t t	 | j t t ƒ d  S(   NR   i   R   i   R   i    g       @iÿÿÿÿgÍÌÌÌÌÌ@i   (
   R
   R   R   R!   R   R   R   R<   R	   R&   (   R   t   ransac_estimator1t   ransac_estimator2t   ransac_estimator3t   ransac_estimator4t   ransac_estimator5t   ransac_estimator6t   ransac_estimator7(    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_min_n_samples,  s<    				c          C   s‹   t  ƒ  }  t |  d d d d d d ƒ} t j t t t g ƒ } | j t | ƒ t j | j ƒ j	 t j
 ƒ } t | t <t | j | ƒ d  S(   NR   i   R   i   R   i    (   R
   R   R   t   column_stackR   R   R   R   R   R   R   R   R   R   (   R   R   t   yyyR   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt%   test_ransac_multi_dimensional_targetsP  s    	
c    	   
   C   s¯  d „  }  d „  } d „  } t  j t t t g ƒ } t ƒ  } t | d d d d d d	 ƒ} t | d d d d d d	 d
 |  ƒ} t | d d d d d d	 d
 | ƒ} | j t | ƒ | j t | ƒ | j t | ƒ t | j t ƒ | j t ƒ ƒ t | j t ƒ | j t ƒ ƒ | j t t ƒ | | _	 | j t t ƒ t | j t ƒ | j t ƒ ƒ t | d d d d d d	 d
 d ƒ} | j t t ƒ t | j t ƒ | j t ƒ ƒ d  S(   Nc         S   s    t  j t  j |  | ƒ d d ƒS(   Nt   axisi   (   R   t   sumt   abs(   t   y_truet   y_pred(    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   <lambda>e  s    c         S   s   t  j |  | d d d ƒS(   Ni   R^   i   (   R   R_   (   Ra   Rb   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyRc   f  s    c         S   s   t  j |  | ƒ S(   N(   R   R`   (   Ra   Rb   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyRc   h  s    R   i   R   i   R   i    t   losst   squared_loss(
   R   R[   R   R
   R   R   R   R   R<   Rd   (	   t   loss_multi1t   loss_multi2t	   loss_monoR\   R   t   ransac_estimator0RS   RT   RU   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_residual_lossd  s>    								c          C   sm   t  ƒ  }  t |  d d d d ƒ} | j t t ƒ t j | j ƒ j t j	 ƒ } t
 | t <t | j | ƒ d  S(   NR   i   R   i    (   R
   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt&   test_ransac_default_residual_thresholdŒ  s    		
c          C   s£  t  t d d d d ƒ d ƒ t  t d d d d ƒ d ƒ t  t d d d d ƒ d ƒ t  t d d d d ƒ d	 ƒ t  t d
 d d d ƒ d ƒ t  t d d d d ƒ d ƒ t  t d d d d ƒ d ƒ t  t d d d d ƒ d ƒ t  t d
 d d d ƒ d ƒ t  t d d d d ƒ d ƒ t  t d d d d ƒ t d ƒ ƒ t ƒ  }  t |  d d d d ƒ} t t | j t t	 ƒ t |  d d d d ƒ} t t | j t t	 ƒ d  S(   Nid   i   g®Gáz®ï?i   i_   iZ   i   iF   i   i2   i   i   i   i	   iN   i™  i
   i    t   infR   t   stop_probabilitygš™™™™™¹¿gš™™™™™ñ?(
   R   R   t   floatR
   R   R	   R&   R   R   R   (   R   R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_dynamic_max_trialsœ  s$    "			c          C   s\  t  d d ƒ }  t j d } t j | ƒ } |  j t t | ƒ t |  j j d | ƒ t j	 |  j ƒ j
 t j ƒ } t | t <t |  j | ƒ t d ƒ } | j d d d d g ƒ } t j j d | d ƒ } | j d d d ƒ } | j d d d d g ƒ } | j d d d ƒ }	 | j d	 d d ƒ }
 t j t j | | d
 d ƒt j | |	 d
 d ƒd
 d ƒ} t j j t j t j | | d
 d ƒt j |
 |	 d
 d ƒd
 d ƒƒ } |  j | | ƒ |  j j } t j | |	 ƒ } t j | | d
 d ƒ} t j | |
 ƒ } |  j | | | ƒ t |  j j | ƒ t ƒ  } t  | ƒ }  t t |  j t t | ƒ d  S(   NR   i    iÈ   i
   i   gš™™™™™É?i   iè  iüÿÿR^   (   R   R   R!   R   t   onesR   R   R   R   R   R   R   R   R   R   R   t   randintt   ndarrayt   flattent   appendt   repeatt
   estimator_t   coef_R   R   R	   R&   (   R   t	   n_samplest   weightsR   R   t   X_t   y_t   sample_weightt	   outlier_Xt   outlier_weightt	   outlier_yt   X_flatt   y_flatt	   ref_coef_R   (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   test_ransac_fit_sample_weightÄ  s>    
!$	(=   t   numpyR   t   scipyR    t   numpy.testingR   R   R   t   sklearn.utilsR   t   sklearn.utils.testingR   R   R   R   R	   t   sklearn.linear_modelR
   R   R   t   sklearn.linear_model.ransacR   t   sklearn.exceptionsR   R7   R   R   R[   t   dataR#   R$   R'   t   uniqueRq   R-   R   R%   t   newaxisR    R(   R+   R2   R4   R6   R;   R=   RB   RC   RD   RF   RI   RL   RN   RP   RR   RZ   R]   Rj   Rk   Ro   Rƒ   (    (    (    sE   lib/python2.7/site-packages/sklearn/linear_model/tests/test_ransac.pyt   <module>   sX   $6)					
	
												$		(		(