
\c           @   s   d  d l  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	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d S(   iN(   t   assert_approx_equal(   t   assert_equalt   assert_array_almost_equalt   assert_array_equalt   assert_raise_messaget   assert_warns(   t   load_linnerud(   t   pls_t   CCA(   t   StandardScaler(   t   check_random_state(   t   ConvergenceWarningc    *      C   s.
  t    }  |  j } |  j } t j d | j d  } | j | |  t j d d d | j d  } | j | |  t | j | j d d d d t | j	 | j	 d d d d	 t j d | j d  } | j | |  | j
 } | j } | j } | j }	 | j	 }
 | j } d
   } | | d  | | d  | | d  | |	 d  t j | j   | j   d t \ } } } } } } t | t j | | j  d d t | t j |	 |
 j  d d | j |  } t | | j
 d d | j | |  \ } } t | | j
 d d t | | j d d t j d | j d  } | j | |  t j d d d g d d d g d d d g g  } | j | } t j d d d g d d d  g d d! d" g g  } | j | } t j d# 
d$ d% g d& 
d' d( g d) d* d+ g g  } | j | } t j d# 
d, d- g d& 
d. d/ g d) d0 d1 g g  } | j | } t | |  t t j |  d d2  t t j |  d d2  t | |  t t j |  d d2  t t j |  d d2  t j d | j d  } | j | |  t j d d3 d4 g d d5 d6 g d d7 d8 g g  } | j | } t j d9 d: d4 g d; d< d6 g d= d> d8 g g  } | j | }  t j d? 
d@ dA g dB 
dC dD g dE dF dG g g  } | j | } t j d? 
d@ dA g dB 
dC dD g dE dF dG g g  }! | j	 |! }" t |  | d2  t t j |   d d2  t t j |  d d2  t |" | d2  t t j |"  d d2  t t j |  d d2  dH }# dI }$ d }% t dJ  }& |& j dK |#  }' |& j dK |#  }( t j |' |' |( |( g  j }) |) |& j dK d2 |#  j |# d2 f  } |) |& j dK d2 |#  j |# d2 f  } t j | |& j dK |$ |#  j |# |$  f dL d } t j | |& j dK |% |#  j |# |%  f dL d } t j d dM  } | j | |  t j dN dO dP g dQ dR dS g dT dU dV g dW dX dY g dZ d[ d\ g d] d^ d_ g d` da db g dc dd de g df dg dh g di dj dk g dl dm dn g do dp dq g dr ds dt g du dv dw g g  } | j | } t j dx dy dz g d{ d| d} g d~ d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g  } | j | }  t j d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g	  } | j | } t j d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g	  }! | j	 |! }" t |  | d2  t t j |  d d2  t t j |   d d2  t |" | d2  t t j |  d d2  t t j |"  d d2  | | j d  | | j d  | | j
 d  | | j d  d  S(   Nt   n_componentsi   t	   algorithmt   svdt   decimali   t   err_msgs;   nipals and svd implementations lead to different x loadingss;   nipals and svd implementations lead to different y loadingsc         S   s>   t  j |  j |   } t | t  j t  j |   d | d  S(   NR   (   t   npt   dott   TR   t   diag(   t   MR   t   K(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   check_ortho0   s    s   x weights are not orthogonals   y weights are not orthogonals   x scores are not orthogonals   y scores are not orthogonalt   scales   X != TP's   Y != UQ's   rotation on X faileds   rotation on Y failedg,6g{cd?gr	g;0g?g>c?g@mпgP,"Pgͺ@gCj?g#ig2Щ?gr?go _g<:οgc?gD}Ȇ??g5?gUҮ?gOgөeJo?g.a#οgbM4gYV?gͱ?g[K?g=mBgo1S?gP.%lgq!?i   gbx+rgNF?g&Կgf_g<-bL?gȣȿgHgtϿgE` gt[Wm¿ggLM3?g?g+E!?g4Ӝ@?gsYO)?g`{?gA'?g;Ծgпgſi  i
   i   t   sizet   axisi   gqAS?ģƒ?g	K?g܈m?gr[q?g֎ ÿgոqjP?gͱgS?g$$?g('G_g.k^g~gsg
?gjh?gfrg>uRz?g$¯&?g		lgpO/?g}W[g~glìǿgWX>egj8H@Zg˔Br?g).egw4DgoP^?gvzgqg1GZg}r5.?gzϳJg1?g?gMI?g,)Ɣg [ugei?g⊬[gQ>Oƿgmƫ?gE^?g0?gB+
?g,?gigi*?g_(gb#k4?g*Vh{O?g׍o}sg+KlgݩFgJ,c")g#'v?g,a?g9qbgSLRW?g]@[?gO~gkE?ggpBgR ?g;ȿg-ݿp?g;O<gxgGtK?g$U\ngE	g?g@~_V?g,8(g.^?g)^D_jg2i?gs6Cm?g.f2?ggRug9Me?gX㰿g <ۿgONz '?gsVF?gul-a7?g0?g]4?goБοg:8%?g!Hgl?g5z?gy0/gofy&,g
C?g͢A}?g_%_?g޵?gHֆ/gL:ܿgcIȂg$E!?gfD¹?gϫg35ϧ?g`"ĕs?g$t?gWe?gY)ݟ?g#bJ$?gtdn?gx/RѸ?g
Jn?g׷?gʏSϽg= ?gNfg7jN?g]w?g(.g^i׌%g}P
?gO3IogD'?ghE-(g?g0֢p?gngzgIT4g7Ʃ1|?gO)֠gkp2F$?gA-c?g&?gkh?g!L?(   R   t   datat   targetR   t   PLSCanonicalt   shapet   fitR   t   x_loadings_t   y_loadings_t	   x_scores_t
   x_weights_t	   y_scores_t
   y_weights_t   _center_scale_xyt   copyt   TrueR   R   R   t	   transformt   arrayt   x_rotations_t   y_rotations_t   abst   PLSRegressionR
   t   normalt   reshapet   concatenate(*   t   dt   Xt   Yt   pls_bynipalst	   pls_bysvdt   plscaR   t   Pt   Wxt   Ut   Qt   WyR   t   Xct   Yct   x_meant   y_meant   x_stdt   y_stdt   Xrt   Yrt   pls_cat	   x_weightst   x_weights_sign_flipt   x_rotationst   x_rotations_sign_flipt	   y_weightst   y_weights_sign_flipt   y_rotationst   y_rotations_sign_flipt   pls_2t
   x_loadingst   x_loadings_sign_flipt
   y_loadingst   y_loadings_sign_flipt   nt   p_noiset   q_noiset   rngt   l1t   l2t   latents(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_pls   s\   										6""))11c          C   sZ   t    }  |  j } |  j } t j d | j d d d d d  } t t | j | |  d  S(   NR   i   t   max_iteri   t   tolg|=(	   R   R   R   R   R   R   R   R   R   (   R2   R3   R4   R5   (    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_convergence_fail  s    			c          C   s~   t    }  |  j } |  j } d } xV t j t j t j g D]< } | d |  } | j | |  t | | j	 j
 d  q: Wd  S(   Ni   R   i   (   R   R   R   R   t   PLSSVDR.   R   R   R   R$   R   (   R2   R3   R4   R   t   clft   pls(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_PLSSVD  s    			c          C   s   t    }  |  j } |  j } t j   } | j | | d  d   d f  j } | j | | d  d   d  d  f  j } t | |  d  S(   Ni    i   (   R   R   R   R   R.   R   t   coef_R   (   R2   R3   R4   R_   t   model1t   model2(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_univariate_pls_regression  s    			%+c          C   s!  t    }  |  j } |  j } t j   } | j   } | j   } | j | |  t | j |  | j | j   d t	  t | j
 |  | j
 | j   d t	  t | j
 | |  | j
 | j   | j   d t	  t | |  t | |  t j | j d d  d k  st  d  S(   NR'   R   i    (   R   R   R   R   R   R'   R   R   t   predictt   FalseR)   R   R   t   allt   meant   AssertionError(   R2   R3   R4   R_   t   X_copyt   Y_copy(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_predict_transform_copy+  s    			++%c          C   s2  t    }  |  j } |  j } d | d  d   d f <t j d d d g d d d g d d d g d d d g g  } t j d d	 g d
 d g d d g d d g g  } x| | f | | f g D]n\ } } | j d d d d  } d | | d k <| j d d d d  } d | | d k <| | j d d  | }	 | | j d d  | }
 x t   t j	   t j
   t j   g D] } | j d t  | j | |  \ } } | j d t  | j |	 |
  \ } } t | |  t | |  | j d t  | j |	 |
  \ } } t | |  t | |  qtWq Wd  S(   Ng      ?ig        g       @g      @g      @g      @g?gɿg?g?g@g@g'@g(@R   i    t   ddofi   R   (   R   R   R   R   R*   t   stdRi   R   R   R   R.   R^   t
   set_paramsR(   t   fit_transformRg   R   (   R2   t   X1t   Y1t   X2t   Y2R3   R4   t   X_stdt   Y_stdt   X_st   Y_sR_   t   X_scoret   Y_scoret	   X_s_scoret	   Y_s_score(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_scale_and_stabilityC  s>    					%c          C   sm   t    }  |  j } |  j } xK t j   t j   t j   g D]( } d | _ t t	 d | j
 | |  q= Wd  S(   Ni   s   Invalid number of components(   R   R   R   R   R   R.   R^   R   R   t
   ValueErrorR   (   R2   R3   R4   R_   (    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_pls_errorsq  s    					c          C   s   d }  d } d } t  d  } | j | |  } | j |  |  } t j | |  d | j |  |  d } | d 9} t   j |  } t j d d d t  } | j	 | |  | j
 | |  }	 | j	 | |  | j
 | |  }
 t |	 |
  d  S(	   Ni  i   i
   i    i   i   R   R   (   R
   t   randnR   R   R	   Rq   R   R.   R(   R   t   scoreR    (   t	   n_samplest	   n_targetst
   n_featuresRV   R;   R4   R3   t   X_scaledR`   R   t   score_scaled(    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   test_pls_scaling|  s    *
(   t   numpyR   t   numpy.testingR    t   sklearn.utils.testingR   R   R   R   R   t   sklearn.datasetsR   t   sklearn.cross_decompositionR   R   t   sklearn.preprocessingR	   t   sklearn.utilsR
   t   sklearn.exceptionsR   RZ   R]   Ra   Re   Rm   R~   R   R   (    (    (    sI   lib/python2.7/site-packages/sklearn/cross_decomposition/tests/test_pls.pyt   <module>   s   (							.	