o
    i+:                  
   @   s2  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? Z4G d@dA dAeZ5ej!"dBddgdCdD Z6dS )E    N)config_contextdatasets)BaseEstimatorTransformerMixinclone)TransformedTargetRegressor)DummyRegressor)LinearRegressionOrthogonalMatchingPursuit)Pipeline)FunctionTransformerStandardScalerassert_allclose)random_statec                  C   sL  t \} }tt t tjtjd}tjt	dd |
| | W d    n1 s(w   Y  t|jd f}tt t d}tjtdd |j
| ||d W d    n1 sXw   Y  ttjd}tjt	d	d |
| | W d    n1 s{w   Y  ttjd
}tjt	dd |
| | W d    d S 1 sw   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&   p/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/compose/tests/test_target.py%test_transform_target_regressor_error   sJ   "r(   c                  C   s   t \} }tt tjtjdd}tjtdd |	| | W d    n1 s'w   Y  tt tjtjd}|j
dd t  tdt |	| | W d    d S 1 sXw   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*   
"r2   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   r5   c                 C   s   t | d | d S N   r   )r$   r4   r&   r&   r'   _check_shifted_by_oneX      r8   c                  C   s   t \} }tt tjtjd}|| || }|j	|
dd }tt|| t||j|
dd  |j|jksBJ t|||j|  t | ||}t|jj |j  d S )Nr*   r7   )r   r   r	   r   r   r   r    predicttransformer_	transformreshapesqueezer   inverse_transformr!   r   
regressor_r   coef_ravelr#   r$   r%   r4   y_tranlrr&   r&   r'   )test_transform_target_regressor_functions\   s   rG   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sFJ t|||j	|  t | ||}t|jj |j  d S )Nr   r7      r*   )r   r   vstackTr   r	   r   r   r    r;   r<   r=   r   r@   r!   r   rA   r   rB   rC   rD   r&   r&   r'   5test_transform_target_regressor_functions_multioutputo   s    rK   zX,yr7   rH   c           	      C   s   t dd dd d}tt |d}|| || }|j|jks"J |j|}t|| |j|jks5J t	||j
|  t }t|}|| || || }t	||
| t	|jj|j d S )Nc                 S   s   | d S r6   r&   xr&   r&   r'   <lambda>       z@test_transform_target_regressor_1d_transformer.<locals>.<lambda>c                 S   s   | d S r6   r&   rL   r&   r&   r'   rN      rO   r   r   r   )r   r   r	   r    r;   r!   r<   r=   r8   r   r@   r?   r   fit_transformrA   rB   	r#   r$   r   r%   r4   rE   rF   transformer2	y_lr_predr&   r&   r'   .test_transform_target_regressor_1d_transformer   s$   

rU   c           
   	   C   s2  t  }tt |d}|| || }|j|jksJ |jdkr+|j|	dd}n|j|}t
||  |j|jks@J t||j|  t }t|}|jdkrw|| ||	dd  || 	dd}|| }	n|| || || }||}	t||	 t|jj|j d S )Nr   r7   r:   )r   r   r	   r    r;   r!   ndimr<   r=   r>   r5   r?   r   r@   r   rQ   rA   rB   )
r#   r$   r   r%   r4   rE   rF   rS   rT   Zy_pred2r&   r&   r'   .test_transform_target_regressor_2d_transformer   s.   




rW   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sBJ t||j
|  t }t|}|| || || }t||| t|jj|j d S )Nr   r7   rH   r   )r   r   rI   rJ   r   r   r	   r    r;   r!   r<   r=   r5   r   r@   r?   r   rQ   rA   rB   rR   r&   r&   r'   :test_transform_target_regressor_2d_transformer_multioutput   s$    

rX   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s9J d S )Nr   r7   r:   )r7      rH   c                 S   s   |  | jd dS )Nr   r:   r>   r!   datar&   r&   r'   flatten_data   r9   z?test_transform_target_regressor_3d_target.<locals>.flatten_datac                 S   s   |  | jd ddS )Nr   r:   rH   rZ   r[   r&   r&   r'   unflatten_data      zAtest_transform_target_regressor_3d_target.<locals>.unflatten_datarP   r   )
r   r   Ztiler>   r   r   r	   r    r;   r!   )r#   r$   r]   r^   r   r%   r4   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s4J dd }t||dd	}|| | || }|jd
ksQJ t|| d S )Nr   r7   rH   c                 S   s@   t | d d df d | d d df d  }|d d t jf S Nr   rH   r7   )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         zEtest_transform_target_regressor_multi_to_single.<locals>.inverse_funcF)r   r   r)   )d   r7   c                 S   s.   t | d d df d | d d df d  S ra   )r   r,   rd   r&   r&   r'   r     s   .)r   r   Z	transposer   r    r;   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$   

rh   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 rc   
isinstancer   Zndarrayselfr#   r$   r&   r&   r'   r         z DummyCheckerArrayTransformer.fitc                 C      t |tjsJ |S rc   rj   rm   r#   r&   r&   r'   r=     rn   z&DummyCheckerArrayTransformer.transformc                 C   ro   rc   rj   rp   r&   r&   r'   r@     rn   z.DummyCheckerArrayTransformer.inverse_transformrc   )__name__
__module____qualname__r    r=   r@   r&   r&   r&   r'   ri     s    
ri   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 rc   )rk   listsuperr    )rm   r#   r$   r   	__class__r&   r'   r    #  s   zDummyCheckerListRegressor.fitc                    s   t |tsJ t |S rc   )rk   ru   rv   r;   rp   rw   r&   r'   r;   '  s   z!DummyCheckerListRegressor.predictrc   )rq   rr   rs   r    r;   __classcell__r&   r&   rw   r'   rt   "  s    rt   c                  C   s   t \} }tt t dd}||  |  ||   tt	 || |  W d    n1 s6w   Y  tt	 ||  W d    d S 1 sQw   Y  d S )NF)r   r   r)   )
r   r   ri   rt   r    tolistr;   r   r   AssertionError)r#   r$   rg   r&   r&   r'   .test_transform_target_regressor_ensure_y_array,  s   "r|   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   
   || _ d S rc   fit_counter)rm   r   r&   r&   r'   __init__A     
zDummyTransformer.__init__Nc                 C   s   |  j d7  _ | S r6   r   rl   r&   r&   r'   r    D  s   zDummyTransformer.fitc                 C      |S rc   r&   rp   r&   r&   r'   r=   H  re   zDummyTransformer.transformc                 C   r   rc   r&   rp   r&   r&   r'   r@   K  re   z"DummyTransformer.inverse_transform)r   rc   )rq   rr   rs   __doc__r   r    r=   r@   r&   r&   r&   r'   r}   >  s    

r}   r)   FTc                 C   s6   t \}}tt | d}||| |jjdksJ d S )N)r   r)   r7   )r   r   r}   r    r<   r   )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 rc   )rv   r    )rm   r#   r$   r   check_inputrw   r&   r'   r    \  s   z$DummyRegressorWithExtraFitParams.fitNT)rq   rr   rs   r    ry   r&   r&   rw   r'   r   [      r   c                  C   s<   t \} }tt t d}|j| |dd |jjdksJ d S )Nr   Fr   r7   )r   r   r   r}   r    r<   r   r1   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s-J d S )Nr   	normalizeZestZest__check_inputFr7   )	r   r   r   r}   r   r   r    r<   r   )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 r   )predict_calledrv   r;   )rm   r#   r   rw   r&   r'   r;   |  s   z,DummyRegressorWithExtraPredictParams.predict)T)rq   rr   rs   r;   ry   r&   r&   rw   r'   r   {  r   r   c                  C   sB   t \} }tt t d}|| | |j| dd |jjsJ d S )Nr   Fr   )r   r   r   r}   r    r;   rA   r   r1   r&   r&   r'   =test_transform_target_regressor_pass_extra_predict_parameters  s   r   output_formatZpandasZpolarsc              	   C   s   t  \}}t|d }t| d8 t  td tt	 tj
tjd|| W d   n1 s5w   Y  W d   dS W d   dS 1 sMw   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.r7   )Ztransform_outputr+   r*   N)r   make_regressionr   absr   r.   r/   r0   r   r	   r   r   r    )r   r#   r$   r&   r&   r'   @test_transform_target_regressor_not_warns_with_global_output_set  s   

"r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ValidateDimensionRegressorzLA regressor that expects the target to have a specific number of dimensions.c                 C   r~   rc   rV   )rm   rV   r&   r&   r'   r     r   z#ValidateDimensionRegressor.__init__c                 C   s   |j | j ksJ d S rc   r   rl   r&   r&   r'   r      r_   zValidateDimensionRegressor.fitc                 C   s   d S rc   r&   rp   r&   r&   r'   r;     re   z"ValidateDimensionRegressor.predictN)rq   rr   rs   r   r   r    r;   r&   r&   r&   r'   r     s
    r   rV   c                 C   sF   t jdddd\}}| dkr|dd}tt| d}||| d	S )
zCheck that TransformedTargetRegressor internally preserves the shape of the input

    non-regression test for issue #26530.
    
      *   )Z	n_samplesZ
n_featuresr   rH   r:   r7   )r   N)r   r   r>   r   r   r    )rV   r#   r$   r%   r&   r&   r'   5test_transform_target_regressor_preserves_input_shape  s
   r   )7r.   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(   r2   r5   r8   rG   rK   markZparametrizerI   rJ   rU   rW   rX   r`   rh   ri   rt   r|   r}   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   <module>   sZ    ),
,
" 


	
