3
ù…±b½S  ã               @   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 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 dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z e j!j"dƒe j!j#deeefƒdd„ ƒƒZ$e j!j#deeefƒdd„ ƒZ%e j!j#deeeefƒdd „ ƒZ&d!d"„ Z'e j!j#deeeefƒe j!j#d#e'ƒ ƒd$d%„ ƒƒZ(e j!j#deeefƒe j!j#d&dHƒd(d)„ ƒƒZ)e j!j#d&dIƒd+d,„ ƒZ*e j!j#deeefƒd-d.„ ƒZ+e j!j#deeefƒd/d0„ ƒZ,e j!j#d1eeeefƒe j!j#d2dJƒd7d8„ ƒƒZ-e j!j#d9dKdLgƒe j!j#d=e.d;ƒƒd>d?„ ƒƒZ/d@dA„ Z0dBdC„ Z1dDdE„ Z2dFdG„ Z3dS )Mé    N)Úassert_array_almost_equalÚassert_array_equalÚassert_allclose)Úload_linnerud)Ú_center_scale_xyÚ(_get_first_singular_vectors_power_methodÚ_get_first_singular_vectors_svdÚ_svd_flip_1d)ÚCCA)ÚPLSSVDÚPLSRegressionÚPLSCanonical)Úmake_regression)Úcheck_random_state)Úsvd_flip)ÚConvergenceWarningc             C   s(   t j| j| ƒ}t|t jt j|ƒƒƒ d S )N)ÚnpÚdotÚTr   Zdiag)ÚMÚK© r   úR/tmp/pip-build-yq1vfp91/scikit-learn/sklearn/cross_decomposition/tests/test_pls.pyÚassert_matrix_orthogonal   s    r   c              C   s  t ƒ } | j}| j}t|jd d�}|j||ƒ t|jƒ t|jƒ t|j	ƒ t|j
ƒ |j	}|j}|j
}|j}t|jƒ |jƒ dd�\}}	}
}}}t|tj||jƒƒ t|	tj||jƒƒ |j|ƒ}t||j	ƒ |j||ƒ\}}t||j	ƒ t||j
ƒ |j|ƒ}t||ƒ d S )Né   )Ún_componentsT)Úscale)r   ÚdataÚtargetr   ÚshapeÚfitr   Ú
x_weights_Ú
y_weights_Ú	_x_scoresÚ	_y_scoresÚx_loadings_Úy_loadings_r   Úcopyr   r   r   r   Ú	transformZinverse_transform)ÚdÚXÚYÚplsr   ÚPÚUÚQZXcZYcZx_meanZy_meanZx_stdZy_stdZXtZYtZX_backr   r   r   Útest_pls_canonical_basics   s0    



 

r0   c              C   sn  t ƒ } | j}| j}t|jd d�}|j||ƒ tjdddgdddgd d
d!ggƒ}tjd"d#dgd$d%d&gd'dd(ggƒ}tjd)ddgd*ddgd+d,d-ggƒ}tjd.ddgd/ddgd0d1d2ggƒ}ttj	|j
ƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ tj|j
| ƒ}tj|j| ƒ}	tj|j| ƒ}
tj|j| ƒ}t||	ƒ t||
ƒ d S )3Nr   )r   g,œæ6 ã?gbxôØù+r?gºÂõNFé?g¦;¦0çç?gÌ&Ÿ¢—Ô?gfé–_žâ?gÛÓ@¹ŽmÐ?g¤<-bLî?g�È£†üÔÈ?gìHý¨«ã?gîÿ©ÙtÏ?gE`Õ å?g¶tÜ[WmÂ?gþ¦¨áø�à?gLŠM3öð?çêŸÅÔ?g+Eú‰!Ó?gñ4Óœ@Ê?çËs¯YO)Û?g¢`{ Ôã?gA¬'ˆôºÈ?gþ«;Ô¾ÒÀ?gàÒñÝÐ?gÿý¸áÅ?g,œæ6 ã¿gbxôØù+r¿g¦;¦0çç¿gÌ&Ÿ¢—Ô¿gfé–_žâ¿gÛÓ@¹ŽmÐ¿g�È£†üÔÈ¿gìHý¨«ã¿gîÿ©ÙtÏ¿gE`Õ å¿g¶tÜ[WmÂ¿gfé–_žâ¿gþ¦¨áø�à¿g�È£†üÔÈ¿r1   r2   gþ«;Ô¾ÒÀ¿gàÒñÝÐ¿gÿý¸áÅ¿r1   r2   gþ«;Ô¾ÒÀ¿gàÒñÝÐ¿gÿý¸áÅ¿)r   r   r   r   r   r    r   Úarrayr   Úabsr%   r!   r&   r"   Úsign)r)   r*   r+   r,   Úexpected_x_weightsÚexpected_x_loadingsÚexpected_y_weightsÚexpected_y_loadingsÚx_loadings_sign_flipÚx_weights_sign_flipÚy_weights_sign_flipÚy_loadings_sign_flipr   r   r   Ú test_sanity_check_pls_regression?   sF    
r>   c        
      C   s\  t ƒ } | j}| j}d|d d …df< t|jd d�}|j||ƒ tjdddgdddgdddggƒ}tjd d!dgd"d#d$gd%dd&ggƒ}tjdddgdddgd'd(d)ggƒ}ttj	|ƒtj	|j
ƒƒ ttj	|ƒtj	|jƒƒ ttj	|jƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ tj||j ƒ}tj||j
 ƒ}tj||j ƒ}	t||ƒ t|dd … |	dd … ƒ d S )*Nr   r   )r   gÍ�Oä?gÀ(¡ñÍ}?g:Fëè?gìíàq›úç?gqdvúgÄÑ?g|�¯Nß<ã?g¨1Æ, Ë?gç¾7®È½î?g\ªÒ×øÆ?gCgãÒBä?g<&.ÁÌ?g¯ÊBå?gè5_/E¹?g—žúQgà?gç¯ër¥9ð?g        g‰µø ãÛ?gXZ¡£°¦â?gh†C%dÖË?gV±�”îSÁ?gù{sÉ‚ÓÏ?gâ$(ÙE,Ç?gÍ�Oä¿gìíàq›úç¿gqdvúgÄÑ¿g|�¯Nß<ã¿g¨1Æ, Ë¿g\ªÒ×øÆ¿gCgãÒBä¿g<&.ÁÌ¿g¯ÊBå¿gè5_/E¹¿g|�¯Nß<ã¿g—žúQgà¿g\ªÒ×øÆ¿gV±�”îSÁ¿gù{sÉ‚ÓÏ¿gâ$(ÙE,Ç¿)r   r   r   r   r   r    r   r3   r   r4   r!   r%   r&   r"   r5   r   )
r)   r*   r+   r,   r6   r7   r9   r:   r;   r=   r   r   r   Ú2test_sanity_check_pls_regression_constant_column_Yq   s>    


r?   c              C   s–  t ƒ } | j}| j}t|jd d�}|j||ƒ tjd!dd"gd#ddgd$d%d&ggƒ}tjd'dd(gd)ddgd*d+d,ggƒ}tjd-ddgd.d/dgd0d1dggƒ}tjd2ddgd3d4dgd5d6d ggƒ}ttj	|j
ƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ ttj	|jƒtj	|ƒƒ tj|j
| ƒ}tj|j| ƒ}	tj|j| ƒ}
tj|j| ƒ}t||	ƒ t|
|ƒ t|jƒ t|jƒ t|jƒ t|jƒ d S )7Nr   )r   g,œæ6 ã?gû{cçñdÐ?g£rÙ	«èç?g¦;¦0çç?g§š“öŠ¾?g¿>côîä?gÛÓ@¹ŽmÐ?gP,"P²î?gÍº‘@¾?gù«•CjžÚ?g#õžÊiïã?g2�Ð©Ô?g‚úrÂè?g·o ê_Žì?gè¼ç<:àÎ?ç©¨càâ?gD}ÜÈ†?é?gÞ5âüÅ?çâ¼ÍUÒ®è?g‹ºÞOð¡ã?gÓ©eJo¨Å?g.a#ÿ‚“Î?gbMá4º ?gýÎþYVï?gÍ±¼«ðæ?gå¹[åK Ó?gÆ=m¿B§æ?go·‡1§SÉ?gPŸ.œµ%l?gq¶–Ñ!î?g,œæ6 ã¿g£rÙ	«èç¿g¦;¦0çç¿gÛÓ@¹ŽmÐ¿gP,"P²î¿gÍº‘@¾¿g,œæ6 ã¿g#õžÊiïã¿g¦;¦0çç¿gÛÓ@¹ŽmÐ¿g·o ê_Žì¿gè¼ç<:àÎ¿r@   rA   g‹ºÞOð¡ã¿g.a#ÿ‚“Î¿gbMá4º ¿r@   rA   gÆ=m¿B§æ¿g.a#ÿ‚“Î¿gPŸ.œµ%l¿)r   r   r   r   r   r    r   r3   r   r4   Úx_rotations_r!   Zy_rotations_r"   r5   r   r#   r$   )r)   r*   r+   r,   r6   Zexpected_x_rotationsr8   Zexpected_y_rotationsZx_rotations_sign_flipr;   Zy_rotations_sign_flipr<   r   r   r   Útest_sanity_check_pls_canonicalœ   sN    




rC   c              C   sV  d} d}d}t dƒ}|j| d�}|j| d�}tj||||gƒj}||jd|  d�j| dfƒ }||jd|  d�j| dfƒ }tj||j||  d�j| |ƒfdd�}tj||j||  d�j| |ƒfdd�}td	d
�}	|	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d¢d£d(gd¤d¥d+gd¦d-d.gd/d§d¨gd2d©dªggƒ}
tjd5d6d7gd8d9d«gd;d¬d=gd>d­d®gd¯d°dCgdDd±dFgdGd²dIgd³dKd´gdMdµdOgd¶d·dRgdSd¸dUgd¹dWdXgdYdºd»gd\d¼d½ggƒ}tjd_d`dagdbdcd¾gded¿dggdhdÀdÁgdkdldmgdndÂdÃgdÄdrdsgdÅdudvgdwdxdygg	ƒ}tjdzd{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	ƒ}t	tj
|	jƒtj
|ƒƒ t	tj
|	jƒtj
|
ƒƒ t	tj
|	jƒtj
|ƒƒ t	tj
|	jƒtj
|ƒƒ tj|	j| ƒ}tj|	j|
 ƒ}tj|	j| ƒ}tj|	j| ƒ}t	||ƒ t	||ƒ t|	jƒ t|	jƒ t|	jƒ t|	jƒ d S )ÏNiô  é
   é   é   )Úsizeé   r   )Zaxisé   )r   gqAS¤å?g¸Ì§–Æ’È?g°š¾	KÝË?gô²ÜˆÝmæ?gr[ÏÎqÁ?gÖŽ  £®Ã?gÕ¸qjëPÁ?gÛø—Í±öå?g«‡Sƒ¼Á?g$—$è’Å?gŽ('¹G_å?gš.›k^ö¿?g²á~ú®Œ ?gƒèÿºs¥?g¶·¬
Ú?gæ‚éjáh½?gÃÏfr½¯¸?g>u¬Rz¦Ä?gþ$Â¯&‰¨?g	¦	l˜?gpO/üÅ?g•}Wÿ[±?g~¶�­‘?g®ülÃ¬ÀÇ?gWˆX>Þe?gj8ŸH@Z?gË”½Br¾?g´).ùe�?gw4Dº³?gˆoP^Ä?gvãzgöqƒ?g1õGZž?gë }r5.Ö?gÒzÏ³J¢?g¥¬•¿1¸?g®¹£ÿåÚÕ?gŸíMãI˜¬?g,)˜­ÌÆ”?gŠùâ [uâ?gÚùeÍi­?gòâŠ¬±[Ž?gQ¿É>áOÆ?gmÆ«¤üå?g¬Eú£^¦Ç?g0Öõç‹Ã?gB +ø
žå?g,¦©Ð�Ã?gé°i­�·?gÆiˆ*ü™È?gŒ_í(®å?gbå#k4¶?g¯*Vh{OË?g×�oÖ}så?gø+Klž¶?gˆ‰Ý©F ?gJ,c")±?g°#'váÅÛ?g,aŽš†Ä?g9�qb›Á?gÐSLRWÊ?g]î@[Ö¡?gÑçO~£?gõÄkE¹?gògpB¾¯?gã¡R™ ò�?g¹§«;È?g-ôûÝ¿¢p?g§;O<gx?g†¥GtKÅ?g$†U\¨n?gE	Œ³ñ­?g§²ÅÁçÈ?g@~_ñÏV?g¥,…8½(…?g.¡í^¢Ô?g)^D_j«?g2Ðéi¸?gs›6CmÔ?g³.f2¹¤¤?gð­£Ã”?gRÝu™Ûä?gð9Mòeš¯?g½ðX¦ã°?g <ïÛ¿?gÄONz 'å?gsÑVFŸæÇ?gul-a§7Í?gžÍú0æ?g]”4¢Ç?go¢Ð‘à¶Î?g:“ô8%ƒÂ?g!¨¿Hå?g—”Ôl’ÝÅ?g�¯£»5zÌ?g·yã¤0/æ?gof‘y&,¹?g˜ì
C²?gÍ¢ÔÌA}?g_ª%_³å?g±žÞµá³?gHÖ†/¸‹…?g»‚L¶ª:Ü?gc½IºÈ‚?g¢$Eà!¦?gâfD«‹Â¹?gº§Ï«�“?g35èÏ§¯?g`"Ä•sÒ?gþ¿$tý‘?g¶W“e�¨?gY)¶ÝŸÔ?gâ#bJ$ñå?gtd˜nÅ?gx/RƒÄÑ¸?g�
Jn æ?g�×·ÁÊ?gÿÊ�SÏ½?g½= �°û½?g–N¹üfÆå?g7ÇjN¹¾?g]wˆ¹ƒÜÆ?g¡á(Ô.Áå?g^i×Œ%ª?g}ç�P
°?g¹O3IÑoœ?gD”'÷Øéç?gh³E-(g·?g§0„Ö¢‰p?g†µçè§nà?g×Ðz¶–?gþIñT4Œ?g‡7Æ©1|¸?gOñ�)åÖ ?gkp2ÜF$·?gAÌ-ÆcÔ?gÿ &áßó¥?gÜèk¯hçª?g!L¼ÉÐÑ?gÖŽ  £®Ã¿gÛø—Í±öå¿gŽ('¹G_å¿gš.›k^ö¿¿g²á~ú®Œ ¿gƒèÿºs¥¿gÃÏfr½¯¸¿g	¦	l˜¿g•}Wÿ[±¿g~¶�­‘¿g®ülÃ¬ÀÇ¿gWˆX>Þe¿gj8ŸH@Z¿g´).ùe�¿gw4Dº³¿gvãzgöqƒ¿g1õGZž¿gÒzÏ³J¢¿g,)˜­ÌÆ”¿gŠùâ [uâ¿gòâŠ¬±[Ž¿gQ¿É>áOÆ¿gé°i­�·¿gŒ_í(®å¿g×�oÖ}så¿gø+Klž¶¿gˆ‰Ý©F ¿gJ,c")±¿g9�qb›Á¿gÑçO~£¿gògpB¾¯¿g¹§«;È¿g§;O<gx¿g$†U\¨n¿gE	Œ³ñ­¿g¥,…8½(…¿g)^D_j«¿gð­£Ã”¿gRÝu™Ûä¿g½ðX¦ã°¿g <ïÛ¿¿go¢Ð‘à¶Î¿g!¨¿Hå¿g·yã¤0/æ¿gof‘y&,¹¿gHÖ†/¸‹…¿g»‚L¶ª:Ü¿gc½IºÈ‚¿gº§Ï«�“¿gÿÊ�SÏ½¿g–N¹üfÆå¿g¡á(Ô.Áå¿g^i×Œ%ª¿g¹O3IÑoœ¿g†µçè§nà¿g×Ðz¶–¿gþIñT4Œ¿gOñ�)åÖ ¿)r   Znormalr   r3   r   ÚreshapeZconcatenater   r    r   r4   r%   r!   r&   r"   r5   r   r#   r$   )ÚnZp_noiseZq_noiseÚrngÚl1Úl2Zlatentsr*   r+   r,   r6   r7   r8   r9   r:   r;   r<   r=   r   r   r   Ú&test_sanity_check_pls_canonical_randomÒ   s¦    ""





rO   c           
   C   sJ   t ƒ } | j}| j}t|jd dd�}tjtƒ� |j||ƒ W d Q R X d S )Nr   é   )r   Úmax_iter)	r   r   r   r   r   ÚpytestÚwarnsr   r    )r)   r*   r+   Z
pls_nipalsr   r   r   Útest_convergence_fail4  s    rT   zignore:.*scores_ was deprecatedÚEstc                sZ   t ƒ }|j}|j}d‰ | ˆ d�}|j||ƒ t‡ fdd„|j|j|j|jfD ƒƒsVt	‚d S )NrP   )r   c             3   s   | ]}|j d  ˆ kV  qdS )r   N)r   )Ú.0Úattr)r   r   r   ú	<genexpr>H  s   z(test_attibutes_shapes.<locals>.<genexpr>)
r   r   r   r    ÚallÚ	x_scores_Ú	y_scores_r!   r"   ÚAssertionError)rU   r)   r*   r+   r,   r   )r   r   Útest_attibutes_shapes>  s    
r]   c             C   sr   t ƒ }|j}|j}| dd�}|j||d d …df ƒj}|j||d d …d d…f ƒj}|j|jksdt‚t||ƒ d S )Nr   )r   r   )r   r   r   r    Zcoef_r   r\   r   )rU   r)   r*   r+   ÚestZone_d_coeffZtwo_d_coeffr   r   r   Útest_univariate_equivalenceM  s    
r_   c             C   s6  t ƒ }|j}|j}|jƒ }| dd�j||ƒ}t||ƒ tjtƒ�" | dd�j||ƒ t	||ƒ W d Q R X | t
krtd S |jƒ }tjtƒ�" |j||dd�f t	||ƒ W d Q R X |jƒ }tjtƒ�  |j|dd�f t	||ƒ W d Q R X t	|j||dd�|j|jƒ |jƒ dd�ƒ t	|j|dd�|j|jƒ dd�ƒ d S )NT)r'   F)r   r   r   r'   r    r   rR   Zraisesr\   r   r   r(   Zpredict)rU   r)   r*   r+   ZX_origr,   r   r   r   Ú	test_copy\  s.    
r`   c        	      c   s(  t jjdƒ} d}d}d}| j||ƒ}| j||ƒ}t j||ƒd| j||ƒ  d }|d9 }||fV  tdd�\}}d	|d
d
…df< ||fV  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ƒ}||fV  ddg}x:|D ]2}t jj|ƒ} | jddƒ}| jddƒ}||fV  qîW d
S )z-Generate dataset for test_scale_and_stabilityr   iè  rE   rD   rP   r   T)Z
return_X_yg      ð?Ng        g       @g      @g      @g      @gš™™™™™¹?gš™™™™™É?gÍÌÌÌÌÌì?gš™™™™™ñ?gÍÌÌÌÌÌ@gš™™™™™@gÍÌÌÌÌÌ'@gš™™™™™(@i  iå  rH   rI   éÿÿÿÿgš™™™™™É¿)r   ÚrandomÚRandomStateÚrandnr   r   r3   )	rL   Ú	n_samplesÚ	n_targetsÚ
n_featuresr/   r+   r*   ZseedsÚseedr   r   r   Ú+_generate_test_scale_and_stability_datasets�  s6     




ri   zX, Yc       
      C   s\   t ||ƒ^}}}| dd�j||ƒ\}}| dd�j||ƒ\}}	t||dd� t|	|dd� dS )zƒscale=True is equivalent to scale=False on centered/scaled data
    This allows to check numerical stability over platforms as wellT)r   Fg-Cëâ6?)ZatolN)r   Zfit_transformr   )
rU   r*   r+   ZX_sZY_sÚ_ZX_scoreZY_scoreZ	X_s_scoreZ	Y_s_scorer   r   r   Útest_scale_and_stability§  s
    rk   r   rH   c          
   C   sp   t jjdƒ}|jddƒ}|jddƒ}| |d�}tjtdd��* |j||ƒ |j|ƒj	d dksbt
‚W d Q R X d S )	Nr   rD   rE   rI   )r   z#n_components=3 will be used instead)Úmatchr   )r   rb   rc   rd   rR   rS   ÚFutureWarningr    r(   r   r\   )rU   r   rL   r*   r+   r^   r   r   r   Útest_n_components_bounds¶  s    

rn   é   c          
   C   sp   t jjdƒ}|jddƒ}|jddƒ}t| d�}tjtdd��* |j||ƒ |j	|ƒj
d dksbt‚W d Q R X d S )	Nr   rD   rE   rI   )r   z#n_components=5 will be used instead)rl   r   )r   rb   rc   rd   r   rR   rS   rm   r    r(   r   r\   )r   rL   r*   r+   r^   r   r   r   Ú'test_n_components_bounds_pls_regressionÆ  s    

rp   c             C   s”   t jjdƒ}|jddƒ}|jddƒ}| ƒ j||ƒ}tjtdd�� t|j	|j
|ƒƒ W d Q R X tjtdd�� t|j|j
||ƒd ƒ W d Q R X d S )	Nr   rD   rE   rI   zx_scores_ was deprecated)rl   zy_scores_ was deprecatedr   )r   rb   rc   rd   r    rR   rS   rm   r   rZ   r(   r[   )rU   rL   r*   r+   r^   r   r   r   Útest_scores_deprecationsÕ  s    rq   c          	   C   sV   t jjdƒ}|jddƒ}|jddƒ}| ƒ j||ƒ}tjtdd�� |j W d Q R X d S )Nr   rD   rE   rI   znorm_y_weights was deprecated)rl   )	r   rb   rc   rd   r    rR   rS   rm   Únorm_y_weights)rU   rL   r*   r+   r^   r   r   r   Útest_norm_y_weights_deprecationå  s    rs   Ú	EstimatorÚ	attributeÚx_mean_Úy_mean_Úx_std_Úy_std_c          
   C   s`   t jjdƒ}|jddƒ}|jddƒ}| ƒ j||ƒ}tjt|› d�d�� t||ƒ W d Q R X d S )Nr   rD   rE   rI   z was deprecated)rl   )	r   rb   rc   rd   r    rR   rS   rm   Úgetattr)rt   ru   rL   r*   r+   Z	estimatorr   r   r   Útest_mean_and_std_deprecationð  s    r{   zn_samples, n_featureséd   rD   éÈ   rh   c             C   sn   t | |d|d�\}}t||dd�\}}}t||ƒ\}}	t||ƒ t||	ƒ d}
t|||
d� t||	|
d� d S )NrE   )rf   Úrandom_stateT)rr   gš™™™™™¹?)Úrtol)r   r   r   r	   r   )re   rg   rh   r*   r+   Úu1Zv1rj   Úu2Zv2r   r   r   r   Útest_singular_value_helpersý  s    

r‚   c              C   s|   t ddddd�\} }tdd�j| |ƒj| ƒ}tdd�j| |ƒj| ƒ}tdd�j| |ƒj| ƒ}t||dd	� t||dd	� d S )
Nr|   rD   rE   r   )rf   r~   r   )r   g{®Gáz„?)r   )r   r   r    r(   r   r   r   )r*   r+   ZsvdÚregÚ	canonicalr   r   r   Útest_one_component_equivalence  s    r…   c              C   sˆ   t jdddgƒ} t jdddgƒ}t| jddƒ|jddƒƒ\}}t| |ƒ t| |jƒ ƒ t| ddd	gƒ t||jƒ ƒ t|d
ddgƒ d S )Nr   rH   rP   rI   éüÿÿÿra   ra   ra   éþÿÿÿra   r‡   éýÿÿÿ)r   r3   r   rJ   r	   r   Zravel)ÚuÚvZ
u_expectedZ
v_expectedr   r   r   Útest_svd_flip_1d  s    
r‹   c           
   C   sj   t ddddd�\} }tddd�}tjdƒ�}|j| |ƒ W dQ R X | sLt‚tjtj|j	ƒdk ƒsft‚dS )	z8Test that CCA converges. Non-regression test for #19549.r}   é   )re   rg   rf   r~   rD   iô  )r   rQ   Nr   )
r   r
   rR   rS   r    r\   r   rY   r4   r%   )r*   ÚyZccaÚrecordr   r   r   Útest_loadings_converges*  s    
r�   c           
   C   sb   t jjdƒ} | jddƒ}t jdƒ}tƒ }d}tjt|d�� |j	||ƒ W dQ R X t
|jdƒ dS )zAChecks warning when y is constant. Non-regression test for #19831é*   r|   rI   z#Y residual is constant at iteration)rl   Nr   )r   rb   rc   ZrandÚzerosr   rR   rS   ÚUserWarningr    r   rB   )rL   Úxr�   r,   Úmsgr   r   r   Útest_pls_constant_y:  s    
r•   )r   rH   )r   ro   )rv   rw   rx   ry   )r|   rD   )r|   r}   )4rR   Znumpyr   Znumpy.testingr   r   r   Zsklearn.datasetsr   Z sklearn.cross_decomposition._plsr   r   r   r	   Zsklearn.cross_decompositionr
   r   r   r   r   Zsklearn.utilsr   Zsklearn.utils.extmathr   Zsklearn.exceptionsr   r   r0   r>   r?   rC   rO   rT   ÚmarkÚfilterwarningsZparametrizer]   r_   r`   ri   rk   rn   rp   rq   rs   r{   Úranger‚   r…   r‹   r�   r•   r   r   r   r   Ú<module>   sN   %2+6b

%&
