Ë
    ÷Q(h0  ã                   óœ  — 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(                  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ej(                  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(                  j+                  d/e«      d0„ «       Z$y)1é    N)Úassert_allclose)Ú
make_blobs)ÚLogisticRegression)ÚDecisionTreeClassifier)Úassert_almost_equalÚassert_array_almost_equal)Úcompute_class_weightÚcompute_sample_weight)ÚCSC_CONTAINERSc                  ó4  — 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J ‚ J ‚y )N©é   r   r   é   r   é   Úbalanced©ÚclassesÚyr   r   é   )ÚnpÚasarrayÚuniquer	   Úbincountr   ÚdotÚshape)r   r   ÚcwÚclass_countss       úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/utils/tests/test_class_weight.pyÚtest_compute_class_weightr      s‚   € ä
�
‰
Ò%Ó&€AÜ�i‰i˜‹l€Gä	˜j°'¸QÔ	?€Bä—;‘;˜q“> ! "Ð%€LÜœŸ™˜r <Ó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 «       y # 1 sw Y   y xY w)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      sj   € ðP �YÒô 	�
‰
Ò%Ô&ä�Z‰ZÒ-Ó.ð ô 
ˆ!„HÜ	�‰”z¨Ô	1ñ AÜ˜\°7¸aÕ@÷A÷ Añ Aús   ÁA2Á2A;c                  óR  — 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¢|«       y )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‰i˜‹l€GØ ¨Ñ,€MÜ
�
‰
’<Ó €AÜ	˜m°WÀÔ	B€Bô œbŸj™jªÓ9¸2Ô>ð  ¨°Ñ4€MÜ	˜m°WÀÔ	B€BÜ’O RÔ(à ¨°Ñ5€MÜ	˜m°WÀÔ	B€BÜ’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¬«      j                  ||«      }t	        d¬«      j                  ||«      }	t	        d¬«      j                  ||«      }
t        |j                  |	j                  «       t        |
j                  |	j                  «       y )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   ^   s1  € ô ˜a¨aÔ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×=Ñ=¸cÀ3ÓG€GÜ ¨jÔ9×=Ñ=¸cÀ3ÓG€GÜ¨ZÔ8×<Ñ<¸RÀÓD€FÜ˜gŸm™m¨W¯]©]Ô;Ü˜fŸl™l¨G¯M©MÕ:r    c                  ó  — t        j                  g d¢«      } t        j                  g d¢«      }t        d| |¬«      }t	        |«      t	        | «      k(  sJ ‚t        |t        j                  g d¢«      «       t        j                  g d¢«      }t        d| |¬«      }t	        |«      t	        | «      k(  sJ ‚t        j                  |dz   «      }t        t        j                  ||«      |j                  d   «       t        |g d	¢«       y )
N)éþÿÿÿr:   r   )r:   r:   r   r   rR   rR   r   r   )r#   r#   r#   )r:   r   r   rR   rR   rR   r   r   )çUUUUUUå?r$   r#   )
r   Úarrayr   r	   Úlenr   r   r   r   r   ©r   r   r   r   s       r   Ú+test_compute_class_weight_balanced_negativerW   z   sÇ   € ô �h‰h’{Ó#€GÜ
�
‰
Ò)Ó*€Aä	˜j°'¸QÔ	?€BÜˆr‹7”c˜'“lÒ"Ð"Ð"Ü˜b¤"§(¡(ª?Ó";Ô<ô 	�
‰
Ò)Ó*€Aä	˜j°'¸QÔ	?€BÜˆr‹7”c˜'“lÒ"Ð"Ð"Ü—;‘;˜q 1™uÓ%€LÜœŸ™˜r <Ó0°!·'±'¸!±*Ô=Ü˜bÒ"5Õ6r    c                  ó"  — t        j                  g d¢«      } t        j                  g d¢«      }t        d| |¬«      }t        j                  |«      |    }t        t        j                  ||«      |j                  d   «       t        |g d¢«       y )N)r   r   r   )r   r   r   r   r   r   r   r   r   )r$   r#   rS   )	r   rT   r   r	   r   r   r   r   r   rV   s       r   Ú,test_compute_class_weight_balanced_unorderedrY   Ž   sg   € ä�h‰h’yÓ!€GÜ
�
‰
Ò%Ó&€Aä	˜j°'¸QÔ	?€BÜ—;‘;˜q“> 'Ñ*€LÜœŸ™˜r <Ó0°!·'±'¸!±*Ô=Ü˜bÒ"5Õ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	¢«       y )
Nr   r   r   r   r8   )r8   r#   r#   ç      à?)r   r   )r8   r#   r[   )r   r   r   rU   r	   r   Úones)r   r   Úclasses_lenr   s       r   Ú!test_compute_class_weight_defaultr^   ™   s¼   € ô 	�
‰
Ò%Ó&€AÜ�i‰i˜‹l€GÜ�g“,€Kô 
˜d¨G°qÔ	9€BÜˆr‹7�kÒ!Ð!Ð!Ü˜b¤"§'¡'¨!£*Ô-ô 
˜q #˜h°¸1Ô	=€BÜˆr‹7�kÒ!Ð!Ð!Ü˜b¢/Ô2ä	 #¨#Ñ.¸À1Ô	E€BÜˆr‹7�kÒ!Ð!Ð!Ü˜b¢/Õ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¬«       y )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ëâè?rd   rd   rd   rd   rd   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   rT   ©r   Úsample_weightÚexpected_balanceds      r   Útest_compute_sample_weightri   ¯   sÜ  € ô 	�
‰
Ò%Ó&€AÜ)¨*°aÓ8€MÜ˜mÒ-KÔLô *¨a°A©,¸Ó:€MÜ˜mÒ-KÔLô 	�
‰
�Q�C˜!˜˜q˜c A 3¨¨¨a¨SÐ1Ó2€AÜ)¨*°aÓ8€MÜ˜mÒ-KÔLô 	�
‰
Ò(Ó)€AÜ)¨*°aÓ8€MÜŸ™Ú@óÐô ˜mÐ->ÈÕJô *¨$°Ó2€MÜ˜mÒ-PÔQô 	�
‰
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÐCÓD€AÜ)¨*°aÓ8€MÜ˜mÒ-KÔLô 	�
‰
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÐCÓD€AÜ)¨q°Q©<¸QÀ1¹Ð*FÈÓJ€MÜ˜mÒ-KÔLô 	�
‰
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀGÐLÓM€AÜ)¨*°aÓ8€MÜ˜mÐ->ÀÑ-AÈ1Ö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¢«       y )Nr`   r   é   ©Úindicesra   r   r   r   )rS   rS   rS   r$   r$   r$   )r   r   r   r   r   r   )ç333333ã?rn   rn   r6   r6   r6   r   rc   )r#   r#   r#   r#   r#   r#   g        )r   r   r
   Úranger   rf   s      r   Ú)test_compute_sample_weight_with_subsamplerp   Û   s¹  € ô 	�
‰
Ò%Ó&€AÜ)¨*°aÄÀqÃÔJ€MÜ˜mÒ-KÔLô 	�
‰
�Q�C˜!˜˜q˜c A 3¨¨¨a¨SÐ1Ó2€AÜ)¨*°aÄÀqÃÔJ€MÜ˜mÒ-KÔLô 	�
‰
Ò%Ó&€AÜ)¨*°aÄÀqÃÔJ€MÜ˜mÒ-WÔXô 	�
‰
Ò%Ó&€AÜ)¨*°aÒASÔT€MÜŸ
™
Ò#AÓBÐÜ˜mÐ->Ô?ô 	�
‰
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÐCÓD€AÜ)¨*°aÒASÔT€MÜ˜mÐ->ÀÑ-AÔBô 	�
‰
Ò(Ó)€AÜ)¨*°aÄÀqÃÔJ€MÜ˜mÒ-PÔQô 	�
‰
�Q˜�F˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÓL€AÜ)¨*°aÄÀqÃÔJ€MÜ˜mÒ-PÕQr    z&y_type, class_weight, indices, err_msgúsingle-outputr   rb   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 «       y # 1 sw Y   y xY w)Nr`   r   r   r   rq   r+   rl   )r   r   r.   r/   r0   r
   )r1   r2   rm   r3   Úy_single_outputÚy_multi_outputr   s          r   Ú!test_compute_sample_weight_errorsru     s‡   € ô4 —j‘jÒ!3Ó4€OÜ—Z‘Z ! Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÈ!ÈQÈÐ PÓQ€Nà! _Ò4‰¸.€AÜ	�‰”z¨Ô	1ñ @Ü˜l¨A°wÕ?÷@÷ @ñ @ús   Á#A;Á;Bc                  óÌ   — t        j                  d«      } t        j                  d«      }t        d| |¬«      }t        |t        j                  | j
                  d   «      «       y )Né2   r   rl   r   )r   r;   r
   r   r\   r   )r   rm   Úweights      r   Ú'test_compute_sample_weight_more_than_32ry   $  sE   € ä
�	‰	�"‹€AÜ�i‰i˜‹m€GÜ" :¨q¸'ÔB€FÜ˜f¤b§g¡g¨a¯g©g°a©jÓ&9Õ:r    c                  ó^   — t        ddddœ¬«      } | j                  g d¢g d¢g d¢gg d¢«       y	)
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~   ,  s,   € ô
 "°1¸ÀÑ/CÔD€Dð 	‡H�HŠiš¢IÐ.²	Õ:r    Úcsc_containerc                 óz   —  | t        j                  dgdgdgg«      «      }t        d|«      }t        |g d¢«       y)z0Check that we can compute weight for sparse `y`.r   r   r   )r8   ç      è?r�   N)r   r   r
   r   )r   r   rg   s      r   Ú!test_compute_sample_weight_sparser‚   7  s:   € ñ 	”b—j‘j 1 #¨ s¨Q¨C Ó1Ó2€AÜ)¨*°aÓ8€MÜ�MÒ#4Õ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;   rT   r4   r=   rP   rW   rY   r^   ri   rp   ro   ru   ry   r~   r‚   © r    r   ú<module>rŽ      sÈ  ðÛ Û Ý )å 'Ý 3Ý /ß Qß RÝ .ò	!ð ‡�×ÑØ,ð ØØˆB�I‰I�a‹LØ<ð		
ð Ø  #Ð&ØˆB�I‰I�a‹LØCð		
ð ØØˆB�I‰I�a‹LØ5ð		
ð Ø˜ÑØˆB�I‰I�a‹LØ5ð		
ð Ø˜qÑ!ØˆB�H‰H�e˜U�^Ó$Ø>ð		
ð5 ó#ñH
AóI#ðH
Aò)ò(;ò87ò(7ò3ò,)NòX$RðN ‡�×ÑØ,ð Ø�a‰LÙ�!‹HØHð		
ð Ø�a‰LØØUð		
ð Ø�q‰\ˆNØØ8ð		
ðóñ.@ó/ð.@ò;ò;ð ‡�×Ñ˜¨.Ó9ñ6ó :ñ6r    