ó
‡ˆ\c           @   s´  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 d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z e j j d ƒ Z d „  Z d „  Z d „  Z d „  Z d d „ Z d d „ Z d d „ Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" e  j# j$ d e% e& f ƒ e  j# j$ d e% e& f ƒ d „  ƒ ƒ Z' d „  Z( d „  Z) d S(    iÿÿÿÿN(   t   sparse(   t   linalg(   t   assert_array_almost_equal(   t   assert_almost_equal(   t   assert_equal(   t   LinearRegression(   t   _preprocess_data(   t   _rescale_data(   t   check_random_state(   t   assert_greater(   t   make_sparse_uncorrelated(   t   make_regressioni    c          C   sê   d g d g g }  d d g } t  ƒ  } | j |  | ƒ t | j d g ƒ t | j d g ƒ t | j |  ƒ d d g ƒ d g g }  d g } t  ƒ  } | j |  | ƒ t | j d g ƒ t | j d g ƒ t | j |  ƒ d g ƒ d  S(   Ni   i   i    (   R   t   fitR   t   coef_t
   intercept_t   predict(   t   Xt   Yt   reg(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_linear_regression   s    			c          C   s¶  t  j j d ƒ }  xd D]•\ } } |  j | ƒ } |  j | | ƒ } d |  j | ƒ } xRt t f D]D} t d | ƒ } | j | | d | ƒ| j	 } | j
 }	 t | j	 j | j d f ƒ t | j | | ƒ d ƒ t  j | ƒ }
 | t k rý | } n3 t  j d	 | d f ƒ } t  j | | f d
 d ƒ} t j | j j |
 ƒ j | ƒ | j j |
 ƒ j | ƒ ƒ } | t k rˆt | | ƒ qf t | | d ƒ t |	 | d ƒ qf Wq Wd  S(   Ni    i   i   g      ð?t   fit_interceptt   sample_weighti   g      à?t   shapet   axis(   i   i   (   (   i   i   (   t   npt   randomt   RandomStatet   randnt   randt   Truet   FalseR   R   R   R   R   R   R	   t   scoret   diagt   onest   concatenateR   t   solvet   Tt   dotR   R   (   t   rngt	   n_samplest
   n_featurest   yR   R   t	   interceptR   t   coefs1t   inter1t   Wt   X_augt   dummy_columnt   coefs2(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt%   test_linear_regression_sample_weights4   s.    			c    
      C   sÂ   d d g }  d d g } x£ t  |  | ƒ D]’ \ } } t j | | ƒ } t j | ƒ } t j | ƒ d d } d } d } t ƒ  }	 |	 j | | | ƒ |	 j | | | ƒ |	 j | | | ƒ q( Wd  S(   Ni   i   i   g      ð?g       @(   t   zipR&   R   R   R   (
   t
   n_samplesst   n_featuressR'   R(   R   R)   t   sample_weights_OKt   sample_weights_OK_1t   sample_weights_OK_2R   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt9   test_raises_value_error_if_sample_weights_greater_than_1d^   s    	c          C   s  t  j d d g d d g g ƒ }  t  j d d d g d d	 d
 g g ƒ } t  j d d g ƒ } t d t ƒ j |  | ƒ } t d t ƒ j |  | ƒ } t d t ƒ j | | ƒ } t d t ƒ j | | ƒ } t | j j | j j ƒ t | j j | j j ƒ t | j j	 | j j	 ƒ d  S(   NgmâG©B‹Ø?gÊ\«^ºã?gñ‰L+KÕâ?gìf©iUÚ?g&Ï/)Â¶Ñ?g ö<E/Ÿæ?g²MdÅô­?g".ÆáHwµ?g€%ü÷…|Ê?gÜ0Èeõ±æ?i   R   (
   R   t   arrayR   R   R   R   R   R   R   t   ndim(   t   X2t   X3R)   t   lr2_without_interceptt   lr2_with_interceptt   lr3_without_interceptt   lr3_with_intercept(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_fit_intercepts   s    c         C   sÁ   t  |  ƒ }  x® t d ƒ D]  } d } t j | | ƒ } |  j | ƒ } | | d  d  … t j f } t ƒ  } | j | | j	 ƒ  ƒ t
 | | j | j ƒ t
 | j | ƒ | j	 ƒ  d ƒ q Wd  S(   Ni
   id   i    (   R   t   rangeR    t   eyeR   R   t   newaxisR   R   t   ravelR   R   R   R   (   t   random_statet   it   nR   t   betaR)   t   ols(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_linear_regression_sparse‰   s    	c         C   sÉ   t  d |  ƒ \ } } t j | | f ƒ j } | j d } t d t ƒ } | j | | ƒ t | j	 j d | f ƒ | j
 | ƒ } | j | | ƒ | j
 | ƒ } t t j | | f ƒ j | d d ƒd  S(   NRF   i   R   i   t   decimali   (   R   R   t   vstackR$   R   R   R   R   R   R   R   R   (   RF   R   R)   R   R(   R   t   Y_predt   y_pred(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt'   test_linear_regression_multiple_outcome™   s    c         C   sä   t  |  ƒ }  t d |  ƒ \ } } t j | ƒ } t j | | f ƒ j } | j d } t ƒ  } | j	 | | ƒ t
 | j j d | f ƒ | j | ƒ } | j	 | | j ƒ  ƒ | j | ƒ } t t j | | f ƒ j | d d ƒd  S(   NRF   i   i   RL   i   (   R   R
   R    t
   coo_matrixR   RM   R$   R   R   R   R   R   R   RE   R   (   RF   R   R)   R   R(   RJ   RN   RO   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt.   test_linear_regression_sparse_multiple_outcome©   s    	c          C   sô  d }  d } t  j |  | ƒ } t  j |  ƒ } t j | d d ƒ} t j | d d ƒt j | j d ƒ } t j | d d ƒ} t | | d t d t ƒ\ } } }	 }
 } t	 |	 t j
 | ƒ ƒ t	 |
 d ƒ t	 | t j | ƒ ƒ t	 | | ƒ t	 | | ƒ t | | d t d t ƒ\ } } }	 }
 } t	 |	 | ƒ t	 |
 | ƒ t	 | t j | ƒ ƒ t	 | | | ƒ t	 | | | ƒ t | | d t d t ƒ\ } } }	 }
 } t	 |	 | ƒ t	 |
 | ƒ t	 | | ƒ t	 | | | | ƒ t	 | | | ƒ d  S(   NiÈ   i   R   i    R   t	   normalize(   R&   R   R   t   meant   stdt   sqrtR   R   R   R   t   zerosR!   R   (   R'   R(   R   R)   t   expected_X_meant   expected_X_normt   expected_y_meant   Xtt   ytt   X_meant   y_meant   X_norm(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_preprocess_dataº   s2    )***c    
      C   sR  d }  d } d } t  j |  | ƒ } t  j |  | ƒ } t j | d d ƒ} | t j | ƒ g } xë | D]ã } t | | d t d t ƒ\ } } } }	 } t |	 t j	 | ƒ ƒ t | | ƒ t | | d t
 d t ƒ\ } } } }	 } t |	 | ƒ t | | |	 ƒ t | | d t
 d t
 ƒ\ } } } }	 } t |	 | ƒ t | | |	 ƒ qg Wd  S(   NiÈ   i   i   R   i    R   RS   (   R&   R   R   RT   R    t
   csc_matrixR   R   R   RW   R   (
   R'   R(   t	   n_outputsR   R)   RZ   t   argst   _R\   R^   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt    test_preprocess_data_multioutputÜ   s(    c       	   C   sª  d }  d } t  j |  | ƒ } t  j |  ƒ } t  j |  ƒ } t j | d d d | ƒ} t j | d d d | ƒ} t j | j d ƒ t j | | d d d ƒd } t | | d t d t	 d	 | ƒ\ } }	 }
 } } t
 |
 | ƒ t
 | | ƒ t
 | t j | ƒ ƒ t
 | | | ƒ t
 |	 | | ƒ t | | d t d t d	 | ƒ\ } }	 }
 } } t
 |
 | ƒ t
 | | ƒ t
 | | ƒ t
 | | | | ƒ t
 |	 | | ƒ d  S(
   NiÈ   i   R   i    t   weightsg      à?R   RS   R   (   R&   R   R   t   averageRV   R   RT   R   R   R   R   R!   (   R'   R(   R   R)   R   RX   RZ   RY   R[   R\   R]   R^   R_   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_preprocess_data_weightedö   s.    "c       	   C   sU  d }  d } t  j |  | d d ƒ} | j ƒ  } t j |  ƒ } | j ƒ  } t j | d d ƒt j | j d ƒ } t	 | | d t
 d t
 d	 t ƒ\ } } } }	 }
 t | t j | ƒ ƒ t |	 d ƒ t |
 t j | ƒ ƒ t | j | ƒ t | | ƒ t	 | | d t d t
 d	 t ƒ\ } } } }	 }
 t | t j | d d ƒƒ t |	 t j | d d ƒƒ t |
 t j | ƒ ƒ t | j | ƒ t | | t j | d d ƒƒ t	 | | d t d t d	 t ƒ\ } } } }	 }
 t | t j | d d ƒƒ t |	 t j | d d ƒƒ t |
 | ƒ t | j | | ƒ t | | t j | d d ƒƒ d  S(
   NiÈ   i   t   densityg      à?R   i    R   RS   t   return_mean(   R    R   t   tolilR&   t   toarrayR   RU   RV   R   R   R   R   R   RW   R!   t   ART   (   R'   R(   R   R)   t   XARY   R[   R\   R]   R^   R_   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt,   test_sparse_preprocess_data_with_return_mean  s8    ) c          C   sf   t  ƒ  \ }  } d |  |  d k  <t j |  ƒ } t | | t ƒ \ } } } } } t | j ƒ  d ƒ d  S(   Ng        g      @t   csr(   R   R    t
   csr_matrixR   R   R   t	   getformat(   R   R)   Rp   t   csr_Rd   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_csr_preprocess_data=  s
    !t	   is_sparset   to_copyc         C   s÷   t  ƒ  \ } } d | | d k  <|  r7 t j | ƒ } n  t | | t d | d t ƒ\ } } } } } | r’ |  r’ t j | j | j ƒ só t	 ‚ na | r´ t j | | ƒ só t	 ‚ n? |  rÛ t j | j | j ƒ só t	 ‚ n t j | | ƒ só t	 ‚ d  S(   Ng        g      @t   copyt   check_input(
   R   R    Rq   R   R   R   R   t   may_share_memoryt   datat   AssertionError(   Ru   Rv   R   R)   t   X_t   y_Rd   (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt#   test_preprocess_copy_data_no_checksF  s    "!c          C   sˆ  d }  d } t  j |  | ƒ } t  j |  ƒ } t j | d t j ƒ} t j | d t j ƒ} t j | d t j ƒ} t j | d t j ƒ} xôt t g D]æ} xÝt t g D]Ï}	 t | | d | d |	 d t ƒ\ }
 } } } } t | | d | d |	 d t ƒ\ } } } } } t | | d | d |	 d t ƒ\ } } } } } t | | d | d |	 d t ƒ\ } } } } } t	 |
 j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t	 | j
 t j ƒ t |
 | ƒ t | | ƒ t | | ƒ t | | ƒ t | | ƒ q­ Wqš Wd  S(   NiÈ   i   t   dtypeR   RS   Rj   (   R&   R   R   t   asarrayt   float32t   float64R   R   R   R   R   R   (   R'   R(   R   R)   t   X_32t   y_32t   X_64t   y_64R   RS   t   Xt_32t   yt_32t	   X_mean_32t	   y_mean_32t	   X_norm_32t   Xt_64t   yt_64t	   X_mean_64t	   y_mean_64t	   X_norm_64t   Xt_3264t   yt_3264t   X_mean_3264t   y_mean_3264t   X_norm_3264t   Xt_6432t   yt_6432t   X_mean_6432t   y_mean_6432t   X_norm_6432(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_dtype_preprocess_data\  sb    c    	      C   s¯   d }  d } d t  j |  ƒ } t  j |  | ƒ } t  j |  ƒ } t | | | ƒ \ } } | t j | ƒ d  d  … t j f } | t j | ƒ } t | | ƒ t | | ƒ d  S(   NiÈ   i   g      ð?(   R&   R   R   R   RV   RD   R   (	   R'   R(   R   R   R)   t
   rescaled_Xt
   rescaled_yt   rescaled_X2t   rescaled_y2(    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   test_rescale_dataž  s    &(*   t   pytestt   numpyR   t   scipyR    R   t   sklearn.utils.testingR   R   R   t   sklearn.linear_model.baseR   R   R   t   sklearn.utilsR   R	   t"   sklearn.datasets.samples_generatorR
   R   R   R   R&   R   R1   R8   RA   RK   RP   RR   R`   Re   Rh   Ro   Rt   t   markt   parametrizeR   R   R~   R›   R    (    (    (    sC   lib/python2.7/site-packages/sklearn/linear_model/tests/test_base.pyt   <module>   s<   		*			"		!	&		'	B