U
    _»{ja3  ã                
   @   sæ  d dl Zd dl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mZ d dlmZ d dlmZmZ d d	lmZmZ ejd d
�Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej  !deed  e "ed ed d d f¡j#fg¡dd„ ƒZ$ej  !deed  e "ed ed d d f¡j#fg¡dd„ ƒZ%dd„ Z&d d!„ Z'd"d#„ Z(G d$d%„ d%eeƒZ)G d&d'„ d'eƒZ*d(d)„ Z+G d*d+„ d+eeƒZ,ej  !d,d-d.g¡d/d0„ ƒZ-G d1d2„ d2eƒZ.d3d4„ Z/d5d6„ Z0G d7d8„ d8eƒZ1d9d:„ Z2dS );é    N)Údatasets)ÚBaseEstimatorÚTransformerMixinÚclone)ÚTransformedTargetRegressor)ÚDummyRegressor)ÚLinearRegressionÚOrthogonalMatchingPursuit)ÚPipeline)ÚFunctionTransformerÚStandardScaler)Úassert_allcloseÚassert_no_warnings)Zrandom_statec               	   C   sÈ   t \} }ttƒ tƒ tjtjd�}tjt	dd�� | 
| |¡ W 5 Q R X t |jd f¡}ttƒ tƒ d�}tjtdd�� |j
| ||d� W 5 Q R X ttjd�}tjt	d	d�� | 
| |¡ W 5 Q R X d S )
N)Ú	regressorÚtransformerÚfuncÚinverse_funczE'transformer' and functions 'func'/'inverse_func' cannot both be set.©Úmatchr   ©r   r   z:fit\(\) got an unexpected keyword argument 'sample_weight')Úsample_weight)r   z=When 'func' is provided, 'inverse_func' must also be provided)Úfriedmanr   r   r   ÚnpÚexpÚlogÚpytestÚraisesÚ
ValueErrorÚfitZonesÚshaper	   Ú	TypeError)ÚXÚyÚregrr   © r$   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/compose/tests/test_target.pyÚ%test_transform_target_regressor_error   s8    üþ ÿþþr&   c               	   C   sv   t \} }ttƒ tjtjdd�}tjtdd�� | 	| |¡ W 5 Q R X ttƒ tjtjd�}|j
dd� t|j	| |ƒ d S )NT)r   r   r   Úcheck_inversezMThe provided functions or transformer are not strictly inverse of each other.r   ©r   r   r   F)r'   )r   r   r   r   Úsqrtr   r   ZwarnsÚUserWarningr   Z
set_paramsr   ©r!   r"   r#   r$   r$   r%   Ú*test_transform_target_regressor_invertible1   s&    üý  ÿr,   c                 C   s2   t j| dd�}t j| dd�}t| | | |ƒ d S )Nr   )Zaxis)r   ZmeanZstdr   )r"   Úy_predZy_meanZy_stdr$   r$   r%   Ú_check_standard_scaledH   s    r.   c                 C   s   t | d |ƒ d S ©Né   )r   )r"   r-   r$   r$   r%   Ú_check_shifted_by_oneN   s    r1   c                  C   sÌ   t \} }ttƒ tjtjd�}| | |¡ | ¡}|j 	| 
dd¡¡ ¡ }tt |¡|ƒ t||j | 
dd¡¡ ¡ ƒ |j|jks„t‚t|| |j | ¡¡ƒ tƒ  | | |¡¡}t|jj ¡ |j ¡ ƒ d S )Nr(   éÿÿÿÿr0   )r   r   r   r   r   r   r   ÚpredictÚtransformer_Ú	transformÚreshapeÚsqueezer   Úinverse_transformr   ÚAssertionErrorr   Ú
regressor_r   Úcoef_Úravel©r!   r"   r#   r-   Úy_tranÚlrr$   r$   r%   Ú)test_transform_target_regressor_functionsR   s"      ÿ ÿr@   c                  C   sÔ   t d } t t d t d d d f¡j}ttƒ tjtjd�}| | |¡ 	| ¡}|j
 |¡}tt |¡|ƒ t||j
 |¡ƒ |j|jksŒt‚t|| |j 	| ¡¡ƒ tƒ  | | |¡¡}t|jj ¡ |j ¡ ƒ d S )Nr   r0   é   r(   )r   r   ÚvstackÚTr   r   r   r   r   r3   r4   r5   r   r8   r   r9   r   r:   r   r;   r<   r=   r$   r$   r%   Ú5test_transform_target_regressor_functions_multioutpute   s       ÿrD   zX,yr0   rA   c           	      C   sÎ   t dd„ dd„ d�}ttƒ |d�}| | |¡ | ¡}|j|jksDt‚|j |¡}t	||ƒ |j|jksjt‚t
||j |¡ ¡ ƒ tƒ }t|ƒ}| | | |¡¡ | | ¡}t
|| |¡ƒ t
|jj|jƒ d S )Nc                 S   s   | d S r/   r$   ©Úxr$   r$   r%   Ú<lambda>€   ó    z@test_transform_target_regressor_1d_transformer.<locals>.<lambda>c                 S   s   | d S r/   r$   rE   r$   r$   r%   rG   €   rH   ©r   r   r   )r   r   r   r   r3   r   r9   r4   r5   r1   r   r8   r7   r   Úfit_transformr:   r;   ©	r!   r"   r   r#   r-   r>   r?   Útransformer2Ú	y_lr_predr$   r$   r%   Ú.test_transform_target_regressor_1d_transformerw   s(     ÿ ÿ

rN   c           
   	   C   s2  t ƒ }ttƒ |d�}| | |¡ | ¡}|j|jks6t‚|jdkrV|j 	| 
dd¡¡}n|j 	|¡}t|| ¡ ƒ |j|jks€t‚t||j |¡ ¡ ƒ tƒ }t|ƒ}|jdkrî| | | | 
dd¡¡ ¡ ¡ | | ¡ 
dd¡}| |¡ ¡ }	n&| | | |¡¡ | | ¡}| |¡}	t||	ƒ t|jj|jƒ d S )Nr   r0   r2   )r   r   r   r   r3   r   r9   Úndimr4   r5   r6   r.   r7   r   r8   r   rJ   r:   r;   )
r!   r"   r   r#   r-   r>   r?   rL   rM   Zy_pred2r$   r$   r%   Ú.test_transform_target_regressor_2d_transformer–   s0     ÿ




rP   c            	      C   sè   t d } t t d t d d d f¡j}tƒ }ttƒ |d�}| | |¡ | ¡}|j	|j	ks^t
‚|j |¡}t||ƒ |j	|j	ks„t
‚t||j |¡ ¡ ƒ tƒ }t|ƒ}| | | |¡¡ | | ¡}t|| |¡ƒ t|jj|jƒ d S )Nr   r0   rA   r   )r   r   rB   rC   r   r   r   r   r3   r   r9   r4   r5   r.   r   r8   r7   r   rJ   r:   r;   rK   r$   r$   r%   Ú:test_transform_target_regressor_2d_transformer_multioutput»   s&      ÿ

rQ   c                  C   sx   t d } t t d  ddd¡dddg¡}dd„ }dd	„ }t||d
�}ttƒ |d�}| | |¡ | ¡}|j	|j	kstt
‚d S )Nr   r0   r2   é   rA   c                 S   s   |   | jd d¡S )Nr   r2   ©r6   r   ©Údatar$   r$   r%   Úflatten_dataÜ   s    z?test_transform_target_regressor_3d_target.<locals>.flatten_datac                 S   s   |   | jd dd¡S )Nr   r2   rA   rS   rT   r$   r$   r%   Úunflatten_dataß   s    zAtest_transform_target_regressor_3d_target.<locals>.unflatten_datarI   r   )r   r   Ztiler6   r   r   r   r   r3   r   r9   )r!   r"   rV   rW   r   r#   r-   r$   r$   r%   Ú)test_transform_target_regressor_3d_targetÕ   s      ÿrX   c                  C   s°   t d } t t d t d d d g¡}dd„ }dd„ }t||dd	�}| | |¡ | | ¡}|jd
ksht‚dd„ }t||dd	�}| | |¡ | | ¡}|jd
ks¢t‚t||ƒ d S )Nr   r0   rA   c                 S   s@   t  | d d …df d | d d …df d  ¡}|d d …t jf S ©Nr   rA   r0   )r   r)   Znewaxis)r"   Úoutr$   r$   r%   r   î   s    .z=test_transform_target_regressor_multi_to_single.<locals>.funcc                 S   s   | S ©Nr$   ©r"   r$   r$   r%   r   ò   s    zEtest_transform_target_regressor_multi_to_single.<locals>.inverse_funcF)r   r   r'   )éd   r0   c                 S   s.   t  | d d …df d | d d …df d  ¡S rY   )r   r)   r\   r$   r$   r%   r   ý   s    )	r   r   Z	transposer   r   r3   r   r9   r   )r!   r"   r   r   ÚttZy_pred_2d_funcZy_pred_1d_funcr$   r$   r%   Ú/test_transform_target_regressor_multi_to_singleê   s,      ÿ
  ÿ
r_   c                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	ÚDummyCheckerArrayTransformerNc                 C   s   t |tjƒst‚| S r[   ©Ú
isinstancer   Zndarrayr9   ©Úselfr!   r"   r$   r$   r%   r     s    z DummyCheckerArrayTransformer.fitc                 C   s   t |tjƒst‚|S r[   ra   ©rd   r!   r$   r$   r%   r5     s    z&DummyCheckerArrayTransformer.transformc                 C   s   t |tjƒst‚|S r[   ra   re   r$   r$   r%   r8     s    z.DummyCheckerArrayTransformer.inverse_transform)N)Ú__name__Ú
__module__Ú__qualname__r   r5   r8   r$   r$   r$   r%   r`   
  s   
r`   c                       s*   e Zd Zd‡ fdd„	Z‡ fdd„Z‡  ZS )ÚDummyCheckerListRegressorNc                    s   t |tƒst‚tƒ  |||¡S r[   )rb   Úlistr9   Úsuperr   )rd   r!   r"   r   ©Ú	__class__r$   r%   r     s    zDummyCheckerListRegressor.fitc                    s   t |tƒst‚tƒ  |¡S r[   )rb   rj   r9   rk   r3   re   rl   r$   r%   r3     s    z!DummyCheckerListRegressor.predict)N)rf   rg   rh   r   r3   Ú__classcell__r$   r$   rl   r%   ri     s   ri   c               	   C   s†   t \} }ttƒ tƒ dd�}| |  ¡ | ¡ ¡ | |  ¡ ¡ t t	¡� | | | ¡ ¡ W 5 Q R X t t	¡� | | ¡ W 5 Q R X d S )NF)r   r   r'   )
r   r   r`   ri   r   Útolistr3   r   r   r9   )r!   r"   r^   r$   r$   r%   Ú.test_transform_target_regressor_ensure_y_array"  s    ýrp   c                   @   s4   e Zd ZdZddd„Zddd„Zdd	„ Zd
d„ ZdS )ÚDummyTransformerz;Dummy transformer which count how many time fit was called.r   c                 C   s
   || _ d S r[   ©Úfit_counter)rd   rs   r$   r$   r%   Ú__init__7  s    zDummyTransformer.__init__Nc                 C   s   |  j d7  _ | S r/   rr   rc   r$   r$   r%   r   :  s    zDummyTransformer.fitc                 C   s   |S r[   r$   re   r$   r$   r%   r5   >  s    zDummyTransformer.transformc                 C   s   |S r[   r$   re   r$   r$   r%   r8   A  s    z"DummyTransformer.inverse_transform)r   )N)rf   rg   rh   Ú__doc__rt   r   r5   r8   r$   r$   r$   r%   rq   4  s
   

rq   r'   FTc                 C   s6   t \}}ttƒ | d�}| ||¡ |jjdks2t‚d S )N)r   r'   r0   )r   r   rq   r   r4   rs   r9   )r'   r!   r"   Zttrr$   r$   r%   Ú)test_transform_target_regressor_count_fitE  s     ÿrv   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )Ú DummyRegressorWithExtraFitParamsNTc                    s   |rt ‚tƒ  |||¡S r[   )r9   rk   r   )rd   r!   r"   r   Úcheck_inputrl   r$   r%   r   R  s    z$DummyRegressorWithExtraFitParams.fit)NT)rf   rg   rh   r   rn   r$   r$   rl   r%   rw   Q  s   rw   c                  C   s<   t \} }ttƒ tƒ d�}|j| |dd� |jjdks8t‚d S )Nr   F©rx   r0   )r   r   rw   rq   r   r4   rs   r9   r+   r$   r$   r%   Ú3test_transform_target_regressor_pass_fit_parametersY  s     ÿrz   c                  C   sZ   t \} }ttƒ tƒ d�}dtƒ fd|fg}t|ƒ}|j| |fddiŽ |jjdksVt	‚d S )Nr   Ú	normalizeZestZest__check_inputFr0   )
r   r   rw   rq   r   r
   r   r4   rs   r9   )r!   r"   r#   Z
estimatorsÚpipr$   r$   r%   Ú.test_transform_target_regressor_route_pipelinec  s     ÿr}   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )Ú$DummyRegressorWithExtraPredictParamsTc                    s   d| _ |rt‚tƒ  |¡S )NT)Úpredict_calledr9   rk   r3   )rd   r!   rx   rl   r$   r%   r3   r  s    z,DummyRegressorWithExtraPredictParams.predict)T)rf   rg   rh   r3   rn   r$   r$   rl   r%   r~   q  s   r~   c                  C   sB   t \} }ttƒ tƒ d�}| | |¡ |j| dd� |jjs>t‚d S )Nr   Fry   )	r   r   r~   rq   r   r3   r:   r   r9   r+   r$   r$   r%   Ú=test_transform_target_regressor_pass_extra_predict_parametersz  s     ÿr€   )3Únumpyr   r   Zsklearnr   Zsklearn.baser   r   r   Zsklearn.composer   Zsklearn.dummyr   Zsklearn.linear_modelr   r	   Zsklearn.pipeliner
   Zsklearn.preprocessingr   r   Zsklearn.utils._testingr   r   Zmake_friedman1r   r&   r,   r.   r1   r@   rD   ÚmarkZparametrizerB   rC   rN   rP   rQ   rX   r_   r`   ri   rp   rq   rv   rw   rz   r}   r~   r€   r$   r$   r$   r%   Ú<module>   sP   ! *ÿ
 *ÿ
" 


	