U
    3d                     @   s:  d dl Zd dlmZmZ d dlZd dlmZmZm	Z	m
Z
 ee Zd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j ejdde
ej ejdd	e
ej ejd	de
ej ejd	d	e
d
ddde
d
ddd	e
d
dd	de
d
dd	d	gdd Zejdedd Zejdedd ZdS )    N)assert_allcloseassert_array_equal)_LINKS_inclusive_low_highMultinomialLogitIntervalc                	   C   s,   t jtdd tdddd W 5 Q R X dS )z5Test that interval with low > high raises ValueError.z-One must have low <= high; got low=1, high=0.)match   r   FN)pytestZraises
ValueErrorr    r   r   A/tmp/pip-unpacked-wheel-zrfo1fqw/sklearn/_loss/tests/test_link.pytest_interval_raises   s
     r   intervalr	   FTic                 C   s   t | \}}tj||dd}| |s*t| tj|| jf | jksJt| tj|| jf | j	ksjt| tj|| j| jf | jo| j	kstd S )N
   )num)
r   npZlinspaceZincludesAssertionErrorZr_lowZlow_inclusivehighZhigh_inclusive)r   r   r   xr   r   r   test_is_in_range   s      
r   linkc                 C   s   t j|}|  } d\}}| jrNd}|jdd||fd}t| tr^| |}n|jdd|d}t| 	| 
|| | 
|}t| 
| 	|| d S )Nd   Nr   i   )r   r   size)r   randomRandomStateis_multiclassuniform
isinstancer   symmetrize_raw_predictionr   r   inverse)r   Zglobal_random_seedrng	n_samples	n_classesraw_predictiony_predr   r   r   test_link_inverse_identity<   s    

r*   c           	      C   s   t jd}|  } d\}}| jrNd}|jdd||fd}t| tr^| |}n|jdd|d}| j|d d}t 	|}| j||d}t
|| t|| t ||stt 	|}| j||d}t
|| t|| t ||std S )N*   r   r   r   )locZscaler   )out)r   r   r   r    normalr"   r   r#   r$   Z
empty_liker   r   Zshares_memoryr   r   )	r   r%   r&   r'   r(   r)   r-   Zy_pred_2Zraw_prediction_2r   r   r   test_link_out_argumentR   s(    






r/   )Znumpyr   Znumpy.testingr   r   r
   Zsklearn._loss.linkr   r   r   r   listvaluesZLINK_FUNCTIONSr   markZparametrizeinfr   r*   r/   r   r   r   r   <module>   s4   

