
    h$,fa3              
          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j0                  d 
      Zd Zd Zd Zd Zd Zd Zej@                  jC                  deed     ejD                  ed   ed   dz  dz   f      jF                  fg      d        Z$ej@                  jC                  deed     ejD                  ed   ed   dz  dz   f      jF                  fg      d        Z%d Z&d Z'd Z( G d dee      Z) G d de      Z*d Z+ G d dee      Z,ej@                  jC                  d d!d"g      d#        Z- G d$ d%e      Z.d& Z/d' Z0 G d( d)e      Z1d* Z2y)+    N)datasets)BaseEstimatorTransformerMixinclone)TransformedTargetRegressor)DummyRegressor)LinearRegressionOrthogonalMatchingPursuit)Pipeline)FunctionTransformerStandardScaler)assert_allcloseassert_no_warnings)random_statec                     t         \  } }t        t               t               t        j
                  t        j                        }t        j                  t        d      5  |j                  | |       d d d        t	        j                  |j                  d   f      }t        t               t                     }t        j                  t        d      5  |j                  | ||       d d d        t        t        j
                        }t        j                  t        d	      5  |j                  | |       d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)
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fitonesshaper
   	TypeError)Xyregrr   s       Alib/python3.12/site-packages/sklearn/compose/tests/test_target.py%test_transform_target_regressor_errorr)      s   DAq%"$"$VVVV	D 
U
  	A	 GGQWWQZM*M%+->;KD 
N
 4 	A]3	4 &2662D	M
  	A	 # 4 4 s$    EE(EEEE%c                     t         \  } }t        t               t        j                  t        j
                  d      }t        j                  t        d      5  |j                  | |       d d d        t        t               t        j                  t        j
                        }|j                  d       t        |j                  | |       y # 1 sw Y   exY w)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   warnsUserWarningr!   
set_paramsr   r%   r&   r'   s      r(   *test_transform_target_regressor_invertibler2   1   s    DAq%"$WWVV	D 
C
  	A &"$277D 	OO%O(txxA& s   CCc                     t        j                  | d      }t        j                  | d      }t        | |z
  |z  |       y )Nr   )axis)r   meanstdr   )r&   y_predy_meany_stds       r(   _check_standard_scaledr:   H   s5    WWQQFFF11EQZ5(&1    c                 "    t        | dz   |       y N   )r   )r&   r7   s     r(   _check_shifted_by_oner?   N   s    AE6"r;   c            	      n   t         \  } }t        t               t        j                  t        j
                        }|j                  | |      j                  |       }|j                  j                  |j                  dd            j                         }t        t        j                  |      |       t        ||j                  j                  |j                  dd            j                                |j                  |j                  k(  sJ t        ||j                  |j                   j                  |                    t               j                  | |j#                  |            }t        |j                   j$                  j'                         |j$                  j'                                y )Nr,   r>   )r   r   r	   r   r   r   r!   predicttransformer_	transformreshapesqueezer   inverse_transformr#   r   
regressor_r   coef_ravelr%   r&   r'   r7   y_tranlrs         r(   )test_transform_target_regressor_functionsrN   R   s2   DAq%"$266D XXa^##A&F((2q)9:BBDFBFF1Iv&	4..v~~b!/DEMMO 77fll"""FD--doo.E.Ea.HIJ				499Q<	0BDOO))//1288>>3CDr;   c                  `   t         d   } t        j                  t         d   t         d   dz  dz   f      j                  }t	        t               t        j                  t        j                        }|j                  | |      j                  |       }|j                  j                  |      }t        t        j                  |      |       t        ||j                  j                  |             |j                  |j                  k(  sJ t        ||j                  |j                   j                  |                    t               j                  | |j#                  |            }t        |j                   j$                  j'                         |j$                  j'                                y )Nr   r>      r,   )r   r   vstackTr   r	   r   r   r!   rB   rC   rD   r   rG   r#   r   rH   r   rI   rJ   rK   s         r(   5test_transform_target_regressor_functions_multioutputrS   e   s0   A
		8A;q 01 45688A%"$266D XXa^##A&F((+FBFF1Iv&At((::6BC77fll"""FD--doo.E.Ea.HIJ				499Q<	0BDOO))//1288>>3CDr;   zX,yr>   rP   c                    t        d d       }t        t               |      }|j                  | |      j	                  |       }|j
                  |j
                  k(  sJ |j                  j                  |      }t        ||       |j
                  |j
                  k(  sJ t        ||j                  j                  |      j                                t               }t        |      }|j                  | |j                  |             |j	                  |       }t        ||j                  |             t        |j                  j                  |j                         y )Nc                     | dz   S r=    xs    r(   <lambda>z@test_transform_target_regressor_1d_transformer.<locals>.<lambda>   s
    q1u r;   c                     | dz
  S r=   rV   rW   s    r(   rY   z@test_transform_target_regressor_1d_transformer.<locals>.<lambda>   s
    QU r;   r   r   r   )r   r   r	   r!   rB   r#   rC   rD   r?   r   rG   rF   r   fit_transformrH   rI   	r%   r&   r   r'   r7   rL   rM   transformer2	y_lr_preds	            r(   .test_transform_target_regressor_1d_transformerr`   w   s    &?K &"$+D XXa^##A&F77fll"""((+F!V$77fll"""At((::6BJJLM		B%LFF1l((+,

1IFL::9EFDOO))2884r;   c           	      p   t               }t        t               |      }|j                  | |      j	                  |       }|j
                  |j
                  k(  sJ |j                  dk(  r,|j                  j                  |j                  dd            }n|j                  j                  |      }t        ||j                                |j
                  |j
                  k(  sJ t        ||j                  j                  |      j                                t               }t        |      }|j                  dk(  r|j                  | |j                  |j                  dd            j                                |j	                  |       j                  dd      }|j                  |      j                         }	nC|j                  | |j                  |             |j	                  |       }|j                  |      }	t        ||	       t        |j                   j"                  |j"                         y )Nr   r>   rA   )r   r   r	   r!   rB   r#   ndimrC   rD   rE   r:   rF   r   rG   r   r\   rH   rI   )
r%   r&   r   r'   r7   rL   rM   r^   r_   y_pred2s
             r(   .test_transform_target_regressor_2d_transformerrd      s    !"K%"$+D XXa^##A&F77fll"""vv{"",,QYYr1-=>"",,Q/1fnn./77fll"""At((::6BJJLM		B%Lvv{
q,,,QYYr1-=>FFHIJJqM))"a0	00;CCE
q,,,Q/0JJqM	00;FG$DOO))2884r;   c                  8   t         d   } t        j                  t         d   t         d   dz  dz   f      j                  }t	               }t        t               |      }|j                  | |      j                  |       }|j                  |j                  k(  sJ |j                  j                  |      }t        ||       |j                  |j                  k(  sJ t        ||j                  j                  |      j                                t               }t!        |      }|j                  | |j#                  |             |j                  |       }t        ||j                  |             t        |j$                  j&                  |j&                         y )Nr   r>   rP   r   )r   r   rQ   rR   r   r   r	   r!   rB   r#   rC   rD   r:   r   rG   rF   r   r\   rH   rI   r]   s	            r(   :test_transform_target_regressor_2d_transformer_multioutputrf      sC    	A
		8A;q 01 45688A "K%"$+D XXa^##A&F77fll"""((+F1f%77fll"""At((::6BJJLM		B%LFF1l((+,

1IFL::9EFDOO))2884r;   c                  >   t         d   } t        j                  t         d   j                  ddd      g d      }d }d }t	        ||      }t        t               |      }|j                  | |      j                  |       }|j                  |j                  k(  sJ y )	Nr   r>   rA   )r>      rP   c                 @    | j                  | j                  d   d      S )Nr   rA   rE   r#   datas    r(   flatten_dataz?test_transform_target_regressor_3d_target.<locals>.flatten_data   s    ||DJJqM2..r;   c                 B    | j                  | j                  d   dd      S )Nr   rA   rP   rj   rk   s    r(   unflatten_datazAtest_transform_target_regressor_3d_target.<locals>.unflatten_data   s    ||DJJqM2q11r;   r[   r   )
r   r   tilerE   r   r   r	   r!   rB   r#   )r%   r&   rm   ro   r   r'   r7   s          r(   )test_transform_target_regressor_3d_targetrq      s     	A
##B1-y9A/2 &<nUK%"$+D XXa^##A&F77fll"""r;   c                     t         d   } t        j                  t         d   t         d   dz  dz   g      }d }d }t        ||d      }|j	                  | |       |j                  |       }|j                  dk(  sJ d	 }t        ||d      }|j	                  | |       |j                  |       }|j                  dk(  sJ t        ||       y )
Nr   r>   rP   c                     t        j                  | d d df   dz  | d d df   dz  z         }|d d t         j                  f   S Nr   rP   r>   )r   r-   newaxis)r&   outs     r(   r   z=test_transform_target_regressor_multi_to_single.<locals>.func   s@    gga1glQq!tW\121bjj=!!r;   c                     | S NrV   r&   s    r(   r   zEtest_transform_target_regressor_multi_to_single.<locals>.inverse_func       r;   F)r   r   r+   )d   r>   c                 Z    t        j                  | d d df   dz  | d d df   dz  z         S rt   )r   r-   ry   s    r(   r   z=test_transform_target_regressor_multi_to_single.<locals>.func   s.    wwqAw!|a1gl233r;   )r   r   	transposer   r!   rB   r#   r   )r%   r&   r   r   tty_pred_2d_funcy_pred_1d_funcs          r(   /test_transform_target_regressor_multi_to_singler      s    A
hqkHQK1$4q$8:;A" 
$E
B FF1aLZZ]N8+++4 
$E
B FF1aLZZ]N8+++NN3r;   c                        e Zd ZddZd Zd Zy)DummyCheckerArrayTransformerNc                 >    t        |t        j                        sJ | S rx   
isinstancer   ndarrayselfr%   r&   s      r(   r!   z DummyCheckerArrayTransformer.fit  s    !RZZ(((r;   c                 >    t        |t        j                        sJ |S rx   r   r   r%   s     r(   rD   z&DummyCheckerArrayTransformer.transform      !RZZ(((r;   c                 >    t        |t        j                        sJ |S rx   r   r   s     r(   rG   z.DummyCheckerArrayTransformer.inverse_transform  r   r;   rx   )__name__
__module____qualname__r!   rD   rG   rV   r;   r(   r   r   
  s    r;   r   c                   *     e Zd Zd fd	Z fdZ xZS )DummyCheckerListRegressorc                 J    t        |t              sJ t        |   |||      S rx   )r   listsuperr!   )r   r%   r&   r   	__class__s       r(   r!   zDummyCheckerListRegressor.fit  s&    !T"""w{1a//r;   c                 F    t        |t              sJ t        |   |      S rx   )r   r   r   rB   )r   r%   r   s     r(   rB   z!DummyCheckerListRegressor.predict  s"    !T"""wq!!r;   rx   )r   r   r   r!   rB   __classcell__r   s   @r(   r   r     s    0" "r;   r   c                     t         \  } }t        t               t               d      }|j	                  | j                         |j                                |j                  | j                                t        j                  t              5  |j	                  | |j                                d d d        t        j                  t              5  |j                  |        d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)NF)r   r   r+   )
r   r   r   r   r!   tolistrB   r   r   AssertionError)r%   r&   r~   s      r(   .test_transform_target_regressor_ensure_y_arrayr   "  s     DAq	#02+-
B
 FF188:qxxz"JJqxxz	~	& 
q!((*	~	& 


1   s   !C+C7+C47D c                   ,    e Zd ZdZddZddZd Zd Zy)	DummyTransformerz;Dummy transformer which count how many time fit was called.c                     || _         y rx   fit_counter)r   r   s     r(   __init__zDummyTransformer.__init__7  s
    &r;   Nc                 0    | xj                   dz  c_         | S r=   r   r   s      r(   r!   zDummyTransformer.fit:  s    Ar;   c                     |S rx   rV   r   s     r(   rD   zDummyTransformer.transform>  rz   r;   c                     |S rx   rV   r   s     r(   rG   z"DummyTransformer.inverse_transformA  rz   r;   )r   rx   )r   r   r   __doc__r   r!   rD   rG   rV   r;   r(   r   r   4  s    E'r;   r   r+   FTc                     t         \  }}t        t               |       }|j                  ||       |j                  j
                  dk(  sJ y )N)r   r+   r>   )r   r   r   r!   rC   r   )r+   r%   r&   ttrs       r(   )test_transform_target_regressor_count_fitr   E  sH     DAq
$$&mC GGAqM''1,,,r;   c                         e Zd Zd fd	Z xZS ) DummyRegressorWithExtraFitParamsc                 .    |rJ t         |   |||      S rx   )r   r!   )r   r%   r&   r   check_inputr   s        r(   r!   z$DummyRegressorWithExtraFitParams.fitR  s      w{1a//r;   NT)r   r   r   r!   r   r   s   @r(   r   r   Q  s    0 0r;   r   c                      t         \  } }t        t               t                     }|j	                  | |d       |j
                  j                  dk(  sJ y )Nr   Fr   r>   )r   r   r   r   r!   rC   r   r1   s      r(   3test_transform_target_regressor_pass_fit_parametersr   Y  sO    DAq%24BRBTD 	HHQuH%((A---r;   c                      t         \  } }t        t               t                     }dt	               fd|fg}t        |      } |j                  | |fi ddi |j                  j                  dk(  sJ y )Nr   	normalizeestest__check_inputFr>   )	r   r   r   r   r   r   r!   rC   r   )r%   r&   r'   
estimatorspips        r(   .test_transform_target_regressor_route_pipeliner   c  sx    DAq%24BRBTD  01E4=AJ
:
CCGGAq0'/0((A---r;   c                         e Zd Zd fd	Z xZS )$DummyRegressorWithExtraPredictParamsc                 8    d| _         |rJ t        | 	  |      S r   )predict_calledr   rB   )r   r%   r   r   s      r(   rB   z,DummyRegressorWithExtraPredictParams.predictr  s$     #wq!!r;   )T)r   r   r   rB   r   r   s   @r(   r   r   q  s    " "r;   r   c                      t         \  } }t        t               t                     }|j	                  | |       |j                  | d       |j                  j                  sJ y )Nr   Fr   )r   r   r   r   r!   rB   rH   r   r1   s      r(   =test_transform_target_regressor_pass_extra_predict_parametersr   z  sS    DAq%68FVFXD 	HHQNLLL&??))))r;   )3numpyr   r   sklearnr   sklearn.baser   r   r   sklearn.composer   sklearn.dummyr   sklearn.linear_modelr	   r
   sklearn.pipeliner   sklearn.preprocessingr   r   sklearn.utils._testingr   r   make_friedman1r   r)   r2   r:   r?   rN   rS   markparametrizerQ   rR   r`   rd   rf   rq   r   r   r   r   r   r   r   r   r   r   r   rV   r;   r(   <module>r      s      ? ? 6 ( L % E F"8""2B'.2#E&E$ 	Hx{IBIIx{HQK1<Lq<P.Q$R$T$TUV558 	Hx{IBIIx{HQK1<Lq<P.Q$R$T$TUV55D54#*4@#3] " "$' " 5$-8- 9-0~ 0.."> "	*r;   