
    0Phc                         d dl mZ d dlZd dl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mZmZmZmZmZmZmZmZmZmZm Z  d d	l!m"Z" d d
l#m$Z$ d dl%m&Z&m'Z'm(Z( d dZ)d Z*d Z+d Z,d Z-d Z.d Z/d Z0ej1        2                    deeeg          d             Z3d Z4d Z5ej1        2                    dg d          ej1        2                    dg d          d                         Z6d Z7d Z8dS )!    )productN)assert_allclose)optimize)	factorialxlogy)DummyRegressor)UndefinedMetricWarning)d2_absolute_error_scored2_pinball_scored2_tweedie_scoreexplained_variance_scoremake_scorer	max_errormean_absolute_errormean_absolute_percentage_errormean_pinball_lossmean_squared_errormean_squared_log_errormean_tweedie_deviancemedian_absolute_errorr2_scoreroot_mean_squared_errorroot_mean_squared_log_error)_check_reg_targets)GridSearchCV)assert_almost_equalassert_array_almost_equalassert_array_equal2   c           
         t          j        |           }|dz   }|dz
  }t          t          ||          d           t          t	          ||          t          t          j        d|z             t          j        d|z                                  t          t          ||          d           t          t          ||          d           t          t          ||          d           t          t          ||d          d           t          t          ||d          d           t          t          ||          d           t          ||          }t          j
        |          sJ |dk    sJ t          t          ||          d           t          t          ||          dd	           t          t          ||d
          dd	           t          t          ||          d           t          t          ||d
          d           t          t          ||d          t          ||                     t          t          ||d          t          ||                     t          j        |t          j        |          z
                                            }t'          t)          ||          dt          j        ||z
                                            |z  z
             d}d }t          j        ||dz            }t          t-          |||          d ||||                                           ||||                                          z  z
             t          t)          ||          t-          ||d                     t          j        dd| z             }d	|z  }| }	t          t          ||d          d|	z  |	d	z  d	|	z  z   dz   z             t          t          ||d          |	dz   dt          j        d	          z
  z             t          t          ||d	          d	t          j        d	          z  dz
             t          t          ||d          dt          j        d	          z  dz
  |	z  t          j        |                                          z             t          t          ||d          t          j        d|z            d|	z  z             d	t          j        t3          |d	|z  |	dz   z                      z  }
t          t          ||d          d|	dz   dt          j        d	          z
  z  |
z  z
             d	t          j        |	dz   d	z            z  d	|	z  t          j        t5          |	                    z  z
  }
t          t          ||d	          dd	t          j        d	          z  dz
  |
z  z
             d S )N         ?      ?皙?alpha333333?    .Agףp=
?   Fforce_finiter   power皙?c                 v    |t          j        | |z
  d          z  d|z
  t          j        || z
  d          z  z   S )Nr   r!   )npmaximum)y_truey_predr&   s      e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/metrics/tests/test_regression.py<lambda>z)test_regression_metrics.<locals>.<lambda>M   sC    : : 2	
Ubj&!44425     d   )qg?      ?            )r0   aranger   r   r   logr   r   r   r   isfiniter   r   r   r   r   absmediansumr   r
   
percentiler   sqrtmeanr   r   )	n_samplesr2   r3   y_pred_2mape
dev_medianr&   pinball_loss
y_quantilendev_means              r4   test_regression_metricsrP   &   s   Yy!!FaZFzH*66::C@@@vv..26!f*--rva&j/A/ABB   +FF;;SAAA)&&993???)&(;;SAAA)&&DDDcJJJ)&(#FFFLLL-ff==sCCC)&&99D;t#::::	&&11377700%;;;eDDDeQOOO0@@#FFF eDDDc   ffA66666**   q1118FF3K3K   6!2!22337799J//	BF6F?##''))J66   E5 5L v555Ju555	
,vvu
-
-
1
1
3
3
,vz5
1
1
5
5
7
78	8   //s333   Yq!i-((FZFAffB777
adQUlQ&'   ffA666Q1rvayy=8Q   ffA666BF1II8I   ffE:::
bgajj.1
	!RWV__%8%8%:%::   ffA666q6z8J8JaRSe8T   275Vq1u)=>>???Hq111	QUq26!99}%00  
 261q5A+&&&Q	!1E1E)EEHq1111BF1II8IX7U3U    r6   c                      t          dggdggd          } t          dggdggd          }t          j        |           t	          j        |          k    sJ d S )Nr!   
   
raw_valuesmultioutput)r   r   r0   rF   pytestapprox)msermses     r4   2test_root_mean_squared_error_multioutput_raw_valuerZ      se     qcUbTF
E
E
EC"QC5B4&lKKKD73<<6=........r6   c                     t          j        g dg dg dg          t          j        g dg dg dg          t                    } t          | d           t	                    } t          | dd	           t                    } t          | d
d	           t                    } t          | dd	           t                    } t          | d           t                    } t          | d           t          j	        t                    d          } t          j        |           sJ | dk    sJ t                    } t          | d           t          d          } t          | d           t          d          } t          | d           t          dd          }fdt          j        d                   D             }t          j        t          j        |          d|          }t'          ||           t          dd          }t          ||                                           ddg}t          |ddgd          } t          | d           t          |ddgd          } t          | d           t          dd          } t          | t           j                   t          dd          } t          | t           j                   d d d df         d d d df         t          d          } t          dd          }t          | |           t          d          } t          dd          }t          | |           t          |ddgdd          } t          | t           j                   t          |dd gdd          } t          | t           j                    d S )!N)r!   r   r   r!   )r   r!   r!   r!   )r!   r!   r   r!   )r   r   r   r!   )r!   r   r!   r!   g?guV?r)   decimalr.   g)\(?g?)decimalsr(   r#   variance_weightedrT   g      uniform_averageg      rS   r&   rU   c                 0   g | ]}d t          j        dd|f         dd|f         z
                                            t          j        dd|f         t          j        dd|f                   z
                                            z  z
  S )r!   N)r0   rB   rD   rC   ).0ir3   r2   s     r4   
<listcomp>z/test_multioutput_regression.<locals>.<listcomp>   s         	

&1qqq!t,
-
-
1
1
3
3
&1	&A, 7 77
8
8
<
<
>
>?	?  r6   r!   g      @r"   gffffff@        FrU   r+   r9   g      @)r0   arrayr   r   r   r   r   r   r   aroundr   rA   r   r   r   rangeshapewhereisnanr   rG   naninf)errorscoreraw_expected_scoreycerror2r3   r2   s        @@r4   test_multioutput_regressionru      sZ   X|||\\\<<<@AAFX|||\\\<<<@AAFvv..EBCCC#FF33Eua0000"6622Eua0000'77Eua0000  //E4555ff--E4555I4VVDDqQQQE;u3;;;;!&&11E0111VV1DEEEE}---VV1BCCCEv&&&VV3LQQQE     v|A''	   "(+=">">CUVVe%7888VV3DUVVVE16688999
sBR#s1DEEEEs###R#s1DEEEEs### $7e  E rv&&&VV1BQVWWWErv&&& AAAssF^FAAAssF^FVV1DEEEE$7e  F v&&&VV1BCCCEff2CRWXXXFv&&& 
S#J$7e  E rv&&&
S#J$7e  E w'''''r6   c                     t          t          dgdg          d           t          t          dgdg          d           t          t          dgdg          d           t          t	          dgdg          d           t          t          dgdg          d           t          t          dgdg          d           t          t          dgdg          d           t          t          dgdg          d           t          t          dgdg          d           t          t          ddgddg          d           t          t          ddgddg          d           t          t          fD ]} t           | ddgddg          d           t           | ddgddgd          t          j                    t           | ddgddg          d           t           | ddgddgd          t          j                   d}t          j        t"          |	          5  t          d
gd
g           d d d            n# 1 swxY w Y   d}t          j        t"          |	          5  t          g dg d           d d d            n# 1 swxY w Y   d}t          j        t"          |	          5  t          g dg d           d d d            n# 1 swxY w Y   d}t          j        t"          |	          5  t%          g dg d           d d d            n# 1 swxY w Y   d}d}t'          t)          dgdg|          dd|z
  z  d           d}t          j        t"          |	          5  t)          dgdg|           d d d            n# 1 swxY w Y   t          j        t"          |	          5  t+          dgdz  dgdz  |           d d d            n# 1 swxY w Y   t          t)          dgdgd          dd           d}d}t          j        t"          |	          5  t)          dgdg|           d d d            n# 1 swxY w Y   t          j        t"          |	          5  t+          dgdz  dgdz  |           d d d            n# 1 swxY w Y   d}t'          t)          dgdg|          dd|z
  z             d}t          j        t"          |	          5  t)          dgdg|           d d d            n# 1 swxY w Y   t          j        t"          |	          5  t+          dgdz  dgdz  |           d d d            n# 1 swxY w Y   d}t'          t)          dgdg|          dd           d}t          j        t"          |	          5  t)          dgdg|           d d d            n# 1 swxY w Y   t          j        t"          |	          5  t+          dgdz  dgdz  |           d d d            n# 1 swxY w Y   d}t'          t)          dgdg|          dd           d}t          j        t"          |	          5  t)          dgdg|           d d d            n# 1 swxY w Y   t          j        t"          |	          5  t+          dgdz  dgdz  |           d d d            d S # 1 swxY w Y   d S )Nrf   r"   r!   r   r9   Fr*   zcMean Squared Logarithmic Error cannot be used when targets contain values less than or equal to -1.match      )r"          @      @)r"   g       r{   zhRoot Mean Squared Logarithmic Error cannot be used when targets contain values less than or equal to -1.g333333r,   r)   gMbP?)rtolz-can only be used on strictly positive y_pred.z<only be used on non-negative y and strictly positive y_pred.r:   rz   g:0yE>atolz3can only be used on strictly positive y and y_pred.r{   )r   r   r   r   r   r   r   r   r   r   r   r   r0   ro   rn   rV   raises
ValueErrorr   r   r   r   )smsgr-   s      r4   !test_regression_metrics_at_limitsr      s	    *C53%88#>>>/u==sCCC.use<<cBBB+SEC5993???)3%#77===6useDDcJJJ-secU;;SAAA	3%#//5550#>>DDD #qC844c:::(#qC8<<cBBB 01 K KAAq!fq"g..444AAq!fq"gEBBBRVGLLLAAq!fq!f--s333AAq!fq!f5AAA26JJJJ	;  
z	-	-	- / /vv.../ / / / / / / / / / / / / / /	;  
z	-	-	- B B0@0@0@AAAB B B B B B B B B B B B B B B	;  
z	-	-	- B B///AAAB B B B B B B B B B B B B B B	;  
z	-	-	- G G#$4$4$4oooFFFG G G G G G G G G G G G G G G	;  EqcC5666QYd    :C	z	-	-	- 9 9secU%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	-	-	- < <#SEAIU;;;;< < < < < < < < < < < < < < < -secU!DDDc1MMME
HC	z	-	-	- 9 9secU%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	-	-	- < <#SEAIU;;;;< < < < < < < < < < < < < < < E)3%#eDDDa1u9oVVV
HC	z	-	-	- 9 9secU%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	-	-	- < <#SEAIU;;;;< < < < < < < < < < < < < < < E)3%#eDDDdQUVVVV
?C	z	-	-	- 9 9secU%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	-	-	- < <#SEAIU;;;;< < < < < < < < < < < < < < < E)3%#eDDDdQUVVVV
?C	z	-	-	- 9 9secU%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	-	-	- < <#SEAIU;;;;< < < < < < < < < < < < < < < < < <s   $II
I+JJJ4KKK=LL"%L"4NNN;O""O&)O&/QQQ6RR!$R!/TTT6UU!$U!+WWW2XX X'ZZZ.[[[c            	      j   dg ddfddgdgdggdfdddgddgddggdfdddgddgddggdfdg d	g d
g dgdfg} t          | d          D ]\  \  }}}\  }}}||k    r||k    rt          ||d           \  }}}	}
||k    sJ |dk    rGt          |t          j        |d                     t          |	t          j        |d                     t          ||           t          |	|           t          j        t                    5  t          ||d            d d d            n# 1 swxY w Y   d S )N
continuousr!   r)   r=   r!   r)   r=   zcontinuous-multioutput   r>   )r!   r=   r>   )r)   r)   r)   )r=   r!   r!   )repeat)r9   r!   )r   r   r   r0   reshaperV   r   r   )EXAMPLEStype1y1n_out1type2y2n_out2y_typey_check1y_check2rU   s              r4   test__check_reg_targetsr   A  s    
yyy!$	aS1#*	!QFQFQF#;Q?	!QFQFQF#;Q?	!IIIyyy)))#DaHH 5<HQ4O4O4O 1 10F0eRE>>f..6HRQU6V6V3FHhF????$$"8RZG-D-DEEE"8RZG-D-DEEEE"8R000"8R0000z** 1 1"2r40001 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1s   	D''D+	.D+	c                      d} d                     |           }t          j        t          |          5  t	          g ddgdgdgg|            d d d            d S # 1 swxY w Y   d S )Nthis_value_is_not_validzFAllowed 'multioutput' string values are.+You provided multioutput={!r}rw   r   r!   r)   r=   )formatrV   r   r   r   )invalid_multioutputexpected_messages     r4   !test__check_reg_targets_exceptionr   Z  s    3PWW	
 	
 
 
z)9	:	:	: L L999sQC!o7JKKKL L L L L L L L L L L L L L L L L Ls   AA!Ac            	      Z
   ddgddgddgddgg} ddgddgdd	gdd
gg}t          | |d          }t          | |d          }t          | |d          }t          | |d          }t	          | |d          }t          | |d          }t          | |dd          }t          | |dd          }	t          |ddgd           t          |ddgd           t          |ddgd           t          |ddgd           t          |ddgd           t          |ddgd           t          |ddgd           t          |	ddgd           ddggd	z  } ddggd	z  }t          | |d          }t          | |d          }t          | |d          }t	          | |d          }t          | |d          }t          |ddgd           t          |ddgd           t          |ddgd           t          |ddgd           t          |ddgd           t	          ddgddggddgddggd          }t          |dd gd           t          j	        |          t	          ddgddggddgddggd!          k    sJ t          ddgddggddgddggd          }t          |dd"gd           t          ddgddggddgddggdd          }	t          |	t          j
         d"gd           ddgddgg} dd	gddgg}t	          | |d          }
t          |
dd#gd           t          j	        |
          t	          | |d!          k    sJ t	          | |dd          }t          |t          j        d#gd           t          t          j	        |          t	          | |d!d                     t          | |d          }t          |dd#gd           t          j	        |          t          | |          k    sJ t          | |dd          }t          |dd$gd           t          | |dd          }	t          |	t          j        d#gd           t          t          j	        |	          t          | |d%                     t          j        ddgddgdd&gg          } t          j        ddgddgd'd'gg          }t          | |d          }t          t          j        d| z             t          j        d|z             d          }t          ||d           d S )(Nr!   r)         @r9         @r=   r      r>         @rS   rT   r#   ra   Frg   g      ?g      ?r\         ?g      ?g      ?g	g?g2w-!?ffffff?g(\?g-?gv?r   r"   rf   g      r`   g      g      ry   r*   r;   r<   )r   r   r   r   r   r   r   r   r0   rG   ro   rn   r   rh   r   r@   )r2   r3   rX   maepblrJ   revsd2psevs2r2r22mslemsle2s                 r4   !test_regression_multioutput_arrayr   e  ss   !fsBi#qAq62F!fq"g1v3x0F
VV
F
F
FC
ff,
G
G
GC
FF
E
E
EC)&&lSSSD\:::A
"66|
L
L
LCFF#<PPPD#Lu  D cE6?A>>>>cD%=!<<<<cHi#8!DDDDdVV$4a@@@@a$q9999cD$<;;;;dUENA>>>>dT4L!<<<< !fX\F!fX\F
VV
F
F
FC
ff,
G
G
GC
FF
E
E
EC\:::AFFEEEDcC:q9999cC:q9999cC:q9999a#sQ7777dS#J::::1b'Aq6"aVaV$4,OOOAa!TA666671::
R1a&QFQF+9J       #
R1a&QFQF+  C cAu:q9999#
R1a&
Q!Q 	  D dbfWe$4a@@@@ !fq!fF!fq!fF	&&l	;	;	;Bb3+q999972;;(66?PQQQQQQQ
66|%
P
P
PCcBFD>1====
->USSS  
 #66|
L
L
LCcC;::::73<<3FFCCCCCCFF#<PPPDdS$K;;;;#Lu  D dRVTNA>>>>
/USSS  
 XQx!Q!Q011FXQx!SAq6233F!&&lKKKD
q6zBF1v:..L  E dE1555555r6   c                     ddgddgddgddgg} ddgddgdd	gdd
gg}t          | |ddg          }t          | |ddg          }t          | |ddg          }t          | |ddg          }t	          | |ddg          }t          | |ddg          }t          | |dddg          }t          | |ddgd          }	t          |dd           t          |dd           t          |dd           t          |dd           t          |dd           t          |dd           t          |dd           t          |	dd           t          j	        ddgddgddgg          } t          j	        ddgddgddgg          }t          | |ddg          }
t          t          j        d| z             t          j        d|z             ddg          }t          |
|d           d S )Nr!   r)   r   r9   r   r=   r   r   r>   r   r$   r'   rT   r#   ra   Frg   g(\?r\   gzG?gffffff?g|гY?gGz?gPn?r;   r<   g333333?gffffff?)r   r   r   r   r   r   r   r   r0   rh   r   r@   )r2   r3   msewrmsewmaewmapewrwevswd2pswevsw2r   r   s               r4   test_regression_custom_weightsr     si   !fsBi#qAq62F!fq"g1v3x0Fff3*EEED#FFc
KKKEvvC:FFFD*66SzRRRE	&&sCj	9	9	9B#FFc
KKKDVV3S#JOOOE$S#JU  E dA....tQ////eQ////vq1111D!,,,,dA....ua0000tQ//// XQx!Q!Q011FXQx!SAq6233F!&&sCjIIID
q6zBF1v:..S#J  E eQ//////r6   metricc                     dg}dg}d}t          j        t          |          5   | ||          }t          j        |          sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r!   z,not well-defined with less than two samples.rw   )rV   warnsr	   r0   rm   )r   r2   r3   warning_msgrq   s        r4   test_regression_single_sampler     s    SFSF@K 
,K	@	@	@  vv&&x                 s   #AAAc                  j   d} t           j                            d                              |           dz   }t           j                            d                              |           dz   }t	          t          ||d          t          ||d                     t	          t          ||d          t          ||d          d	           t	          t          ||d
          t          ||d          d	           t	          t          ||d          t          ||d          d	           d S )Nr7   r   皙?r!   g|۽r,   g8   ?gư>r}   g ?r)   go    @)r0   randomRandomStaterandr   r   )rH   r2   r3   s      r4    test_tweedie_deviance_continuityr     sW   IY""1%%**955;FY""1%%**955;FffI>>>ffA666   ffI>>>ffA666    ffI>>>ffA666    ffI>>>ffA666     r6   c                      t           j                            d          } |                     d          }d|z  }t	          ||          t          j        d          k    sJ d S )N*   r7   sizeg333333?r.   )r0   r   r   exponentialr   rV   rW   )random_number_generatorr2   r3   s      r4   #test_mean_absolute_percentage_errorr     sb     i33B77$00c0::F6\F)&&99V]3=O=OOOOOOOr6   distribution)normal	lognormalr   uniformtarget_quantile)皙?r#         ?c                    t          t          d          st          j        d           dt          j                            d          } t          ||                     t          j                  }t          j        |          }t          |          }t          j        t          j
        dd	d
                    }|D ]}t          j        |          }t          |          }	|	|t          j        |j                  j        z
  k    sJ ||k              z
                                  d	z
  z  |k             |z
                                  z  z   }
|
z  }
t          |
|	           fd}t!          j        |                                d          }|j        sJ |j        t          j        |d          k    sJ |j        t          j        |          k    sJ d S )NquantilezOThis test requires a more recent version of numpy with support for np.quantile.i  r   r   
fill_valuer%   r   r!   r7   c                 T    t          j        |           }t          |          S )Nr   r%   )r0   fullr   )xconstant_preddatarH   r   s     r4   objective_funczFtest_mean_pinball_loss_on_constant_predictions.<locals>.objective_funcE  s,    	a888 }OLLLLr6   zNelder-Mead)methodg{Gz?)rel)hasattrr0   rV   skipr   r   getattrr   r   r   linspacefinfodtypeepsrD   r   r   minimizerG   successr   rW   fun)r   r   rng	best_predbest_constant_predbest_pblcandidate_predictionspredr   r   expected_pblr   resultr   rH   s    `           @@r4   .test_mean_pinball_loss_on_constant_predictionsr     s6   
 2z"" 
,	
 	
 	
 I
)


#
#C%73%%9555D D/22IyAAA '9QQQH Kbk!Q.D.DEE% / /	d;;;m?KKK
 h(.!9!9!====== tD4K0055771;NO%
#%%/S" " 		!L#....M M M M M M M ~tyy{{=QQQF>8v}YD9999999:x00000000r6   c                     d} t           j                            d          }|                    | df          }|                    |           }g d}|D ]}t          t          |d          }t          dd	
          }t          |t          |          |          
                    ||          }|j        d         t          j        |          k    sJ d S )Ni  r   r   r   )r   r   r   r#   r   g?r   F)r&   greater_is_betterr   r   )strategyr   )r   )
param_gridscoring)r0   r   r   r   r   r   r   r   r   dictfitbest_params_rV   rW   )	rH   r   Xyall_quantilesr&   neg_mean_pinball_loss	regressorgrid_searchs	            r4   $test_dummy_quantile_parameter_tuningr   P  s   
 I
)


"
"C

A
''AY''A;;;M L L +#!
 !
 !

 #JFFF	"]333)
 
 
 #a))	 	 '
3v}U7K7KKKKKKL Lr6   c                     t           j                            d          } d}|                     |          }|                                |                     |          z   }t          ||          t          ||d          dz  k    sJ d S )Ni  r7   r   r#   r%   r)   )r0   r   r   r   copyr   r   r   )r   rN   r2   r3   s       r4   #test_pinball_loss_relation_with_maer   k  s    
)


$
$CAZZQZF[[]]S[[^^+FFF++VV3777!;	< 	< 	< 	< 	< 	<r6   )r   )9	itertoolsr   numpyr0   rV   numpy.testingr   scipyr   scipy.specialr   r   sklearn.dummyr   sklearn.exceptionsr	   sklearn.metricsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.metrics._regressionr   sklearn.model_selectionr   sklearn.utils._testingr   r   r   rP   rZ   ru   r   r   r   r   r   markparametrizer   r   r   r   r   r    r6   r4   <module>r     s              ) ) ) ) ) )       * * * * * * * * ( ( ( ( ( ( 5 5 5 5 5 5                                   $ ; : : : : : 0 0 0 0 0 0         W W W Wt/ / /T( T( T(n_< _< _<D1 1 12L L L[6 [6 [6|0 0 0D H.>@P#QRR  SR  DP P P EEE  *,=,=,=>>/1 /1 ?> /1dL L L6	 	 	 	 	r6   