§
    qŠtj¨  ã                   óš  — 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
mZmZ d dlmZmZmZ d dlmZ  e ej        ¦   «         ¦  «        Zd„ Zej                             d e
d d	d
d
¦  «         e
d d	d
d¦  «         e
d d	dd
¦  «         e
d d	dd¦  «         e
 ed¦  «          ed¦  «        d
d
¦  «         e
 ed¦  «          ed¦  «        d
d¦  «         e
 ed¦  «          ed¦  «        dd
¦  «         e
 ed¦  «          ed¦  «        dd¦  «         e
ddd
d
¦  «         e
ddd
d¦  «         e
dddd
¦  «         e
dddd¦  «        g¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             d e¦   «         ¦  «        ej                             de¦  «        d„ ¦   «         ¦   «         ZdS )é    N)Úassert_allclose)Úconfig_context)Ú_LINKSÚHalfLogitLinkÚIntervalÚMultinomialLogitÚ_inclusive_low_high)Ú_atol_for_typeÚmove_toÚ)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsc                  ó’   — t          j        t          d¬¦  «        5  t          dddd¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z5Test that interval with low > high raises ValueError.z-One must have low <= high; got low=1, high=0.)Úmatché   r   FN)ÚpytestÚraisesÚ
ValueErrorr   © ó    ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/_loss/tests/test_link.pyÚtest_interval_raisesr      s™   € å	ŒÝÐIð
ñ 
ô 
ð %ð %õ 	��A�u˜eÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   œ<¼A ÁA Úintervalr   FTÚinféöÿÿÿéÿÿÿÿc                 óê  — t          | ¦  «        \  }}t          j        ||d¬¦  «        }|                      |¦  «        sJ ‚|                      t          j        || j        f         ¦  «        | j        k    sJ ‚|                      t          j        || j        f         ¦  «        | j        k    sJ ‚|                      t          j        || j        | j        f         ¦  «        | j        o| j        k    sJ ‚dS )zHTest that low and high are always within the interval used for linspace.é
   )ÚnumN)	r	   ÚnpÚlinspaceÚincludesÚr_ÚlowÚlow_inclusiveÚhighÚhigh_inclusive)r   r#   r%   Úxs       r   Útest_is_in_ranger(      sù   € õ& $ HÑ-Ô-�I€CˆÝ
Œ�C˜ 2Ð&Ñ&Ô&€Aà×Ò˜QÑÔÐÐÐð ×Ò�RœU 1 h¤l ?Ô3Ñ4Ô4¸Ô8NÒNÐNÐNÐNð ×Ò�RœU 1 h¤mÐ#3Ô4Ñ5Ô5¸Ô9PÒPÐPÐPÐPð ×Ò�RœU 1 h¤l°H´MÐ#AÔBÑCÔCØÔÐ: 8Ô#:òð ð ð ð ð r   Úlinkc                 óŒ  — t           j                             |¦  «        } | ¦   «         } d\  }}| j        rGd}|                     dd||f¬¦  «        }t          | t          ¦  «        r|                      |¦  «        }nFt          | t          ¦  «        r|                     dd|¬¦  «        }n|                     dd|¬¦  «        }t          |  
                    |                      |¦  «        ¦  «        |¦  «         |                      |¦  «        }t          |                      |  
                    |¦  «        ¦  «        |¦  «         dS )z)Test that link of inverse gives identity.©éd   Nr   éìÿÿÿé   ©r#   r%   Úsizer   N)r   ÚrandomÚRandomStateÚis_multiclassÚuniformÚ
isinstancer   Úsymmetrize_raw_predictionr   r   r)   Úinverse)r)   Úglobal_random_seedÚrngÚ	n_samplesÚ	n_classesÚraw_predictionÚy_preds          r   Útest_link_inverse_identityr>   C   s0  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØˆ4‰6Œ6€DØ$Ñ€Iˆyð Ôð IØˆ	ØŸš¨°2¸YÈ	Ð<R˜ÑSÔSˆÝ�dÕ,Ñ-Ô-ð 	LØ!×;Ò;¸NÑKÔKˆNøÝ	�D�-Ñ	(Ô	(ð IØŸš¨°2¸Y˜ÑHÔHˆˆàŸš¨°2¸Y˜ÑHÔHˆå�D—I’I˜dŸlšl¨>Ñ:Ô:Ñ;Ô;¸^ÑLÔLÐLØ�\Š\˜.Ñ)Ô)€FÝ�D—L’L §¢¨6Ñ!2Ô!2Ñ3Ô3°VÑ<Ô<Ð<Ð<Ð<r   z"namespace, device_name, dtype_namec                 óR  — t           j                             |¦  «        } |¦   «         }d\  }}|j        rGd}|                     dd||f¬¦  «        }t          |t          ¦  «        r|                     |¦  «        }nFt          |t          ¦  «        r|                     dd|¬¦  «        }n|                     dd|¬¦  «        }t          | ||¦  «        \  }	}
|dk    r|dz  }|rd	nd
}nd}t          |¦  «        }t          d¬¦  «        5  |	                     |                     |¦  «        |
¬¦  «        }t          t          |                     |¦  «        t           d¬¦  «        |                     |¦  «        |¬¦  «         |                     |¦  «        }|	                     |                     |¦  «        |
¬¦  «        }t          t          |                     |¦  «        t           d¬¦  «        |                     |¦  «        ||¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zFTest that link and inverse link give same result for array API inputs.r+   r   r-   r.   r/   r   Úfloat64g      à?gü©ñÒMbP?g-Cëâ6?g:Œ0âŽyE>T)Úarray_api_dispatch)ÚdeviceÚcpu)ÚxprB   )Úrtol)rE   ÚatolN)r   r1   r2   r3   r4   r5   r   r6   r   r   r
   r   ÚasarrayÚastyper   r   r7   r)   )Ú	namespaceÚdevice_nameÚ
dtype_namer)   r8   r9   r:   r;   r<   rD   rB   rE   rF   Úraw_prediction_xpr=   Ú	y_pred_xps                   r   Útest_link_inverse_array_apirN   [   su  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØˆ4‰6Œ6€DØ$Ñ€Iˆyð Ôð IØˆ	ØŸš¨°2¸YÈ	Ð<R˜ÑSÔSˆÝ�dÕ,Ñ-Ô-ð 	LØ!×;Ò;¸NÑKÔKˆNøÝ	�D�-Ñ	(Ô	(ð IØŸš¨°2¸Y˜ÑHÔHˆˆàŸš¨°2¸Y˜ÑHÔHˆå% i°¸jÑIÔI�J€BˆØ�YÒÐØ˜#ÑˆØ Ð*ˆtˆt dˆˆàˆÝ˜*Ñ%Ô%€Då	¨4Ð	0Ñ	0Ô	0ð 
ð 
ØŸJšJ ~×'<Ò'<¸ZÑ'HÔ'HÐQW˜JÑXÔXÐÝÝ�D—L’LÐ!2Ñ3Ô3½À5ÐIÑIÔIØ�LŠL˜Ñ(Ô(Øð	
ñ 	
ô 	
ð 	
ð —’˜nÑ-Ô-ˆØ—J’J˜vŸ}š}¨ZÑ8Ô8À�JÑHÔHˆ	ÝÝ�D—I’I˜iÑ(Ô(­R¸Ð>Ñ>Ô>Ø�IŠI�fÑÔØØð		
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Ä
DHÈH È#H )Únumpyr   r   Únumpy.testingr   Úsklearnr   Úsklearn._loss.linkr   r   r   r   r	   Úsklearn.utils._array_apir
   r   r   Úsklearn.utils._testingr   ÚlistÚvaluesÚLINK_FUNCTIONSr   ÚmarkÚparametrizeÚfloatr(   r>   rN   r   r   r   ú<module>r[      sê  ðØ Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )à "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 8Ð 7Ð 7Ð 7Ð 7Ð 7à��m�f”m‘o”oÑ&Ô&€ð%ð %ð %ð „×ÒØàˆ��A�u˜eÑ$Ô$Øˆ��A�u˜dÑ#Ô#Øˆ��A�t˜UÑ#Ô#Øˆ��A�t˜TÑ"Ô"Øˆ�%�%˜‘,”,�   e¡¤¨e°UÑ;Ô;Øˆ�%�%˜‘,”,�   e¡¤¨e°TÑ:Ô:Øˆ�%�%˜‘,”,�   e¡¤¨d°EÑ:Ô:Øˆ�%�%˜‘,”,�   e¡¤¨d°DÑ9Ô9Øˆ��b˜% Ñ'Ô'Øˆ��b˜% Ñ&Ô&Øˆ��b˜$ Ñ&Ô&Øˆ��b˜$ Ñ%Ô%ðñô ð"ð ñ#ô ð"ð& „×Ò˜ Ñ0Ô0ð=ð =ñ 1Ô0ð=ð. „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð „×Ò˜ Ñ0Ô0ð+
ð +
ñ 1Ô0ñ	ô ð
+
ð +
ð +
r   