§
    rŠtj�2  ã                   ó¢  — 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mZ d dlmZmZ d dlmZ d	„ Zej                             d
dd ej        d¦  «        dfdddi ej        d¦  «        dfdd ej        d¦  «        dfddddœ ej        d¦  «        dfddddœ ej        ddg¦  «        dfg¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd „ Zd!„ Zd"„ Zd#„ Zd$„ Z ej                             d%d&dd'd(œ e!d¦  «        d)fd*dd'd(œdd+fd*dd'd(œgdd,fg¦  «        d-„ ¦   «         Z"d.„ Z#d/„ Z$ej                             d0e¦  «        d1„ ¦   «         Z%dS )2é    N)Úassert_allclose)Ú
make_blobs)ÚLogisticRegression)ÚDecisionTreeClassifier)Úassert_almost_equalÚassert_array_almost_equal)Úcompute_class_weightÚcompute_sample_weight)ÚCSC_CONTAINERSc                  óX  — t          j        g d¢¦  «        } t          j        | ¦  «        }t          d|| ¬¦  «        }t          j        | ¦  «        dd …         }t          t          j        ||¦  «        | j        d         ¦  «         |d         |d         cxk     r|d         k     sn J ‚d S )N©é   r   r   é   r   é   Úbalanced©ÚclassesÚyr   r   é   )ÚnpÚasarrayÚuniquer	   Úbincountr   ÚdotÚshape)r   r   ÚcwÚclass_countss       úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_class_weight.pyÚtest_compute_class_weightr      s¨   € å
Œ
Ð%Ð%Ð%Ñ&Ô&€AÝŒi˜‰lŒl€Gå	˜j°'¸QÐ	?Ñ	?Ô	?€Bå”;˜q‘>”> ! " "Ô%€LÝ�œ˜r <Ñ0Ô0°!´'¸!´*Ñ=Ô=Ð=ØˆaŒ5�2�a”5Ð Ð Ò Ð ˜2˜aœ5Ò Ð Ð Ð Ð Ð Ð Ð ó    z&y_type, class_weight, classes, err_msgÚnumericr   r   z.classes should have valid labels that are in yÚlabel_not_presentç      ð?z4The classes, \[0, 1, 2, 3\], are not in class_weightr   z'classes should include all valid labelsç       @©r   r   Ústringr   )ÚdogsÚcatÚdogr(   z/The classes, \['dog'\], are not in class_weightc                 ó  — | dk    rt          j        g d¢¦  «        nt          j        g d¢¦  «        }t          |¦  «         t          j        t
          |¬¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr!   )r   r   r   r   r   r   )r)   r(   r)   ©Úmatchr   )r   r   ÚprintÚpytestÚraisesÚ
ValueErrorr	   )Úy_typeÚclass_weightr   Úerr_msgr   s        r   Ú%test_compute_class_weight_not_presentr4      sñ   € ðP �YÒÐõ 	Œ
Ð%Ð%Ð%Ñ&Ô&Ð&åŒZÐ-Ð-Ð-Ñ.Ô.ð õ 
ˆ!�H„H€HÝ	Œ•z¨Ð	1Ñ	1Ô	1ð Að AÝ˜\°7¸aÐ@Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Að Aøøøð Að Að Að Að Að As   ÁA=Á=BÂBc                  ó~  — t          j        d¦  «        } ddddœ}t          j        g d¢¦  «        }t          || |¬¦  «        }t	          t          j        g d¢¦  «        |¦  «         dddd	d
œ}t          || |¬¦  «        }t          g d¢|¦  «         dddddœ}t          || |¬¦  «        }t          g d¢|¦  «         d S )Nr   r#   r$   ç      @©r   r   r   )r   r   r   r   r   )r#   r$   r6   ç      ø?)r   r   r   r   g      @ç      @)éÿÿÿÿr   r   r   )r9   r$   r6   )r   Úaranger   r	   r   r   )r   Úclass_weightsr   r   s       r   Útest_compute_class_weight_dictr=   J   sß   € ÝŒi˜‰lŒl€GØ ¨Ð,Ð,€MÝ
Œ
�<�<�<Ñ Ô €AÝ	˜m°WÀÐ	BÑ	BÔ	B€Bõ �bœj¨¨¨Ñ9Ô9¸2Ñ>Ô>Ð>ð  ¨°Ð4Ð4€MÝ	˜m°WÀÐ	BÑ	BÔ	B€BÝ�O�O�O RÑ(Ô(Ð(à ¨°Ð5Ð5€MÝ	˜m°WÀÐ	BÑ	BÔ	B€BÝ�O�O�O RÑ(Ô(Ð(Ð(Ð(r    c                  óþ  — t          dd¬¦  «        \  } }t          j        | g| |dk             gdz  z   ¦  «        }t          j        |g||dk             gdz  z   ¦  «        }t          j        | g| |dk             gdz  z   ¦  «        }t          j        |g||dk             gdz  z   ¦  «        }t          j        | gdz  ¦  «        }t          j        |gdz  ¦  «        }t	          d¬¦  «                             ||¦  «        }t	          d¬¦  «                             ||¦  «        }	t	          d¬¦  «                             ||¦  «        }
t          |j        |	j        ¦  «         t          |
j        |	j        ¦  «         d S )Nr   r   )ÚcentersÚrandom_stater   r   ©r2   )r   r   ÚvstackÚhstackr   Úfitr   Úcoef_)ÚXr   ÚX_1Úy_1ÚX_0Úy_0ÚX_Úy_Úlogreg1Úlogreg0Úlogregs              r   Ú$test_compute_class_weight_invariancerP   ^   sb  € õ ˜a¨aÐ0Ñ0Ô0�D€A€qå
Œ)�Q�C˜1˜Q !šVœ9˜+¨™/Ñ)Ñ
*Ô
*€CÝ
Œ)�Q�C˜1˜Q !šVœ9˜+¨™/Ñ)Ñ
*Ô
*€Cå
Œ)�Q�C˜1˜Q !šVœ9˜+¨™/Ñ)Ñ
*Ô
*€CÝ
Œ)�Q�C˜1˜Q !šVœ9˜+¨™/Ñ)Ñ
*Ô
*€Cå	Œ�A�3˜‘7Ñ	Ô	€BÝ	Œ�A�3˜‘7Ñ	Ô	€Bå ¨jÐ9Ñ9Ô9×=Ò=¸cÀ3ÑGÔG€GÝ ¨jÐ9Ñ9Ô9×=Ò=¸cÀ3ÑGÔG€GÝ¨ZÐ8Ñ8Ô8×<Ò<¸RÀÑDÔD€FÝ˜gœm¨W¬]Ñ;Ô;Ð;Ý˜fœl¨G¬MÑ:Ô:Ð:Ð:Ð:r    c                  ó  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          d| |¬¦  «        }t	          |¦  «        t	          | ¦  «        k    sJ ‚t          |t          j        g d¢¦  «        ¦  «         d S )N©éþÿÿÿr:   r   ©r:   r:   r   r   rS   rS   r   r   )r#   r#   r#   )r   Úarrayr   r	   Úlenr   )r   r   r   s      r   Ú+test_compute_class_weight_balanced_negativerW   z   s‚   € õ Œh�{�{�{Ñ#Ô#€GÝ
Œ
Ð)Ð)Ð)Ñ*Ô*€Aå	˜j°'¸QÐ	?Ñ	?Ô	?€BÝˆr‰7Œ7•c˜'‘l”lÒ"Ð"Ð"Ð"Ý˜b¥"¤(¨?¨?¨?Ñ";Ô";Ñ<Ô<Ð<Ð<Ð<r    c                  óŠ  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        ||d¬¦  «        }t	          d| ||¬¦  «        }t	          d| |¬¦  «        }t          |¦  «        t          | ¦  «        k    sJ ‚t          |¦  «        t          | ¦  «        k    sJ ‚t          j        |d	z   |¬
¦  «        }t          j        |d	z   ¦  «        }t          j        ||¦  «        t          j	        t          j        ||¦  «        ¦  «        k    sJ ‚t          ||¦  «         d S )NrR   rT   )r   r   r   r   r   r   r   )Úaxisr   )r   r   Úsample_weightr   r   )Úweights)r   rU   r   Úrepeatr	   rV   r   r   r.   Úapproxr   )r   r   ÚswÚy_repÚclass_weights_weightedÚclass_weights_repeatedÚclass_counts_weightedÚclass_counts_repeateds           r   Ú<test_compute_class_weight_balanced_sample_weight_equivalencerd   …   s\  € õ Œh�{�{�{Ñ#Ô#€GÝ
Œ
Ð)Ð)Ð)Ñ*Ô*€AÝ	ŒÐ&Ð&Ð&Ñ	'Ô	'€BåŒI�a˜ !Ð$Ñ$Ô$€Eå1Ø˜G q¸ðñ ô Ðõ 2°*ÀgÐQVÐWÑWÔWÐÝÐ%Ñ&Ô&­#¨g©,¬,Ò6Ð6Ð6Ð6ÝÐ%Ñ&Ô&­#¨g©,¬,Ò6Ð6Ð6Ð6åœK¨¨A©°rÐ:Ñ:Ô:ÐÝœK¨°©	Ñ2Ô2ÐåŒ6Ð(Ð*?Ñ@Ô@ÅFÄMÝ
ŒÐ%Ð'<Ñ=Ô=ñEô Eò ð ð ð õ Ð*Ð,BÑCÔCÐCÐCÐCr    c                  ó6  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          d| |¬¦  «        }t          j        |¦  «        |          }t          t          j        ||¦  «        |j        d         ¦  «         t          |g d¢¦  «         d S )N)r   r   r   )r   r   r   r   r   r   r   r   r   )r$   r#   çUUUUUUå?)	r   rU   r   r	   r   r   r   r   r   )r   r   r   r   s       r   Ú,test_compute_class_weight_balanced_unorderedrg       s�   € åŒh�y�y�yÑ!Ô!€GÝ
Œ
Ð%Ð%Ð%Ñ&Ô&€Aå	˜j°'¸QÐ	?Ñ	?Ô	?€BÝ”;˜q‘>”> 'Ô*€LÝ�œ˜r <Ñ0Ô0°!´'¸!´*Ñ=Ô=Ð=Ý˜bÐ"5Ð"5Ð"5Ñ6Ô6Ð6Ð6Ð6r    c                  óø  — t          j        g d¢¦  «        } t          j        | ¦  «        }t          |¦  «        }t	          d || ¬¦  «        }t          |¦  «        |k    sJ ‚t          |t          j        d¦  «        ¦  «         t	          ddi|| ¬¦  «        }t          |¦  «        |k    sJ ‚t          |g d¢¦  «         t	          dddœ|| ¬¦  «        }t          |¦  «        |k    sJ ‚t          |g d	¢¦  «         d S )
Nr   r   r   r   r8   )r8   r#   r#   ç      à?)r   r   )r8   r#   ri   )r   r   r   rV   r	   r   Úones)r   r   Úclasses_lenr   s       r   Ú!test_compute_class_weight_defaultrl   «   s	  € õ 	Œ
Ð%Ð%Ð%Ñ&Ô&€AÝŒi˜‰lŒl€GÝ�g‘,”,€Kõ 
˜d¨G°qÐ	9Ñ	9Ô	9€BÝˆr‰7Œ7�kÒ!Ð!Ð!Ð!Ý˜b¥"¤'¨!¡*¤*Ñ-Ô-Ð-õ 
˜q #˜h°¸1Ð	=Ñ	=Ô	=€BÝˆr‰7Œ7�kÒ!Ð!Ð!Ð!Ý˜b / / /Ñ2Ô2Ð2å	 #¨#Ð.Ð.¸À1Ð	EÑ	EÔ	E€BÝˆr‰7Œ7�kÒ!Ð!Ð!Ð!Ý˜b / / /Ñ2Ô2Ð2Ð2Ð2r    c            
      óð  — t          j        g d¢¦  «        } t          d| ¦  «        }t          |g d¢¦  «         t          dddœ| ¦  «        }t          |g d¢¦  «         t          j        dgdgdgdgdgdgg¦  «        } t          d| ¦  «        }t          |g d¢¦  «         t          j        g d¢¦  «        } t          d| ¦  «        }t          j        g d	¢¦  «        }t          ||d
¬¦  «         t          d | ¦  «        }t          |g d¢¦  «         t          j        ddgddgddgddgddgddgg¦  «        } t          d| ¦  «        }t          |g d¢¦  «         t          j        ddgddgddgddgddgddgg¦  «        } t          dddœdddœg| ¦  «        }t          |g d¢¦  «         t          j        ddgddgddgddgddgddgddgg¦  «        } t          d| ¦  «        }t          ||dz  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   )ç¥,Cëâè?rr   rr   rr   rr   rr   gí¾0™ª@r   )Údecimal)r#   r#   r#   r#   r#   r#   r#   r   r%   )r$   r$   r$   r$   r$   r$   r   r:   )r   r   r
   r   rU   ©r   rZ   Úexpected_balanceds      r   Útest_compute_sample_weightrv   Á   su  € õ 	Œ
Ð%Ð%Ð%Ñ&Ô&€AÝ)¨*°aÑ8Ô8€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ *¨a°A¨,¨,¸Ñ:Ô:€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ 	Œ
�Q�C˜!˜˜q˜c A 3¨¨¨a¨SÐ1Ñ2Ô2€AÝ)¨*°aÑ8Ô8€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ 	Œ
Ð(Ð(Ð(Ñ)Ô)€AÝ)¨*°aÑ8Ô8€MÝœØ@Ð@Ð@ñô Ðõ ˜mÐ->ÈÐJÑJÔJÐJõ *¨$°Ñ2Ô2€MÝ˜mÐ-PÐ-PÐ-PÑQÔQÐQõ 	Œ
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÐCÑDÔD€AÝ)¨*°aÑ8Ô8€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ 	Œ
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÐCÑDÔD€AÝ)¨q°Q¨<¨<¸QÀ1¸¸Ð*FÈÑJÔJ€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ 	Œ
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀGÐLÑMÔM€AÝ)¨*°aÑ8Ô8€MÝ˜mÐ->ÀÑ-AÈ1ÐMÑMÔMÐMÐMÐMr    c            
      ó@  — t          j        g d¢¦  «        } t          d| t          d¦  «        ¬¦  «        }t	          |g d¢¦  «         t          j        dgdgdgdgdgdgg¦  «        } t          d| t          d¦  «        ¬¦  «        }t	          |g d¢¦  «         t          j        g d¢¦  «        } t          d| t          d¦  «        ¬¦  «        }t	          |g d	¢¦  «         t          j        g d¢¦  «        } t          d| g d
¢¬¦  «        }t          j        g d¢¦  «        }t	          ||¦  «         t          j        ddgddgddgddgddgddgg¦  «        } t          d| g d
¢¬¦  «        }t	          ||dz  ¦  «         t          j        g d¢¦  «        } t          d| t          d¦  «        ¬¦  «        }t	          |g d¢¦  «         t          j        ddgddgddgddgddgddgddgg¦  «        } t          d| t          d¦  «        ¬¦  «        }t	          |g d¢¦  «         d S )Nrn   r   é   ©Úindicesro   r   r   r   )rf   rf   rf   r$   r$   r$   )r   r   r   r   r   r   )ç333333ã?r{   r{   r6   r6   r6   r   rq   )r#   r#   r#   r#   r#   r#   g        )r   r   r
   Úranger   rt   s      r   Ú)test_compute_sample_weight_with_subsampler}   í   sm  € õ 	Œ
Ð%Ð%Ð%Ñ&Ô&€AÝ)¨*°aÅÀqÁÄÐJÑJÔJ€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ 	Œ
�Q�C˜!˜˜q˜c A 3¨¨¨a¨SÐ1Ñ2Ô2€AÝ)¨*°aÅÀqÁÄÐJÑJÔJ€MÝ˜mÐ-KÐ-KÐ-KÑLÔLÐLõ 	Œ
Ð%Ð%Ð%Ñ&Ô&€AÝ)¨*°aÅÀqÁÄÐJÑJÔJ€MÝ˜mÐ-WÐ-WÐ-WÑXÔXÐXõ 	Œ
Ð%Ð%Ð%Ñ&Ô&€AÝ)¨*°aÐASÐASÐASÐTÑTÔT€MÝœ
Ð#AÐ#AÐ#AÑBÔBÐÝ˜mÐ->Ñ?Ô?Ð?õ 	Œ
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÐCÑDÔD€AÝ)¨*°aÐASÐASÐASÐTÑTÔT€MÝ˜mÐ->ÀÑ-AÑBÔBÐBõ 	Œ
Ð(Ð(Ð(Ñ)Ô)€AÝ)¨*°aÅÀqÁÄÐJÑJÔJ€MÝ˜mÐ-PÐ-PÐ-PÑQÔQÐQõ 	Œ
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÑLÔL€AÝ)¨*°aÅÀqÁÄÐJÑJÔJ€MÝ˜mÐ-PÐ-PÐ-PÑQÔQÐQÐQÐQr    z&y_type, class_weight, indices, err_msgúsingle-outputr   rp   z:The only valid class_weight for subsampling is 'balanced'.zmulti-outputzGFor multi-output, class_weight should be a list of dicts, or the stringz)Got 1 element\(s\) while having 2 outputsc           	      ó  — t          j        g d¢¦  «        }t          j        ddgddgddgddgddgddgg¦  «        }| dk    r|n|}t          j        t          |¬¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrn   r   r   r   r~   r+   ry   )r   r   r.   r/   r0   r
   )r1   r2   rz   r3   Úy_single_outputÚy_multi_outputr   s          r   Ú!test_compute_sample_weight_errorsr‚     s  € õ4 ”jÐ!3Ð!3Ð!3Ñ4Ô4€OÝ”Z ! Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÈ!ÈQÈÐ PÑQÔQ€Nà! _Ò4Ð4ˆˆ¸.€AÝ	Œ•z¨Ð	1Ñ	1Ô	1ð @ð @Ý˜l¨A°wÐ?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s   Á"BÂBÂ	Bc                  óÔ   — t          j        d¦  «        } t          j        d¦  «        }t          d| |¬¦  «        }t          |t          j        | j        d         ¦  «        ¦  «         d S )Né2   r   ry   r   )r   r;   r
   r   rj   r   )r   rz   Úweights      r   Ú'test_compute_sample_weight_more_than_32r†   6  sV   € å
Œ	�"‰Œ€AÝŒi˜‰mŒm€GÝ" :¨q¸'ÐBÑBÔB€FÝ˜f¥b¤g¨a¬g°a¬jÑ&9Ô&9Ñ:Ô:Ð:Ð:Ð:r    c                  óp   — t          ddddœ¬¦  «        } |                      g d¢g d¢g d¢gg d¢¦  «         d	S )
zcCheck that class_weight can contain more labels than in y.

    Non-regression test for #22413
    r   é
   é   r7   rA   )r   r   r   )r   r   r   )r   r   r   N)r   rD   )Útrees    r   Ú0test_class_weight_does_not_contains_more_classesr‹   >  sQ   € õ
 "°1¸ÀÐ/CÐ/CÐDÑDÔD€Dð 	‡H‚Hˆiˆiˆi˜˜˜ I I IÐ.°	°	°	Ñ:Ô:Ð:Ð:Ð:r    Úcsc_containerc                 ó�   —  | t          j        dgdgdgg¦  «        ¦  «        }t          d|¦  «        }t          |g d¢¦  «         dS )z0Check that we can compute weight for sparse `y`.r   r   r   )r8   ç      è?rŽ   N)r   r   r
   r   )rŒ   r   rZ   s      r   Ú!test_compute_sample_weight_sparser�   I  sU   € ð 	ˆ•b”j 1 #¨ s¨Q¨C Ñ1Ô1Ñ2Ô2€AÝ)¨*°aÑ8Ô8€MÝ�MÐ#4Ð#4Ð#4Ñ5Ô5Ð5Ð5Ð5r    )&Únumpyr   r.   Únumpy.testingr   Úsklearn.datasetsr   Úsklearn.linear_modelr   Úsklearn.treer   Úsklearn.utils._testingr   r   Úsklearn.utils.class_weightr	   r
   Úsklearn.utils.fixesr   r   ÚmarkÚparametrizer;   rU   r4   r=   rP   rW   rd   rg   rl   rv   r}   r|   r‚   r†   r‹   r�   © r    r   ú<module>r›      s  ðØ Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø /Ð /Ð /Ð /Ð /Ð /Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ .Ð .Ð .Ð .Ð .Ð .ð	!ð 	!ð 	!ð „×ÒØ,ð ØØˆBŒI�a‰LŒLØ<ð		
ð Ø  #Ð&ØˆBŒI�a‰LŒLØCð		
ð ØØˆBŒI�a‰LŒLØ5ð		
ð Ø˜ÐÐØˆBŒI�a‰LŒLØ5ð		
ð Ø˜qÐ!Ð!ØˆBŒH�e˜U�^Ñ$Ô$Ø>ð		
ð5 ñ#ô #ðH
Að 
AñI#ô #ðH
Að)ð )ð )ð(;ð ;ð ;ð8=ð =ð =ðDð Dð Dð67ð 7ð 7ð3ð 3ð 3ð,)Nð )Nð )NðX$Rð $Rð $RðN „×ÒØ,ð Ø�aˆLˆLØˆE�!‰HŒHØHð		
ð Ø�aˆLˆLØØUð		
ð Ø�qˆ\ˆ\ˆNØØ8ð		
ðñô ð.@ð @ñ/ô ð.@ð;ð ;ð ;ð;ð ;ð ;ð „×Ò˜¨.Ñ9Ô9ð6ð 6ñ :Ô9ð6ð 6ð 6r    