
    0Ph)              	          d dl Zd dlZd dlmZ d dl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 d d	lmZmZmZmZmZ ej        d
             Zej                             eej                   ed          k    d          ej                            dddg          ej                            de          d                                     Zej                            dg dg dg dg dg dg          d             Zej                            dddg          d             Zej                            dg d          d              Z d! Z!ej                            d"g d#          d$             Z"ej                            d"g d#          d%             Z#ej                             eej                   ed          k    d          ej        $                    d&          d'                         Z%ej                            d(eez   ez             ej                            dg d)          ej                            dddg          d*                                     Z&d+ Z'dS ),    N)approx)minimizemake_regression)ConvergenceWarning)HuberRegressorQuantileRegressor)mean_pinball_loss)assert_allclose)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSparse_version
sp_versionc                  6    t          dddd          \  } }| |fS )N
      r   	n_samples
n_featuresrandom_statenoiser   )Xys     h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/linear_model/tests/test_quantile.pyX_y_datar      s%    RAAQOOODAqa4K    z1.11z4interior-point solver is not available in SciPy 1.11)reasonsolverinterior-pointzrevised simplexcsc_containerc                     | \  }} ||          }d| d}t          j        t          |          5  t          |                              ||           d d d            d S # 1 swxY w Y   d S )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,      s     DAq}QHU&UUU  
z	1	1	1 : :(((,,Xq999: : : : : : : : : : : : : : : : : :s   %A$$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                 ,   dgdgdgg}g d}t          | |                              ||          }t          |j        |d           |t          |j        d         |d           |dk     r|j        d         dk    sJ |j        d         dk    sJ d S )	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xu===AA!QGGEE$id;;;;A48888s{{{1~"""";q>Rr   fit_interceptTFc                    t          dddd          \  }}d}t          d||                               ||          }t          || 	                              ||          }t	          |j        |j        d
           | ra|j        t          |j        d
          k    sJ t          j	        ||
                    |          k               t          dd
          k    sJ d S d S )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SSSDAqE]  	c!Qii 
 EGGGKKAqQQEEK48888 F6%*:#E#E#EEEEEwq5==+++,,s0E0E0EEEEEF F FEr   q)r-   g?g?c                     t          dddd          \  }}t          | d                              ||          }t          j        ||                    |          k               t          | d          k    sJ d S )	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   s     TbqPSTTTDAqq22266q!<<E71u}}Q'''((F1$,?,?,???????r   c                     d} t          | ddd          \  }}t          j        |           }d|||                                k    <   t	          dd	          }|                    |||
           t          j        ||                    |          k               }|dk    sJ t          j        ||                    |          k     |          }|t          dd          k    sJ d S )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QQQDAqWQZZF F1qvvxx<s$777E	IIa&I)))WQq!1!1122NC jU]]1-=-=)=vNNN"fSd&;&;&;;;;;;;r   r4   )皙?r-   g?c                 6   	
 d}t           j                            d          }t          j        t          j        |                    |          dddf                   |                    d|df           fd          	d}t          j        d	d
g          }t          j        	|z  |z             dk    sJ |	                    	|z  |z    t          j
        d z
            z  |          t           d                              	          }|j        t          |d          k    sJ t          |j        |d           t          t          j        |                    	          k               d           d
|                    
                              	           t           j        |j        |j        f         }	
 fd}t+          |g dddddi          } ||          t           ||j                            k    sJ t          |j        |j        d                    t          |j        |j        dd                    t          t          j        |                    	          k               d           dS )z<Test quantile regression for asymmetric distributed targets.rN   *   Nr0   r   )size)axisgGz?r-   r   scaler_   r3   r\   rel333333?rtolr.   r6   r5   c                     t          | dd          z  | d         z             }t          j        t          j        | dd                              }||z  z   S )Nr   r   ri   )r
   rF   sumrE   )r;   lossL1r   r5   r4   r   s      r   funcz#test_asymmetric_error.<locals>.func   s\     AQRRL47$:(KKKVBF4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
F399Y''4011[[)Q[000	
 	 	 	A I8S"ID6!d(Y&''!++++
 	D9$%q8|(<(<<9 	 	 	A    
c!Qii 
 viS9999999EKC0000BGEMM!,,q0118$GGGG E	5!!%%a+++u'45J! ! ! ! ! ! ! !
 ::D!  C 4
vdd35kk222222E$ceAh///EKqrr+++BGEMM!,,q0118$GGGGGGr   c                 .   t           j                            d          }d\  }}t          |||d|d          \  }}||                    d|j                  z  }t          d          }t          dd	| i|                    ||          }d
}t          dd	| i|                    |||z            }	|	j	        t          ||j	        z  d          k    sJ t          |	j        ||j        z  d           t          dd	d| z
  i|                    || |z            }	|	j	        t          | |j	        z  d          k    sJ t          |	j        | |j        z  d           |                                |                    |          }}
t          dd	| i|}	|	                    ||||z  z   |
z              |	j	        t          |j	        |
z             k    sJ t          |	j        |j        |z   d           |                    ||          }t          dd	| i|}	|	                    ||z  |           |	j	        t          |j	        d          k    sJ t          |	j        t           j                            ||j                  d           dS )ziTest 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   rv   rw   r   r}   shapedictr	   r)   r8   r   r   r9   ry   linalgsolve)r4   r   r   r   r   r   paramsmodel1amodel2g_interceptg_coefAs                r   test_equivariancer      s    )


#
#C"Iz   DAq s	1	11A]]]F;;;F;;??1EEF 	A;;;F;;??1q5IIFq6+<'<$ G G GGGGGFL!fl"2>>>> ??H???CCArAvNNFrF,='=4 H H HHHHHFL1"v|"3$???? ))++syy'<'<K;;;F;;F
JJq!a&j.;.///v'8;'F G GGGGGFL&,"7dCCCC 			*j))A;;;F;;F
JJq1uav'8d C C CCCCCFL")//!V\"B"BNNNNNNr   z.ignore:`method='interior-point'` is deprecatedc                  J   t          j        ddd                              dd          } t          j        ddd          }t          ddddi          }d	}t	          j        t          |
          5  |                    | |           ddd           dS # 1 swxY w Y   dS )zTest that linprog fails.r   r   )numro   r   r    rp   )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      s     	Arr"""**2q11A
Arr"""A
()Q  C FC	(	4	4	4  1                 s   4BBBsparse_container)highszhighs-dsz	highs-ipmc                    d}d}t          ddd|d          \  }} | |          }d}	t          ||	|                              ||          }
t          ||	||	                              ||          }t          |j        |
j        d
           |j        dk    }|
j        dk    }|                                t          j        |d          k    sJ |                                t          j        |d          k    sJ |ra|j        t          |
j                  k    sJ t          j
        ||                    |          k               }|t          |d          k    sJ dS dS )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      s    MN'  DAq  ""HE#uM  	c!Qii  %uMRX  	c(A  L&(9EEEE!'1,N%*M&-1"E"E"EEEEE6=A#F#F#FFFFF F&&1G*H*HHHHHWQ)=)=h)G)G%GHH!VN%E%E%EEEEE	F F FEr   c                    | \  }}ddl }|                                5 }|                    |j        j        dt          d                     d}t          j        t          |          5  t          d          
                    ||           ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )	zlCheck 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     se    DAq))))					 A!			'&0,h@W@WXXXV]:W555 	A 	A%5666::1a@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AA A A A A A A A A A A A A A A A A As6   AB3*%BB3B	B3"B	#B33B7:B7)(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      s	              # # # # # # , , , , , , 1 1 1 1 1 1 B B B B B B B B - - - - - - 2 2 2 2 2 2                
 M*)**mmF.C.CCA    $46G#HII.99: : :9 JI	 : & 	 
  
  
  4-88F F 98F ...//@ @ 0/@< < <  ___557H 7H 657Ht ___55+O +O 65+O\ M*)**mmF.C.CCA    LMM
 
 NM	 

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