o
    \i&]                  
   @   s  d dl Z d dlmZ d dlmZ d dlZd dl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mZmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& dd Z'd	d
 Z(dd Z)ej*+dg e,dfg de,dfe-g e,dfe-g de,dfej..de,dfgdd Z/ej*+di dddgdd Z0dd Z1dd Z2dd Z3dd Z4dd  Z5d!d" Z6d#d$ Z7d%d& Z8d'd( Z9ej*+d)g d*e-g d*e:g d*gd+d, Z;d-d. Z<d/d0 Z=d1d2 Z>d3d4 Z?d5d6 Z@d7d8 ZAd9d: ZBd;d< ZCd=d> ZDej*+d?d@dAgej*+dBg dCdDdE ZEej*+dFdAd@gdGdH ZFdIdJ ZGdKdL ZHdMdN ZIdOdP ZJdQdR ZKdSdT ZLdUdV ZMdS )W    N)defaultdict)partial)make_biclusters
make_blobsmake_checkerboardmake_circlesmake_classificationmake_friedman1make_friedman2make_friedman3make_hastie_10_2make_low_rank_matrix
make_moonsmake_multilabel_classificationmake_regressionmake_s_curvemake_sparse_coded_signalmake_sparse_spd_matrixmake_sparse_uncorrelatedmake_spd_matrixmake_swiss_roll)assert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equal)assert_all_finitec                  C   sN  ddg} t ddddddddd d | d	d
\}}| ddgksJ |jdks'J d|jdks0J dt|jdks<J dt|d	kdksHJ dt|dkdksTJ dt|dkdks`J dt dddd	d	ddd	d\}}|jdkswJ d|jdksJ dt|d|jfg|jd  |jd |jd jd	 dksJ d!d S )"N皙?      ?d               Fr   )	n_samples
n_featuresn_informativen_redundant
n_repeated	n_classesn_clusters_per_class	hypercubeshiftscaleweightsrandom_stater   r    X shape mismatchr   y shape mismatchr#   Unexpected number of classes
   z(Unexpected number of samples in class #0   z(Unexpected number of samples in class #1   A   z(Unexpected number of samples in class #2     T      ?)r$   r%   r&   r'   r(   r+   r-   r/   )r:   r;   )r:    z Unexpected number of unique rows)r   shapenpuniquesumviewdtypereshape)r.   Xy rH   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/datasets/tests/test_samples_generator.pytest_make_classification(   sV   

 rJ   c                  C   s  d} t t| ddddddd}ddgdfddgd dfdd	gd
 dfddgd dfddd	gdfddgd dfddgdffD ]\}}}t|}|| }|d }dD ]}||||||||dd\}	}
|	j||fkshJ |
j|fkspJ t|	}|jd|jd d	 }tj
|dd\}}t||ksJ dtt}t||
D ]\}}|| | q| D ]}t||ksJ dqt||ksJ dtt|
t|
 | dg| dd tt|D ]E}|	||k jdd}|rtt||  t|ddd qtt tt||  t|ddd W d    n	1 sw   Y  qqOq<tt |ddddd! W d    n	1 s@w   Y  tt |ddddd! W d    d S 1 s_w   Y  d S )"zTest the construction of informative features in make_classification

    Also tests `n_clusters_per_class`, `n_classes`, `hypercube` and
    fully-specified `weights`.
    g    .Ar   r"   F)	class_sepr'   r(   flip_yr,   r-   shuffler8   gUUUUUU?r#   r      r<         ?r6   @   2   )FT)r$   r)   r.   r%   r&   r*   r+   r/   z|S{0})rD   T)return_inversez6Wrong number of clusters, or not in distinct quadrantsz"Wrong number of clusters per classzWrong number of classesz!Wrong number of samples per classerr_msgaxisr!   z/Clusters are not centered on hypercube vertices)decimalrT   z5Clusters should not be centered on hypercube verticesN)r%   r&   r)   r*   )r   r   lenr?   r@   signrC   formatstridesravelrA   r   setzipaddvaluesr   bincountrangemeanabsonespytestraisesAssertionError
ValueError)rK   maker&   r.   r*   r)   
n_clustersr$   r+   rF   rG   signsunique_signscluster_indexclusters_by_classclusterclsclusterscentroidrH   rH   rI   -test_make_classification_informative_featuresX   s   

	

<$rt   c                     sP  i ddddddddd	dd
ddddddddddddddddddddd} t d(i | \}}d| d< t d(i |  t dr_t dr_t d r_t d!r_t d"saJ  fd#d$}t| jspJ t| jsyJ  jt jksJ  j| ksJ |d%| d ksJ |d&| d ksJ |d'| d	 ksJ dS ))zy
    Test that make_classification returns a Bunch when return_X_y is False.

    Also that bunch.X is the same as X
    r$   r   r%   r    r&   r!   r'   r"   r(   r)   r#   r*   r8   r.   NrL   {Gz?rK         ?r+   Tr,           r-   rM   r/   *   
return_X_yFDESCR
parametersfeature_inforF   rG   c                    s    j | S )N)r|   count)str_bunchrH   rI   r}      s   z2test_make_classification_return_x_y.<locals>.countinformative	redundantrepeatedrH   )	r   hasattrr@   array_equalrF   rG   rz   __doc__r{   )kwargsrF   rG   r}   rH   r   rI   #test_make_classification_return_x_y   sl   	
r   zweights, err_type, err_msgz:Weights specified but incompatible with number of classes.)r   rO   r   r#   c                 C   s>   t j||d t| d W d    d S 1 sw   Y  d S )Nmatch)r.   )rf   rg   r   )r.   err_typerT   rH   rH   rI   %test_make_classification_weights_type   s   "r   r   )r)   r&   c                 C   sV   t dddgdd| \}}t dtddgdd| \}}t|| t|| d S )Nr   g?r   )r.   r/   rH   )r   r@   arrayr   )r   X1y1X2y2rH   rH   rI   1test_make_classification_weights_array_or_list_ok  s   "
r   c               	   C   s   t ddD ]B\} }tddddd| d\}}|jd	ksJ d
| s-tdd |D dks-J tdd |D |ks:J tdd |D dksGJ qd S )NTFr   r"   r   r    r#   r   Fr$   r%   r)   r/   return_indicatorallow_unlabeledr0   r1   c                 S      g | ]}t |qS rH   )max.0rG   rH   rH   rI   
<listcomp>!      zHtest_make_multilabel_classification_return_sequences.<locals>.<listcomp>r8   c                 S   r   rH   rX   r   rH   rH   rI   r   "  r   c                 S   r   rH   r   r   rH   rH   rI   r   #  r   )r^   r   r?   r   minr   
min_lengthrF   YrH   rH   rI   4test_make_multilabel_classification_return_sequences  s   
r   c                  C   s   t ddD ]/\} }tdddd| d\}}|jdksJ d	|jd
ks&J dttj|dd|ks4J qtdddd| dd\}}}}t|| t|| |jdksTJ t| d |jdksbJ t|jdddgd  d S )Nr   r   r7   r    r#   r   )r$   r%   r)   r/   r   r7   r    r1   r7   r#   Y shape mismatchrU   T)r$   r%   r)   r/   r   return_distributionsr4   r"   )r    r#   )	r^   r   r?   r@   allrB   r   r   r   )r   r   rF   r   r   Y2p_cp_w_crH   rH   rI   4test_make_multilabel_classification_return_indicator&  s2   

	
r   c               	   C   sb   t ddD ])\} }tddddd| d\}}|jd	ksJ d
|jdks'J dt|s.J qd S )Nr   r   r7   r    r#   r   sparser   r   r1   r   r   )r^   r   r?   spissparser   rH   rH   rI   ;test_make_multilabel_classification_return_indicator_sparseE  s   
r   c                  C   sP   t ddd\} }| jdksJ d|jdksJ dt|jdks&J d	d S )
Nr   r   )r$   r/   r   r6   r1   r2   r3   )r8   r5   )r   r?   r@   rA   rF   rG   rH   rH   rI   test_make_hastie_10_2T  s   r   c              
   C   s   t ddddddd| d\}}}|jd	ksJ d
|jdks!J d|jdks*J dt|dkdks6J dtt|t|| ddd t ddd\}}|jdksUJ d S )N   r6   r#   r!   Trw   rv   )r$   r%   r&   effective_rankcoefbiasnoiser/   )r   r6   r1   )r   r3   r6   coef shape mismatch)Unexpected number of informative featuresr"   rW   r   )r$   r%   )r   r"   )r   r?   rB   r   r@   stddotglobal_random_seedrF   rG   crH   rH   rI   test_make_regression[  s"    r   c              	   C   s   t dddddd| d\}}}|jdksJ d|jd	ks J d
|jdks)J dtt|dkdd tt|t|| ddd d S )Nr   r6   r#   Trv   )r$   r%   r&   	n_targetsr   r   r/   r   r1   )r   r#   r3   )r6   r#   r   rw   r   r"   r   )r   r?   r   rB   r   r@   r   r   r   rH   rH   rI    test_make_regression_multitargett  s   
$r   c                 C   s   t g d}t ddgddgddgg}t| dd||d\}}|jdks)J d|jd	ks2J d
t |jdks>J dtt||D ]\}\}}t|||k |  |dd qEd S )Ng?g?g?rw   rv   rQ   r8   )r/   r$   r%   centerscluster_std)rQ   r8   r1   )rQ   r3   r4   zUnexpected number of blobsr"   Unexpected std)	r@   r   r   r?   rA   	enumerater^   r   r   )r   cluster_stdscluster_centersrF   rG   ictrr   rH   rH   rI   test_make_blobs  s   
 r   c                  C   sZ   g d} t | ddd\}}|jt| dfksJ dttj|t| d| ks+J dd S )N)rQ      r    r8   r   r$   r%   r/   r1   	minlength$Incorrect number of samples per blobr   r?   rB   r   r@   ra   rX   )r$   rF   rG   rH   rH   rI   test_make_blobs_n_samples_list  s   r   c           	      C   s   g d}t ddgddgddgg}t g d}t|||| d\}}|jt|dfks0J dtt j|t|d|ksAJ d	tt	||D ]\}\}}t
|||k |  |d
d qHd S )Nr    r    r    rw   rv   r   )r$   r   r   r/   r8   r1   r   r   r"   r   )r@   r   r   r?   rB   r   ra   rX   r   r^   r   r   )	r   r$   r   r   rF   rG   r   r   r   rH   rH   rI   +test_make_blobs_n_samples_list_with_centers  s    
 r   r$   )r!   r#   r   c                 C   sV   d }t | |dd\}}|jt| dfksJ dttj|t| d| ks)J dd S )Nr   )r$   r   r/   r8   r1   r   r   r   )r$   r   rF   rG   rH   rH   rI   &test_make_blobs_n_samples_centers_none  s   r   c                  C   s<   ddg} d}t | |ddd\}}}|jt| |fksJ d S )Nr6   r    r#   Tr   )r$   r%   return_centersr/   )r   r?   rX   )r$   r%   rF   rG   r   rH   rH   rI   test_make_blobs_return_centers  s   r   c                  C   s>  g d} t ddgddgddgg}t g d}td|  d|d d  }tjt|d t| |d d d	 W d    n1 sDw   Y  td
| d|d d  }tjt|d t| ||d d d W d    n1 suw   Y  dd}tjt|d t| dd	 W d    d S 1 sw   Y  d S )Nr   rw   rv   r   zMLength of `n_samples` not consistent with number of centers. Got n_samples = z and centers = r>   r   )r   zNLength of `clusters_std` not consistent with number of centers. Got centers = z and cluster_std = )r   r   z8Parameter `centers` must be array-like. Got {!r} insteadr#   )	r@   r   reescaperf   rg   ri   r   rZ   )r$   r   r   wrong_centers_msgwrong_std_msgwrong_type_msgrH   rH   rI   test_make_blobs_error  s:   

"r   c              	   C   s   t ddd| d\}}|jdksJ d|jdksJ dt|dttj|d d d	f  |d d d
f   d|d d df d d   d|d d df   d|d d df    d S )Nr!   r6   rw   )r$   r%   r   r/   r!   r6   r1   r!   r3   r   r"   r    r8   r<   r#   rN   )r	   r?   r   r@   sinpir   rF   rG   rH   rH   rI   test_make_friedman1  s   
.r   c              	   C   s   t dd| d\}}|jdksJ d|jdksJ dt||d d df d	 |d d d
f |d d d	f  d
|d d d
f |d d df    d	  d  d S )Nr!   rw   r$   r   r/   r!   rN   r1   r   r3   r   r8   r"   r#   r<   )r
   r?   r   r   rH   rH   rI   test_make_friedman2  s   `r   c              
   C   s   t dd| d\}}|jdksJ d|jdksJ dt|t|d d df |d d d	f  d|d d df |d d d
f    |d d df   d S )Nr!   rw   r   r   r1   r   r3   r"   r8   r#   r   )r   r?   r   r@   arctanr   rH   rH   rI   test_make_friedman3  s   Zr   c                  C   sZ   t dddddd} | jdksJ ddd	lm} || \}}}t|d d
k s+J dd S )NrQ   r7   r!   ru   r   )r$   r%   r   tail_strengthr/   )rQ   r7   r1   )svdr   zX rank is not approximately 5)r   r?   numpy.linalgr   rB   )rF   r   usvrH   rH   rI   test_make_low_rank_matrix  s   r   c                 C   s   t dddd| d\}}}|jdksJ d|jdksJ d	|jd
ks'J d|D ]}tt|dks8J dq)t|||  tt|d jddt|jd  d S )Nr!      r6   r#   )r$   n_componentsr%   n_nonzero_coefsr/   r   r   )r   r6   zD shape mismatch)r!   r   r1   zNon-zero coefs mismatchr8   r"   rU   r   )	r   r?   rX   r@   flatnonzeror   sqrtrB   re   )r   r   DrF   rowrH   rH   rI   test_make_sparse_coded_signal  s   ,r   c                  C   s:   t dddd\} }| jdksJ d|jdksJ dd S )	Nr!   r6   r   r   r   r1   r   r3   )r   r?   r   rH   rH   rI   test_make_sparse_uncorrelated.  s   r   c                 C   s\   t d| d}|jdksJ dt||j ddlm} ||\}}t|dks,J dd S )Nr!   )n_dimr/   )r!   r!   r1   r   eigX is not positive-definite)r   r?   r   Tr   r   r@   r   )r   rF   r   eigenvalues_rH   rH   rI   test_make_spd_matrix5  s   r  	norm_diagTFsparse_format)Nbsrcoocsccsrdiadoklilc           	      C   s   d}t || ||d}|j||fksJ d|d u r)t|r J t||j |}nt|r3|j|ks5J t||j | }ddl	m
} ||\}}t|dksVJ d| rdt| t| d S d S )Nr!   )r   r  r  r/   r1   r   r   r   )r   r?   r   r   r   r   rZ   r   toarrayr   r   r@   r   r   diagonalre   )	r  r  r   r   rF   Xarrr   r  r  rH   rH   rI   test_make_sparse_spd_matrixA  s*   r  holec                 C   st   t dd| |d\}}|jdksJ |jdksJ t|d d df |t|  t|d d df |t|  d S )Nr!   rw   )r$   r   r/   r  r!   r#   r   r   r8   )r   r?   r   r@   cosr   )r   r  rF   trH   rH   rI   test_make_swiss_rollc  s   
 $r  c                 C   s   t dd| d\}}|jdksJ d|jdksJ dt|d d df t| t|d d d	f t|t|d
   d S )Nr!   rw   r   r  r1   r   zt shape mismatchr   r8   r"   )r   r?   r   r@   r   rY   r  )r   rF   r  rH   rH   rI   test_make_s_curveo  s
   .r  c                  C   s   t ddddd\} }}| jdksJ d|jdksJ d|jdks&J d	t|  t| t| t ddddd\}}}t| | d S )
Nr   r   rN   Tr   r?   rk   rM   r/   r1   )rN   r   rows shape mismatchcolumns shape mismatch)r   r?   r   r   )rF   rowscolsr   r  rH   rH   rI   test_make_biclustersx  s   r  c                  C   s   t ddddd\} }}| jdksJ d|jdksJ d|jdks&J dt dd	ddd\} }}t|  t| t| t dd	ddd\}}}t dd	ddd\}}}t|| d S )
Nr  )r    r!   Tr   r  r1   r  r  r8   )r   r?   r   r   )rF   r  r  r   r  r   rH   rH   rI   test_make_checkerboard  s*   r  c                 C   s`   t dd| d\}}t||D ]\}}|dkrddgnddg}|| d  }t|dd	d
 qd S )Nr#   F)rM   r/   r   rw   rv   r<   r8   z$Point is not on expected unit circlerS   )r   r^   rB   r   )r   rF   rG   xlabelcenterdist_sqrrH   rH   rI   test_make_moons  s   r#  c                  C   s   t dd\} }t|dkdkrt|dkdksJ d| jdks&J d	|jd
ks/J dtjtdd t dd W d    d S 1 sGw   Y  d S )N)   r!   r$   r   r$  r"   r!   z$Number of samples in a moon is wrong)   r8   r1   )r&  r3   z8`n_samples` can be either an int or a two-element tuple.r   r   )r   r@   rB   r?   rf   rg   ri   r   rH   rH   rI   test_make_moons_unbalanced  s   &"r'  c                  C   s   d} dD ]s\}}}t |dd | d\}}|j|dfksJ d|j|fks(J dddg}t||D ]'\}}|| d  }	|d	krCd
n| d }
|d	krMd
n| d }
t|	|
dd q1||d	k j|dfkshJ d||dk j|dfkswJ dqd S )Ng333333?))r$  r#   rN   )r   rN   rN   F)rM   r   factorr8   r1   r3   rw   r   rv   zPoint is not on expected circlerS   z1Samples not correctly distributed across circles.r"   )r   r?   r^   rB   r   )r(  r$   n_outern_innerrF   rG   r!  r  r   r"  dist_exprH   rH   rI   test_make_circles  s4   r,  c                  C   s   t dd\} }t|dkdksJ dt|dkdks!J d| jd	ks*J d
|jdks3J dtjtdd t dd W d    d S 1 sKw   Y  d S )N)r8   r   r%  r   r8   z*Number of samples in inner circle is wrongr"   r   z*Number of samples in outer circle is wrong)r6   r8   r1   r   r3   z7When a tuple, n_samples must have exactly two elements.r   )r   r@   rB   r?   rf   rg   ri   r   rH   rH   rI   test_make_circles_unbalanced  s   "r-  )Nr   collectionsr   	functoolsr   numpyr@   rf   scipy.sparser   r   sklearn.datasetsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.utils._testingr   r   r   r   r   sklearn.utils.validationr   rJ   rt   r   markparametrizeri   r   randomr   r   r   r   r   r   r   r   r   r   r   tupler   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r#  r'  r,  r-  rH   rH   rH   rI   <module>   s    T0c3



 



	
