ó
‡ˆ\c           @   sF  d  d l  Z d  d l m Z 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
 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 d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j j d ƒ d „  ƒ Z d „  Z  d „  Z! d S(   iÿÿÿÿN(   t   optimizet   sparse(   t   assert_equal(   t   assert_almost_equal(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_greater(   t   assert_false(   t   make_regression(   t   HuberRegressort   LinearRegressiont   SGDRegressort   Ridge(   t   _huber_loss_and_gradienti2   i   c      	   C   sž   t  j j d ƒ } t d |  d | d d d d ƒ \ } } t d |  ƒ } | j d |  | ƒ } d | j d d	 | | j d	 f ƒ | | d  d  … f <| | f S(
   Ni    t	   n_samplest
   n_featurest   random_statet   noisegš™™™™™©?gš™™™™™¹?g       @i   (   t   npt   randomt   RandomStateR   t   intt   randintt   normalt   shape(   R   R   t   rngt   Xt   yt	   num_noiset   random_samples(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   make_regression_with_outliers   s    6c          C   s‰   t  ƒ  \ }  } t d t ƒ } | j |  | ƒ t d t d d d d ƒ } | j |  | ƒ t | j | j d ƒ t | j | j d ƒ d  S(   Nt   fit_interceptt   epsilong     @@t   alphag        i   i   (   R   R
   t   Truet   fitR	   R   t   coef_t
   intercept_(   R   R   t   lrt   huber(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt%   test_huber_equals_lr_for_high_epsilon#   s    c          C   sJ   t  ƒ  \ }  } t d d ƒ } | j |  | ƒ | j | j k sF t ‚ d  S(   Nt   max_iteri   (   R   R	   R#   t   n_iter_R)   t   AssertionError(   R   R   R'   (    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_max_iter.   s    c    
      C   sñ   t  j j d ƒ }  t ƒ  \ } } |  j d d | j d ƒ } d „  } d „  } x› t d ƒ D] } x„ | j d d | j d d g D]` } |  j | ƒ } t  j | d ƒ | d <t	 j
 | | | | | d	 d
 | ƒ }	 t |	 d d ƒ q… Wq\ Wd  S(   Ni   i   i    c         W   s   t  |  | Œ d S(   Ni    (   R   (   t   xt   args(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   <lambda>:   s    c         W   s   t  |  | Œ d S(   Ni   (   R   (   R-   R.   (    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyR/   ;   s    i   i   iÿÿÿÿg{®Gáz„?gš™™™™™¹?gíµ ÷Æ°>i   (   R   R   R   R   R   R   t   ranget   randnt   absR    t
   check_gradR   (
   R   R   R   t   sample_weightt	   loss_funct	   grad_funct   _R   t   wt	   grad_same(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_gradient5   s    		)c          C   s/  t  ƒ  \ }  } t d t ƒ } | j |  | ƒ | j } | j } t t j t j	 | j ƒ ƒ t j t j	 | j ƒ ƒ ƒ } | j |  | d t j
 | j d ƒ ƒt | j | | | ƒ t | j | | | ƒ t  d d d d ƒ \ }  } t j |  t j |  d |  d |  d	 f ƒ f ƒ } t j | | d g | d g | d	 g f ƒ } | j | | ƒ | j } | j } t j
 |  j d ƒ } d	 | d <d
 | d	 <| j |  | d | ƒt | j | | | ƒ t | j | | | ƒ t j |  ƒ }	 t d t ƒ }
 |
 j |	 | d | ƒt |
 j | | | ƒ d  S(   NR   R4   i    R   i   R   i   i   i   i   (   R   R	   R"   R#   R$   R%   t   maxR   t   meanR2   t   onesR   R   t   vstackt   concatenateR   t
   csr_matrix(   R   R   R'   t
   huber_coeft   huber_interceptt   scalet   X_newt   y_newR4   t   X_csrt   huber_sparse(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_sample_weightsH   s:    		&30		

c          C   s’   t  ƒ  \ }  } t d t d d ƒ } | j |  | ƒ t j |  ƒ } t d t d d ƒ } | j | | ƒ t | j | j ƒ t | j	 | j	 ƒ d  S(   NR   R!   gš™™™™™¹?(
   R   R	   R"   R#   R   R@   R   R$   R   t	   outliers_(   R   R   R'   RF   RG   (    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_sparset   s    c          C   s²   t  ƒ  \ }  } t d t d d d d ƒ } | j |  | ƒ | j } t t j | ƒ ƒ | j |  d | ƒ | j } t | | ƒ | j d |  d | ƒ | j } t | | ƒ d  S(   NR   R!   g        R)   id   g       @(	   R   R	   t   FalseR#   RI   R   R   t   allR   (   R   R   R'   t   n_outliers_mask_1t   n_outliers_mask_2t   n_outliers_mask_3(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_scaling_invariant€   s    			s,   ignore:max_iter and tol parameters have beenc          C   sì   t  d d d d ƒ \ }  } t d t d d d d	 d
 d ƒ } | j |  | ƒ |  | j } | | j } | j | | ƒ t | j d d ƒ t d d d d d t d d d d d t d
 d d d  ƒ } | j | | ƒ t	 | j
 | j
 d ƒ d  S(   NR   i
   R   i   R   R!   g        R)   id   R    gš™™™™™õ?g      ð?i   t   lossR'   t   shuffleR   i    i'  t   toli   (   R   R	   RK   R#   t   scale_R   R   R"   t   NoneR   R$   (   R   R   R'   t   X_scalet   y_scalet   sgdreg(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_and_sgd_same_results’   s    	c          C   s‘   t  ƒ  \ }  } t d t d d d d d t d d ƒ } | j |  | ƒ | j j ƒ  } | j |  | ƒ t | j | d	 ƒ | j d
 k s t ‚ d  S(   NR   R!   g      ð?R)   i'  t
   warm_startRS   gš™™™™™¹?i   i    (	   R   R	   R"   R#   R$   t   copyR   R*   R+   (   R   R   t
   huber_warmt   huber_warm_coef(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_warm_start©   s    !c    
      C   s(  t  ƒ  \ }  } t d t d d d d ƒ } | j |  | ƒ t j |  | j ƒ | j | } t j | ƒ | j	 | j
 k  } | j |  | | | ƒ } | j |  | | | ƒ } t d t d d ƒ } | j |  | ƒ | j |  | | | ƒ } | j |  | | | ƒ }	 t | | ƒ t |	 | ƒ d  S(   NR   R!   g{®Gáz„?R)   id   (   R   R	   R"   R#   R   t   dotR$   R%   R2   R    RT   t   scoreR   R   (
   R   R   R'   t   linear_losst   maskt   huber_scoret   huber_outlier_scoret   ridget   ridge_scoret   ridge_outlier_score(    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   test_huber_better_r2_score¸   s     ("   t   numpyR   t   scipyR    R   t   pytestt   sklearn.utils.testingR   R   R   R   R   R   t   sklearn.datasetsR   t   sklearn.linear_modelR	   R
   R   R   t   sklearn.linear_model.huberR   R   R(   R,   R:   RH   RJ   RP   t   markt   filterwarningsRY   R^   Rh   (    (    (    sD   lib/python2.7/site-packages/sklearn/linear_model/tests/test_huber.pyt   <module>   s*   "				,			