ó
‡ˆ\c           @   s§  d  d l  Z  d  d l Z d  d l m Z m Z m Z d  d l m Z d  d l	 m
 Z
 m Z m Z 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 m Z m Z m Z m Z m Z e j d
 d  g d  d  g d  d
 g d d g d d g d d g g ƒ Z  e j! e  ƒ Z" d d d d d d g Z# e j d  d  g d d g d d g g ƒ Z$ d d d g Z% e j d d d g d d d g d d d g d d d g d d d g g ƒ Z& e j' e& ƒ Z( d d d d d g Z) e j d  d  d  g d d d g d d d g g ƒ Z* d d d g Z+ e
 j, ƒ  Z- e j. j/ d ƒ Z0 e0 j1 e- j2 j3 ƒ Z4 e- j5 e4 e- _5 e- j2 e4 e- _2 e j6 e- j5 ƒ e- _5 d „  Z7 e d „  ƒ Z8 d „  Z9 d „  Z: d „  Z; d „  Z< d „  Z= d „  Z> d „  Z? e  j@ jA d ƒ e  j@ jA d ƒ d „  ƒ ƒ ZB d „  ZC d „  ZD e  j@ jE d eF d ƒ ƒ e  j@ jE d d  d! d" d# g ƒ e d$ „  ƒ ƒ ƒ ZG d% „  ZH d& „  ZI d' „  ZJ d( „  ZK d S()   iÿÿÿÿN(   t   assert_array_almost_equalt   assert_array_equalt   assert_equal(   t   sparse(   t   datasetst   svmt   linear_modelt   base(   t   make_classificationt   load_digitst
   make_blobs(   t   test_svm(   t   ConvergenceWarning(   t   safe_sparse_dot(   t   assert_raisest   assert_falset   assert_warnst   assert_raise_messaget   ignore_warningst   skip_if_32bitiþÿÿÿi   i   i   i    c         C   sÎ  |  j  | j ƒ  | ƒ t j | ƒ r4 | j ƒ  } n | } | j  | | ƒ t j | j ƒ sb t ‚ t j | j ƒ sz t ‚ t |  j | j j ƒ  ƒ t |  j | j j ƒ  ƒ |  j	 d k rï t j | j
 ƒ sÓ t ‚ t |  j
 | j
 j ƒ  ƒ n  t |  j | j ƒ t |  j | ƒ | j | ƒ ƒ t |  j | ƒ | j | ƒ ƒ t |  j | ƒ | j | ƒ ƒ t |  t j ƒ rzd } n( t |  j | ƒ | j | ƒ d ƒ d } t j | ƒ rÊt t | |  j | ƒ n  d  S(   Nt   linears>   cannot use sparse input in 'OneClassSVM' trained on dense datai   s6   cannot use sparse input in 'SVC' trained on dense data(   t   fitt   toarrayR   t
   isspmatrixt   issparset   support_vectors_t   AssertionErrort
   dual_coef_R    t   kernelt   coef_t   support_t   predictt   decision_functiont
   isinstanceR   t   OneClassSVMt   predict_probaR   t
   ValueError(   t	   dense_svmt
   sparse_svmt   X_traint   y_traint   X_testt   X_test_denset   msg(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   check_svm_model_equal,   s8    			c          C   s  t  d d d d d d ƒ \ }  } t j |  ƒ }  t t t g t t t g |  d  | d  |  d g t	 j
 t	 j t	 j
 g g } d d	 d
 d g } xƒ | D]{ } xr | D]j } t j d d d | d t d d d d ƒ } t j d d d | d t d d d d ƒ } t | | | Œ q¡ Wq” Wd S(   s2   Check that sparse SVC gives the same result as SVCt	   n_samplesid   t   centersi
   t   random_statei    iP   R   t   polyt   rbft   sigmoidt   gammai   R   t   probabilityt   decision_function_shapet   ovoN(   R
   R   t
   csr_matrixt   X_spt   Yt   Tt   X2_spt   Y2t   T2t   irist   datat   targetR   t   SVCt   TrueR,   (   t   X_blobst   y_blobsR   t   kernelst   datasetR   t   clft   sp_clf(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_svcM   s    !c          C   s|  t  ƒ  }  |  j d  |  j d  } } t j |  j d d !ƒ } t j | ƒ } t j d d d t d d ƒ j | | ƒ j	 } t j d d d t d d ƒ j | | ƒ } | j	 } t
 | | j ƒ  ƒ | t j | j d ƒ } | t j | j d ƒ }	 t | j ƒ t |	 j ƒ t j d d d t d d ƒ j | | ƒ }
 |
 j	 } t
 | j ƒ  | j ƒ  ƒ t
 | j |	 ƒ | j | ƒ ƒ d  S(   Ni2   id   R   R   R4   R/   i    (   R	   R?   R@   R   R7   R   RA   RB   R   R   R    R   t   npt   aranget   shapeR   t   has_sorted_indicesR#   (   t   digitst   Xt   yR)   t   X_sparset
   coef_denset
   sparse_svct   coef_sortedt   X_sparse_unsortedt   X_test_unsortedt   unsorted_svct   coef_unsorted(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_unsorted_indicesa   s(    			c          C   sn   d „  }  t  j d d ƒ j t t ƒ } t  j d d d |  ƒ j t t ƒ } t | j t ƒ | j t ƒ ƒ d  S(   Nc         S   s   t  |  | j ƒ S(   N(   R   R:   (   t   xRP   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   kfuncƒ   s    R   R   R3   t   scale(   R   RA   R   R8   R9   R   R   (   R[   t   clf_lint	   clf_mylin(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_svc_with_custom_kernel‚   s    	$c          C   sô   xí d D]å }  t  j d d d |  ƒ j t j t j ƒ } t  j d d d |  ƒ j t j j ƒ  t j ƒ } t | j | j j ƒ  ƒ t | j	 | j	 j ƒ  ƒ t | j
 t j j ƒ  ƒ | j
 t j ƒ ƒ |  d k r t | j | j j ƒ  ƒ q q Wd  S(   NR   R0   R1   R3   R\   R   (   R   R0   R1   (   R   RA   R   R>   R?   R@   R   R    R   R   R   R   (   t   kRH   RG   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_svc_irisŠ   s    *$	(c          C   s;  t  j d d d d d d ƒ }  |  j t j t j ƒ } t 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 ƒ j ƒ  ƒ t j d d	 d d
 d d g ƒ } t
 | j t ƒ | d ƒ d  S(   NR   R   t   Cgš™™™™™¹?R5   R6   i    g      ð¿g…ëQ¸å¿g…ëQ¸å?g      ð?i   (   R   RA   R   R>   R?   R@   R   R   R:   t
   intercept_R    R    RO   R9   RJ   t   dotR   t   ravelt   classes_t   astypet   intt   array(   t   svcRG   t   dect
   predictiont   expected(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_sparse_decision_functionš   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 | ƒ t j d d ƒ }  |  j t t ƒ t	 |  j
 t ƒ t ƒ d  S(   NR3   R\   Rb   iÿÿÿÿt   nug        (   R   R$   R   RA   R   RO   R9   t   NuSVCR8   R   R   R:   t   true_result(   RG   R<   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt
   test_error´   s    (
c          C   sò   t  j d d ƒ j t t ƒ }  t  j d d ƒ j t t ƒ } | j sK t ‚ t |  j	 | j	 d d ƒt |  j
 | j
 d d ƒt |  j t ƒ | j t ƒ ƒ |  j t t ƒ | j t t ƒ t |  j	 | j	 d d ƒt |  j
 | j
 d d ƒd  S(   NR/   i    t   decimali   (   R   t	   LinearSVCR   RO   R9   R8   t   fit_interceptR   R    R   Rc   R   t   X2R<   R;   (   RG   RH   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_linearsvcÅ   s    c          C   sE  t  j d d ƒ j t j t j ƒ }  t  j d d ƒ j t j j ƒ  t j ƒ } t | j |  j ƒ t	 | j
 |  j
 d d ƒt	 | j |  j d d ƒt	 | j t j j ƒ  ƒ |  j t j ƒ ƒ t j |  j t j ƒ d ƒ } t	 | | j t j j ƒ  ƒ ƒ | j ƒ  t | | j t j ƒ ƒ |  j ƒ  t | |  j t j ƒ ƒ d  S(   NR/   i    Rs   i   (   R   Rt   R   R>   R?   R@   R   R   Ru   R    R   Rc   R   RJ   t   argmaxR    t   sparsifyR   (   RH   RG   t   pred(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_linearsvc_irisØ   s    $*(

s&   ignore: Default solver will be changeds    ignore: Default multi_class willc       	   C   sß   t  d d d d d d d g d d	 ƒ \ }  } t j |  ƒ }  xœ t j ƒ  t j d d	 ƒ t j d
 d ƒ f D]m } | j d i d d	 6ƒ | j	 |  d  | d  ƒ | j
 |  d ƒ } t j | | d k ƒ d k sj t ‚ qj Wd  S(   NR-   iÈ   t
   n_featuresid   t   weightsg-²ï§ê?gÇK7‰A`Å?R/   i    R3   R\   t   class_weighti   i´   i   (   R   R   R7   R   t   LogisticRegressionR   Rt   RA   t
   set_paramsR   R   RJ   t   sumR   (   t   X_t   y_RG   t   y_pred(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.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 ƒ d  S(
   NR3   R\   i   g      ð?gš™™™™™¹?i   i
   t   sample_weightg       @(   R   RA   R   R8   R9   R   R   RO   (   RG   R†   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_sample_weights  s     c           C   s   t  j t j ƒ d  S(   N(   R   t'   test_dense_liblinear_intercept_handlingR   Rt   (    (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt(   test_sparse_liblinear_intercept_handling  s    t   datasets_indexi   R   R   R0   R1   R2   c         C   sÂ   t  d d d d d d ƒ \ } } t j | ƒ } t d  t g t d  t g | d  d  | d g t j	 d  t j	 g g } | |  } t
 j d d	 d
 | ƒ } t
 j d d	 d
 | ƒ } t | | | Œ d  S(   NR-   id   R.   i
   R/   i    iP   R3   i   R   (   R
   R   R7   R8   t   NoneR:   R;   R=   R>   R?   R   R"   R,   (   RŠ   R   RC   t   _R   RF   RG   RH   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_sparse_oneclasssvm  s    !
c       R   C   sÐ  t  j d d d d g ƒ }  t  j d d d d g ƒ } t  j d	 d	 d	 d	 d	 d	 d	 d	 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d gQ ƒ } t j |  | | f ƒ } t  j d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d gP ƒ } t j d d ƒ j | j ƒ  | ƒ } t j d d ƒ j t j | ƒ | ƒ } t	 | j
 | j
 j ƒ  ƒ t	 | j | j j ƒ  ƒ d  S(   Ng!ã“F³O£?gJ:oú°¹?g[“òƒˆˆ?gýñÖù·›?i   i   i#   i   i    i   i   i   g      ð?g        g       @g      @R   R   (   RJ   Ri   R   R7   R   RA   R   R   t
   coo_matrixR   R   R   (   R?   t   indicest   indptrRO   RP   RG   RH   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_sparse_realdata#  s(    EEE-''''''$'c          C   sÁ   t  j d d d d d d „  d t d d	 ƒ }  t j |  ƒ } | j t t ƒ | j t ƒ } | j	 t ƒ t  j d d d d d d
 „  d t d d	 ƒ } | j t
 t ƒ j t
 ƒ } t | | ƒ d  S(   NR3   R\   Rb   i   R   c         S   s   |  | j  S(   N(   R:   (   RZ   RP   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   <lambda>C  s    R4   R/   i    c         S   s   t  j |  | j ƒ S(   N(   RJ   Rd   R:   (   RZ   RP   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyR’   K  s    (   R   RA   RB   R   t   cloneR   R8   R9   R   R#   RO   R   (   t   at   bRz   R%   t
   pred_dense(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt*   test_sparse_svc_clone_with_callable_kernel@  s    c          C   sM   t  j d d d d d d „  d t d d	 d
 d ƒ }  t t |  j t t ƒ d  S(   NR3   R\   Rb   i   R   c         S   s   |  | j  S(   N(   R:   (   RZ   RP   (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyR’   S  s    R4   R/   i    t   max_iter(   R   RA   RB   R   R   R   R8   R9   (   t   sp(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_timeoutR  s    c       
   C   s»   t  j d d d t d d d d ƒ }  t d t ƒ   |  j t t ƒ j t ƒ } Wd  QXt  j d d d t d d d d ƒ }  t d t ƒ   |  j t t ƒ j t ƒ } Wd  QXt	 | | ƒ d  S(	   NR3   R\   R4   R˜   i   R/   i    t   category(
   R   RA   RB   R   R   R   RO   R9   R#   R    (   R”   t   proba_1t   proba_2(    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   test_consistent_probaY  s    $!$!(L   t   pytestt   numpyRJ   t   numpy.testingR    R   R   t   scipyR   t   sklearnR   R   R   R   t   sklearn.datasetsR   R	   R
   t   sklearn.svm.testsR   t   sklearn.exceptionsR   t   sklearn.utils.extmathR   t   sklearn.utils.testingR   R   R   R   R   R   Ri   RO   t
   lil_matrixR8   R9   R:   Rq   Rv   t
   dok_matrixR;   R<   R=   t   true_result2t	   load_irisR>   t   randomt   RandomStatet   rngt   permutationR@   t   sizet   permR?   R7   R,   RI   RY   R_   Ra   Rn   Rr   Rw   R{   t   markt   filterwarningsR…   R‡   R‰   t   parametrizet   rangeR   R‘   R—   Rš   Rž   (    (    (    s<   lib/python2.7/site-packages/sklearn/svm/tests/test_sparse.pyt   <module>   s\   ".E**!3	!	!											