U
    -ea3                  
   @   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$   b/var/www/html/Darija-Ai-Train/env/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st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st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st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st
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st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   ! *
 *
" 


	