
    h$,f\              
          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$m%Z% d dl&m'Z' d Z(d Z)ejT                  jW                  d	g e,d
fg de,d
f ejZ                  g       e,d
f ejZ                  g d      e,d
fej\                  j]                  d      e,d
fg      d        Z/ejT                  jW                  di dddg      d        Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9ejT                  jW                  dg d ejZ                  g d       e:g d      g      d        Z;d Z<d Z=d Z>d  Z?d! Z@d" ZAd# ZB e%eC$      d%        ZDd& ZEd' ZFd( ZGejT                  jW                  d)d*d+g      ejT                  jW                  d,g d-      d.               ZHd/ ZIejT                  jW                  d0d+d*g      d1        ZJd2 ZKd3 ZLd4 ZMd5 ZNd6 ZOd7 ZPd8 ZQy)9    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ignore_warnings)assert_all_finitec                  ,   ddg} t        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(  sJ d       t        j                  |      j                  dk(  sJ d       t	        |d	k(        dk(  sJ d       t	        |dk(        dk(  sJ d       t	        |dk(        dk(  sJ d       t        dddd	d	ddd	      \  }}|j                  dk(  sJ d       |j                  dk(  sJ d       t        j                  |j                  d|j                  fg|j                  d   z              j                  |j                        j                  d |j                  d         j                  d	   dk(  sJ d!       y )"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.   r0   r2   )r=   r>   )r=    z Unexpected number of unique rows)r	   shapenpuniquesumviewdtypereshape)r1   Xys      Mlib/python3.12/site-packages/sklearn/datasets/tests/test_samples_generator.pytest_make_classificationrL   )   s   DkGDAq sDk!!!77i3!3377f00099Q<%E'EE%qAv;"HHHqAv;"HHHqAv;"HHH 	DAq 77j 4"44 77g111
		!&&2qww-1771:567	agg	QWWQZ	 	q	 		* **	    c                  P   d} t        t        | dddddd      }ddgdfddgdz  dfdd	gd
z  dfddgdz  dfddd	gdfddgdz  dft        d      dgdffD ]M  \  }}}t        |      }||z  }|dz  }dD ]+  } ||||||||d      \  }	}
|	j                  ||fk(  sJ |
j                  |fk(  sJ t        j                  |	      }|j                  dj                  |j                  d               j                         }t        j                  |d      \  }}t        |      |k(  sJ d       t        t              }t        ||
      D ]  \  }}||   j                  |        |j!                         D ]  }t        |      |k(  rJ d        t        |      |k(  sJ d       t#        t        j$                  |
      t        |
      z  |z  dg|z  d       t'        t        |            D ]  }|	||k(     j)                  d      }|r9t#        t        j*                  |      | z  t        j,                  |      dd       Vt/        j0                  t2              5  t#        t        j*                  |      | z  t        j,                  |      dd       d d d         . P t/        j0                  t4              5   |dddd!       d d d        t/        j0                  t4              5   |dddd!       d d d        y # 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   y xY w)"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/   r0   shuffler;   gUUUUUU?r&   r!      r?         ?r9   @   2   )FT)r'   r,   r1   r(   r)   r-   r.   r2   z|S{0})rG   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)decimalrX   z5Clusters should not be centered on hypercube verticesN)r(   r)   r,   r-   )r   r	   intlenrB   rC   signrF   formatstridesravelrD   r   setzipaddvaluesr   bincountrangemeanabsonespytestraisesAssertionError
ValueError)rO   maker)   r1   r-   r,   
n_clustersr'   r.   rI   rJ   signsunique_signscluster_indexclusters_by_classclusterclsclusterscentroids                      rK   -test_make_classification_informative_featuresry   Y   s    I	D 
QC	
UGaK	
UGaK	
UGaK	
UENA	eWq["	R1#q9 G4w 4 L	!55
O	& :	I##(+%9#	DAq 77y-888877yl*** GGAJEJJW^^EMM!4D%EJFLLNE*,))E$*O'L- L!Z/HGH/ !,C 0 #M1 5 4!#&**734-446 8M%9987898 ()Y6Q8QQ6%AQ'72i; !\!23 ]g56;;;C-x(94. ! Q	  ~6 1FF8,y8GGM2$% W Q:	GR 
z	" QaaPQ	z	" QaaPQ Q Q QQ Qs$   9L	?L-LLLL%zweights, err_type, err_msgz:Weights specified but incompatible with number of classes.)r!   rS   r    r&   c                 t    t        j                  ||      5  t        |        d d d        y # 1 sw Y   y xY w)Nmatch)r1   )rk   rl   r	   )r1   err_typerX   s      rK   %test_make_classification_weights_typer~      s/    6 
xw	/ -G,- - -s   .7kwargs)r,   r)   c                     t        dddgdd| \  }}t        dt        j                  ddg      dd| \  }}t        ||       t        ||       y )Nr    g?r   )r1   r2    )r	   rC   arrayr   )r   X1y1X2y2s        rK   1test_make_classification_weights_array_or_list_okr      sX     N#s!NvNFB X3*)=AXQWXFBBBrM   c            	         t        dd      D ]  \  } }t        ddddd|       \  }}|j                  d	k(  sJ d
       | s't        |D cg c]  }t        |       c}      dk(  sJ t	        |D cg c]  }t        |       c}      |k(  sJ t        |D cg c]  }t        |       c}      dk  rJ  y c c}w c c}w c c}w )NTFr   r%   r"   r#   r&   r   Fr'   r(   r,   r2   return_indicatorallow_unlabeledr3   r4   r;   )rc   r   rB   maxminr]   )r   
min_lengthrI   YrJ   s        rK   4test_make_multilabel_classification_return_sequencesr      s    '*=&'A -#-"+
1 ww)#7%77#*1A*+q000A&qCF&':555A&qCF&'1,,,- +&&s   B7
/B<
C
c                     t        dd      D ]s  \  } }t        dddd|       \  }}|j                  dk(  sJ d	       |j                  d
k(  sJ d       t        j                  t        j
                  |d      |kD        rsJ  t        dddd d      \  }}}}t        |       t        |       |j                  dk(  sJ t        |j                         d       |j                  dk(  sJ t        |j                  d      dgdz         y )Nr   r   r:   r#   r&   r   )r'   r(   r,   r2   r   r:   r#   r4   r:   r&   Y shape mismatchrY   T)r'   r(   r,   r2   r   return_distributionsr7   r%   )r#   r&   )	rc   r   rB   rC   allrE   r   r   r   )r   r   rI   r   r   Y2p_cp_w_cs           rK   4test_make_multilabel_classification_return_indicatorr      s   '*=&'A 
6#-+
1 ww("6$66"ww'!5#55!vvbffQQ'*4555
6 8'!BC a$q"99	1%;;'!!!		q	)A373rM   c            	          t        dd      D ]\  \  } }t        ddddd|       \  }}|j                  d	k(  sJ d
       |j                  dk(  sJ d       t        j                  |      r\J  y )Nr   r   r:   r#   r&   r   sparser   r   r4   r   r   )rc   r   rB   spissparse)r   r   rI   r   s       rK   ;test_make_multilabel_classification_return_indicator_sparser     s    '*=&'A #-%+
1 ww("6$66"ww'!5#55!{{1~~rM   c                      t        dd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        j                  |      j                  dk(  sJ d	       y )
Nr"   r   )r'   r2   r"   r9   r4   r5   r6   )r;   r8   )r   rB   rC   rD   rI   rJ   s     rK   test_make_hastie_10_2r   "  sd    c:DAq77i3!3377f00099Q<%E'EE%rM   c            
         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k7        dk(  sJ d       t        t	        j
                  |t	        j                  | |      z
        dd       t        dd      \  } }| j                  dk(  sJ y )Nr"   r9   r&   r$   T              ?r   )r'   r(   r)   effective_rankcoefbiasnoiser2   r   r4   r5   r6   r9   coef shape mismatch)Unexpected number of informative featuresr%   r[   )r'   r(   )r"   r%   )r   rB   rE   r   rC   stddotrI   rJ   cs      rK   test_make_regressionr   )  s    	GAq! 77i3!3377f00077e222qCx=AJJJ q266!Q</0#qA SQ7DAq77hrM   c            	      V   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k7        dd       t	        t        j                  |t        j                  | |      z
        dd       y )Nr"   r9   r&   Tr   r   )r'   r(   r)   	n_targetsr   r   r2   r   r4   )r"   r&   r6   )r9   r&   r   r   r   r%   r   )r   rB   r   rE   r   rC   r   r   r   s      rK    test_make_regression_multitargetr   B  s    GAq! 77i3!3377h2 2277g444s18}a)TU q266!Q</0#qArM   c                     t        j                  g d      } t        j                  ddgddgddgg      }t        ddd||       \  }}|j                  dk(  sJ d	       |j                  d
k(  sJ d       t        j                  |      j                  dk(  sJ d       t        t        ||             D ]-  \  }\  }}t        |||k(     |z
  j                         |dd       / y )Ng?g?g?r   r   r   rU   r;   )r2   r'   r(   centerscluster_std)rU   r;   r4   )rU   r6   r7   zUnexpected number of blobsr%   Unexpected std)	rC   r   r   rB   rD   	enumeraterc   r   r   )cluster_stdscluster_centersrI   rJ   ictrr   s          rK   test_make_blobsr   V  s    88,-Lhhc
S#Jc
CDO DAq 77g11177e///99Q<%C'CC%"3#EF O:CQqAvY_113S!=MNOrM   c                      g d} t        | dd      \  }}|j                  t        |       dfk(  sJ d       t        t	        j
                  |t        |             | k(        sJ d       y )N)rU      r#   r;   r   r'   r(   r2   r4   	minlength$Incorrect number of samples per blobr   rB   rE   r   rC   rf   r]   )r'   rI   rJ   s      rK   test_make_blobs_n_samples_listr   h  sk    I	aaHDAq77s9~q))=+==)
AY0I= .-. rM   c                     g d} t        j                  ddgddgddgg      }t        j                  g d      }t        | ||d      \  }}|j                  t	        |       dfk(  sJ d       t        t        j                  |t        |       	      | k(        sJ d
       t        t        ||            D ]-  \  }\  }}t        |||k(     |z
  j                         |dd       / y )Nr#   r#   r#   r   r   r   r   )r'   r   r   r2   r;   r4   r   r   r%   r   )rC   r   r   rB   rE   r   rf   r]   r   rc   r   r   )r'   r   r   rI   rJ   r   r   r   s           rK   +test_make_blobs_n_samples_list_with_centersr   r  s    Ihhc
S#Jc
;<G88,-LW,UVDAq 77s9~q))=+==)
AY0I= .-.  #3w#=> O:CQqAvY_113S!=MNOrM   r'   )r$   r&   r   c                     d }t        | |d      \  }}|j                  t        |       dfk(  sJ d       t        t	        j
                  |t        |             | k(        sJ d       y )Nr   )r'   r   r2   r;   r4   r   r   r   )r'   r   rI   rJ   s       rK   &test_make_blobs_n_samples_centers_noner     sm     G	7KDAq77s9~q))=+==)
AY0I= .-. rM   c                  n    ddg} d}t        | |dd      \  }}}|j                  t        |       |fk(  sJ y )Nr9   r#   r&   Tr   )r'   r(   return_centersr2   )r   rB   r]   )r'   r(   rI   rJ   r   s        rK   test_make_blobs_return_centersr     sG    RIJ
4VWMAq' ==S^Z8888rM   c                     g d} t        j                  ddgddgddgg      }t        j                  g d      }t        j                  d|  d|d d        }t	        j
                  t        |      5  t        | |d d 	       d d d        t        j                  d
| d|d d        }t	        j
                  t        |      5  t        | ||d d        d d d        dj                  d      }t	        j
                  t        |      5  t        | d	       d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nr   r   r   r   zMLength of `n_samples` not consistent with number of centers. Got n_samples = z and centers = rA   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&   )	rC   r   reescaperk   rl   rn   r   r_   )r'   r   r   wrong_centers_msgwrong_std_msgwrong_type_msgs         rK   test_make_blobs_errorr     sH   Ihhc
S#Jc
;<G88,-L			$+_WSb\N	D 
z):	; 49gcrl34II	 	!4\#25F4G	IM 
z	7 N9g<;LMNOVV	N 
z	8 )9a() )4 4N N
) )s$   3D"D.D:"D+.D7:Ec            
      b   t        dddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d	       t        |dt        j                  t        j
                  | d d df   z  | d d d
f   z        z  d| d d df   dz
  dz  z  z   d| d d df   z  z   d| d d df   z  z          y )Nr$   r9   r   r   )r'   r(   r   r2   r$   r9   r4   r$   r6   r%   r#   r;   r?   r&   rR   )r
   rB   r   rC   sinpir   s     rK   test_make_friedman1r     s    A"CaPDAq77g11177d?...?	
RVVBEEAadGOa1g-..
!Q$#!#
#	$
qAw,	 a1g+	rM   c            
         t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        || d d df   d	z  | d d d
f   | d d d	f   z  d
| d d d
f   | d d df   z  z  z
  d	z  z   dz         y )Nr$   r   r   r'   r   r2   r$   rR   r4   r   r6   r;   r%   r&   r?   )r   rB   r   r   s     rK   test_make_friedman2r     s    ASqADAq77f00077d?...?	AadGqLAadGa1g-Qq!tWqAw5F0GGAMMRUUrM   c                      t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        |t        j                  | d d d	f   | d d d
f   z  d	| d d d	f   | d d df   z  z  z
  | d d df   z               y )Nr$   r   r   r   r   r4   r   r6   r%   r;   r&   )r   rB   r   rC   arctanr   s     rK   test_make_friedman3r     s    ASqADAq77f00077d?...?	299a1g!Q$'!qAw1a4/@*AAQq!tWLMrM   c                      t        ddddd      } | j                  dk(  sJ d       dd	lm}  ||       \  }}}t	        |      dz
  d
k  sJ d       y )NrU   r:   r$   g{Gz?r   )r'   r(   r   tail_strengthr2   )rU   r:   r4   )svdr    zX rank is not approximately 5)r   rB   numpy.linalgr   rE   )rI   r   usvs        rK   test_make_low_rank_matrixr     sc    	A 77h2 22 !fGAq!q6A:<<<rM   c                     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        j                  |            dk(  r%J d        t        | ||z         t        t        j                  |dz  j                  d            t        j                  |j                  d                y )Nr$      r9   r&   r   )r'   n_componentsr(   n_nonzero_coefsr2   r   r   )r   r9   D shape mismatch)r$   r   r4   Non-zero coefs mismatchr;   r%   rY   )	r   rB   r]   rC   flatnonzeror   sqrtrE   rj   )r   DrI   rows       rK   test_make_sparse_coded_signalr     s    &GAq! 77g11177g11177f000 H2>>#&'1,G.GG,HAq1uBGGQTJJAJ./1DErM   )categoryc                     t        dddddd      \  } }}| j                  dk(  sJ d	       |j                  d
k(  sJ d       |j                  dk(  sJ d       |j                  D ]*  }t        t	        j
                  |            dk(  r%J d        t        | ||z         t        t	        j                  |dz  j                  d            t	        j                  |j                  d                y )Nr$   r   r9   r&   r   Tr'   r   r(   r   r2   data_transposed)r9   r$   r   )r9   r   r   )r   r$   r4   r   r;   rY   r%   )
r   rB   Tr]   rC   r   r   r   rE   rj   )r   r   rI   cols       rK   (test_make_sparse_coded_signal_transposedr    s    &GAq! 77g11177g11177f000ss H2>>#&'1,G.GG,HAq1uBGGQTJJAJ./1DErM   c            	          d} t        j                  t        |       5  t        dddddd       ddd       y# 1 sw Y   yxY w))Check the message for future deprecation.z-data_transposed was deprecated in version 1.3r{   r%   r   Tr   N)rk   warnsFutureWarningr   )warn_msgs    rK   0test_make_sparse_code_signal_deprecation_warningr    sD    >H	m8	4 
  	

 
 
s	   9Ac                  ~    t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       y )	Nr$   r9   r   r   r   r4   r   r6   )r   rB   r   s     rK   test_make_sparse_uncorrelatedr	    sB    #aBQODAq77g11177d?...?rM   c                      t        dd      } | j                  dk(  sJ d       t        | | j                         ddlm}  ||       \  }}t        j                  |dkD        sJ d       y )Nr$   r   )n_dimr2   )r$   r$   r4   eigX is not positive-definite)r   rB   r   r   r   r  rC   r   )rI   r  eigenvalues_s       rK   test_make_spd_matrixr  !  s`    aa0A77f000a% VNK66+/"@$@@"rM   	norm_diagTFsparse_format)Nbsrcoocsccsrdiadoklilc                    d}t        || ||      }|j                  ||fk(  sJ d       |0t        j                  |      rJ t	        ||j
                         |}nLt        j                  |      r|j                  |k(  sJ t        ||j
                         |j                         }ddl	m
}  ||      \  }}t        j                  |dkD        sJ d       | r.t        |j                         t        j                  |             y y )Nr$   )r  r  r  r2   r4   r   r  r  )r   rB   r   r   r   r   r_   r   toarrayr   r  rC   r   r   diagonalrj   )	r  r  global_random_seedr  rI   Xarrr  r  r  s	            rK   test_make_sparse_spd_matrixr   -  s    
 E#'		A 77uen$8&88$;;q>!!133{{1~!((m";;;$Q,yy{  YNK66+/"@$@@"!$--/2775>B rM   c                  :   d} t        j                  t        |       5  t        d       ddd       d}t        j                  t
        |      5  t        dd       ddd       t               }|j                  d   dk(  sJ y# 1 sw Y   [xY w# 1 sw Y   4xY w)r  z!dim was deprecated in version 1.4r{   r%   )dimNz*`dim` and `n_dim` cannot be both specified)r"  r  )rk   r  r  r   rl   rn   rB   )r  	error_msgrI   s      rK   /test_make_sparse_spd_matrix_deprecation_warningr$  P  s    2H	m8	4 
	


 =I	z	3 
	

 	 A771:??
 

 
s   BBBBholec                    t        ddd|       \  }}|j                  dk(  sJ |j                  dk(  sJ t        |d d df   |t        j                  |      z         t        |d d df   |t        j
                  |      z         y )Nr$   r   r   )r'   r   r2   r%  r$   r&   r   r;   )r   rB   r   rC   cosr   )r%  rI   ts      rK   test_make_swiss_rollr*  c  st    QcMDAq77f77d??a1gq266!9}5a1gq266!9}5rM   c                  H   t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        | d d df   t        j                  |             t        | d d d	f   t        j
                  |      t        j                  |      d
z
  z         y )Nr$   r   r   r   r'  r4   r   zt shape mismatchr;   r%   )r   rB   r   rC   r   r^   r(  )rI   r)  s     rK   test_make_s_curver,  m  s    !3Q?DAq77f00077d?...?a1grvvay1a1grwwqzRVVAY]'CDrM   c                  .   t        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      \  }}}t        | |       y )
Nr"   r"   rR   Tr   rB   rp   rQ   r2   r4   )rR   r"   rows shape mismatchcolumns shape mismatch)r   rB   r   r   )rI   rowscolsr   r  s        rK   test_make_biclustersr4  v  s    #Q1MAtT 77j 4"44 ::!8#88!::         addQ1HB1 a$rM   c                  z   t        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      \  } }}t        |        t        |       t        |       t        dd	dd      \  }}}t        dd	dd      \  }}}t        ||       y )
Nr.  )r#   r$   Tr   r/  r4   r0  r1  r;   )r   rB   r   r   )rI   r2  r3  r   r  r   s         rK   test_make_checkerboardr6    s    %WdMAtT 77j 4"44 ::#:%::#::        
 &Q1MAtT add Q1HB1 !Q1HB1 b"%rM   c                      t        dd      \  } }t        | |      D ]6  \  }}|dk(  rddgnddg}||z
  dz  j                         }t        |dd	
       8 y )Nr&   F)rQ   r   r   r   r?   r;   z$Point is not on expected unit circlerW   )r   rc   rE   r   )rI   rJ   xlabelcenterdist_sqrs         rK   test_make_moonsr<    sg    a'DAq1I 
5$z#sSzZA%**,c#I	

rM   c                  l   t        d      \  } }t        j                  |dk(        dk(  rt        j                  |dk(        dk(  sJ d       | j                  dk(  sJ d	       |j                  d
k(  sJ d       t	        j
                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)N)   r$   r'   r   r>  r%   r$   z$Number of samples in a moon is wrong)   r;   r4   )r@  r6   z8`n_samples` can be either an int or a two-element tuple.r{   r   )r   rC   rE   rB   rk   rl   rn   r   s     rK   test_make_moons_unbalancedrA    s    'DAq
qAv!qAv! 3.-.377g11177e///	M
 $ 	U#	$ $ $s   B**B3c                     d} dD ]  \  }}}t        |dd |       \  }}|j                  |dfk(  sJ d       |j                  |fk(  sJ d       ddg}t        ||      D ]A  \  }}||z
  dz  j                         }	|d	k(  rd
n| dz  }
|d	k(  rd
n| dz  }
t	        |	|
d       C ||d	k(     j                  |dfk(  sJ d       ||dk(     j                  |dfk(  rJ d        y )Ng333333?))r>  r&   rR   )r   rR   rR   F)rQ   r   factorr;   r4   r6   r   r   r   zPoint is not on expected circlerW   z1Samples not correctly distributed across circles.r%   )r   rB   rc   rE   r   )rC  r'   n_outern_innerrI   rJ   r:  r8  r9  r;  dist_exps              rK   test_make_circlesrG    s>   F'= ?#	7G IuDP1ww9a.(<*<<(ww9,&:(::&sAq	 	HAuV)..0H#qjsfaiH#qjsfaiH(,M		 ay#
 
 	? ?	? 
 ay#
 
 	? ?	? 
'?rM   c                  z   t        d      \  } }t        j                  |dk(        dk(  sJ d       t        j                  |dk(        dk(  sJ d       | j                  d	k(  sJ d
       |j                  dk(  sJ d       t	        j
                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)N)r;   r   r?  r   r;   z*Number of samples in inner circle is wrongr%   r   z*Number of samples in outer circle is wrong)r9   r;   r4   r   r6   z7When a tuple, n_samples must have exactly two elements.r{   )r   rC   rE   rB   rk   rl   rn   r   s     rK   test_make_circles_unbalancedrI    s    &)DAq66!q&>QL LL66!q&>QL LL77g11177e///	G
 & 	u%	& & &s   B11B:)Rr   collectionsr   	functoolsr   numpyrC   rk   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   r   sklearn.utils.validationr   rL   ry   markparametrizern   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,  r4  r6  r<  rA  rG  rI  r   rM   rK   <module>rU     st   	 #         *  7-*``QF  	ZUVH	
 BHHRLH	
 BHH&'H	
 IIQH	
#4-54-
 Ba!(L#MN  O -"4>F2B(O$.O  )XRXXi0%	2BC..9).="F$ -(F )F&
/	A tUm4LC 5C>& %/6 06E%(&6
$?8&rM   