ó
‡ˆ\c           @   sÅ  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
 m Z m Z m Z m Z m Z m Z m Z d  d l 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" d  d l# m$ Z$ d  d l# m% Z% m& Z& d  d l# m' Z' e j( j) d ƒ e j( j) d ƒ d „  ƒ ƒ Z* e j( j) d ƒ d „  ƒ Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d S(   iÿÿÿÿ(   t   divisionN(   t   sparse(   t   LeaveOneOut(   t   assert_array_almost_equalt   assert_equalt   assert_greatert   assert_almost_equalt   assert_greater_equalt   assert_array_equalt   assert_raisest   ignore_warnings(   t   make_classificationt
   make_blobs(   t   MultinomialNB(   t   RandomForestClassifiert   RandomForestRegressor(   t	   LinearSVC(   t   Pipeline(   t   SimpleImputer(   t   brier_score_losst   log_loss(   t   CalibratedClassifierCV(   t   _sigmoid_calibrationt   _SigmoidCalibration(   t   calibration_curves(   ignore:The default value of n_estimatorss"   ignore: You should specify a valuec          C   s&  d }  t  d d |  d d d d ƒ \ } } t j j d d ƒ j d	 | j ƒ } | | j ƒ  8} | |   | |   | |   } } } | |  | |  } } t ƒ  j | | d
 | ƒ}	 |	 j	 | ƒ d d … d f }
 t
 |	 d | j d ƒ} t t | j | | ƒ x"| | f t j | ƒ t j | ƒ f g D]ö\ } } x”d d g D]†} t
 |	 d | d d ƒ} | j | | d
 | ƒ| j	 | ƒ d d … d f } t t | |
 ƒ t | | ƒ ƒ | j | | d d
 | ƒ| j	 | ƒ d d … d f } t | | ƒ | j | d | d d
 | ƒ| j	 | ƒ d d … d f } t | | ƒ | j | | d d d
 | ƒ| j	 | ƒ d d … d f } | d k r t | d | ƒ qAt t | |
 ƒ t | d d | ƒ ƒ qAWt
 |	 d d ƒ} t t | j | | ƒ t
 t ƒ  d d ƒ} t t | j | | ƒ q(Wd S(   s2   Test calibration objects with isotonic and sigmoidid   t	   n_samplesi   t
   n_featuresi   t   random_statei*   t   seedt   sizet   sample_weightNi   t   cvt   isotonict   sigmoidt   methodt   foo(   R   t   npt   randomt   RandomStatet   uniformR   t   minR   t   fitt   predict_probaR   R	   t
   ValueErrorR   t
   csr_matrixR   R   R   R   t   RuntimeError(   R   t   Xt   yR   t   X_traint   y_traint   sw_traint   X_testt   y_testt   clft   prob_pos_clft   pc_clft   this_X_traint   this_X_testR"   t   prob_pos_pc_clft   prob_pos_pc_clf_relabeledt   clf_invalid_methodt   clf_base_regressor(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration   sR    $ c          C   s  d }  t  d d |  d d d d ƒ \ } } t j j d d ƒ j d	 t | ƒ ƒ } | |   | |   | |   } } } | |  } xœ d
 d g D]Ž } t d d ƒ }	 t |	 d | ƒ}
 |
 j | | d | ƒ|
 j	 | ƒ } |
 j | | ƒ |
 j	 | ƒ } t j
 j | | ƒ } t | d ƒ q‰ Wd  S(   Nid   R   i   R   i   R   i*   R   R   R!   R    R"   R   gš™™™™™¹?(   R   R$   R%   R&   R'   t   lenR   R   R)   R*   t   linalgt   normR   (   R   R.   R/   R   R0   R1   R2   R3   R"   t   base_estimatort   calibrated_clft   probs_with_swt   probs_without_swt   diff(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_sample_weighti   s    ' 
c          C   s˜  t  ƒ  }  t d d d d d d d d d	 d
 ƒ \ } } t j d d d g ƒ } | | } | d d d … | d d d … } } | d d d … | d d d … } } |  j | | ƒ x¹ d d g D]« }	 t |  d |	 d d ƒ}
 |
 j | | ƒ |
 j | ƒ } t t j | d d ƒt j	 t
 | ƒ ƒ ƒ d „  } t | | |  j | ƒ ƒ ƒ } t | | ƒ } t | | ƒ qÃ Wt d d d d d d d	 d
 ƒ \ } } | d d d … | d d d … } } | d d d … | d d d … } } t d d d d ƒ }  |  j | | ƒ |  j | ƒ } t | | ƒ } xg d d g D]Y }	 t |  d |	 d d ƒ}
 |
 j | | ƒ |
 j | ƒ } t | | ƒ } t | | ƒ q7Wd S(   s    Test calibration for multiclass R   id   R   i   R   i*   t   centersi   t   cluster_stdg      @t   at   bt   cNi   R    R!   R"   R   t   axisc         S   s0   t  j |  ƒ } | | j d d ƒ j d d ƒ S(   NRM   i   iÿÿÿÿ(   R$   t   expt   sumt   reshape(   t   y_predt   e(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   softmax   s    t   n_estimatorsi
   (   R   R   R$   t   arrayR)   R   R*   R   RO   t   onesR?   R   t   decision_functionR   R   R   (   R5   R.   t   y_idxt   target_namesR/   R0   R1   R3   R4   R"   t   cal_clft   probasRS   t   uncalibrated_log_losst   calibrated_log_losst	   clf_probst   losst   cal_clf_probst   cal_loss(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration_multiclassƒ   s>    	
''+	''c       
   C   s)  d }  t  d d |  d d d d ƒ \ } } t j j d d ƒ j d	 | j ƒ } | | j ƒ  8} | |   | |   | |   } } } | |  d
 |  !| |  d
 |  !| |  d
 |  !} } }	 | d
 |  | d
 |  }
 } t ƒ  } | j | | | ƒ | j	 |
 ƒ d d … d f } x| |
 f t
 j | ƒ t
 j |
 ƒ f g D]ê \ } } xÛ d d g D]Í } t | d | d d ƒ} x¬ |	 d g D]ž } | j | | d | ƒ| j	 | ƒ } | j | ƒ } | d d … d f } t | t j d d g ƒ t j | d d ƒƒ t t | | ƒ t | | ƒ ƒ q{WqPWq7Wd S(   s*   Test calibration for prefitted classifiersi2   R   i   R   i   R   i*   R   R   i   Ni   R    R!   R"   R   t   prefitR   i    RM   (   R   R$   R%   R&   R'   R   R(   R   R)   R*   R   R,   R   t   Nonet   predictR   RU   t   argmaxR   R   (   R   R.   R/   R   R0   R1   R2   t   X_calibt   y_calibt   sw_calibR3   R4   R5   R6   t   this_X_calibR9   R"   R7   t   swt   y_probRQ   R:   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration_prefitº   s4    $ 	)c          C   sß   t  j d d d g ƒ }  t  j d d d g ƒ } t  j d d g ƒ } t | t |  | ƒ d ƒ d d t  j | d	 |  | d ƒ } t ƒ  j |  | ƒ j |  ƒ } t | | d
 ƒ t t	 t ƒ  j t  j
 |  |  f ƒ | ƒ d S(   s0   Test calibration values with Platt sigmoid modeli   iüÿÿÿg      ð?i   iÿÿÿÿg¿j˜=ïÉ¿gY90¯(àä?i   i    i   N(   R$   RU   R   R   RN   R   R)   Re   R	   R+   t   vstack(   t   exFt   exYt   AB_lin_libsvmt   lin_probt   sk_prob(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_sigmoid_calibrationã   s    'c          C   s  t  j d d d d d d g ƒ }  t  j d d d d d d g ƒ } t |  | d	 d
 ƒ\ } } t |  | d
 d	 d
 d t ƒ\ } } t t | ƒ t | ƒ ƒ t t | ƒ d
 ƒ t | d d g ƒ t | d d g ƒ t | | ƒ t | | ƒ t t t d g d g d t	 ƒd S(   s    Check calibration_curve functioni    i   g        gš™™™™™¹?gš™™™™™É?gš™™™™™é?gÍÌÌÌÌÌì?g      ð?t   n_binsi   t	   normalizegš™™™™™ñ?gš™™™™™¹¿N(
   R$   RU   R   t   TrueR   R?   R   R	   R+   t   False(   t   y_trueRQ   t	   prob_truet	   prob_predt   prob_true_unnormalizedt   prob_pred_unnormalized(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration_curveõ   s    !!%c          C   s   t  d d d d d d d d d d	 ƒ \ }  } t j |  d <t d
 t ƒ  f d t d d ƒ f g ƒ } t | d d d d ƒ} | j |  | ƒ | j |  ƒ d S(   s$   Test that calibration can accept nanR   i
   R   i   t   n_informativet   n_redundanti    R   i*   t   imputert   rfRT   i   R   R"   R    N(   i    i    (	   R   R$   t   nanR   R   R   R   R)   Re   (   R.   R/   R5   t   clf_c(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration_nan_imputer	  s    c          C   s   d }  t  d d d d d |  ƒ \ } } t d d ƒ } t | d	 d
 d t ƒ  ƒ} | j | | ƒ | j | ƒ } t | j d d ƒ t j	 | j
 d ƒ ƒ d  S(   Ni   R   i
   R   i   t	   n_classest   Cg      ð?R"   R!   R   RM   i   i    (   R   R   R   R   R)   R*   R   RO   R$   RV   t   shape(   t   num_classesR.   R/   R5   t   clf_probt   probs(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration_prob_sum  s    c       	   C   s  t  j j d d ƒ }  t  j d ƒ } t d d ƒ } t | d d d t ƒ  ƒ} | j |  | ƒ x­ t | j	 ƒ D]œ \ } } | j
 |  ƒ } t | d  d  … | f t  j t | ƒ ƒ ƒ t t  j t  j | d  d  … d  | … f | d  d  … | d d  … f g ƒ ƒ t ƒ qn Wd  S(	   Ni
   i   R‡   g      ð?R"   R!   R   i   (   R$   R%   t   randnt   arangeR   R   R   R)   t	   enumeratet   calibrated_classifiers_R*   R   t   zerosR?   R   t   allt   hstackRw   (   R.   R/   R5   RZ   t   it   calibrated_classifiert   proba(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   test_calibration_less_classes%  s    ,((3   t
   __future__R    t   pytestt   numpyR$   t   scipyR   t   sklearn.model_selectionR   t   sklearn.utils.testingR   R   R   R   R   R   R	   R
   t   sklearn.datasetsR   R   t   sklearn.naive_bayesR   t   sklearn.ensembleR   R   t   sklearn.svmR   t   sklearn.pipelineR   t   sklearn.imputeR   t   sklearn.metricsR   R   t   sklearn.calibrationR   R   R   R   t   markt   filterwarningsR>   RG   Rb   Rm   Rt   R~   R…   RŒ   R—   (    (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_calibration.pyt   <module>   s2   :L	7	)				