
\c           @   sY  d  d l  Z d  d l j 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 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" Z" d e f d     YZ# d e f d     YZ$ d e f d     YZ% d e f d     YZ& d e f d     YZ' d e( f d      YZ) d! e f d"     YZ* 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 d0   Z8 d1   Z9 d2   Z: d3 e f d4     YZ; d5 Z< d6   Z= d7 e f d8     YZ> d9   Z? d:   Z@ d; e( f d<     YZA d= e eA f d>     YZB d?   ZC d@   ZD dA e f dB     YZE e dC eF  dD    ZG d S(E   iN(   t   assert_array_equal(   t   assert_true(   t   assert_false(   t   assert_equal(   t   assert_not_equal(   t   assert_raises(   t   assert_no_warnings(   t   assert_warns_message(   t   assert_dict_equal(   t   ignore_warnings(   t   BaseEstimatort   clonet   is_classifier(   t   SVC(   t   Pipeline(   t   GridSearchCV(   t   DecisionTreeClassifier(   t   DecisionTreeRegressor(   t   datasets(   t   TransformerMixin(   t   MockDataFramet   MyEstimatorc           B   s   e  Z d  d d  Z RS(   i    c         C   s   | |  _  | |  _ d  S(   N(   t   l1t   empty(   t   selfR   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   __init__%   s    	N(   t   __name__t
   __module__t   NoneR   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   #   s   t   Kc           B   s   e  Z d d d   Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   ct   d(   R   R   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   +   s    	N(   R   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   *   s   t   Tc           B   s   e  Z d d d   Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   at   b(   R   R!   R"   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   1   s    	N(   R   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR    0   s   t   ModifyInitParamsc           B   s&   e  Z d  Z e j d g  d  Z RS(   s_   Deprecated behavior.
    Equal parameters but with a type cast.
    Doesn't fulfill a is a
    i    c         C   s   | j    |  _ d  S(   N(   t   copyR!   (   R   R!   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   ;   s    (   R   R   t   __doc__t   npt   arrayR   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR#   6   s   t   Buggyc           B   s   e  Z d  Z d d  Z RS(   s;    A buggy estimator that does not set its parameters right. c         C   s   d |  _  d  S(   Ni   (   R!   (   R   R!   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   B   s    N(   R   R   R%   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR(   ?   s   t   NoEstimatorc           B   s,   e  Z d    Z d d d  Z d d  Z RS(   c         C   s   d  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   G   s    c         C   s   |  S(   N(    (   R   t   Xt   y(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   fitJ   s    c         C   s   d  S(   N(   R   (   R   R*   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   predictM   s    N(   R   R   R   R   R,   R-   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR)   F   s   	t   VargEstimatorc           B   s   e  Z d  Z d   Z RS(   s-   scikit-learn estimators shouldn't have vargs.c         G   s   d  S(   N(    (   R   t   vargs(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   S   s    (   R   R   R%   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR.   Q   s   c          C   s   d d l  m }  m } |  | d d } t |  } | | k	 sF t  t | j   | j    |  | d t j d  } t |  } | | k	 s t  d  S(   Ni(   t	   SelectFprt	   f_classift   alphag?i
   i   (   i
   i   (	   t   sklearn.feature_selectionR0   R1   R   t   AssertionErrorR   t
   get_paramsR&   t   zeros(   R0   R1   t   selectort   new_selector(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt
   test_cloneZ   s    c          C   sT   d d l  m }  m } |  | d d } d | _ t |  } t t | d   d  S(   Ni(   R0   R1   R2   g?t   testt   own_attribute(   R3   R0   R1   R;   R   R   t   hasattr(   R0   R1   R7   R8   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_clone_2l   s
    	c          C   sq   t    }  d |  _ t t t |   t   } t t t |  t   } t t t |  t   } t t t |  d  S(   Ni   (	   R(   R!   R   t   RuntimeErrorR   R)   t	   TypeErrorR.   R#   (   t   buggyt   no_estimatort   varg_estt   est(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_clone_buggyz   s    					c          C   s   t  d t j g    }  t |   } t |  j | j  t  d t j t j d g g    }  t |   } t |  j j | j j  d  S(   NR   i    (	   R   R&   R'   R   R    R   t   spt
   csr_matrixt   data(   t   clft   clf2(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_clone_empty_array   s    'c          C   s:   t  d t j  }  t |   } |  j | j k s6 t  d  S(   NR   (   R   R&   t   nanR   R   R4   (   RH   RI   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_clone_nan   s    c          C   s   g  t  t  D]$ }  |  j d  r t t |   ^ q } x{ | D]s } | t j d   } t d |  } t |  } | j j	 | j j	 k s t
  t | j j   | j j    q> Wd  S(   Nt   _matrixi   R   (   t   dirRE   t   endswitht   getattrR&   t   eyeR   R   R   t	   __class__R4   R    t   toarray(   t   namet   sparse_matrix_classest   clst   sparse_matrixRH   t
   clf_cloned(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_clone_sparse_matrices   s    4c          C   sn   t    }  t |   t t   t    } t t |  d  t d d g d  } t t t |   d  d  S(   Ns+   T(a=K(c=None, d=None), b=K(c=None, d=None))R!   t   long_paramsi  i  (   R   t   reprR    R   R   t   len(   t   my_estimatorR:   t   some_est(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt	   test_repr   s    	
	c          C   s   t    }  t |   d  S(   N(   R   t   str(   R]   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_str   s    	c          C   s   t  t   t    }  d |  j d t  k s3 t  d |  j d t  k sQ t  |  j d d  |  j j d k sy t  t	 t
 |  j d d d  S(   Nt   a__dt   deepi   t   a__a(   R    R   R5   t   TrueR4   t   Falset
   set_paramsR!   R   R   t
   ValueError(   R:   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_get_params   s    c       	   C   s   t    }  t |   s t  t t |  i d d g d 6  sC t  t t d |  f g   sd t  t t t d t |  i d d g d 6 f g    d  S(   Ng?i   t   Ct   svct   svc_cv(   R   R   R4   R   R   R   (   Rk   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_is_classifier   s    	(!	c          C   sH   t  d t   f g  }  t t |  j d t t t |  j d t d  S(   NRk   t   svc__stupid_paramt   svm__stupid_param(   R   R   R   Rh   Rg   Re   (   RH   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_set_params   s    c             s   d t  f    f d     Y  i d d 6d d 6 xH t d     f g  t     i   g D] }  |  j d d d	 d  q^ Wd  S(
   Nt   TestDecisionTreec              s   e  Z    f d    Z RS(   c            s,   t    |   j |   |  k s( t  |  S(   N(   t   superRg   R4   (   R   t   kwargs(   Rq   t   expected_kwargs(    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyRg      s    (   R   R   Rg   (    (   Rq   Rt   (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyRq      s   i   t	   max_depthi   t   min_samples_leaft	   estimatort   estimator__max_deptht   estimator__min_samples_leaf(   R   R   R   Rg   (   RC   (    (   Rq   Rt   s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt%   test_set_params_passes_all_parameters   s    c          C   sG   t  t   i   }  |  j d t   d d  |  j j d k sC t  d  S(   NRw   t   estimator__Cg      E@(   R   R   Rg   R   Rw   Rj   R4   (   t   gscv(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt$   test_set_params_updates_valid_params   s    c          C   s   t  j j d  }  t d d  t d d  g } t j   t j   g } x t | |  D] \ } } | j	 | j
 | j  |  j d d d t | j  } t | j | j
 | j  | j | j
 | j d | d d	 qX Wd  S(
   Ni    Ru   i   i   i
   t   sizet   sample_weightt   msgs5   Unweighted and weighted scores are unexpectedly equal(   R&   t   randomt   RandomStateR   R   R   t	   load_irist   load_bostont   zipR,   RG   t   targett   randintR\   R   t   score(   t   rngt
   estimatorst   setsRC   t   dsR   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_score_sample_weight   s    	!	c          C   s   d t  t f d     Y}  t j d  } t |  } |  | d d } t |  } | j | j k j j   ss t	  t
 | j | j  d  S(   Nt   DummyEstimatorc           B   s2   e  Z d  Z d d d  Z d d  Z d   Z RS(   s,  This is a dummy class for generating numerical features

        This feature extractor extracts numerical features from pandas data
        frame.

        Parameters
        ----------

        df: pandas data frame
            The pandas data frame parameter.

        Notes
        -----
        i   c         S   s   | |  _  | |  _ d  S(   N(   t   dft   scalar_param(   R   R   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR      s    	c         S   s   d  S(   N(    (   R   R*   R+   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR,   $  s    c         S   s   d  S(   N(    (   R   R*   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt	   transform'  s    N(   R   R   R%   R   R   R,   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR     s   i
   R   i   (   R
   R   R&   t   arangeR   R   R   t   valuest   allR4   R   R   (   R   R   R   t   et   cloned_e(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   test_clone_pandas_dataframe  s    !c          C   s   t  j   }  t   j |  j |  j  } t j |  } d | k sH t  t	 t j
 |  } | j |  j |  j  } | j |  j |  j  } t | |  d  S(   Nt   version(   R   R   R   R,   RG   R   t   picklet   dumpsR4   R   t   loadsR   R   (   t   irist   treet   tree_picklet   tree_restoredt   score_of_originalt   score_of_restored(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt?   test_pickle_version_warning_is_not_raised_with_matching_version5  s    t   TreeBadVersionc           B   s   e  Z d    Z RS(   c         C   s   t  |  j j   d d S(   Nt   _sklearn_versiont	   something(   t   dictt   __dict__t   items(   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   __getstate__C  s    (   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   B  s   s   Trying to unpickle estimator {estimator} from version {old_version} when using version {current_version}. This might lead to breaking code or invalid results. Use at your own risk.c          C   sq   t  j   }  t   j |  j |  j  } t j |  } t j	 d d d d d t
 j  } t t | t j |  d  S(   NRw   R   t   old_versionR   t   current_version(   R   R   R   R,   RG   R   R   R   t   pickle_error_messaget   formatt   sklearnt   __version__R   t   UserWarningR   (   R   R   t   tree_pickle_othert   message(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt<   test_pickle_version_warning_is_issued_upon_different_versionO  s    t   TreeNoVersionc           B   s   e  Z d    Z RS(   c         C   s   |  j  S(   N(   R   (   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   Z  s    (   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   Y  s   c          C   s   t  j   }  t   j |  j |  j  } t j |  } t d | k  t	 j
 d d d d d t j  } t t | t j |  d  S(   NR   Rw   R   R   s   pre-0.18R   (   R   R   R   R,   RG   R   R   R   R   R   R   R   R   R   R   R   (   R   R   t   tree_pickle_noversionR   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pytD   test_pickle_version_warning_is_issued_when_no_version_info_in_pickle^  s    c          C   sm   t  j   }  t   j |  j |  j  } t j |  } z& t j } d t _ t	 t j
 |  Wd  | t _ Xd  S(   Nt
   notsklearn(   R   R   R   R,   RG   R   R   R   R   R   R   (   R   R   R   t   module_backup(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pytC   test_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorm  s    		t   DontPickleAttributeMixinc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  j  j   } d  | d <| S(   Nt   _attribute_not_pickled(   R   R$   R   (   R   RG   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   z  s    
c         C   s   t  | d <|  j j |  d  S(   Nt	   _restored(   Re   R   t   update(   R   t   state(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   __setstate__  s    
(   R   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR   y  s   	t   MultiInheritanceEstimatorc           B   s   e  Z d  d  Z RS(   i   c         C   s   | |  _  d  |  _ d  S(   N(   t   attribute_pickledR   R   (   R   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR     s    	(   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR     s   c          C   sc   t    }  d |  _ t j |   } t j |  } t | j d  t | j d   | j s_ t	  d  S(   Ns$   this attribute should not be pickledi   (
   R   R   R   R   R   R   R   R   R   R4   (   Rw   t
   serializedt   estimator_restored(    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt3   test_pickling_when_getstate_is_overwritten_by_mixin  s    		c          C   s   z t    }  d } | |  _ t |   j } d t |   _ |  j   } t | i d  d 6d d 6 d | d <|  j |  t |  j	 d  |  j
 s t  Wd  | t |   _ Xd  S(   Ns$   this attribute should not be pickledR   R   i   R   i   (   R   R   t   typeR   R   R   R   R   R   R   R   R4   (   Rw   t   textt   old_modR   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pytF   test_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearn  s    		
t   SingleInheritanceEstimatorc           B   s   e  Z d  d  Z d   Z RS(   i   c         C   s   | |  _  d  |  _ d  S(   N(   R   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR     s    	c         C   s   |  j  j   } d  | d <| S(   NR   (   R   R$   R   (   R   RG   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR     s    
(   R   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyR     s   t   categoryc          C   sT   t    }  d |  _ t j |   } t j |  } t | j d  t | j d   d  S(   Ns$   this attribute should not be pickledi   (   R   R   R   R   R   R   R   R   (   Rw   R   R   (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pytC   test_pickling_works_when_getstate_is_overwritten_in_the_child_class  s    		(H   t   numpyR&   t   scipy.sparset   sparseRE   R   t   sklearn.utils.testingR    R   R   R   R   R   R   R   R   R	   t   sklearn.baseR
   R   R   t   sklearn.svmR   t   sklearn.pipelineR   t   sklearn.model_selectionR   t   sklearn.treeR   R   R   R   t   sklearn.utils.mockingR   R   R   R   R    R#   R(   t   objectR)   R.   R9   R=   RD   RJ   RL   RY   R_   Ra   Ri   Rm   Rp   Rz   R}   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s6   lib/python2.7/site-packages/sklearn/tests/test_base.pyt   <module>   sr   																		&		
				