o
    tBhx                     @   s  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 d dlmZmZmZmZ d dlmZ d	d
 Z e j!"dej#ej$ge j!"dej%ej&gdd Z'dd Z(e j!"g dg dg dgg dg dgg dfg dg dgg dg dgg dfg dg dgg dg dgdfd ej)dgd ej)ej)ggd ej)dgd ej)ej)ggg dfd d gdej)gdd gd dgej)ej)gej)dggg dddej)gg dg dej)ej)ej)gej)ej)dggd d!gfg d"g d#gg d$g d%ge*g d&fge j!"dej&ej%ge j!"dej#ej$gd'd( Z+e j!"g dg dg dgg dg dgddgfg dg dgg dg dg dgddgfg dg dgg dg dgdfd ej)dgd ej)ej)ggd ej)dgd ej)ej)ggd!d!gfd d dej)dd gd dej)ej)ej)dggd d dej)dd gd d dej)dd gd dej)ej)ej)dggd d!gfg d"g dgg d"g dg dg dge*ddgfge j!"dej&ej%ge j!"dej#ej$gd)d* Z,d+d, Z-e j!"dej&ej%gd-d. Z.e j!"d/ej/d0dd1d2d d3ej/d4dd1d2d d3fej/d0dd1d2d d3ej0e%ej1d5ej)d6ej/d4dd1d7d8gd2d9fgd:d; Z2d<d= Z3d>d? Z4e j!"d@d dge j!"dej&ej%gdAdB Z5dCdD Z6dEdF Z7dGdH Z8dIdJ Z9dKdL Z:dMdN Z;e j!"dej#ej$ge j!"d@g dOe j!"dPej%ej&ge j!"dQd ej<ej=dRfej)ej>ej?dSfge j!"dTdSdRgdUdV Z@dWdX ZAdYdZ ZBd[d\ ZCd]d^ ZDe j!"dej#ej$gd_d` ZEdS )a    N)linalg)assert_array_almost_equalassert_array_equal)RandomState)make_classification)	mean_variance_axisincr_mean_variance_axisinplace_column_scaleinplace_row_scaleinplace_swap_rowinplace_swap_columnmin_max_axiscount_nonzerocsc_median_axis_0)assign_rows_csrinplace_csr_row_normalize_l1inplace_csr_row_normalize_l2csr_row_norms)assert_allclosec                  C   sB  t dddd\} }d| d< d| d< d| d< t| }d|d< d| d< tt t|dd	 W d    n1 s8w   Y  t|}t|}t	j
t	j
ft	jt	jft	jt	jft	jt	jfg}|D ]?\}}| |}||fD ]1}	|	|}	t|	dd	\}
}|
j|ksJ |j|ksJ t|
t	j|dd	 t|t	j|dd	 qlq_d S )
N      r   random_stater   r         r      r   r   axisr   sp
lil_matrixpytestraises	TypeErrorr   
csr_matrix
csc_matrixnpfloat32float64int32int64astypedtyper   meanvarX_X_lilX_csrX_cscexpected_dtypesinput_dtypeoutput_dtypeX_testX_sparseX_meansX_vars r@   {/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_sparsefuncs.pytest_mean_variance_axis0   8   








rB   r0   sparse_constructorc                 C   s   t jd}t jdd| d}|jt |jd ddd}t j||df< ||}||jd 	| }t
||dd\}}|t | jk sEJ d S )	Nr   g      Y@)i  r   )
fill_valueshaper0   
   F)replace)weightsr!   )r*   randomr   fullchoicearangerF   nanrandr/   r   finfoeps)r0   rD   rngr4   missing_indicessample_weightr5   r2   r@   r@   rA   "test_mean_variance_axis0_precision@   s   rU   c                  C   sB  t dddd\} }d| d< d| d< d| d< t| }d|d< d| d< tt t|d	d
 W d    n1 s8w   Y  t|}t|}t	j
t	j
ft	jt	jft	jt	jft	jt	jfg}|D ]?\}}| |}||fD ]1}	|	|}	t|	dd
\}
}|
j|ksJ |j|ksJ t|
t	j|dd
 t|t	j|dd
 qlq_d S )Nr   r   r   r   r   r   r   r   r   r    r"   r3   r@   r@   rA   test_mean_variance_axis1T   rC   rV   )Xwr4   rI   )r   r   r   r   r   r   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )      ?rY   rY   r   r   r   r   r   )r   r   r   )r   r   r   g       @rY   )r   r   r   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   c                 C   sv  d}||  |}|| |}tjt| d |d}tj||d}	tj|tjd}
t||||	|
d d\}}}t||||	|
|d\}}}|j|ksLJ |j|ksSJ |j|ksZJ t||d\}}t	|| t	|| t	|| t	|| t	|| t|||||d d\}}}t||||||d\}}}t	|| t	|| t	|| |j|ksJ |j|ksJ |j|ksJ d S )Nr   r   r0   r4   r!   	last_meanlast_varlast_nrI   r4   r!   )
r/   r*   zerosrF   
zeros_liker.   r   r0   r   r   rW   r4   rI   rD   r0   r!   	Xw_sparser=   r]   r^   r_   means0vars0n_incr0means_w0vars_w0	n_incr_w0means_simplevars_simplemeans1vars1n_incr1means_w1vars_w1	n_incr_w1r@   r@   rA   +test_incr_mean_variance_axis_weighted_axis1v   sj   #		




	
	

rs   c                 C   sp  d}||  |}|| |}tjt| d|d}t|}	tj|tjd}
t||||	|
d d\}}}t||||	|
|d\}}}|j|ksIJ |j|ksPJ |j|ksWJ t||d\}}t	|| t	|| t	|| t	|| t	|| t|||||d d\}}}t||||||d\}}}t	|| t	|| t	|| |j|ksJ |j|ksJ |j|ksJ d S )Nr   r   r[   r\   r`   )
r/   r*   ra   sizerb   r.   r   r0   r   r   rc   r@   r@   rA   +test_incr_mean_variance_axis_weighted_axis0   sj    
		




	
	

ru   c               
      s  dD ]h} t jdd d| dkr  fddtD }nfddt D }| dkr5t  nt }t |}t j|t jd}t |d }t |}| d	krZ|j	n|}t
|}t
|}tt t| |||d
 W d    n1 s~w   Y  tt t|| |||d W d    n1 sw   Y  t|| \}}	t|| |||d\}
}}t||
 t|	| t|j|  | t
|}t|| \}}	t||
 t|	| t|j|  | t |}| d	kr|j	n|}t
|}t
|}t
|}t jt jft jt jft jt jft jt jfg}|D ]Q\}}||fD ]G}||}||}||}t|| \}}	t|| |||d\}
}}|
j|ksMJ |j|ksUJ t||
 t|	| t|j|  | q!qqd S )N)r   r   r   2   rG   c                       g | ]
}j d d dqS r   r   )rt   randint.0i)
n_featuresrR   r@   rA   
<listcomp>A      z0test_incr_mean_variance_axis.<locals>.<listcomp>c                    rw   rx   ry   r{   )	n_samplesrR   r@   rA   r   C  r   r[   r   )r4   r!   r]   r^   r!   r]   r^   r_   )r*   rJ   r   rangera   rb   r.   array
atleast_2dTr#   r$   r(   r%   r&   r'   r   r   r   r   rF   r)   vstackr+   r,   r-   r/   r0   )r!   data_chunksr]   r^   r_   r4   r6   r7   r>   r?   X_means_incrX_vars_incrn_incrr8   r9   r:   r;   r=   r@   )r~   r   rR   rA   test_incr_mean_variance_axis;  s   
























r   c                 C   s:  d\}}t jd}| |||}t |}t |}t j|jt jd}t|||d}t	|fddi|\}	}
}t
t j| dd|	 t
t j| dd|
 tt t	|fddi| W d	   n1 skw   Y  t|d	d
 ||d}tt t	|fddi| W d	   d	S 1 sw   Y  d	S )zCheck that we raise proper error when axis=1 and the dimension mismatch.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/pull/18655
    )<   r   *   r[   )r]   r^   r_   r!   r   r    r   N)r*   rJ   r   rO   ra   rb   rF   r.   dictr   r   r1   toarrayr2   r%   r&   
ValueError)rD   r   r~   rR   r4   r]   r^   r_   kwargsmean0var0r5   r@   r@   rA   )test_incr_mean_variance_axis_dim_mismatch  s"   

"r   zX1, X2r   皙?csr)densityformatr      )r   r   )rE   r   r   r   )r   c           
      C   s   d}t | jd t | jd }}t j| jd t jd}t| ||||d\}}}t|||||d\}}}t| |g}	t|t j|	j	|d t|t j
|	j	|d t|t jt |	j	 dd d S )Nr   r   r[   r   r    )r*   ra   rF   r.   r   r#   r   r   nanmeanAnanvarr   isnan)
X1X2r!   r]   r^   r_   updated_meanupdated_var	updated_nr4   r@   r@   rA   6test_incr_mean_variance_axis_equivalence_mean_variance  s   "

"r   c            	      C   s   d} t jddddd }t jddddd }t|jd t|jd }}tj|jd tjd}t|| |||d\}}}t|| |||d\}}}t|| t|| t|| d S )Nr   r   r   r   r   r[   r   )	r#   rJ   tocsrr*   ra   rF   r.   r   r   )	r!   r   r   r]   r^   r_   r   r   r   r@   r@   rA    test_incr_mean_variance_no_new_n  s   "



r   c                  C   sz   d} t jddddd }t|jd t|jd }}d}t|| |||d\}}}t|t|jd |jd  d S )Nr   r   r   r   r   r   r   )	r#   rJ   r   r*   ra   rF   r   r   rK   )r!   r4   r]   r^   r_   r5   new_nr@   r@   rA   test_incr_mean_variance_n_float  s   "
"r   r!   c              
   C   s  t g d}t g d}t jg dt jd}|t g dg dg dg}|t dt jddgt jdd	d	gd	d	t jd
gd
d
d
t jgg}| rO|j}|j}t|| | | | d\}}}	t|| | | | d\}
}}t|
| t|| t||	 d S )N)     @r   r   r   )     @r   r   r   )r   r   r   r   r[   )   r   r   r   )  r   r   r   ),  r   r   r   r   r   r   r   )r*   r   r.   rN   r   r   copyr   )r!   rD   	old_meansold_variancesold_sample_countr4   X_nanr>   r?   X_sample_countX_nan_means
X_nan_varsX_nan_sample_countr@   r@   rA   'test_incr_mean_variance_axis_ignore_nan  sF   

r   c                  C   s  t dddd\} }d| d< d| d< d| d< t| }tt t|dd	 W d    n1 s0w   Y  tt t|d
d	 W d    n1 sKw   Y  tt t|dd	 W d    n1 sfw   Y  tt t|dd d d d W d    n1 sw   Y  tt t|d
d d d d W d    n1 sw   Y  tt t|dd d d d W d    d S 1 sw   Y  d S )Nr   r   r   r   r   r   r   r    r   r   r   )r   r#   r(   r%   r&   r   r   r   )r4   r5   r7   r@   r@   rA   test_mean_variance_illegal_axis   s:   



"r   c                  C   s   t jt jfD ]U} tjg dg dg dg dg dg| d}t jg dt jd}t jd|jd	 f| d}t jg d
t jd}t 	|}||d d f 
 ||< t|||| t|| qd S )Nr   r   r   r   r   r   rZ   	         r   r   r   r[   rX      r   )r   r   r   )r*   r+   r,   r#   r(   r   intponesrF   	ones_liker   r   r   )r0   r4   X_rowsoutout_rowsexpectr@   r@   rA   test_densify_rows>  s   "
r   c                  C   sv  t jd} tddd}| }| }| }| d}||9 }t|| t|| t	| |  t	||  t	||  t
t t| | W d    n1 sZw   Y  |t j}|t j}| }| }| }||9 }t|| t|| t	| |  t	||  t	||  t
t t| | W d    d S 1 sw   Y  d S )Nr   d      皙?)r*   rJ   r   r#   rO   r   tocscr   r	   r   r%   r&   r'   tolilr/   r+   rR   r4   XrXcXAscaler@   r@   rA   test_inplace_column_scaleN  s:   




"r   c                  C   s  t jd} tddd}| }| }| }| d}||dd9 }t	|| t	|| t
| |  t
||  t
||  tt t| | W d    n1 s^w   Y  |t j}|t j}| }| }| }||dd9 }t	|| t	|| t
| |  t
||  t
||  tt t| | W d    d S 1 sw   Y  d S )Nr   r   r   r   r   r   )r*   rJ   r   r#   rO   r   r   r   reshaper
   r   r%   r&   r'   r	   r   r/   r+   r   r@   r@   rA   test_inplace_row_scalen  s:   




"r   c                  C   s  t jg dg dg dg dg dgt jd} t| }t| }td| f}|d }|| d | d	 \| d< | d	< t|dd	 t|dd	 t	|
 |
  t	| |
  t	| |
  || d
 | d \| d
< | d< t|d
d t|d
d t	|
 |
  t	| |
  t	| |
  tt t|  W d    n1 sw   Y  t jg dg dg dg dg dgt jd} t| }t| }td| f}|d }|| d | d	 \| d< | d	< t|dd	 t|dd	 t	|
 |
  t	| |
  t	| |
  || d
 | d \| d
< | d< t|d
d t|d
d t	|
 |
  t	| |
  t	| |
  tt t|  W d    d S 1 sSw   Y  d S )Nr   r   rZ   r   r   r[   swapr   r   r   r   )r*   r   r,   r#   r(   r)   r   get_blas_funcsr   r   r   r%   r&   r'   r   r+   r4   r7   r8   r   r@   r@   rA   test_inplace_swap_row  sX   $

$

$r   c                  C   s4  t jg dg dg dg dg dgt jd} t| }t| }td| f}|d }|| d d df | d d d	f \| d d df< | d d d	f< t|dd	 t|dd	 t	|
 |
  t	| |
  t	| |
  || d d df | d d d
f \| d d df< | d d d
f< t|dd
 t|dd
 t	|
 |
  t	| |
  t	| |
  tt t|  W d    n1 sw   Y  t jg dg dg dg dg dgt jd} t| }t| }td| f}|d }|| d d df | d d d	f \| d d df< | d d d	f< t|dd	 t|dd	 t	|
 |
  t	| |
  t	| |
  || d d df | d d d
f \| d d df< | d d d
f< t|dd
 t|dd
 t	|
 |
  t	| |
  t	| |
  tt t|  W d    d S 1 sw   Y  d S )Nr   r   rZ   r   r   r[   r   r   r   r   )r*   r   r,   r#   r(   r)   r   r   r   r   r   r%   r&   r'   r   r+   r   r@   r@   rA   test_inplace_swap_column  sX   $

>>$

>>$r   )r   r   Nsparse_formatz.missing_values, min_func, max_func, ignore_nanFTlarge_indicesc                 C   s   t jg ddd|gg dd|dgg dg| d}||}	|r,|	jd	|	_|	jd	|	_t|	||d
\}
}t|
|||d t||||d d S )Nr   r   r   rZ   r   r   r   r[   r.   )r!   
ignore_nanr    )r*   r   indicesr/   indptrr   r   )r0   r!   r   missing_valuesmin_funcmax_funcr   r   r4   r=   mins_sparsemaxs_sparser@   r@   rA   test_min_max  s    
r   c                  C   s   t jg dg dg dg dg dgt jd} t| }t| }tt t	|
 dd W d    n1 s9w   Y  tt t	|d	d W d    n1 sTw   Y  tt t	|d
d W d    d S 1 spw   Y  d S )Nr   r   r   r   rZ   r   r   r[   r   r    r   r   )r*   r   r,   r#   r(   r)   r%   r&   r'   r   r   r   )r4   r7   r8   r@   r@   rA   test_min_max_axis_errors  s   $

"r   c               
   C   s  t jg dg dg dg dg dgt jd} t| }t| }| dk}g d}|t |d d d f  }d	D ]}tt||d
|j|d
 tt|||d|j|d
 q8t	
t t| W d    n1 sjw   Y  t	
t t|dd
 W d    n1 sw   Y  t|dd
jt|dd
jksJ t|d|djt|d|djksJ z5|jt j|_|jt j|_t|dd
jt|dd
jksJ t|d|djt|d|djksJ W d S  ty } zd|jd v rt  jdk sJ |W Y d }~d S d }~ww )Nr   r   rZ   r   r   r[   r   )      ?g?g333333?皙?r   )r   r   r   Nr    )r!   rT   r   r   zaccording to the rule 'safe'r   )r*   r   r,   r#   r(   r)   r   r   sumr%   r&   r'   r   r0   r   r/   r.   r   argsr   nbytes)r4   r7   r8   	X_nonzerorT   X_nonzero_weightedr!   er@   r@   rA   test_count_nonzero"  sJ   $



  2r   c                  C   sT  t jd} | dd}t j|dd}t|}t|}t|| | dd}d||dk < | 	ddd}||  ||< t|}t j|dd}t|}t|| dd	gd
d
gddgddgg}t|}tt|t 
ddg dd	gd
dgddgg}t|}tt|t 
ddg tt tt| W d    d S 1 sw   Y  d S )Nr   r   rv   r    3   g        gffffff?rG   r   r   r   r   r   g      r   )r*   rJ   r   rO   medianr#   r)   r   r   rz   r   r%   r&   r'   r(   )rR   r4   dense_mediancscsparse_medianindr@   r@   rA   test_csc_row_medianN  s.   





"r   c                  C   s   t d} td}ttfD ]g}t jt jfD ]^}|dd|}t	
|}t jt jfD ]G}|t ju r@|j||_|j||_|jj|ksHJ |jj|ksPJ || |j|ks[J |tu rf| jdC  _tt |jdd|  q+qqd S )N)rG   r   rG   r   r   r   r    )r*   r   r   r   r   r,   r+   randnr/   r#   r(   r-   r.   r   r   r0   datar   absr   )r   rsinplace_csr_row_normalizer0   r4   r7   index_dtyper@   r@   rA   test_inplace_normalizep  s,   


r  c                 C   sb   t jddd| dd}t jj|ddd }t|}|j| ksJ | tjkr&d	nd
}t|||d d S )Nr   rG   r   r   )r   r0   r   r   r    r   gư>gHz>)rtol)	r#   rJ   r   normr   r0   r*   r+   r   )r0   r4   scipy_normsnormsr  r@   r@   rA   test_csr_row_norms  s   r	  )Fr%   numpyr*   scipy.sparsesparser#   scipyr   numpy.testingr   r   numpy.randomr   sklearn.datasetsr   sklearn.utils.sparsefuncsr   r   r	   r
   r   r   r   r   r   sklearn.utils.sparsefuncs_fastr   r   r   r   sklearn.utils._testingr   rB   markparametrizer+   r,   r(   r)   rU   rV   rN   r   rs   ru   r   r   rJ   hstackrK   r   r   r   r   r   r   r   r   r   r   minmaxnanminnanmaxr   r   r   r   r  r	  r@   r@   r@   rA   <module>   s    ,""$$ .
D$* &
DQ

/  00 ,"