ó
‡ˆ\c           @   s  d  Z  d d l Z d d l Z d d l 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 m Z m Z m Z 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 m Z m  Z  d d l m! Z! m" Z" m# Z# d d l m$ Z$ m% Z% d d l m& Z& m' Z' d d l m( Z( m) Z) d d l m* Z* d d l+ m, Z, d d l+ m- Z- m. Z. d d l/ m0 Z0 d d l1 m2 Z2 d d g d d g d d g d d g d d g d d g g Z3 d d d d d d g Z4 d d g d d g d d g g Z5 d d d g Z6 e j7 ƒ  Z8 e d ƒ Z9 e9 j: e8 j; j< ƒ Z= e8 j> e= e8 _> e8 j; e= e8 _; d „  Z? d „  Z@ d „  ZA d „  ZB d  „  ZC d! „  ZD d" „  ZE d# „  ZF d$ „  ZG d% „  ZH d& „  ZI d' „  ZJ d( „  ZK d) „  ZL d* „  ZM e jN jO d+ ƒ e jN jO d, ƒ d- „  ƒ ƒ ZP d. „  ZQ e jN jO d+ ƒ e jN jO d, ƒ e( d/ e. ƒ d0 „  ƒ ƒ ƒ ZR d1 „  ZS d2 „  ZT d3 „  ZU d4 „  ZV d5 „  ZW d6 „  ZX d7 „  ZY d8 „  ZZ d9 „  Z[ d: „  Z\ d; „  Z] e j^ d< „ Z_ d= „  Z` d> „  Za d? „  Zb d@ „  Zc dA „  Zd dB „  Ze dC „  Zf e( dD „  ƒ Zg dE „  Zh dF „  Zi dG „  Zj dH „  Zk dI „  Zl dJ „  Zm dK „  Zn dL „  Zo dM „  Zp d S(N   sr   
Testing for Support Vector Machine module (sklearn.svm)

TODO: remove hard coded numerical results when possible
iÿÿÿÿN(   t   assert_array_equalt   assert_array_almost_equal(   t   assert_almost_equal(   t   assert_allclose(   t   sparse(   t   svmt   linear_modelt   datasetst   metricst   base(   t   train_test_split(   t   make_classificationt
   make_blobs(   t   f1_score(   t
   rbf_kernel(   t   check_random_state(   t   assert_equalt   assert_truet   assert_false(   t   assert_greatert	   assert_int   assert_less(   t   assert_raises_regexpt   assert_warns(   t   assert_warns_messaget   assert_raise_message(   t   ignore_warningst   assert_raises(   t   assert_no_warnings(   t   ConvergenceWarning(   t   NotFittedErrort   UndefinedMetricWarning(   t   OneVsRestClassifier(   t   sixiþÿÿÿi   i   i   i*   c          C   s˜   t  j d d ƒ j t t ƒ }  t |  j d d g g ƒ t |  j d d g ƒ t |  j t d t d f ƒ t |  j	 d g ƒ t |  j
 t ƒ t ƒ d  S(   Nt   kernelt   linearg      Ð¿g      Ð?i   i   g        (   R   t   SVCt   fitt   Xt   YR    t
   dual_coef_t   support_t   support_vectors_t
   intercept_t   predict(   t   clf(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_libsvm_parameters-   s    c          C   s  x„ d D]| }  t  j d d d |  ƒ j t j t j ƒ } t t j | j	 t j ƒ t j k ƒ d ƒ t
 | d ƒ |  d k k s t ‚ q Wt | j t j | j ƒ ƒ t  j j t j t j j t j ƒ ƒ } t  j j	 t j | Œ } t t j | t j k ƒ d ƒ t  j j t j t j j t j ƒ d d ƒ} t  j j	 t j d d | Œ} t t j | t j k ƒ d ƒ t  j j t j t j j t j ƒ d	 d d d
 d ƒ} t t j | t j k ƒ d ƒ t  j j t j t j j t j ƒ d	 d d d
 d ƒ} t | | ƒ d  S(   NR#   t   rbft   gammat   scaleR"   gÍÌÌÌÌÌì?t   coef_gffffffî?i   t   random_seedi    (   R#   R/   (   R   R$   R%   t   irist   datat   targetR   t   npt   meanR,   t   hasattrt   AssertionErrorR    t   classes_t   sortt   libsvmt   astypet   float64t   cross_validation(   t   kR-   t   modelt   predt   pred2(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_libsvm_iris7   s,    *+%'$			c          C   sÄ  t  j d d ƒ }  t j t t j t ƒ j ƒ } |  j | t ƒ t j t t j t ƒ j ƒ } |  j	 | ƒ } t
 t |  j	 | j ƒ t |  j d d g g ƒ t |  j d d g ƒ t |  j d g ƒ t |  j d d g ƒ t | t ƒ t j | ƒ } xR t t t ƒ ƒ D]> } x5 |  j D]* } t j t | t | ƒ | | | f <qWq
W|  j	 | ƒ } t | t ƒ d „  } t  j d	 d
 d | ƒ }  |  j t t ƒ |  j	 t ƒ } t |  j d d g g ƒ t |  j d g ƒ t |  j d d g ƒ t | t ƒ t  j d d ƒ }  t  j d d ƒ } t j t j t j j ƒ } |  j | t j ƒ | j t j t j ƒ |  j	 | ƒ } t |  j | j ƒ t |  j | j ƒ t |  j | j ƒ t t j | t j k ƒ d d d ƒt j | ƒ } x[ t t t j ƒ ƒ D]D } x; |  j D]0 } t j t j | t j | ƒ | | | f <qWqñW|  j	 | ƒ } t t j | t j k ƒ d d d ƒt  j d	 d
 d | ƒ }  |  j t j t j ƒ t t j | t j k ƒ d d d ƒd  S(   NR"   t   precomputedg      Ð¿g      Ð?i   i   i    c         S   s   t  j |  | j ƒ S(   N(   R7   t   dott   T(   t   xt   y(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   <lambda>|   s    R0   R1   R#   g®Gáz®ï?t   decimali   (   R   R$   R7   RG   R&   t   arrayRH   R%   R'   R,   R   t
   ValueErrorR    R(   R)   R+   R   t   true_resultt
   zeros_liket   ranget   lenR4   R5   R6   R   R8   (   R-   t   Kt   KTRC   t   it   jt   kfunct   clf2(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_precomputed\   sX    ,	%2%c          C   s  t  j ƒ  }  x¬ t j d d d d d d ƒ t j d d d d d d ƒ t j d d d d ƒ t j d d ƒ t j d d ƒ f D]; } | j |  j |  j ƒ t	 | j
 |  j |  j ƒ d ƒ q| Wt j d	 d
 ƒ j |  j t j t |  j ƒ ƒ ƒ t j ƒ  j |  j t j t |  j ƒ ƒ ƒ d  S(   NR"   R#   t   nugš™™™™™Ù?t   Cg      ð?g      $@g{®Gáz”?R0   R1   (   R   t   load_diabetesR   t   NuSVRt   SVRt	   LinearSVRR%   R5   R6   R   t   scoreR7   t   onesRR   (   t   diabetesR-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_svr¢   s    #1c          C   sÏ   t  j ƒ  }  t j d d ƒ j |  j |  j ƒ } | j |  j |  j ƒ } t j d d d d ƒ j |  j |  j ƒ } | j |  j |  j ƒ } t	 t
 j j | j ƒ t
 j j | j ƒ d d ƒ t | | d ƒ d  S(   NR[   g     @@R"   R#   i   g-Cëâ6?i   (   R   R\   R   R_   R%   R5   R6   R`   R^   R   R7   t   linalgt   normR2   R   (   Rb   t   lsvrt   score1t   svrt   score2(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvrµ   s    $*c          C   sÌ  t  j ƒ  }  t |  j ƒ } t j | ƒ } t j d d ƒ j |  j	 |  j d | ƒ} | j
 |  j	 |  j ƒ } t j d d ƒ j |  j	 |  j ƒ } | j
 |  j	 |  j ƒ } t t j j | j ƒ t j j | j ƒ d d ƒ t | | d ƒ t d ƒ } | j d d | ƒ } t j d d ƒ j |  j	 |  j d | ƒ}	 |	 j
 |  j	 |  j d | ƒ}
 t j |  j	 | d	 d ƒ} t j |  j | d	 d ƒ} t j d d ƒ j | | ƒ } | j
 | | ƒ } t |
 | d ƒ d  S(
   NR[   g     @@t   sample_weighti   g-Cëâ6?i   i    i
   t   axis(   R   R\   RR   R6   R7   Ra   R   R_   R%   R5   R`   R   Rd   Re   R2   R   R   t   randintt   repeat(   Rb   t	   n_samplest   unit_weightRf   Rg   t   lsvr_no_weightRi   t   random_statet   random_weightt   lsvr_unflatt   score3t   X_flatt   y_flatt	   lsvr_flatt   score4(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvr_fit_sampleweightÄ   s,    !	$!		c          C   s`   d g d g g }  d d g } t  j d d d d „  ƒ } | j |  | ƒ t t | j |  ƒ d  S(   Ng        g      ð?g      à?R0   R1   R"   c         S   s   t  j d g g ƒ S(   Ng      ð?(   R7   RM   (   RI   RJ   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyRK   ì   s    (   R   R^   R%   R   RN   R,   (   R&   RJ   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_svr_errorsç   s
    c             sµ   t  j d d ƒ ‰  ˆ  j t ƒ ˆ  j t ƒ }  t |  d d d g ƒ t |  j t	 j d ƒ ƒ t
 ˆ  j d g d d ƒt
 ˆ  j d	 d	 d	 d	 g g d d ƒt t ‡  f d
 †  ƒ d  S(   NR0   R1   i   iÿÿÿÿt   intpg°rh‘í|ó¿RL   i   g      è?c              s   ˆ  j  S(   N(   R2   (    (   R-   (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyRK   ý   s    (   R   t   OneClassSVMR%   R&   R,   RH   R    R   t   dtypeR7   R   R+   R(   R   t   AttributeError(   RC   (    (   R-   s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_oneclassñ   s    	c    
      C   sy  t  j ƒ  }  t d ƒ } d | j d d ƒ } t j | d | d f } d | j d d ƒ } t j | d | d f } | j d d d d d	 d ƒ } t  j d
 d d d d d ƒ }  |  j | ƒ |  j | ƒ } t	 t j
 | d k ƒ d ƒ |  j | ƒ } t	 t j
 | d k ƒ d ƒ |  j | ƒ } t | d k j ƒ  | d k ƒ |  j | ƒ }	 t |	 d k j ƒ  | d k ƒ d  S(   Ni   g333333Ó?id   i   t   lowiüÿÿÿt   highi   t   sizeRZ   gš™™™™™¹?R"   R/   R0   i   gÍÌÌÌÌÌì?iÿÿÿÿi    (   i   i   (   R   R}   R   t   randnR7   t   r_t   uniformR%   R,   R   R8   t   decision_functionR    t   ravel(
   R-   t   rndR&   t   X_traint   X_testt
   X_outlierst   y_pred_testt   y_pred_outlierst   dec_func_testt   dec_func_outliers(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_oneclass_decision_function   s"    c          C   sx   d d g d d g d d g g }  t  j d d ƒ j |  ƒ } t | j d d g g ƒ | j d d g g ƒ | j ƒ d  S(   Ni   i   R0   g       @(   R   R}   R%   R    t   score_samplesR‡   t   offset_(   RŠ   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_oneclass_score_samples  s    !c          C   s¤   t  j d d d d ƒ }  |  j t t ƒ t |  j d d g g ƒ t |  j d d g g ƒ d g ƒ t j	 d	 d g g ƒ |  _
 t |  j d d g g ƒ d
 g ƒ d  S(   NR"   R#   R[   g      ð?g      Ð¿g      Ð?gš™™™™™¹¿i   g        i   (   R   R$   R%   R&   R'   R    R(   R,   R7   RM   t   _dual_coef_(   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_tweak_params%  s    "c       	   C   s  xt  j d d d t d d d d ƒ t  j d d d t d d ƒ f D]Ä }  |  j t j t j ƒ |  j t j ƒ } t	 t
 j | d ƒ t
 j t j j d ƒ ƒ t
 j t
 j | d ƒ |  j t j ƒ k ƒ d	 k sÖ t ‚ t |  j t j ƒ t
 j |  j t j ƒ ƒ d
 ƒ qC Wd  S(   NR0   R1   t   probabilityRr   i    R[   g      ð?i   gÍÌÌÌÌÌì?i   (   R   R$   t   Truet   NuSVCR%   R4   R5   R6   t   predict_probaR   R7   t   sumRa   t   shapeR8   t   argmaxR,   R:   R   t   expt   predict_log_proba(   R-   t   prob_predict(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_probability4  s    )$c          C   s¶  t  j d d d d d d ƒ j t j t j ƒ }  t j t j |  j j	 ƒ |  j
 } t | |  j t j ƒ ƒ |  j t t ƒ t j t |  j j	 ƒ |  j
 } |  j t ƒ } t | j ƒ  |  j t ƒ ƒ t | |  j |  j t ƒ d k j t j ƒ ƒ t j d d	 d d
 d d g ƒ } t |  j t ƒ | d ƒ t  j d d d d d d ƒ }  |  j t t ƒ t t |  j d |  j ƒ} t j | |  j j	 ƒ |  j
 } t | j ƒ  |  j t ƒ ƒ d  S(   NR"   R#   R[   gš™™™™™¹?t   decision_function_shapet   ovoi    g      ð¿g…ëQ¸å¿g…ëQ¸å?g      ð?i   R/   R0   i   (   R   R$   R%   R4   R5   R6   R7   RG   R2   RH   R+   R   R‡   R&   R'   R,   Rˆ   R;   R>   t   intRM   R   R*   R0   R(   (   R-   t   dect
   predictiont   expectedt   rbfs(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_decision_functionG  s$    ")!c          C   sž  t  j d d d d d d ƒ j t j t j ƒ }  |  j t j ƒ } t | j t	 t j ƒ d f ƒ t
 |  j t j ƒ t j | d d	 ƒƒ t d
 d d d d d ƒ \ } } t | | d d ƒ\ } } } } t  j d d d d d d ƒ j | | ƒ }  |  j | ƒ } t | j t	 | ƒ d f ƒ t
 |  j | ƒ t j | d d	 ƒƒ t  j d d d d d d ƒ j | | ƒ }  |  j | ƒ } t | j t	 | ƒ d f ƒ d  S(   NR"   R#   R[   gš™™™™™¹?R¢   t   ovri   Rl   i   Ro   iP   t   centersi   Rr   i    R£   i
   (   R   R$   R%   R4   R5   R6   R‡   R   Rœ   RR   R    R,   R7   R   R   R
   (   R-   R¥   R&   RJ   RŠ   R‹   t   y_traint   y_test(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_decision_function_shapeg  s     (!!%c          C   sû   t  j }  t  j } t j d d d d ƒ j |  | ƒ } t j |  | j j	 ƒ | j
 } t | j ƒ  | j |  ƒ j ƒ  ƒ t j d d d d ƒ j |  | ƒ } t |  | j d | j ƒ} t j | | j j	 ƒ | j
 } t | j ƒ  | j |  ƒ j ƒ  ƒ d  S(   NR"   R#   R[   gš™™™™™¹?R/   R0   i   (   R4   R5   R6   R   R^   R%   R7   RG   R2   RH   R+   R   Rˆ   R,   R   R*   R0   R(   (   R&   RJ   t   regR¥   R¨   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_svr_predict‚  s    		$"$s&   ignore: Default solver will be changeds    ignore: Default multi_class willc       	   C   s  t  j d d d i d d 6ƒ }  |  j t t ƒ t |  j t ƒ d g d ƒ t d d	 d
 d d d d g d d ƒ \ } } x t j	 ƒ  t  j
 d d ƒ t  j d d ƒ f D]n }  |  j d i d d 6d d 6ƒ |  j | d  | d  ƒ |  j | d ƒ } t | d | ƒ d k s§ t ‚ q§ Wd  S(   NR0   R1   t   class_weightgš™™™™™¹?i   i   i   Ro   iÈ   t
   n_featuresi
   t   weightsg-²ï§ê?gÇK7‰A`Å?Rr   i    id   g333333Ó?(   R   R$   R%   R&   R'   R   R,   R   R   t   LogisticRegressiont	   LinearSVCt
   set_paramsR   R:   (   R-   t   X_t   y_t   y_pred(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_weight˜  s    (c          C   s  t  j d d ƒ }  |  j t t ƒ t |  j t d g ƒ d g ƒ d g d d g d } |  j t t d | ƒt |  j t d g ƒ d	 g ƒ t  j d d ƒ }  |  j t t ƒ |  j } |  j d
 d ƒ |  j t t d t	 j
 d t t ƒ ƒ ƒt | |  j ƒ d  S(   NR0   R1   i   g      ð?gš™™™™™¹?i   i
   Rk   g       @R[   id   g{®Gáz„?(   R   R$   R%   R&   R'   R    R,   R(   R¶   R7   Rn   RR   R   (   R-   Rk   t   dual_coef_no_weight(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_sample_weights­  s      	(t   categoryc    
      C   s”  d d l  m }  d d l m } t j d  d  … d  d … f t j d } } t j t j	 | j
 ƒ t j | d k ƒ d d  d  d … ƒ } t j | | ƒ } | d | | | ƒ } t j | ƒ d k sÏ t ‚ x¾ t j d d	 ƒ t j d
 d ƒ |  ƒ  f D]’ } | j | | | | ƒ j | ƒ } | j d d ƒ | j | | | | ƒ j | ƒ }	 t j | | d d ƒt j | |	 d d ƒk sú t ‚ qú Wd  S(   Niÿÿÿÿ(   R´   (   t   compute_class_weighti   i   i    t   balancedR"   R#   Rr   R±   t   averaget   macro(   t   sklearn.linear_modelR´   t   sklearn.utilsR¾   R4   R5   R6   R7   t   deletet   arangeRƒ   t   wheret   uniqueR   R:   R   R$   Rµ   R%   R,   R¶   R   R   (
   R´   R¾   R&   RJ   t
   unbalancedt   classest   class_weightsR-   R¹   t   y_pred_balanced(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_auto_weightÁ  s    ->!##c       	   C   s[  t  t t j d d d d ƒ j t t ƒ t j d d d d ƒ }  t  t |  j t t ƒ t d  } t  t |  j t | ƒ xÈ t j d d ƒ t j d d ƒ f D]¢ }  t	 j
 t ƒ } t | j d	 ƒ t	 j t	 j t d ƒ j ƒ } | d  d  … d f } t | j d ƒ t | j d	 ƒ |  j | | ƒ t |  j t ƒ t ƒ q› Wt j d d ƒ }  t  t |  j t t ƒ t j d d ƒ }  t  t |  j t t d t t t ƒ d ƒ ƒt j d d ƒ j t t ƒ }  t  t |  j t j t ƒ ƒ t	 j t ƒ j } |  j t	 j t | ƒ t ƒ t  t |  j t ƒ t j d d ƒ }  |  j t t ƒ t  t |  j | ƒ d  S(   NR0   R1   R[   iÿÿÿÿRZ   g        Rr   i    t   C_CONTIGUOUSi   i   t   F_CONTIGUOUSR"   RF   Rk   (   i   i   (   R   RN   R   R$   R%   R&   R'   R™   Rµ   R7   t   asfortranarrayR   t   flagst   ascontiguousarrayt   tileRH   R    R,   RO   RQ   RR   R   t
   lil_matrixRM   RG   (   R-   t   Y2t   Xft   yft   Xt(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_bad_inputà  s4    (
+,c          C   sè   t  j ru t j d d d t ƒ }  |  j t t ƒ |  j t	 ƒ t j
 j t j t j j t j ƒ d d d d d ƒn  t j d d d d	 d t ƒ }  |  j t t ƒ |  j t	 ƒ t j
 j t j t j j t j ƒ d d d	 d d ƒd  S(
   NR"   u   linearR—   i   R3   i    R0   R1   R#   (   R!   t   PY2R   R$   R˜   R%   R&   R'   Rš   RH   R=   R@   R4   R5   R6   R>   R7   R?   (   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_unicode_kernel  s    	
c          C   s‡   t  j d d ƒ }  t j d d g d d g g ƒ } y' |  j | d d g ƒ d sY t ‚ Wn& t k
 r‚ } t d t | ƒ ƒ n Xd  S(   NR"   RF   i   i    t   reacheds   Sparse precomputed(	   R   R$   R   t
   csr_matrixR%   R:   t	   TypeErrorR   t   str(   R-   t   sparse_gramt   e(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_sparse_precomputed"  s    !c    	      C   sR  d d d d g }  d d d g t  t g } } t d d	 d
 d	 ƒ \ } } xÝ t j |  | | ƒ D]Æ \ } } } t j d | d | d | ƒ } | | f d k sì | | | f d d t f k sì | | f d t  f k sì | d k sì | d k rt t d | | | f | j	 | | ƒ q_ | j	 | | ƒ q_ Wt t d t j d d ƒ j	 | | ƒ d  S(   Nt   hinget   squared_hinget   logistic_regressiont   foot   l1t   l2t   barRo   i   R²   t   penaltyt   losst   duals<   Unsupported set of arguments.*penalty='%s.*loss='%s.*dual=%ss   .*loss='l3' is not supported.*t   l3(   Râ   Ræ   (
   R˜   t   FalseR   t	   itertoolst   productR   Rµ   R   RN   R%   (	   t   lossest	   penaltiest   dualsR&   RJ   Rê   Ré   Rë   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvc_parameters,  s     %	c          C   sÍ   d g d g g d d g }  } d } t  t | d t j d
 d ƒ j |  | ƒ t  t | d t j d
 d ƒ j |  | ƒ t  t | d t j d
 d ƒ j |  | ƒ t  t | d t j d
 d ƒ j |  | ƒ d  S(   Ng        g      ð?i    i   sw   loss='%s' has been deprecated in favor of loss='%s' as of 0.16. Backward compatibility for the %s will be removed in %sRæ   Râ   s	   loss='l1's   1.0Rê   Rç   Rã   s	   loss='l2't   epsilon_insensitivet   squared_epsilon_insensitive(   Ræ   Râ   s	   loss='l1's   1.0(   Rç   Rã   s	   loss='l2's   1.0(   Ræ   Rô   s	   loss='l1's   1.0(   Rç   Rõ   s	   loss='l2's   1.0(   R   t   DeprecationWarningR   Rµ   R%   R_   (   R&   RJ   t   msg(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt(   test_linearsvx_loss_penalty_deprecationsI  s     c          C   sm   d g d g g d d g }  } t  t d t j d d ƒ j |  | ƒ t  t d t j d	 d
 ƒ j |  | ƒ d  S(   Ng        g      ð?i    i   s%   loss='SQuared_hinge' is not supportedRê   t   SQuared_hingesI   The combination of penalty='L2' and loss='squared_hinge' is not supportedRé   t   L2(   R   RN   R   Rµ   R%   (   R&   RJ   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt4   test_linear_svx_uppercase_loss_penality_raises_errori  s
    		c       	   C   sh  t  j d d ƒ j t t ƒ }  |  j s- t ‚ t |  j t	 ƒ t
 ƒ t |  j d g d d ƒt  j d d d d d	 t d d ƒ j t t ƒ }  t |  j t	 ƒ t
 ƒ t  j d d
 d	 t d d ƒ j t t ƒ }  t |  j t	 ƒ t
 ƒ t  j d d
 d d d	 t d d ƒ }  |  j t t ƒ t |  j t	 ƒ t
 ƒ |  j t	 ƒ } | d k j t j ƒ d } t | t
 ƒ d  S(   NRr   i    RL   i   Ré   Ræ   Rê   Rã   Rë   Rç   Râ   i   (   R   Rµ   R%   R&   R'   t   fit_interceptR:   R    R,   RH   RO   R   R+   Rí   R˜   R‡   R>   R7   R¤   (   R-   R¥   t   res(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvcw  s    *$c          C   s  t  j d d ƒ j t j t j ƒ }  t  j d d d d ƒ } | j t j t j ƒ t |  j t j ƒ | j t j ƒ k j ƒ  d k ƒ |  j	 | j	 k j
 ƒ  s¤ t ‚ t | j t j ƒ t j | j t j ƒ d d ƒƒ t j t j | j	 j ƒ | j } t | | j t j ƒ ƒ d  S(   NRr   i    t   multi_classt   crammer_singergÍÌÌÌÌÌì?Rl   i   (   R   Rµ   R%   R4   R5   R6   R   R,   R8   R2   t   allR:   R    R7   R   R‡   RG   RH   R+   R   (   t   ovr_clft   cs_clft   dec_func(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvc_crammer_singer•  s    $"""c          C   sp  t  t ƒ }  t j |  ƒ } t j d d ƒ j t t ƒ } t j d d ƒ j t t d | ƒ} t | j	 t
 ƒ | j	 t
 ƒ ƒ t | j | j d d ƒ t d ƒ } | j d d |  ƒ } t j d d ƒ j t t d | ƒ} | j	 t
 ƒ } t j t | d d ƒ} t j t | d d ƒ}	 t j d d ƒ j | |	 ƒ }
 |
 j	 t
 ƒ } t | | ƒ t | j |
 j d d ƒ d  S(   NRr   i    Rk   i   g-Cëâ6?i
   Rl   (   RR   R&   R7   Ra   R   Rµ   R%   R'   R    R,   RH   R   R2   R   Rm   Rn   (   Ro   Rp   R-   t   clf_unitweightRr   Rs   t   lsvc_unflatt   pred1Rv   Rw   t	   lsvc_flatRD   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvc_fit_sampleweight©  s$    c          C   sy   t  d d d d ƒ \ }  } xW t t f D]I } t j d | d d d d ƒ j |  | ƒ j |  | ƒ } t | d ƒ q( Wd  S(	   Nt	   n_classesi   Rr   i    Rü   Rÿ   R   gÍÌÌÌÌÌì?(   R   R˜   Rí   R   Rµ   R%   R`   R   (   R&   RJ   Rü   t   acc(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_crammer_singer_binaryÇ  s    !c          C   sÀ   t  j t  j }  t j d d ƒ j t  j |  ƒ } t t | j	 ƒ t t  j ƒ ƒ t
 t j | j t  j ƒ |  k ƒ d ƒ | j t  j ƒ } t  j t j | d ƒ } t | | j t  j ƒ ƒ d  S(   NRr   i    gš™™™™™é?i   (   R4   t   target_namesR6   R   Rµ   R%   R5   R   t   setR;   R   R7   R8   R,   R‡   R   R    (   R6   R-   R¥   RC   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvc_irisÒ  s    !(c         C   s3  d d g d d g d d g d d g g } d d d d g } |  d t  d d d d	 d
 t d d d d d d ƒ } | j d k s t | j ƒ ‚ | j sœ t ‚ d | _ | j | | ƒ t | j d d d ƒd | _ | j | | ƒ | j } t | d ƒ d | _ | j | | ƒ | j } t	 | | d d ƒd  S(   Ni   i   i   i    Rü   Ré   Ræ   Rê   Rã   Rë   R[   i   t   tolgH¯¼šò×z>Rr   RL   i   id   iÿÿÿÿiè  (
   R˜   Rí   t   intercept_scalingR:   Rü   R%   R   R+   R   R   (   t
   classifierR&   RJ   R-   t
   intercept1t
   intercept2(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt'   test_dense_liblinear_intercept_handlingß  s(    								c          C   s  t  j ƒ  j t j t j ƒ }  |  j t j ƒ } |  j j ƒ  |  _ |  j	 j ƒ  |  _	 |  j t j ƒ } t
 | | ƒ d d g d d g d d g d d g g } d d d d g } t  j ƒ  j | | ƒ }  |  j | ƒ } |  j j ƒ  |  _ |  j	 j ƒ  |  _	 |  j | ƒ } t | | ƒ d  S(   Ni   i   i   i    (   R   Rµ   R%   R4   R5   R6   R‡   R2   t   copyR+   R   R    (   R-   t   valuest   values2R&   RJ   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_liblinear_set_coef   s"    			c          C   sø   t  j d d ƒ j t j t j ƒ t  j d d ƒ j t j t j ƒ t  j d d ƒ j t j t j ƒ t  j d d ƒ j t j t j ƒ t  j	 d d ƒ j t j ƒ g }  xL |  D]D } t
 t | j d t j d ƒ ƒ t
 t t f | j j d d ƒ q¬ Wd  S(   NR"   R#   R2   i   i    (   i    i    (   R   R$   R%   R4   R5   R6   R™   R^   R]   R}   R   R   t   __setattr__R7   RÅ   t   RuntimeErrorRN   R2   t   __setitem__(   t   svmsR-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_immutable_coef_property  s    !!!!!c          C   sk   d d  l  }  |  j d ƒ } |  j |  j ƒ  d d ƒ t j d d ƒ } | j t t ƒ |  j | d ƒ d  S(   Niÿÿÿÿi   t   verbose(	   t   ost   dupt   dup2t   pipeR   Rµ   R%   R&   R'   (   R!  t   stdoutR-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_linearsvc_verbose'  s    c          C   s+  t  j d d d d „  d t d d d d	 ƒ }  t j |  ƒ } | j t j t j ƒ t  j d d
 d t d d d d	 ƒ } | j t j t j ƒ t	 | j
 | j
 ƒ t	 | j | j ƒ t | j t j ƒ | j t j ƒ ƒ t	 | j t j ƒ | j t j ƒ d d ƒt	 | j t j ƒ | j t j ƒ ƒ d  S(   NR0   R1   R"   c         S   s   t  j |  | j ƒ S(   N(   R7   RG   RH   (   RI   RJ   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyRK   8  s    R—   Rr   i    R¢   Rª   R#   RL   i   (   R   R$   R˜   R	   t   cloneR%   R4   R5   R6   R   R(   R+   R    R,   Rš   R‡   (   t   svm_callablet
   svm_clonedt   svm_builtin(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt#   test_svc_clone_with_callable_kernel5  s&    			
	
c          C   s5   t  j d d d d „  ƒ }  t t |  j t t ƒ d  S(   NR0   R1   R"   c         S   s   |  S(   N(    (   RI   RJ   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyRK   R  s    (   R   R$   R   RN   R%   R&   R'   (   t   svc(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_svc_bad_kernelQ  s    c       	   C   sA   t  j d d „  d t d d d d ƒ }  t t |  j t t ƒ d  S(   NR"   c         S   s   t  j |  | j ƒ S(   N(   R7   RG   RH   (   RI   RJ   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyRK   W  s    R—   Rr   i    t   max_iteri   (   R   R$   R˜   R   R   R%   R&   R'   (   t   a(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_timeoutV  s    c          C   sZ   d }  t  j d d ƒ } t t d | j |  ƒ t  j d d ƒ } t t d | j |  ƒ d  S(   Ns   foo!R0   R1   s   .*\bSVC\b.*\bnot\b.*\bfitted\bs    .*\bNuSVR\b.*\bnot\b.*\bfitted\b(   R   R$   R   t	   ExceptionR,   R]   (   R&   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_unfitted\  s    		c          C   sƒ   t  j d t d d d d ƒ }  |  j t t ƒ j t ƒ } t  j d t d d d d ƒ }  |  j t t ƒ j t ƒ } t | | ƒ d  S(   NR—   R.  i   Rr   i    (   R   R$   R˜   R%   R&   R'   Rš   R   (   R/  t   proba_1t   proba_2(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_consistent_probai  s
    c          C   s†   t  j d d d d ƒ }  t t |  j t t ƒ t |  j d ƒ t  j	 d d d d ƒ } t t | j t
 j t
 j ƒ t | j d ƒ d  S(   NRr   i    R.  i   (   R   Rµ   R   R   R%   R&   R'   R   t   n_iter_R_   R4   R5   R6   (   t   lsvcRf   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt$   test_linear_svm_convergence_warningsr  s    c          C   s·   t  j j d ƒ j d d ƒ }  t  j j d ƒ j d ƒ } xw t j d d ƒ t j d d ƒ t j ƒ  g D]H } | j |  | ƒ t	 | j
 |  ƒ t  j |  | j j ƒ  ƒ | j ƒ qg Wd  S(   Ni   i
   i   i   R"   R#   (   R7   t   randomt   RandomStateR„   R   R^   R]   R_   R%   R   R,   RG   R2   Rˆ   R+   (   R&   RJ   Rh   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_svr_coef_sign~  s    !c          C   sS   xL d d g D]> }  t  j d |  ƒ } d | j } t t | | j t t ƒ q Wd  S(   Niÿÿÿÿi    R  sq   Intercept scaling is %r but needs to be greater than 0. To disable fitting an intercept, set fit_intercept=False.(   R   Rµ   R  R   RN   R%   R&   R'   (   RU   R7  R÷   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt!   test_linear_svc_intercept_scaling‹  s
    
c          C   s6   t  j d t ƒ }  |  j t t ƒ t |  j d ƒ d  S(   NRü   g        (   R   Rµ   Rí   R%   R&   R'   R   R+   (   R7  (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt    test_lsvc_intercept_scaling_zero–  s    c          C   sí   t  j d d d t ƒ }  t |  d ƒ s- t ‚ |  j t j t j ƒ t |  d ƒ sX t ‚ t  j d d d t	 ƒ }  t
 t |  d ƒ ƒ |  j t j t j ƒ t
 t |  d ƒ ƒ t |  _ t |  d ƒ sÊ t ‚ d } t t | |  j t j ƒ d  S(   NR0   R1   R—   Rš   sA   predict_proba is not available when fitted with probability=False(   R   R$   R˜   R9   R:   R%   R4   R5   R6   Rí   R   R—   R   R   Rš   (   t   GR÷   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_hasattr_predict_probaž  s    	c          C   sœ   x• d d g D]‡ }  t  d |  d d ƒ \ } } xc t j t j g D]O } t | d d d d	 ƒ ƒ j | | ƒ } t t | j | ƒ ƒ t | ƒ ƒ qA Wq Wd  S(
   Ni   i   R«   Rr   i    R0   R1   R¢   Rª   (	   R   R   R$   R™   R    R%   R   RR   R,   (   R  R&   RJ   t	   estimatorR-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt&   test_decision_function_shape_two_class´  s    c    	      C   sº  t  j d d g d d g d d g d d g g ƒ }  d d d d g } t  j d d g d d g g ƒ } t  j | d d g | d d g | d d g | d d g f ƒ } d g d d g d d g d d g d } t j d d	 d
 d ƒ } | j |  | ƒ | j | ƒ } t | | ƒ | j | ƒ } t t  j	 | d d ƒ| ƒ | t
 d ƒ | f j d ƒ } t t  j | ƒ d ƒ t  j | d  d  … d f | d  d  … d f k  ƒ s¶t ‚ d  S(   Ni   iÿÿÿÿi    i   i   i   i
   R"   R#   R¢   Rª   Rl   i   i   g        (   i   i   (   R7   RM   t   vstackR   R$   R%   R,   R    R‡   R   RQ   t   reshapeR   t   minR  R:   (	   RŠ   R¬   t   base_pointsR‹   R­   R-   R¹   t   deci_valt   pred_class_deci_val(    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_ovr_decision_function½  s$    3!.c          C   sŒ   d d g d d g g d d g }  } d } t  t | t j ƒ  j |  | ƒ t t j d d	 ƒ j |  | ƒ t t j d d
 ƒ j |  | ƒ d  S(   Ng        g333333ó?g      ð?gÍÌÌÌÌÌô?i    i   s·   The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.R"   R#   RF   (   R   t   FutureWarningR   R$   R%   R   (   R&   RJ   R÷   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_gamma_autoç  s    %	c          C   s¥   d g d g g d d g }  } t  j d d ƒ } t | j |  | ƒ t | j d ƒ d d g d	 d t j d
 ƒ d	 d g g d d g }  } t | j |  | ƒ d  S(   Ng        g      ð?i    i   R0   R1   i   i   i   i   (   R   R$   R   R%   R   t   _gammaR7   t   sqrt(   R&   RJ   R-   (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   test_gamma_scaleô  s    :(q   t   __doc__t   numpyR7   Rî   t   pytestt   numpy.testingR    R   R   R   t   scipyR   t   sklearnR   R   R   R   R	   t   sklearn.model_selectionR
   t   sklearn.datasetsR   R   t   sklearn.metricsR   t   sklearn.metrics.pairwiseR   RÃ   R   t   sklearn.utils.testingR   R   R   R   R   R   R   R   R   R   R   R   R   t   sklearn.exceptionsR   R   R   t   sklearn.multiclassR    t   sklearn.externalsR!   R&   R'   RH   RO   t	   load_irisR4   t   rngt   permutationR6   Rƒ   t   permR5   R.   RE   RY   Rc   Rj   Rz   R{   R€   R‘   R”   R–   R¡   R©   R®   R°   t   markt   filterwarningsRº   R¼   RÌ   RØ   RÚ   Rá   Ró   Rø   Rû   Rþ   R  R
  R  R  Rµ   R  R  R  R&  R+  R-  R0  R2  R5  R8  R;  R<  R=  R?  RA  RH  RJ  RM  (    (    (    s9   lib/python2.7/site-packages/sklearn/svm/tests/test_svm.pyt   <module>   s¤   (<!	
	%	F			#	
						 				,		
		 						!																*	