o
    tBhZ                     @   s  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
 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 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 ejddgddgddgddgddgddggddZeg dZeg dZejdgdgdgdgdgdggddZed d gddgddgddgddgddgddgddgddgg	Zeg dZ eg dZ!edgdgdgdgd gdgdgdgdgg	Z"edd gdd gdd gdd gd d gdd gdd gdd gdd gg	Z#eg dZ$ej%e&de'df Z(eg d Z)g d!Z*d"d# Z+ej,-d$ddgej,-d%g d&d'd( Z.d)d* Z/d+d, Z0d-d. Z1d/d0 Z2d1d2 Z3d3d4 Z4d5d6 Z5ej,-d7e6d8d9d: Z7d;d< Z8ej,-d=dd>gej,-d$d>dgd?d@ Z9ej,-dAej:ej:fej;ej;fej<ej;fej=ej;fgdBdC Z>dDdE Z?dFdG Z@dHdI ZAdJdK ZBdLdM ZCdNdO ZDej,-d%dPdQgdRdS ZEdTdU ZFdS )V    N)linalg)check_random_state)assert_array_equal)assert_array_almost_equal)assert_allclose)assert_almost_equal)
make_blobs)LinearDiscriminantAnalysis)QuadraticDiscriminantAnalysis)_cov)ledoit_wolf)KMeans)ShrunkCovariance)
LedoitWolf)StandardScaler      fdtype)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   r   r   r   )	r   r   r   r   r   r   r   r   r      )r   r   )r   r   r   r   r   r   r   r   )	)svdN)lsqrN)eigenN)r   auto)r   r   )r   Q?)r   r   )r   r   )r   r   c            	      C   s$  t D ]n} | \}}t||d}|ttt}t|td|  |ttt}t|td|  |t}t|d d df dkd td|  |	t}t
t||ddd| d |ttt}t|tkspJ d| qtddd}tt |tt W d    n1 sw   Y  td	d
d}tt |tt W d    n1 sw   Y  tddd}tt |tt W d    n1 sw   Y  tdtddgd}tjtdd |tt W d    n1 sw   Y  tddt d}tjtdd |tt W d    n	1 sw   Y  td
d}tt |tt W d    n	1 s>w   Y  tdt d}tjtdd |tt W d    n	1 scw   Y  tdtddd}tjtdd |tt W d    d S 1 sw   Y  d S )Nsolver	shrinkagez	solver %sr         ?ư>)rtolatolerr_msgr   giq̿r   dummyr   r   r   z%shrinkage must be a float or a stringmatch皙?)r!   r"   covariance_estimatorz[covariance_estimator and shrinkage parameters are not None. Only one of the two can be set.r!   )r!   r,   z.covariance estimator is not supported with svd)
n_clustersz,KMeans does not have a covariance_ attribute)solver_shrinkager	   fitXypredictr   X1predict_probapredict_log_probar   npexpy3anypytestraises
ValueErrorNotImplementedErrorarray	TypeErrorr   r   r   )		test_caser!   r"   clfy_predy_pred1y_proba_pred1y_log_proba_pred1y_pred3 rH   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/tests/test_discriminant_analysis.pytest_lda_predictG   s|   
$
	

$rJ   	n_classesr!   r   r   r   c              
      s  ddd}t ddgddgddggd  }t ddgdd	gggt| }|d
||dd\}}t| dd d||}t|j|dd t|j|d dd t	|d }g  g t
t|d D ]2}	 t |||	 |d  d d t jf  t d||	 |d  t jd d f   d  qat ddggdd t  fddt
d D }
dt |
 }tddt fddt
d D   }|t|ksJ t|t |
|gt j dd d S )Nc                    sT   t |t fddt |D }t fddtt D }||fS )zNGenerate a multivariate normal data given some centers and
        covariancesc                    s(   g | ]\}}j ||t  d qS )size)multivariate_normallen).0meancovcenters	n_samplesrngrH   rI   
<listcomp>   s    zDtest_lda_predict_proba.<locals>.generate_dataset.<locals>.<listcomp>c                    s   g | ]}|gt    qS rH   )rP   rQ   clazz)rU   rV   rH   rI   rX      s    )r   r7   vstackziphstackrangerP   )rV   rU   covariancesrandom_stater1   r2   rH   rT   rI   generate_dataset   s   z0test_lda_predict_proba.<locals>.generate_datasetr   (   i   
   d   i_ *   )rV   rU   r_   r`   T)r!   store_covariancer"   r+   )r&   r   r         i   c                 S   s   t || t | ||  S N)r7   r8   dot)samplecoef	interceptrZ   rH   rH   rI   discriminant_func   s   z1test_lda_predict_proba.<locals>.discriminant_funcc              
      sF   g | ]}t  |d t fddtd  D   qS )r   c                       g | ]	} |qS rH   rH   rY   alpha_k	alpha_k_0rp   rm   rH   rI   rX          z5test_lda_predict_proba.<locals>.<listcomp>.<listcomp>)floatsumr^   rY   rs   rt   rp   rK   rm   rH   rI   rX      s    
z*test_lda_predict_proba.<locals>.<listcomp>c                    rq   rH   rH   rY   rr   rH   rI   rX      ru   {Gz?rk   )r7   r?   rP   r	   r0   r   means_covariance_r   invr^   appendrl   newaxisrw   rv   r;   approxr5   r]   )r!   rK   ra   blob_centers	blob_stdsr1   r2   lda	precisionrZ   probprob_ref
prob_ref_2rH   rx   rI   test_lda_predict_proba   sb   
$ 
$ 


r   c                  C   s   t ddg} t| d}d}tjt|d |tt W d    n1 s&w   Y  tddgd}|tt t ddg} t ddg}t| d}t	t
 |tt W d    n1 saw   Y  t|j|d	 d S )
Nr#   ri   priorszpriors must be non-negativer)   333333??g?r   )r7   r?   r	   r;   r<   r=   r0   r1   r2   warnsUserWarningr   priors_)r   rB   msg
prior_normrH   rH   rI   test_lda_priors   s   

r   c                  C   s   d} d}d}t || |dd\}}tdd}tdd}tdd}||| ||| ||| t|j|jd	 t|j|jd	 t|j|jd	 d S )
Nr   i     rV   
n_featuresrU   r`   r   r-   r   r   r   )r   r	   r0   r   coef_)r   rK   rV   r1   r2   clf_lda_svdclf_lda_lsqrclf_lda_eigenrH   rH   rI   test_lda_coefs  s   



r   c                  C   s   t ddd} | ttt}|jd dksJ t ddd} | ttt}|jd dks0J t ddd} | tt d}tjt|d | t W d    d S 1 sVw   Y  d S )Nr   r   )r!   n_componentsr   r   z$transform not implemented for 'lsqr'r)   )	r	   r0   r1   r2   	transformshaper;   r<   r>   )rB   X_transformedr   rH   rH   rI   test_lda_transform)  s   "r   c                  C   s   t jd} | jdddd}| jdddd}tdd	}||| t|j	 d
d |jj
dks4J dtdd	}||| t|j	 d
d |jj
dksRJ dt|j|j d S )Nr   rf   )rc      )locscalerN   r   )rc   rM   r   r-         ?)r   z/Unexpected length for explained_variance_ratio_r   )r7   randomRandomStatenormalrandintr	   r0   r   explained_variance_ratio_rw   r   r   )stater1   r2   r   r   rH   rH   rI   !test_lda_explained_variance_ratio:  s$   

r   c               	   C   sz  t g dg dg dg dg} t g dg dg dg dg d	g d
g}| d d t jd d f |t jd d d d f  d}t t | jd |jd }tdd||}|	| }|d |d  }|d |d  }|t 
t |d  }|t 
t |d  }tt |	|jt d tt t |d d ddgd tt t |d d ddgd 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   r   )r   r   r   r   r-   r   r   r   r   )r7   r?   r~   reshaperepeataranger   r	   r0   r   sqrtrw   r   rS   Teyeabsrl   )meansscatterr1   r2   rB   means_transformedd1d2rH   rH   rI   test_lda_orthogonalityW  s*   "6
$(r   c                  C   s   d} t jd}|dd| dfg d }|dd| dfg d }t ||fg d }dg|  dg|   }d	D ]}t|d
}|||||dksRJ d| q9d S )Nrf   i  r   r   r   )rb   r   r   )re   r   r   )r   rf   i'  rL   r-   r   zusing covariance: %s)r7   r   r   uniformr[   r	   r0   score)nrW   x1x2xr2   r!   rB   rH   rH   rI   test_lda_scaling  s   
&r   c                  C   s   dD ]2} t | dtt}t|dsJ t | ddtt}t|ds%J t|jtddgddgg qt d	dtt}t|drEJ t | ddtt}t|dsVJ t|jtddgddgg d S )
N)r   r   r-   r{   T)r!   rh   gil?gam?g	^?r   )	r	   r0   X6y6hasattrr   r{   r7   r?   )r!   rB   rH   rH   rI   test_lda_store_covariance  s"   r   seedre   c                 C   s   t j| }|dd}|jddd}tdddd}tdtdd	dd
}||| ||| t|j	|j	 t|j
|j
 d S )Nrf   re   r   rM   Tr#   r   rh   r"   r!   )r"   rh   r,   r!   )r7   r   r   randr   r	   r   r0   r   rz   r{   )r   rW   r1   r2   c1c2rH   rH   rI   test_lda_shrinkage  s   r   c                  C   s   G dd d} t jd}|dd}|jddd}td	d
dd}td	|  dd}||| ||| t|j|j t|j	|j	 d S )Nc                   @   s   e Zd Zdd ZdS )z3test_lda_ledoitwolf.<locals>.StandardizedLedoitWolfc                 S   sR   t  }||}t|d }|jd d tjf | |jtjd d f  }|| _d S )Nr   )r   fit_transformr   scale_r7   r~   r{   )selfr1   scX_scsrH   rH   rI   r0     s
   
,
z7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fitN)__name__
__module____qualname__r0   rH   rH   rH   rI   StandardizedLedoitWolf  s    r   r   rf   re   r   )rf   rM   Tr   r   r   r   )
r7   r   r   r   r   r	   r0   r   rz   r{   )r   rW   r1   r2   r   r   rH   rH   rI   test_lda_ledoitwolf  s    	r   r   r   c           
   	   C   s   t d}d}|||}tt| ||  d d | }t|| d }|d d |fD ]}t|d}||| q*|d t|| d d fD ]&}t|d}d}	t	j
t|	d ||| W d    n1 sfw   Y  qEd S )Nr   re   r   )r   z#n_components cannot be larger than r)   )r   randnr7   tiler^   minr	   r0   maxr;   r<   r=   )
rK   r   rW   rV   r1   r2   max_componentsr   r   r   rH   rH   rI   test_lda_dimension_warning  s     

r   zdata_type, expected_typec                 C   sF   t D ]\}}t||d}|t| t|  |jj|ks J qd S )Nr    )r/   r	   r0   r1   astyper2   r   r   )	data_typeexpected_typer!   r"   rB   rH   rH   rI   test_lda_dtype_match  s
   
r   c                  C   sx   t D ]7\} }t| |d}|ttjttj t| |d}|ttjttj d}t	|j
|j
|d qd S )Nr    r$   )r%   )r/   r	   r0   r1   r   r7   float32r2   float64r   r   )r!   r"   clf_32clf_64r%   rH   rH   rI   ,test_lda_numeric_consistency_float32_float64  s   r   c                  C   s   t  } | ttt}t|t | ttt}t|t | t}t|d d df dkd t | t}t	t
||d | ttt}t
|tksSJ tt | tt W d    d S 1 sjw   Y  d S )Nr   r#   r   )r
   r0   r   r   r3   r   X7r5   r6   r   r7   r8   y7r:   r;   r<   r=   y4)rB   rC   rD   rE   rF   rG   rH   rH   rI   test_qda  s   



"r   c                  C   sr   t  } | ttt}t|dk}d}t t|d| gd} | ttt}t|dk}||ks7J d S )Nr   g|=r   r   )r
   r0   r   r   r3   r7   rw   r?   )rB   rC   n_posnegn_pos2rH   rH   rI   test_qda_priors2  s   r   c                  C   s   t  tt} t| drJ t ddtt} t| dsJ t| jd tddgddgg t| jd tdd	gd	d
gg d S )Nr{   T)rh   r   gffffff?r   r   gQUU?gQUUտgvWUU?)	r
   r0   r   r   r   r   r{   r7   r?   )rB   rH   rH   rI   test_qda_store_covariance?  s   "r   c                  C   sB  d} t  }tjt| d |tt}W d    n1 sw   Y  tjtdd |t}W d    n1 s9w   Y  t	
|tksGJ t dd}tjt| d |tt W d    n1 sdw   Y  |t}t|t t dd}tjt| d |tt W d    n1 sw   Y  |t}t|t d S )NzVariables are collinearr)   zdivide by zerory   )	reg_paramr+   )r
   r;   r   r   r0   X2r   RuntimeWarningr3   r7   r:   r   X5y5)collinear_msgrB   rC   y_pred5rH   rH   rI   test_qda_regularizationP  s*   




r   c                  C   st   t ddddd\} }t| t| jd d | jd | jd } t| d}t||j t| d}t||j d S )	Nrf   r   r   rg   r   r   	empiricalr   )	r   r7   rl   r   r   r   r   r   r   )r   r2   c_ec_srH   rH   rI   test_covariancet  s   0

r   z	svd, lsqrr   c                 C   sn   t ddgddgg}t ddg}t| d}tjtdd ||| W d   dS 1 s0w   Y  dS )	zg
    Tests that if the number of samples equals the number
    of classes, a ValueError is raised.
    r#   r   abr-   z"The number of samples must be morer)   N)r7   r?   r	   r;   r<   r=   r0   )r!   r1   r2   rB   rH   rH   rI   =test_raises_value_error_on_same_number_of_classes_and_samples  s   
"r   c                     sT   t  tt} |  }d  tj fddt| j	j
d D td}t|| dS )z6Check get_feature_names_out uses class name as prefix.r	   c                    s   g | ]}  | qS rH   rH   )rQ   iclass_name_lowerrH   rI   rX     s    
z.test_get_feature_names_out.<locals>.<listcomp>r   r   N)r	   r0   r1   r2   get_feature_names_outlowerr7   r?   r^   r   r   objectr   )est	names_outexpected_names_outrH   r   rI   test_get_feature_names_out  s   
r  )Gnumpyr7   r;   scipyr   sklearn.utilsr   sklearn.utils._testingr   r   r   r   sklearn.datasetsr   sklearn.discriminant_analysisr	   r
   r   sklearn.covariancer   sklearn.clusterr   r   r   sklearn.preprocessingr   r?   r1   r2   r9   r4   r   r   r   r   r   r   c_r   zerosr   r   r/   rJ   markparametrizer   r   r   r   r   r   r   r   r^   r   r   r   r   r   int32int64r   r   r   r   r   r   r   r   r  rH   rH   rH   rI   <module>   s    28.8S^)





	$
