o
    \iX                     @   s  d dl 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
mZ d dlmZ d dl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mZ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! Z0d"d# Z1d$d% Z2d&d' Z3d(d) Z4d*d+ Z5d,d- Z6d.d/ Z7ej./d0e8d1d2d3 Z9d4d5 Z:ej./d6dd7gej./dd7dgd8d9 Z;ej./d:ej<ej<fej=ej=fej>ej=fej?ej=fgd;d< Z@d=d> ZAd?d@ ZBdAdB ZCej./dCg dDdEdF ZDdGdH ZEdIdJ ZFdKdL ZGdMdN ZHej./dg ddOdP ZIdQdR ZJdS )S    N)linalg)KMeans)
LedoitWolfShrunkCovarianceledoit_wolf)
make_blobs)LinearDiscriminantAnalysisQuadraticDiscriminantAnalysis_cov)StandardScaler)check_random_state)_convert_containerassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal      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
t d}tjtdd |tt W d    n1 sw   Y  tdt d}tjtdd |tt W d    n1 sw   Y  td	tdddd}tt |tt W d    d S 1 sw   Y  d S )Nsolver	shrinkagez	solver %sr         ?ư>)rtolatolerr_msgr   r   r   皙?)r"   r#   covariance_estimatorz[covariance_estimator and shrinkage parameters are not None. Only one of the two can be set.match)r"   r*   z.covariance estimator is not supported with svdr   )
n_clustersn_init)solver_shrinkager   fitXypredictr   X1predict_probapredict_log_probar   npexpy3anypytestraisesNotImplementedErrorr   
ValueErrorr   r   )		test_caser"   r#   clfy_predy_pred1y_proba_pred1y_log_proba_pred1y_pred3 rF   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/tests/test_discriminant_analysis.pytest_lda_predictG   sX   
$
	"rH   	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rngrF   rG   
<listcomp>   s    zDtest_lda_predict_proba.<locals>.generate_dataset.<locals>.<listcomp>c                    s   g | ]}|gt    qS rF   )rN   rO   clazz)rS   rT   rF   rG   rV      s    )r   r7   vstackziphstackrangerN   )rT   rS   covariancesrandom_stater1   r2   rF   rR   rG   generate_dataset   s   z0test_lda_predict_proba.<locals>.generate_datasetr   (   i   
   d   i_ *   )rT   rS   r]   r^   T)r"   store_covariancer#   r)   )r'   r   r         i   c                 S   s"   t || t | ||   S N)r7   r8   dotitem)samplecoef	interceptrX   rF   rF   rG   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 rF   rF   rW   alpha_k	alpha_k_0ro   rl   rF   rG   rV          z5test_lda_predict_proba.<locals>.<listcomp>.<listcomp>)floatsumr\   rW   rr   rs   ro   rI   rl   rF   rG   rV      s    
z*test_lda_predict_proba.<locals>.<listcomp>c                    rp   rF   rF   rW   rq   rF   rG   rV      rt   {Gz?ri   )r7   arrayrN   r   r0   r   means_covariance_r   invr\   appendrj   newaxisrv   ru   r;   approxr5   r[   )r"   rI   r_   blob_centers	blob_stdsr1   r2   lda	precisionrX   probprob_ref
prob_ref_2rF   rw   rG   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$   rg   priorszpriors must be non-negativer+   333333??g?r   )r7   ry   r   r;   r<   r>   r0   r1   r2   warnsUserWarningr   priors_)r   r@   msg
prior_normrF   rF   rG   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     rT   
n_featuresrS   r^   r   r"   r   r   r   )r   r   r0   r   coef_)r   rI   rT   r1   r2   clf_lda_svdclf_lda_lsqrclf_lda_eigenrF   rF   rG   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=   )r@   X_transformedr   rF   rF   rG   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   rd   )ra      )locscalerL   r   )ra   rK   r   r         ?)r   z/Unexpected length for explained_variance_ratio_r   )r7   randomRandomStatenormalrandintr   r0   r   explained_variance_ratio_rv   r   r   )stater1   r2   r   r   rF   rF   rG   !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   ry   r~   reshaperepeataranger   r   r0   r   sqrtrv   r   rQ   Teyeabsrj   )meansscatterr1   r2   r@   means_transformedd1d2rF   rF   rG   test_lda_orthogonalityC  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 )Nrd   i  r   r   r   )r`   r   r   )rc   r   r   )r   rd   i'  rJ   r   r   zusing covariance: %s)r7   r   r   uniformrY   r   r0   score)nrU   x1x2xr2   r"   r@   rF   rF   rG   test_lda_scalingl  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"   rf   gil?gam?g	^?r   )	r   r0   X6y6hasattrr   r{   r7   ry   )r"   r@   rF   rF   rG   test_lda_store_covariance}  s"   r   seedrc   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 )Nrd   rc   r   rK   Tr$   r   rf   r#   r"   )r#   rf   r*   r"   )r7   r   r   randr   r   r   r0   r   rz   r{   )r   rU   r1   r2   c1c2rF   rF   rG   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srF   rF   rG   r0     s
   
,
z7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fitN)__name__
__module____qualname__r0   rF   rF   rF   rG   StandardizedLedoitWolf  s    r   r   rd   rc   r   )rd   rK   Tr   r   r   r   )
r7   r   r   r   r   r   r0   r   rz   r{   )r   rU   r1   r2   r   r   rF   rF   rG   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   rc   r   )r   z#n_components cannot be larger than r+   )r   randnr7   tiler\   minr   r0   maxr;   r<   r>   )
rI   r   rU   rT   r1   r2   max_componentsr   r   r   rF   rF   rG   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#   r@   rF   rF   rG   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&   rF   rF   rG   ,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)r@   rA   rB   rC   rD   rE   rF   rF   rG   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   rv   ry   )r@   rA   n_posnegn_pos2rF   rF   rG   test_qda_priors  s   r   priors_type)listtuplery   c                 C   sF   ddg}t tddg| dtt}t|jtjsJ t	|j| dS )z$Check that priors accept array-like.r$   r   N)
r	   r   r0   r   r   
isinstancer   r7   ndarrayr   )r   r   r@   rF   rF   rG   test_qda_prior_type+  s   r   c                  C   sR   t ddg} t| dtt}t|j|j d| d< |jd |jd ks'J dS )zCCheck that altering `priors` without `fit` doesn't change `priors_`r$   r   g?r   N)	r7   ry   r	   r0   r1   r2   r   r   r   )r   qdarF   rF   rG   test_qda_prior_copy6  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)rf   r   gffffff?r   r   gQUU?gQUUտgvWUU?)	r	   r0   r   r   r   r   r{   r7   ry   )r@   rF   rF   rG   test_qda_store_covarianceC  s   "r   c                  C   sL  d} t  }tjtj| d |tt}W d    n1 sw   Y  |t}t	
|tks1J t dd}t  td W d    n1 sJw   Y  |tt |t}t|t t  }tjtj| d |tt W d    n1 s{w   Y  t dd}tjtj| d |tt W d    d S 1 sw   Y  d S )Nz2The covariance matrix of class .+ is not full rankr+   rx   )	reg_paramerrorg333333?)r	   r;   r   r   LinAlgWarningr0   X2r   r3   r7   r:   warningscatch_warningssimplefilterr   X5y5)r   r@   rA   rF   rF   rG   test_qda_regularizationT  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 )	Nrd   r   r   re   r   r   	empiricalr   )	r   r7   rj   r   r   r   r
   r   r   )r   r2   c_ec_srF   rF   rG   test_covariancev  s   0

r  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   ry   r   r;   r<   r>   r0   )r"   r1   r2   r@   rF   rF   rG   =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 rF   rF   )rO   iclass_name_lowerrF   rG   rV     s    
z.test_get_feature_names_out.<locals>.<listcomp>r   r   N)r   r0   r1   r2   get_feature_names_outlowerr7   ry   r\   r   r   objectr   )est	names_outexpected_names_outrF   r	  rG   test_get_feature_names_out  s   
r  )Kr   numpyr7   r;   scipyr   sklearn.clusterr   sklearn.covariancer   r   r   sklearn.datasetsr   sklearn.discriminant_analysisr   r	   r
   sklearn.preprocessingr   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r   ry   r1   r2   r9   r4   r   r   r   r   r   r   c_r   zerosr   r   r/   rH   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  r  r  rF   rF   rF   rG   <module>   s    2	8.8?^)





	

"
