
    -i)              	          S SK rS SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S S	KJrJrJrJrJr  \R.                  S
 5       r\R2                  R5                  \" \R6                  5      \" S5      :  SS9\R2                  R9                  SSS/5      \R2                  R9                  S\5      S 5       5       5       r\R2                  R9                  S/ SQ/ SQ/ SQ/ SQ/ SQ/5      S 5       r\R2                  R9                  SSS/5      S 5       r\R2                  R9                  S/ SQ5      S  5       r S! r!\R2                  R9                  S"/ S#Q5      S$ 5       r"\R2                  R9                  S"/ S#Q5      S% 5       r#\R2                  R5                  \" \R6                  5      \" S5      :  SS9\R2                  RI                  S&5      S' 5       5       r%\R2                  R9                  S(\\-   \-   5      \R2                  R9                  S/ S)Q5      \R2                  R9                  SSS/5      S* 5       5       5       r&S+ r'g),    N)approx)minimizemake_regression)ConvergenceWarning)HuberRegressorQuantileRegressor)mean_pinball_loss)assert_allclose)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSparse_version
sp_versionc                  $    [        SSSSS9u  pX4$ )N
      r   	n_samples
n_featuresrandom_statenoiser   )Xys     [/var/www/html/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_quantile.pyX_y_datar      s    RAAQODA4K    z1.11z4interior-point solver is not available in SciPy 1.11)reasonsolverinterior-pointzrevised simplexcsc_containerc                     U u  p4U" U5      nSU S3n[         R                  " [        US9   [        US9R	                  XT5        S S S 5        g ! , (       d  f       g = f)NzSolver z; does not support sparse X. Use solver 'highs' for example.matchr   )pytestraises
ValueErrorr	   fit)r   r   r!   r   r   X_sparseerr_msgs          r   )test_incompatible_solver_for_sparse_inputr,      sV     DAQH
&TU  
z	1(,,X9 
2	1	1s   A
Az quantile, alpha, intercept, coef)      ?r   r   N)gRQ?r   r   r   )g\(\?r   r   r   )r-   {Gz?r   r   )r-   d      r   c                    S/S/S//n/ SQn[        XS9R                  XE5      n[        UR                  USS9  Ub  [        UR                  S   USS9  US:  a  UR                  S   S:  d   eUR                  S   S::  d   eg )	Nr   r   )r   r0      quantilealphar.   atolr/   r   )r	   r)   r   
intercept_coef_)r4   r5   	interceptcoefr   r   models          r   test_quantile_toy_exampler=   -   s    " qcA3AAx=AA!GEE$$id;A48s{{{1~""";;q>Rr   fit_interceptTFc                    [        SSSSS9u  pSn[        SX0S9R                  X5      n[        X0S	9R                  X5      n[	        UR
                  UR
                  S
S9  U (       aZ  UR                  [        UR                  S
S9:X  d   e[        R                  " X%R                  U5      :  5      [        SS
S9:X  d   eg g )Nr/      r         ?r   g-C6?gqh ?)epsilonr5   r>   )r5   r>   皙?r6   absr-   )r   r   r)   r	   r   r9   r8   r   npmeanpredict)r>   r   r   r5   huberquants         r   *test_quantile_equals_huber_for_low_epsilonrK   I   s    SRasSDAE	c!i 
 EGKKAQEEKK486%*:*:#EEEEwwq==++,s0EEEE r   q)r-   g?g?c                     [        SSSSS9u  p[        U SS9R                  X5      n[        R                  " X#R                  U5      :  5      [        U SS9:X  d   eg )	N  r@   r   rA   r   r3   r.   rD   )r   r	   r)   rF   rG   rH   r   )rL   r   r   rJ   s       r   #test_quantile_estimates_calibrationrO   X   sX     TbqPSTDAq266q<E771}}Q''(F1$,????r   c                  x   Sn [        U SSSS9u  p[        R                  " U 5      nSX2UR                  5       :  '   [	        SSS	9nUR                  XUS
9  [        R                  " X$R                  U5      :  5      nUS:  d   e[        R                  " X$R                  U5      :  US9nU[        SSS9:X  d   eg )NrN      r   g      $@r   r/   r-   g:0yE>r3   )sample_weight)weightsQ?rD   )	r   rF   onesrG   r	   r)   rH   averager   )nr   r   weightrJ   fraction_belowweighted_fraction_belows          r   test_quantile_sample_weightr[   `   s    AQ11DQDAWWQZF Fqvvx<s$7E	IIa&I)WWQq!112NC jj]]1-=)=vN"fSd&;;;;r   r4   )皙?r-   g?c                   ^ ^	^
^ Sn[         R                  R                  S5      n[         R                  " [         R                  " UR                  U5      SS2S4   5      UR                  SUS4S9* 4SS9m	Sn[         R                  " S	S
/5      n[         R                  " T	U-  U-   5      S:  d   eUR                  T	U-  U-   * [         R                  " ST -
  5      -  US9m[        T SS9R                  T	T5      nUR                  [        USS9:X  d   e[        UR                   USS9  [        [         R"                  " UR%                  T	5      T:  5      T SS9  Sm
UR'                  T
S9R                  T	T5        [         R(                  UR                  UR                   4   nU	U
U U4S jn[+        U/ SQSSSS0S9nU" U5      [        U" UR,                  5      5      :X  d   e[        UR                  UR,                  S   5        [        UR                   UR,                  SS 5        [        [         R"                  " UR%                  T	5      T:  5      T SS9  g)z<Test quantile regression for asymmetric distributed targets.rN   *   Nr0   r   )size)axisgGz?r-   r   scaler_   r3   r\   rel333333?rtolr.   r6   r5   c                    > [        TTU SS  -  U S   -   TS9n[        R                  " [        R                  " U SS  5      5      nUTU-  -   $ )Nr   r   ri   )r
   rF   sumrE   )r;   lossL1r   r5   r4   r   s      r   func#test_asymmetric_error.<locals>.func   sP     AQRL47$:(KVVBFF48$%ebj  r   )r   r   zNelder-Meadg-q=maxiteri  )funx0methodtoloptions)rF   randomRandomStateconcatenaterE   randnrandintarrayminexponentiallogr	   r)   r8   r   r   r9   rG   rH   
set_paramsr_r   x)r4   r   rngr:   r;   r<   
model_coefrn   resr   r5   r   s   `        @@@r   test_asymmetric_errorr   p   s/    I
))


#C
FF399Y'401[[)Q[00	
 	A I88S"ID66!d(Y&'!+++
 	D9$%q8|(<<9 	 	A  
c!Qi 
 viS9999EKKC0BGGEMM!,q018$G E	5!%%a+u''45J! !
 D!C 
vd355k2222E$$ceeAh/EKKqr+BGGEMM!,q018$Gr   c           	         [         R                  R                  S5      nSu  p#[        UUUSUSS9u  pEXQR	                  SUR
                  S9-  n[        SS9n[        SS	U 0UD6R                  XE5      nS
n[        SS	U 0UD6R                  XHU-  5      n	U	R                  [        XR                  -  SS9:X  d   e[        U	R                  XR                  -  SS9  [        SS	SU -
  0UD6R                  XH* U-  5      n	U	R                  [        U* UR                  -  SS9:X  d   e[        U	R                  U* UR                  -  SS9  UR                  5       UR                  U5      p[        SS	U 0UD6n	U	R                  XEXK-  -   U
-   5        U	R                  [        UR                  U
-   5      :X  d   e[        U	R                  UR                  U-   SS9  UR                  X35      n[        SS	U 0UD6n	U	R                  XL-  U5        U	R                  [        UR                  SS9:X  d   e[        U	R                  [         R                  R                  XR                  5      SS9  g)zaTest equivariace of quantile regression.

See Koenker (2005) Quantile Regression, Chapter 2.2.3.
r^   )r/   rQ   r   F)r   r   n_informativer   r   shuffler/   rb   ri   r4   g      @gh㈵>rd   rg   r   gư>N )rF   rw   rx   r   r~   shapedictr	   r)   r8   r   r   r9   rz   linalgsolve)r4   r   r   r   r   r   paramsmodel1amodel2g_interceptg_coefAs                r   test_equivariancer      s@    ))


#C"I DA s	11A]F;;F;??EF 	A;;F;??q5IFq+<+<'<$ GGGGFLL!ll"2> ?H??CCArAvNFrF,=,='=4 HHHHFLL1"v||"3$? ))+syy'<;;F;F
JJqaj.;./v'8'8;'F GGGGFLL&,,"7dC 			*)A;;F;F
JJquav'8'8d CCCCFLL"))//!\\"BNr   z.ignore:`method='interior-point'` is deprecatedc                  "   [         R                  " SSSS9R                  SS5      n [         R                  " SSSS9n[        SSSS0S9nS	n[        R
                  " [        US
9   UR                  X5        SSS5        g! , (       d  f       g= f)zTest that linprog fails.r   r   )numrp   r   r    rq   )r5   r   solver_optionsz9Linear programming for QuantileRegressor did not succeed.r#   N)rF   linspacereshaper	   r&   warnsr   r)   )r   r   regmsgs       r   test_linprog_failurer      sy     	Arr"**2q1A
Arr"A
()QC FC	(	4 
5	4	4s   %B  
Bsparse_container)highszhighs-dsz	highs-ipmc                    SnSn[        SSSUSS9u  pgU " U5      nSn	[        XYUS9R                  Xg5      n
[        XYX!S	9R                  X5      n[        UR                  U
R                  S
S9  UR                  S:g  nU
R                  S:g  nUR                  5       [        R                  " USS9:X  d   eUR                  5       [        R                  " USS9:X  d   eU(       a]  UR                  [        U
R                  5      :X  d   e[        R                  " X{R                  U5      :  5      nU[        USS9:X  d   egg)z/Test that sparse and dense X give same results.r   rf   i,  r@   rA   )r   r   r   r   r   rC   )r4   r5   r>   )r4   r5   r>   r   r.   rg   r   r   rD   rT   N)r   r	   r)   r   r9   rk   r&   r   r8   rF   rG   rH   )r   r   r>   global_random_seedr   quantile_levelr   r   r*   r5   quant_densequant_sparsesparse_supportdense_supportempirical_coverages                  r   test_sparse_inputr      sJ    MN'DA  "HE#M	c!i  %M	c(  L&&(9(9E!''1,N%%*M&--1"EEEE6==A#FFFF&&&1G1G*HHHHWWQ)=)=h)G%GH!VN%EEEE	 r   c                 b   U u  p#SSK nUR                  5        nUR                  UR                  R                  S[        S5      5        Sn[        R                  " [        US9   [        SS9R                  X#5        SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)	zdCheck that we will raise a proper error when requesting
`solver='interior-point'` in SciPy >= 1.11.
r   Nr   z1.11.0zBSolver interior-point is not anymore available in SciPy >= 1.11.0.r#   r    r%   )sklearn.linear_model._quantilecontextsetattrlinear_model	_quantiler   r&   r'   r(   r	   r)   )r   monkeypatchr   r   sklearnmr+   s          r    test_error_interior_point_futurer     s     DA)				!			'&&00,h@WXV]]:W5%56::1@ 6 
	 65 
	s$   AB %B>B 
B	B  
B.)(numpyrF   r&   r   scipy.optimizer   sklearn.datasetsr   sklearn.exceptionsr   sklearn.linear_modelr   r	   sklearn.metricsr
   sklearn.utils._testingr   sklearn.utils.fixesr   r   r   r   r   fixturer   markskipifbase_versionparametrizer,   r=   rK   rO   r[   r   r   filterwarningsr   r   r   r   r   r   <module>r      sy      # , 1 B - 2   
 *))*mF.CCA   $46G#HI.9: : J	: & 	
 
  4-8F 9F ./@ 0@<  _57H 67Ht _5+O 6+O\ *))*mF.CCA   LM
 N	

 7.H #EF4-8F 9 G
F>Ar   