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 sŸw   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ÚfitÚonesÚshaper
   Ú	TypeError)ÚXÚyÚregrr   © r'   ú‚/var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/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   ÚwarnsÚUserWarningr    Ú
set_paramsÚwarningsÚcatch_warningsÚsimplefilter©r$   r%   r&   r'   r'   r(   Ú*test_transform_target_regressor_invertible;   s*   üþüÿ
"þr5   c                 C   s2   t j| dd}t j| dd}t| | | |ƒ d S )Nr   )Úaxis)r   ÚmeanÚstdr   )r%   Úy_predÚy_meanÚy_stdr'   r'   r(   Ú_check_standard_scaledR   s   r<   c                 C   s   t | d |ƒ d S ©Né   r   )r%   r9   r'   r'   r(   Ú_check_shifted_by_oneX   ó   r?   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+   éÿÿÿÿr>   )r   r   r	   r   r   r   r    ÚpredictÚtransformer_Ú	transformÚreshapeÚsqueezer   Úinverse_transformr"   r   Ú
regressor_r   Úcoef_Úravel©r$   r%   r&   r9   Úy_tranÚlrr'   r'   r(   Ú)test_transform_target_regressor_functions\   s   ÿÿrN   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   r>   é   r+   )r   r   ÚvstackÚTr   r	   r   r   r    rB   rC   rD   r   rG   r"   r   rH   r   rI   rJ   rK   r'   r'   r(   Ú5test_transform_target_regressor_functions_multioutputo   s    ÿrR   zX,yr>   rO   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 r=   r'   ©Úxr'   r'   r(   Ú<lambda>Š   ó    z@test_transform_target_regressor_1d_transformer.<locals>.<lambda>c                 S   s   | d S r=   r'   rS   r'   r'   r(   rU   Š   rV   ©r   r   r   )r   r   r	   r    rB   r"   rC   rD   r?   r   rG   rF   r   Úfit_transformrH   rI   ©	r$   r%   r   r&   r9   rL   rM   Útransformer2Ú	y_lr_predr'   r'   r(   Ú.test_transform_target_regressor_1d_transformer   s$   ÿÿ

r\   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   r>   rA   )r   r   r	   r    rB   r"   ÚndimrC   rD   rE   r<   rF   r   rG   r   rX   rH   rI   )
r$   r%   r   r&   r9   rL   rM   rZ   r[   Úy_pred2r'   r'   r(   Ú.test_transform_target_regressor_2d_transformer    s.   ÿ




r_   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   r>   rO   r   )r   r   rP   rQ   r   r   r	   r    rB   r"   rC   rD   r<   r   rG   rF   r   rX   rH   rI   rY   r'   r'   r(   Ú:test_transform_target_regressor_2d_transformer_multioutputÅ   s$    ÿ

r`   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   r>   rA   )r>   é   rO   c                 S   s   |   | jd d¡S )Nr   rA   ©rE   r"   ©Údatar'   r'   r(   Úflatten_dataæ   r@   z?test_transform_target_regressor_3d_target.<locals>.flatten_datac                 S   s   |   | jd dd¡S )Nr   rA   rO   rb   rc   r'   r'   r(   Úunflatten_dataé   ó   zAtest_transform_target_regressor_3d_target.<locals>.unflatten_datarW   r   )
r   r   ÚtilerE   r   r   r	   r    rB   r"   )r$   r%   re   rf   r   r&   r9   r'   r'   r(   Ú)test_transform_target_regressor_3d_targetß   s   ÿri   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   r>   rO   c                 S   s@   t  | d d …df d | d d …df d  ¡}|d d …t jf S ©Nr   rO   r>   )r   r-   Ú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   r>   c                 S   s.   t  | d d …df d | d d …df d  ¡S rj   )r   r-   rn   r'   r'   r(   r     s   .)r   r   Ú	transposer   r    rB   r"   r   )r$   r%   r   r   ÚttÚy_pred_2d_funcÚy_pred_1d_funcr'   r'   r(   Ú/test_transform_target_regressor_multi_to_singleô   s$   ÿ
ÿ
ru   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 rm   ©Ú
isinstancer   Úndarray©Úselfr$   r%   r'   r'   r(   r      ó   z DummyCheckerArrayTransformer.fitc                 C   ó   t |tjƒsJ ‚|S rm   rw   ©r{   r$   r'   r'   r(   rD     r|   z&DummyCheckerArrayTransformer.transformc                 C   r}   rm   rw   r~   r'   r'   r(   rG     r|   z.DummyCheckerArrayTransformer.inverse_transformrm   )Ú__name__Ú
__module__Ú__qualname__r    rD   rG   r'   r'   r'   r(   rv     s    
rv   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 rm   )rx   ÚlistÚsuperr    )r{   r$   r%   r   ©Ú	__class__r'   r(   r    #  s   zDummyCheckerListRegressor.fitc                    s   t |tƒsJ ‚tƒ  |¡S rm   )rx   rƒ   r„   rB   r~   r…   r'   r(   rB   '  s   z!DummyCheckerListRegressor.predictrm   )r   r€   r   r    rB   Ú__classcell__r'   r'   r…   r(   r‚   "  s    r‚   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   rv   r‚   r    ÚtolistrB   r   r   ÚAssertionError)r$   r%   rr   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 rm   ©Úfit_counter)r{   rŽ   r'   r'   r(   Ú__init__A  ó   
zDummyTransformer.__init__Nc                 C   s   |  j d7  _ | S r=   r   rz   r'   r'   r(   r    D  s   zDummyTransformer.fitc                 C   ó   |S rm   r'   r~   r'   r'   r(   rD   H  ro   zDummyTransformer.transformc                 C   r‘   rm   r'   r~   r'   r'   r(   rG   K  ro   z"DummyTransformer.inverse_transform)r   rm   )r   r€   r   Ú__doc__r   r    rD   rG   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*   r>   )r   r   r‹   r    rC   rŽ   )r*   r$   r%   Ú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 rm   )r„   r    )r{   r$   r%   r   Úcheck_inputr…   r'   r(   r    \  s   z$DummyRegressorWithExtraFitParams.fit©NT)r   r€   r   r    r‡   r'   r'   r…   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–   r>   )r   r   r•   r‹   r    rC   rŽ   r4   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   Ú	normalizeÚestÚest__check_inputFr>   )	r   r   r•   r‹   r   r   r    rC   rŽ   )r$   r%   r&   Ú
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_calledr„   rB   )r{   r$   r–   r…   r'   r(   rB   |  s   z,DummyRegressorWithExtraPredictParams.predict)T)r   r€   r   rB   r‡   r'   r'   r…   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    rB   rH   r¢   r4   r'   r'   r(   Ú=test_transform_target_regressor_pass_extra_predict_parameters„  s   ÿr£   Úoutput_formatÚpandasÚ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 )z©Test that TransformedTargetRegressor will not raise warnings if
    set_config(transform_output="pandas"/"polars") is set globally; regression test for
    issue #29361.r>   )Útransform_outputr,   r+   N)r   Úmake_regressionr   Úabsr   r1   r2   r3   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Œ   rm   ©r]   )r{   r]   r'   r'   r(   r   ¢  r   z#ValidateDimensionRegressor.__init__c                 C   s   |j | j ksJ ‚d S rm   r¬   rz   r'   r'   r(   r    ¥  rg   zValidateDimensionRegressor.fitc                 C   s   d S rm   r'   r~   r'   r'   r(   rB   ¨  ro   z"ValidateDimensionRegressor.predictN)r   r€   r   r’   r   r    rB   r'   r'   r'   r(   r«   Ÿ  s
    r«   r]   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.
    é
   é   é*   )Ú	n_samplesÚ
n_featuresr   rO   rA   r>   )r   N)r   r¨   rE   r   r«   r    )r]   r$   r%   r&   r'   r'   r(   Ú5test_transform_target_regressor_preserves_input_shape¬  s
   r²   )7r1   Únumpyr   r   Úsklearnr   r   Úsklearn.baser   r   r   Úsklearn.composer   Úsklearn.dummyr   Úsklearn.linear_modelr	   r
   Úsklearn.pipeliner   Úsklearn.preprocessingr   r   Úsklearn.utils._testingr   Úmake_friedman1r   r)   r5   r<   r?   rN   rR   ÚmarkÚparametrizerP   rQ   r\   r_   r`   ri   ru   rv   r‚   rŠ   r‹   r”   r•   rš   r    r¡   r£   rª   r«   r²   r'   r'   r'   r(   Ú<module>   sZ    ),ÿ
,ÿ
" 


	
