ó
‡ˆ\c           @   so  d  d l  m Z 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 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 d ƒ Z e ƒ  Z e j e j j ƒ Z e j  e e _  e j e e _ e j! j" d ƒ d „  ƒ Z# e j! j" d ƒ d „  ƒ Z$ e j! j" d ƒ d „  ƒ Z% e j! j" d ƒ d d „ ƒ Z& e j! j" d ƒ d „  ƒ Z' e j! j" d ƒ d „  ƒ Z( d „  Z) e j! j" d ƒ d „  ƒ Z* e j! j" d ƒ d „  ƒ Z+ e j! j" d ƒ d „  ƒ Z, e j! j" d ƒ d „  ƒ Z- d „  Z. d S(   iÿÿÿÿ(   t   sqrtN(   t	   neighbors(   t   assert_array_equal(   t   metrics(   t   roc_auc_score(   t   check_random_state(   t   assert_greatert   ignore_warnings(   t   assert_array_almost_equal(   t   assert_equal(   t   assert_warns_message(   t   assert_raises(   t   assert_raises_regex(   t   check_estimator(   t	   load_irisi    s8   ignore:default contamination parameter 0.1:FutureWarningc       	   C   s  d d g d d g d d g d d g d d g d d g d d g d d g g }  t  j d d ƒ } | j |  ƒ j } t | j |  ƒ t t j | d  ƒ t j	 | d ƒ ƒ t  j d	 d
 d d ƒ j |  ƒ } t | j
 ƒ  d d g d d g ƒ t | j |  ƒ d d g d d g ƒ d  S(   Niþÿÿÿiÿÿÿÿi   i   i   i   iüÿÿÿt   n_neighborst   contaminationg      Ð?i   (   R   t   LocalOutlierFactort   fitt   negative_outlier_factor_R   t   _fit_XR   t   npt   mint   maxt   _predictt   fit_predict(   t   Xt   clft   score(    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_lof%   s    N'%c          C   sÇ   t  d ƒ }  d |  j d d ƒ } | d  } |  j d d d d d	 d ƒ } t j | d | f } t j d g d
 d g d
 ƒ } t j d t ƒ j	 | ƒ } | j
 | ƒ } t t | | ƒ d ƒ d  S(   Ni   g333333Ó?ix   id   t   lowiüÿÿÿt   highi   t   sizei   i    i   t   noveltyg®Gáz®ï?(   i   i   (   R   t   randnt   uniformR   t   r_t   arrayR   R   t   TrueR   t   decision_functionR   R   (   t   rngR   t   X_traint
   X_outlierst   X_testt   y_testR   t   y_pred(    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_lof_performance;   s    
!c          C   sƒ  d d g d d g d d g g }  t  j d d d d d t ƒ j |  ƒ } t  j d d d t ƒ j |  ƒ } d t d ƒ d t d ƒ } d t d ƒ d d	 t d ƒ d d d t d ƒ } t | j | | | g ƒ t | j | | | g ƒ t | j d d g g ƒ | g ƒ t | j d d g g ƒ | g ƒ t | j d d g g ƒ | g ƒ t | j d d g g ƒ | g ƒ d  S(
   Ni   i   R   R   gš™™™™™¹?R!   g       @g      ð?g      @(   R   R   R&   R   R    R   R   t   score_samples(   R)   t   clf1t   clf2t   s_0t   s_1(    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_lof_valuesS   s    !8###i*   c      	   C   s  t  j j |  ƒ } | j d ƒ } | j d ƒ } t j | d d ƒ} t j | | d d ƒ} t j d d d t ƒ } | j	 | ƒ | j
 ƒ  } | j | ƒ } t j d d d d	 d d
 d t ƒ }	 |	 j	 | ƒ |	 j
 ƒ  }
 |	 j | ƒ } t | |
 ƒ t | | ƒ d S(   s!   Tests LOF with a distance matrix.i
   i   i   t   metrict	   euclideanR   R!   t	   algorithmt   brutet   precomputedN(   i
   i   (   i   i   (   R   t   randomt   RandomStatet   random_sampleR   t   pairwise_distancesR   R   R&   R   R   t   predictR   (   t   random_stateR(   R   t   Yt   DXXt   DYXt   lof_Xt   pred_X_Xt   pred_X_Yt   lof_Dt   pred_D_Xt   pred_D_Y(    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_lof_precomputedk   s     c          C   s†   t  j }  t j d d ƒ j |  ƒ } t | j |  j d d ƒ t j d d ƒ } t t	 d | j |  ƒ t | j |  j d d ƒ d  S(   NR   iô  i    i   s*   n_neighbors will be set to (n_samples - 1)(
   t   irist   dataR   R   R   R	   t   n_neighbors_t   shapeR
   t   UserWarning(   R   R   (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_n_neighbors_attribute‡   s    	c          C   s  d d g d d g d d g g }  t  j d d d d d t ƒ j |  ƒ } t  j d d d t ƒ j |  ƒ } t | j d d g g ƒ | j d d g g ƒ | j ƒ t | j d d g g ƒ | j d d g g ƒ | j ƒ t | j d d g g ƒ | j d d g g ƒ ƒ d  S(   Ni   i   R   R   gš™™™™™¹?R!   g       @(   R   R   R&   R   R   R/   R'   t   offset_(   R)   R0   R1   (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_score_samples–   s    !  c          C   sA   d d g d d g g }  t  j d d ƒ } t t | j |  ƒ d  S(   Ni   i    R   g333333ã?(   R   R   R   t
   ValueErrorR   (   R   R   (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_contamination¨   s    c          C   s“   t  j }  t j ƒ  } | j |  ƒ x< d d d g D]+ } d j | ƒ } t t | t | | ƒ q2 Wt j d t	 ƒ } d } t t | t | d ƒ d  S(   NR>   R'   R/   s&   {} is not available when novelty=FalseR!   s.   fit_predict is not available when novelty=TrueR   (
   RJ   RK   R   R   R   t   formatR   t   AttributeErrort   getattrR&   (   R   R   t   methodt   msg(    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_novelty_errors®   s    	c          C   sd   t  j }  t j ƒ  } | j |  ƒ | j } t j d t ƒ } | j |  ƒ | j } t | | ƒ d  S(   NR!   (   RJ   RK   R   R   R   R   R&   R   (   R   t   clf_1t   scores_1t   clf_2t   scores_2(    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_novelty_training_scoresÂ   s    			c          C   s  d d g d d g d d g g }  t  j d t ƒ } | j |  ƒ t | d ƒ sU t ‚ t | d ƒ sj t ‚ t | d ƒ s t ‚ t | d ƒ s• t ‚ t  j d t ƒ } | j |  ƒ t | d ƒ sÉ t ‚ t | d ƒ sß t ‚ t | d ƒ sõ t ‚ t | d ƒ st ‚ d  S(   Ni   i   R!   R>   R'   R/   R   (   R   R   R&   R   t   hasattrt   AssertionErrort   False(   R   R   (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_hasattr_prediction×   s    !c           C   s   t  t j d t ƒ ƒ d  S(   NR!   (   R   R   R   R&   (    (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   test_novelty_true_common_testsï   s    c          C   sA   d d g d d g d d g g }  t  t d t j ƒ  j |  ƒ d  S(   Ni   i   sI   default contamination parameter 0.1 will change in version 0.22 to "auto"(   R
   t   FutureWarningR   R   R   (   R   (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt!   test_contamination_future_warningù   s    !(/   t   mathR    t   pytestt   numpyR   t   sklearnR   t   numpy.testingR   R   t   sklearn.metricsR   t   sklearn.utilsR   t   sklearn.utils.testingR   R   R   R	   R
   R   R   t   sklearn.utils.estimator_checksR   t   sklearn.datasetsR   R(   RJ   t   permutationt   targetR    t   permRK   t   markt   filterwarningsR   R.   R4   RI   RO   RQ   RS   RY   R^   Rb   Rc   Re   (    (    (    s?   lib/python2.7/site-packages/sklearn/neighbors/tests/test_lof.pyt   <module>   sV   													