a
    h7                  
   @   s  d dl Z d dlZd dlZd dlmZ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 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 Z0d5d6 Z1G d7d8 d8eZ2d9d: Z3ej!"d;d<d=gd>d? Z4dS )@    N)config_contextdatasets)BaseEstimatorTransformerMixinclone)TransformedTargetRegressor)DummyRegressor)LinearRegressionOrthogonalMatchingPursuit)Pipeline)FunctionTransformerStandardScalerassert_allclose)Zrandom_statec                  C   sL  t \} }tt t tjtjd}tjt	dd |
| | W d    n1 sP0    Y  t|jd f}tt t d}tjtdd  |j
| ||d W d    n1 s0    Y  ttjd}tjt	d	d |
| | W d    n1 s0    Y  ttjd
}tjt	dd |
| | W d    n1 s>0    Y  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)r   z=When 'inverse_func' is provided, '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/assistant/venv/lib/python3.9/site-packages/sklearn/compose/tests/test_target.py%test_transform_target_regressor_error   sB    *.*r'   c                  C   s   t \} }tt tjtjdd}tjtdd |	| | W d    n1 sN0    Y  tt tjtjd}|j
dd t ( tdt |	| | W d    n1 s0    Y  d S )	NT)r   r   r   check_inversez?The provided functions.* are not strictly inverse of each otherr   r   r   r   F)r(   error)r   r   r	   r   sqrtr   r   ZwarnsUserWarningr   Z
set_paramswarningscatch_warningssimplefilterr"   r#   r$   r%   r%   r&   *test_transform_target_regressor_invertible;   s&    *
r1   c                 C   s2   t j| dd}t j| dd}t| | | | d S )Nr   )Zaxis)r   meanZstdr   )r#   y_predZy_meanZy_stdr%   r%   r&   _check_standard_scaledR   s    r4   c                 C   s   t | d | d S N   r   )r#   r3   r%   r%   r&   _check_shifted_by_oneX   s    r7   c                  C   s   t \} }tt tjtjd}|| || }|j	|
dd }tt|| t||j|
dd  |j|jksJ t|||j|  t | ||}t|jj |j  d S )Nr)   r6   )r   r   r	   r   r   r   r   predicttransformer_	transformreshapesqueezer   inverse_transformr    r   
regressor_r   coef_ravelr"   r#   r$   r3   y_tranlrr%   r%   r&   )test_transform_target_regressor_functions\   s    rE   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sJ t|||j	|  t | ||}t|jj |j  d S )Nr   r6      r)   )r   r   vstackTr   r	   r   r   r   r9   r:   r;   r   r>   r    r   r?   r   r@   rA   rB   r%   r%   r&   5test_transform_target_regressor_functions_multioutputo   s     rI   zX,yr6   rF   c           	      C   s   t dd dd d}tt |d}|| || }|j|jksDJ |j|}t|| |j|jksjJ t	||j
|  t }t|}|| || || }t	||
| t	|jj|j d S )Nc                 S   s   | d S r5   r%   xr%   r%   r&   <lambda>       z@test_transform_target_regressor_1d_transformer.<locals>.<lambda>c                 S   s   | d S r5   r%   rJ   r%   r%   r&   rL      rM   r   r   r   )r   r   r	   r   r9   r    r:   r;   r7   r   r>   r=   r   fit_transformr?   r@   	r"   r#   r   r$   r3   rC   rD   transformer2	y_lr_predr%   r%   r&   .test_transform_target_regressor_1d_transformer   s$    

rS   c           
   	   C   s2  t  }tt |d}|| || }|j|jks6J |jdkrV|j|	dd}n|j|}t
||  |j|jksJ t||j|  t }t|}|jdkr|| ||	dd  || 	dd}|| }	n&|| || || }||}	t||	 t|jj|j d S )Nr   r6   r8   )r   r   r	   r   r9   r    ndimr:   r;   r<   r4   r=   r   r>   r   rO   r?   r@   )
r"   r#   r   r$   r3   rC   rD   rQ   rR   Zy_pred2r%   r%   r&   .test_transform_target_regressor_2d_transformer   s.    




rU   c            	      C   s   t d } tt d t d d d fj}t }tt |d}|| || }|j	|j	ks^J |j
|}t|| |j	|j	ksJ t||j
|  t }t|}|| || || }t||| t|jj|j d S )Nr   r6   rF   r   )r   r   rG   rH   r   r   r	   r   r9   r    r:   r;   r4   r   r>   r=   r   rO   r?   r@   rP   r%   r%   r&   :test_transform_target_regressor_2d_transformer_multioutput   s$     

rV   c                  C   sv   t d } tt d dddg d}dd }dd }t||d	}tt |d
}|| || }|j	|j	ksrJ d S )Nr   r6   r8   )r6      rF   c                 S   s   |  | jd dS )Nr   r8   r<   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   r8   rF   rX   rY   r%   r%   r&   unflatten_data   s    zAtest_transform_target_regressor_3d_target.<locals>.unflatten_datarN   r   )
r   r   Ztiler<   r   r   r	   r   r9   r    )r"   r#   r[   r\   r   r$   r3   r%   r%   r&   )test_transform_target_regressor_3d_target   s    r]   c                  C   s   t d } tt d t d d d g}dd }dd }t||dd	}|| | || }|jd
kshJ dd }t||dd	}|| | || }|jd
ksJ t|| d S )Nr   r6   rF   c                 S   s@   t | d d df d | d d df d  }|d d t jf S Nr   rF   r6   )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   r6   c                 S   s.   t | d d df d | d d df d  S r^   )r   r+   ra   r%   r%   r&   r     s    )r   r   Z	transposer   r   r9   r    r   )r"   r#   r   r   ttZy_pred_2d_funcZy_pred_1d_funcr%   r%   r&   /test_transform_target_regressor_multi_to_single   s$    

rd   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J | S r`   
isinstancer   Zndarrayselfr"   r#   r%   r%   r&   r     s    z DummyCheckerArrayTransformer.fitc                 C   s   t |tjsJ |S r`   rf   ri   r"   r%   r%   r&   r;     s    z&DummyCheckerArrayTransformer.transformc                 C   s   t |tjsJ |S r`   rf   rj   r%   r%   r&   r>     s    z.DummyCheckerArrayTransformer.inverse_transform)N)__name__
__module____qualname__r   r;   r>   r%   r%   r%   r&   re     s   
re   c                       s*   e Zd Zd fdd	Z fddZ  ZS )DummyCheckerListRegressorNc                    s   t |tsJ t |||S r`   )rg   listsuperr   )ri   r"   r#   r   	__class__r%   r&   r   #  s    zDummyCheckerListRegressor.fitc                    s   t |tsJ t |S r`   )rg   ro   rp   r9   rj   rq   r%   r&   r9   '  s    z!DummyCheckerListRegressor.predict)N)rk   rl   rm   r   r9   __classcell__r%   r%   rq   r&   rn   "  s   rn   c                  C   s   t \} }tt t dd}||  |  ||   tt	  || |  W d    n1 sl0    Y  tt	 ||  W d    n1 s0    Y  d S )NF)r   r   r(   )
r   r   re   rn   r   tolistr9   r   r   AssertionError)r"   r#   rc   r%   r%   r&   .test_transform_target_regressor_ensure_y_array,  s    .rv   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)ri   ry   r%   r%   r&   __init__A  s    zDummyTransformer.__init__Nc                 C   s   |  j d7  _ | S r5   rx   rh   r%   r%   r&   r   D  s    zDummyTransformer.fitc                 C   s   |S r`   r%   rj   r%   r%   r&   r;   H  s    zDummyTransformer.transformc                 C   s   |S r`   r%   rj   r%   r%   r&   r>   K  s    z"DummyTransformer.inverse_transform)r   )N)rk   rl   rm   __doc__rz   r   r;   r>   r%   r%   r%   r&   rw   >  s
   

rw   r(   FTc                 C   s6   t \}}tt | d}||| |jjdks2J d S )N)r   r(   r6   )r   r   rw   r   r:   ry   )r(   r"   r#   Zttrr%   r%   r&   )test_transform_target_regressor_count_fitO  s    r|   c                       s   e Zd Zd fdd	Z  ZS ) DummyRegressorWithExtraFitParamsNTc                    s   |rJ t  |||S r`   )rp   r   )ri   r"   r#   r   check_inputrq   r%   r&   r   \  s    z$DummyRegressorWithExtraFitParams.fit)NT)rk   rl   rm   r   rs   r%   r%   rq   r&   r}   [  s   r}   c                  C   s<   t \} }tt t d}|j| |dd |jjdks8J d S )Nr   Fr~   r6   )r   r   r}   rw   r   r:   ry   r0   r%   r%   r&   3test_transform_target_regressor_pass_fit_parametersc  s    r   c                  C   s^   t \} }tt t d}dt fd|fg}t|}|j| |fi ddi |jjdksZJ d S )Nr   	normalizeZestZest__check_inputFr6   )	r   r   r}   rw   r   r   r   r:   ry   )r"   r#   r$   Z
estimatorspipr%   r%   r&   .test_transform_target_regressor_route_pipelinem  s    r   c                       s   e Zd Zd fdd	Z  ZS )$DummyRegressorWithExtraPredictParamsTc                    s   d| _ |rJ t |S )NT)predict_calledrp   r9   )ri   r"   r~   rq   r%   r&   r9   |  s    z,DummyRegressorWithExtraPredictParams.predict)T)rk   rl   rm   r9   rs   r%   r%   rq   r&   r   {  s   r   c                  C   sB   t \} }tt t d}|| | |j| dd |jjs>J d S )Nr   Fr   )r   r   r   rw   r   r9   r?   r   r0   r%   r%   r&   =test_transform_target_regressor_pass_extra_predict_parameters  s    r   output_formatZpandasZpolarsc              	   C   s   t  \}}t|d }t| d^ t 6 td tt	 tj
tjd|| W d   n1 sj0    Y  W d   n1 s0    Y  dS )zTest that TransformedTargetRegressor will not raise warnings if
    set_config(transform_output="pandas"/"polars") is set globally; regression test for
    issue #29361.r6   )Ztransform_outputr*   r)   N)r   Zmake_regressionr   absr   r-   r.   r/   r   r	   r   r   r   )r   r"   r#   r%   r%   r&   @test_transform_target_regressor_not_warns_with_global_output_set  s    

r   )5r-   numpyr   r   Zsklearnr   r   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   Zmake_friedman1r   r'   r1   r4   r7   rE   rI   markZparametrizerG   rH   rS   rU   rV   r]   rd   re   rn   rv   rw   r|   r}   r   r   r   r   r   r%   r%   r%   r&   <module>   sR   ),
,
" 


	