a
    h                  
   @   s  d dl Zd dl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 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 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& d d
l'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ej./de(e) e* e, dd Z0dd Z1dd Z2ej./dej3ej4ej5ej6fdd Z7ej./dej3ej4ej5ej6fdd Z8ej./dddd Z9ej./dg ddd Z:ej./dej5ej6fej./de*d d! Z;d"d# Z<d$d% Z=d&d' Z>d(d) Z?ej./de+e, d*d+ Z@d,d- ZAej./d.d/d0gd1d2 ZBd3d4 ZCd5d6 ZDej./d7g d8ej./d9g d8ej./dg d:ej./d;eEd<d=d> ZFd?d@ ZGej./dAejHg dBej3dCejHdDd<gej4dCgeIej4fejHg dBej3dCejHdDd<gej6dCgeIej6fejHg dBej3dCejHdEdFgeJdCgeIeJfgdGdH ZKeL dIdJ ZMej./dej5ej6gdKdL ZNej./dMg dNej./dOg dPej./dQg dRdSdT ZOej./dej5ej6gdUdV ZPdWdX ZQdYdZ ZRed[d\ ZSd]d^ ZTd_d` ZUdadb ZVdcdd ZWej.j/deejHge*dfgdgdh e*D  diej.j/djejHge*dfgdkdh e*D  didldm ZXej./de*dndo ZYej.j/dpejHge*dfgdqdh e*D  didrds ZZej./dtdudvgdwdx Z[dydz Z\dS ){    N)linalgsparse)eigh)eigsh)make_low_rank_matrixmake_sparse_spd_matrix)gen_batches)_init_arpack_v0)assert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalskip_if_32bit)_approximate_mode_deterministic_vector_sign_flip_incremental_mean_and_var_randomized_eigsh_safe_accumulator_op	cartesiandensityrandomized_svd	row_normssafe_sparse_dotsoftmaxstable_cumsumsvd_flipweighted_mode)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS_modesparse_containerc                 C   sF   t jd}|jddd}d|d< d|d< t| |t|ksBJ d S )Nr   
   r%      size)      )r'      )nprandomRandomStaterandintr   )r$   rngX r3   \/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/utils/tests/test_extmath.pytest_density/   s
    r5   c                  C   sh   t jd} | jddd}t |j}dD ]8}t||\}}t|||d\}}t|| t|| q*d S )Nr   r%   r&   r(   )Nr   r*   axis)	r-   r.   r/   r0   onesshaper#   r   r   )r1   xweightsr7   modescoreZmode2Zscore2r3   r3   r4   test_uniform_weights<   s    
r>   c                  C   s   d} t jd}|j| dd}||j}| |d d d df< |d d d df  d7  < t||dd\}}t||  t|	 |d d d df 
d d S )N   r   d   r%   r(   r'   r*   r6   )r-   r.   r/   r0   random_sampler9   r   r   r   Zravelsum)Zmode_resultr1   r:   wr<   r=   r3   r3   r4   test_random_weightsJ   s    
rE   dtypec              	   C   sr  d}d}d}d}| t jkrdnd}t | } t|||dddj| d	d
}|j||fksZJ tj|d	d\}}}	|j| d	d
}|j| d	d
}|	j| d	d
}	dD ]}
t|||
dd\}}}| j	dkr|j| ksJ |j| ksJ |j| ksJ n4|jt j
ksJ |jt j
ksJ |jt j
ks"J |j||fks6J |j|fksHJ |j||fks\J t|d | ||d tt |d d d |f |	d |d d f t |||d tD ]}||}t|||
dd\}}}| j	dkr|j| ksJ |j| ksJ |j| ksJJ n6|jj	dks&J |jj	dks8J |jj	dksJJ t|d | |d | |d qqd S )NrA     r'   r%              r   	n_samples
n_featureseffective_rankZtail_strengthrandom_stateFcopyZfull_matrices)autoLUQRpower_iteration_normalizerrN   fdecimal)r-   float32rF   r   astyper9   r   svdr   kindfloat64r   dotr    )rF   rK   rL   rankkrY   r2   UsVt
normalizerZUasaZVacsr_containerr3   r3   r4   'test_randomized_svd_low_rank_all_dtypes\   sf    


6rh   c                 C   s   t jd}t t jg d| d}t j|j|jdd }|| |j	 }t
|ddd\}}|jd	kslJ t|d
dg |jdksJ tt t
|ddd W d   n1 s0    Y  dS )z@Test that `_randomized_eigsh` returns the appropriate components*   )      ?       rI         @rF   r(   r   r+   module)n_components	selection)r+   rl   rk   )   r+   valueN)r-   r.   r/   diagarrayr   Zqrnormalr9   Tr   r   pytestZraisesNotImplementedError)rF   r1   r2   Zrand_roteigvalseigvecsr3   r3   r4   test_randomized_eigsh   s    r{   ra   )r%   2   rA         c              	   C   s  d}t |dd}t|| dddd\}}t|| dddddd	\}}t|||  |d
 fd\}}| ddd }	||	 }|dd|	f }|j| fksJ t||dd t||dd |j|| fksJ t|j}
t	||
\}}t	||
\}}t	||
\}}t||dd t||dd | |k rt
|dd}t|| ddd|d\}}| ddd }	||	 }t||dd |dd|	f }t	||
\}}t||dd dS )a&  Check that `_randomized_eigsh` is similar to other `eigsh`

    Tests that for a random PSD matrix, `_randomized_eigsh` provides results
    comparable to LAPACK (scipy.linalg.eigh) and ARPACK
    (scipy.sparse.linalg.eigsh).

    Note: some versions of ARPACK do not support k=n_features.
    r~   r   )rN   rn      )ro   rp   n_iterrN      rT   )ro   r   Zn_oversamplesrN   rV   rp   r*   )Zsubset_by_indexNr?   rX   rq   ZLA)whichtolmaxiterv0r%      )r   r   r   Zargsortr9   r   r-   Z
zeros_likerv   r   r	   r   )ra   rL   r2   ry   rz   Z
eigvals_qrZ
eigvecs_qrZeigvals_lapackZeigvecs_lapackindicesZ
dummy_vecs_r   Zeigvals_arpackZeigvecs_arpackr3   r3   r4   (test_randomized_eigsh_compared_to_others   sR    





r   zn,rank))r%   rH   r@   )rA   P   )rG   r%   )rG      )rG   i  c                 C   s   || k sJ t jd}|| |}||j }t|||d\}}tt jj|ddt 	|j
 t|j| t t 	|j
 |t | |j }t||dd dS )a  Check that randomized_eigsh is able to reconstruct a low rank psd matrix

    Tests that the decomposition provided by `_randomized_eigsh` leads to
    orthonormal eigenvectors, and that a low rank PSD matrix can be effectively
    reconstructed with good accuracy using it.
    E   )ro   rN   r   r6   r?   rX   N)r-   r.   r/   randnrv   r   r   r   normr8   r9   rs   )nr`   r1   r2   ASVZA_reconstructr3   r3   r4   &test_randomized_eigsh_reconst_low_rank  s    
r   rg   c                 C   s
  t jddd}| t ju r$d}nd}|j| dd}|d jdd	}t|t|d
d| tt 	|t|| t j
t jfD ]}||| d}|t ju r|jj|dd|_|jj|dd|_|jj|ksJ |jj|ksJ t|t|d
d| tt 	|t|| q|d S )Nri   rA   rq   r'   FrO   r+   r*   r6   T)Zsquaredrm   )r-   r.   r/   r   rZ   r[   rC   r   r   sqrtint32int64Zindptrr   rF   )rF   rg   r2   	precisionZsq_normZcsr_index_dtypeZXcsrr3   r3   r4   test_row_norms0  s"    

r   c            
      C   s   d} d}d}d}t | ||ddd}|j| |fks4J tj|dd	\}}}d
D ]j}t||d|dd\}}}t|d | |  dksJ t|||dd\}}	}t|d | |	dd qLd S )NrA   rG   r'   r%   皙?r   rJ   FrQ   rR   nonerS   rT   r   rV   rN   g{Gz?rU   r,   rX   	r   r9   r   r\   r   r-   absmaxr   
rK   rL   r`   ra   r2   r   rc   re   rf   Zsapr3   r3   r4   'test_randomized_svd_low_rank_with_noiseL  s,    
"r   c            
      C   s   d} d}d}d}t | ||ddd}|j| |fks4J tj|dd	\}}}d
D ]l}t||d|dd\}}}t|d | |  dksJ t||d|dd\}}	}t|d | |	dd qLd S )NrA   rG   r'   r%   rj   r   rJ   FrQ   r   r   r   r,   rX   r   r   r3   r3   r4   !test_randomized_svd_infinite_ranku  s,    
"
r   c               	   C   s\  d} d}d}d}t | ||ddd}|j| |fks4J t||dd	dd
\}}}t||dddd
\}}	}
t||dddd
\}}}tj|d	d\}}}t||d | dd t|	|d | dd t||d | dd tt||t|d d d |f |d |d d f dd tt||
t|d d d |f |d |d d f dd t|	| d S )NrA   rG   rq   r%   g      ?r   rJ   r,   F)r   	transposerN   TrR   rQ   rX   r+   )r   r9   r   r   r\   r   r-   r_   )rK   rL   r`   ra   r2   U1s1V1U2s2V2ZU3Zs3ZV3ZU4Zs4ZV4r3   r3   r4   )test_randomized_svd_transpose_consistency  s,    >>r   c               	   C   s  t jd} tddd| d}|d| jdd|jd	 7 }d}t||dd
dd\}}}||t || }t	j
|dd}t||dd
dd\}}}||t || }t	j
|dd}t || dksJ dD ]}	t||d|	dd\}}}||t || }t	j
|dd}dD ]^}
t|||
|	dd\}}}||t || }t	j
|dd}dt || ksJ qqd S )Nri   rA   rG   r|   rM   rN   r,   r   r+   r(   r   r   Zfro)ordr   )rS   rT   rR   )r'   r%   r|      )r-   r.   r/   r   r0   r9   r   r_   rs   r   r   r   )r1   r2   ro   rb   rc   rd   r   Zerror_2Zerror_20re   ierrorr3   r3   r4   .test_randomized_svd_power_iteration_normalizer  sH    

r   c                 C   sx   t jd}tddd|d}d}| |}d| j}tjtj	|d  t
||d	d
d W d    n1 sj0    Y  d S )Nri   r|   r   r%   r   r'   zCCalculating SVD of a {} is expensive. csr_matrix is more efficient.)matchr*   r   )r   rV   )r-   r.   r/   r   format__name__rw   warnsr   ZSparseEfficiencyWarningr   )r$   r1   r2   ro   Zwarn_msgr3   r3   r4   #test_randomized_svd_sparse_warnings  s    r   c                  C   s  t jd} d}d}| ||}tj|dd\}}}t||dd\}}tt || ||dd |j	}	tj|	dd\}}}t||d	d\}
}tt |
| ||	dd t||d	d\}}tt || ||	dd t||dd\}}tt || ||	dd d S )
N  r   r%   FrQ   Zu_based_decisionr?   rX   T)
r-   r.   r/   r   r   r\   r   r   r_   rv   )rsrK   rL   r2   rb   r   rd   r   r   ZXTr   r   ZU_flip1ZV_flip1ZU_flip2ZV_flip2r3   r3   r4   test_svd_flip  s    r   zn_samples, n_features)r,   rq   )rq   r,   c                 C   s   t j|}|| |}tj|dd\}}}t||dd\}}t jt |dd}	||	t 	|j
d f dk svJ t||dd\}}
t jt |
dd}|
t 	|
j
d |f dk sJ d S )NFrQ   Tr   r   r6   r*   )r-   r.   r/   r   r   r\   r   argmaxr   aranger9   all)rK   rL   Zglobal_random_seedr   r2   rb   r   rd   r   Zmax_abs_U1_row_idx_for_colr   Zmax_abs_V2_col_idx_for_rowr3   r3   r4   test_svd_flip_max_abs_cols  s    $r   c                  C   s   t ddgddgg} t| dddd\}}}tdD ]x}t| dd|d\}}}t|| t|| tt || ||  tt |j|t d tt |j|t d q4d S )	Ng       @rI   rj   r+   T)   	flip_signrN   r%   )r-   rt   r   ranger   r_   rv   eye)au1r   Zv1seedu2r   Zv2r3   r3   r4   test_randomized_svd_sign_flip$  s    

r   c            	      C   s   dd } t ddd}t|dddd	\}}}| ||\}}|sFJ |rNJ t|ddddd
\}}}| ||\}}|s|J |rJ d S )Nc                 S   sL   t | jdd| jddk }t |jdd|jddk }||fS )z
        returns bool tuple indicating if the values maximising np.abs
        are positive across all rows for u and across all columns for v.
        r   r6   r*   )r-   r   r   r   )uvu_basedv_basedr3   r3   r4   max_loading_is_positive5  s    ""zMtest_randomized_svd_sign_flip_with_transpose.<locals>.max_loading_is_positiver   r%   r   r,   Tr   r   )r   r   rN   )r-   r   reshaper   )	r   ZmatZ	u_flippedr   Z	v_flippedr   r   Zu_flipped_with_transposeZv_flipped_with_transposer3   r3   r4   ,test_randomized_svd_sign_flip_with_transpose0  s    	
r   r   )r|   rA   ,  m)r%   r   r|   r   r'   c                 C   s   t j|}|| |}t||ddd\}}}t||ddd\}	}
}|j|	jksTJ t||	ddd |j|
jkstJ t||
ddd |j|jksJ t||ddd d S )NZgesddr   )Zsvd_lapack_driverrN   ZgesvdgMbP?)atolrtol)r-   r.   r/   randr   r9   r
   )r   r   ra   r   r1   r2   r   r   Zvt1r   r   Zvt2r3   r3   r4   !test_randomized_svd_lapack_driverQ  s    r   c                  C   s   t g dt ddgt ddgf} t g dg dg dg d	g d
g dg dg dg dg dg dg dg}t| }t|| t d}t|d d t jf t|f d S )Nr*   r+   r,   rq   r'   r?   rH   )r*   rq   r?   )r*   rq   rH   )r*   r'   r?   )r*   r'   rH   )r+   rq   r?   )r+   rq   rH   )r+   r'   r?   )r+   r'   rH   )r,   rq   r?   )r,   rq   rH   )r,   r'   r?   )r,   r'   rH   r,   )r-   rt   r   r   r   newaxis)ZaxesZtrue_outoutr:   r3   r3   r4   test_cartesiank  s(    (

r   zarrays, output_dtyper   rm   rq   r:   yc                 C   s   t | }|j|ksJ dS )z8Check that the cartesian product works with mixed types.N)r   rF   )ZarraysZoutput_dtypeoutputr3   r3   r4   test_cartesian_mix_types  s    r   c                   C   s   t jdS )Nri   )r-   r.   r/   r3   r3   r3   r4   r1     s    r1   c           
      C   s   d}|  dd|| }|  |jd | }t|ddd|d\}}}tj||dd}tj|d |dd|d  }	t|| t||	 d S )Nr%     r   r   sample_weightr;   r7   r+   )r   r[   r9   r   r-   averager   )
r1   rF   Zmultr2   r   meanvarr   expected_meanexpected_varr3   r3   r4   2test_incremental_weighted_mean_and_variance_simple  s    
r   r   )r       cAg    cr   )r*   :0yE>g     j@zweight_loc, weight_scale))r   r*   )r   r   )r*   r   )r%   r*   )r   r*   c                 C   s   dd }d}|j |||d d}|j | ||d}ttj||dd}	ttj||	 d |dd}
||||	|
 |j | ||d}t|d }ttj|dd}	ttj|dd}
||||	|
 d S )	Nc           
   	   S   s   | j d }d|d d |d d |d d |fD ]V}d\}}}t||D ]$}	t| |	 |||||	 d\}}}qHt|| t||dd	 q0d S )
Nr   r*   r%   rq   r+   )r   r   r   r   ư>)r   )r9   r   r   r
   )
r2   r   r   r   r   
chunk_size	last_meanZlast_weight_sumZlast_varbatchr3   r3   r4   _assert  s    
*

z<test_incremental_weighted_mean_and_variance.<locals>._assert)rA   r   r   )locscaler)   r   r+   r6   )ru   r   r-   r   r8   r   r   )r   r   Z
weight_locZweight_scaler1   r   r)   weightr2   r   r   Zones_weightr3   r3   r4   +test_incremental_weighted_mean_and_variance  s    	r   c              	   C   s   t g d}t g d}t jg dt jd}t d}t 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| }t|||||d\}}	}
t|||||d\}}}t|| t||	 t||
 d S )N     @r   r   r        @r   r   r   r+   r+   r+   r+   rm   r,   rq      r   r   r     r   r   r   r   r   r   r   r   r   r   r   )r-   rt   r   r8   r[   nanr   r
   )rF   	old_meansold_variancesZold_weight_sumZsample_weights_XZsample_weights_X_nanr2   X_nanX_meansX_variancesX_countX_nan_meansX_nan_variancesX_nan_countr3   r3   r4   6test_incremental_weighted_mean_and_variance_ignore_nan  s@    

	


r  c            
      C   s   t g dg dg dg dgj} d}| d |d d f }| |d d d f }|jdd}|jdd}t j|jd |jd t jd}t||||\}}}	t	|| jddd t	|| jddd t	|	| jd  d S )N)iX  i  r   r   r   r+   r   r6   r*   rm   r?   )
r-   rt   rv   r   r   fullr9   r   r   r   )
r   idxZX1ZX2r   r   old_sample_countZfinal_meansZfinal_variancesZfinal_countr3   r3   r4   )test_incremental_variance_update_formulas  s&    
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}t|| ||\}}}t|| ||\}}	}
t|| t|	| t|
| d S )Nr   r   r   rm   r   r   r   r   r   r   )r-   rt   r   r   r   r
   )r   r   r	  r2   r   r   r  r  r  r  r  r3   r3   r4   -test_incremental_mean_and_variance_ignore_nan  s(    	



r  c                  C   s   dd } dd }dd }dd }d	}d
}d}t jdt jd}t jdt jd}t j|d
 |f|t jd}	t j|d
 |f|t jd}
t |	|
f}t | |||  |ksJ |	dd d f t ||d
   }}}t	|
j
d D ]$}||
|d d f |||\}}}q||j
d ksJ t |jdd|  dksBJ t | ||  |ksbJ |	dd d f t | }}t j||d
 t jd}t	|
j
d D ]6}t|
|d d f d|
j
d f|||\}}}qt||j
d  t|jdd| |t | ||  ksJ d S )Nc                 S   s   | j ddS )Nr   r6   )r   )r   r3   r3   r4   np_var=  s    z=test_incremental_variance_numerical_stability.<locals>.np_varc                 S   s:   | j d }| d jdd| }| jdd| d }|| S )Nr   r+   r6   )r9   rC   )r2   r   Zexp_x2Zexpx_2r3   r3   r4   one_pass_varB  s    
zCtest_incremental_variance_numerical_stability.<locals>.one_pass_varc                 S   s*   | j dd}|  }tj || d ddS )Nr   r6   r+   )r   rP   r-   )r2   r   Yr3   r3   r4   two_pass_varK  s    zCtest_incremental_variance_numerical_stability.<locals>.two_pass_varc                 S   sJ   |d }|t | }| | ||  }|| | | | |  |  }|||fS )Nr*   )float)r:   r   Zlast_varianceZlast_sample_countZupdated_sample_countZsamples_ratioZupdated_meanZupdated_variancer3   r3   r4   naive_mean_variance_updateS  s    zQtest_incremental_variance_numerical_stability.<locals>.naive_mean_variance_updater~   r+   i'  g    חArm   gh㈵>r   r6   r   r*   )r-   rt   r^   logr  Zvstackr   r   Zzerosr   r9   r   r   r   r   r   r   )r  r  r  r  r   rL   rK   x1Zx2ZA0A1r   r   r   r   r   r3   r3   r4   -test_incremental_variance_numerical_stability9  s8    	"&"$ $r  c                  C   s\  t jd} | dd}|j\}}dD ].}t d|jd |}|d |jd kr`t ||g}t|d d |dd  D ]\}}|||d d f }|dkr|jdd}	|j	dd}
|jd }t j
|jd |jd t jd	}n&t||	|
|}|\}	}
}||jd 7 }t j|d | dd}t j	|d | dd}t|	|d
 t|
|d
 t|| qzq&d S )Nr   r|   r%   )   r   %   r   r   r*   r6   rm   r?   )r-   r.   r/   r   r9   r   Zhstackzipr   r   r  r   r   r   r   )r1   r2   rK   rL   Z
batch_sizeZstepsr   jr   Zincremental_meansZincremental_variancesZincremental_countZsample_countresultZcalculated_meansZcalculated_variancesr3   r3   r4   test_incremental_variance_ddof  s0    

"
 
r  c                  C   s   t jddd} t jt | dd}t| }t j|dd}t|| t | t	| j
d |f }t| ||d d t jf   d S )N$   r'   r*   r6   r   )r-   r.   r/   r   r   r   r   r   signr   r9   r   )dataZmax_abs_rowsZdata_flippedZmax_rowsZsignsr3   r3   r4   test_vector_sign_flip  s    
r  c                  C   sL   t jd} | dd}t |}t j|ddd}tt|||  d S )Nr   r,   r'   r*   r6   )r   r*   )	r-   r.   r/   r   exprC   r   r   r   )r1   r2   Zexp_XZ	sum_exp_Xr3   r3   r4   test_softmax  s
    
r!  c                  C   s   t tg dtg d tjdd} tt	 t| ddd W d    n1 s\0    Y  tjdj
ddd}t t|dd	tj|dd	 t t|d
d	tj|d
d	 t t|dd	tj|dd	 d S )Nr   r   i )r   r   r  r   )r'   r'   r'   r(   r6   r*   r+   )r   r   r-   Zcumsumr.   r/   r   rw   r   RuntimeWarningr0   )rr   r3   r3   r4   test_stable_cumsum  s    ,r$  A_containerZdensec                 C   s   g | ]
}|j qS r3   r   .0	containerr3   r3   r4   
<listcomp>      r*  )ZidsB_containerc                 C   s   g | ]
}|j qS r3   r&  r'  r3   r3   r4   r*    r+  c                 C   sX   t jd}|d}|d}t ||}| |}||}t||dd}t|| d S )Nr      r%   )r%   r   Tdense_outputr-   r.   r/   rB   r_   r   r
   )r%  r,  r1   r   Bexpectedactualr3   r3   r4   test_safe_sparse_dot_2d  s    

r5  c                 C   s   t jd}|d}|d}t ||}| |}t||}t|| |d}|d}t ||}| |}t||}t|| d S )Nr   )r+   r,   rq   r'   r?   )r?   rH   )r+   r,   )rq   r'   r,   r?   r1  )rg   r1   r   r2  r3  r4  r3   r3   r4   test_safe_sparse_dot_nd  s    






r6  r)  c                 C   s   g | ]
}|j qS r3   r&  r'  r3   r3   r4   r*    r+  c                 C   sv   t jd}|d}|d}t ||}t| ||}t|| |d}t ||}t|| |}t|| d S )Nr   r%   r-  )r%   r.  r1  )r)  r1   r2  r   r3  r4  r3   r3   r4   test_safe_sparse_dot_2d_1d  s    



r7  r0  TFc                 C   sv   t jd}tjddd|d}tjddd|d}||}t||| d}t||  ks\J | rh| }t|| d S )Nr   r.  r%   r   )r   rN   r   r/  )	r-   r.   r/   r   r_   r   issparseZtoarrayr   )r0  r1   r   r2  r3  r4  r3   r3   r4   !test_safe_sparse_dot_dense_output  s    
r9  c                  C   s4   t jddgt jd} t| ddd}t|ddg d	S )
a  Make sure sklearn.utils.extmath._approximate_mode returns valid
    results for cases where "class_counts * n_draws" is enough
    to overflow 32-bit signed integer.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i r   rm   ia  r   )Zclass_countsZn_drawsr1   i`  r   N)r-   rt   r   r   r   )r2   retr3   r3   r4   test_approximate_mode  s    r;  )]numpyr-   rw   Zscipyr   r   Zscipy.linalgr   Zscipy.sparse.linalgr   Zsklearn.datasetsr   r   Zsklearn.utilsr   Zsklearn.utils._arpackr	   Zsklearn.utils._testingr
   r   r   r   r   r   Zsklearn.utils.extmathr   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsklearn.utils.fixesr   r   r    r!   r"   r#   markZparametrizer5   r>   rE   r   r   rZ   r^   rh   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   rF   objectr   Zfixturer1   r   r   r  r
  r  r  r  r  r!  r$  r5  r6  r7  r9  r;  r3   r3   r3   r4   <module>   s    @ 

	
O

G
)) -

!&
&
$


&
$
H 





