U
    ½mœdPv ã                   @   sP  d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZ	d dl
mZ d dlm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m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 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$ 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) 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. d d l"m/Z/ d d!l"m0Z0 d d"l"m1Z1 d d#l"m2Z2 d d$l"m3Z3 d d%l"m4Z4 d d&l"m5Z5 d d'l"m6Z6 d d(l7m8Z8 d d)l9m:Z: d d*l;m<Z= �dd,d-„Z>d.d/„ Z?d0d1„ Z@ejA Bd2d3d d4g¡d5d6„ ƒZCd7d8„ ZDd9d:„ ZEed;d<„ ƒZFed=d>„ ƒZGed?d@„ ƒZHdAdB„ ZIdCdD„ ZJdEdF„ ZKedGdH„ ƒZLdIdJ„ ZMdKdL„ ZNdMdN„ ZOdOdP„ ZPdQdR„ ZQdSdT„ ZRejA BdUdVdWdXdYg¡dZd[„ ƒZSd\d]„ ZTd^d_„ ZUejA Bd`e	 Vd d d d d d g¡e	 Vd d d d d d g¡daœdbfe	 Vd4d4d4d d d g¡e	 Vd4d4d4d d d g¡daœdcfe	 Vd4d4d4d d d g¡e	 Vd d d d d d g¡daœddfe	 Vd4d4d4d d d g¡e	 Vd d d d4d4d4g¡daœdefe	 Vd d d d d d g¡e	 Vd4d4d4d d d g¡daœdffg¡dgdh„ ƒZWejA Bdie	 Vd d4d d4d g¡e	 Vd4d4d d djg¡daœdkfg¡dldm„ ƒZXdndo„ ZYdpdq„ ZZdrds„ Z[dtdu„ Z\dvdw„ Z]dxdy„ Z^dzd{„ Z_ejA Bd|d}d~g¡dd€„ ƒZ`d�d‚„ ZaejA Bdƒd„d…d†d‡dg¡dˆd‰„ ƒZbdŠd‹„ ZcdŒd�„ ZddŽd�„ ZeejAjBd�g d‘fd’d“gd”fgd•d–gd—�d˜d™„ ƒZfejAjBdšdd d4gd d4djgfd›dœd�gd—�dždŸ„ ƒZgd d¡„ ZhejA Bd¢d£d¤d¥g¡d¦d§„ ƒZid¨d©„ Zjdªd«„ Zkd¬d­„ Zld®d¯„ Zmd°d±„ Znd²d³„ Zod´dµ„ Zpd¶d·„ Zqd¸d¹„ Zredºd»„ ƒZsd¼d½„ Ztd¾d¿„ ZudÀdÁ„ ZvdÂdÃ„ ZwdÄdÅ„ ZxdÆdÇ„ ZydÈdÉ„ ZzejA BdÊdËdÌg¡dÍdÎ„ ƒZ{edÏdÐ„ ƒZ|edÑdÒ„ ƒZ}eejA Bd2d3d d4g¡dÓdÔ„ ƒƒZ~ejA BdÕd4g¡ejA Bdƒd†d…d‡d„g¡ejA Bd2d d4g¡dÖd×„ ƒƒƒZejA Bdƒd†d…d‡d„g¡dØdÙ„ ƒZ€ejA Bd2d d4g¡dÚdÛ„ ƒZ�dÜdÝ„ Z‚dÞdß„ ZƒejA Bd2d d4g¡dàdá„ ƒZ„ejA Bd2d3d d4g¡dâdã„ ƒZ…ejA Bd2d3d d4g¡dädå„ ƒZ†ejA Bd2d3d d4g¡dædç„ ƒZ‡dèdé„ Zˆdêdë„ Z‰dìdí„ ZŠdîdï„ Z‹dðdñ„ ZŒdòdó„ Z�dôdõ„ ZŽdöd÷„ Z�dødù„ Z�dúdû„ Z‘düdý„ Z’dþdÿ„ Z“�d �d„ Z”�d�d„ Z•�d�d„ Z–�d�d„ Z—ejA B�d�d	�d
�d	�d
g�d	�d	�d	�d
gf�d	�d
�d�d
g�d	�d	�d	�d
gf�d	�d	�d	�d
g�d	�d
�d�d
gfg¡�d�d„ ƒZ˜dS (  é    )Úpartial)Úproduct)Úchain)ÚpermutationsN)Úlinalg)Ú	bernoulli)Údatasets)Úsvm)Úmake_multilabel_classification)Úlabel_binarizeÚLabelBinarizer)Úcheck_random_state)Úassert_almost_equal)Úassert_array_equal)Úassert_array_almost_equal)Úassert_allclose)Úassert_no_warnings)Úignore_warnings)ÚMockDataFrame)Úaccuracy_score)Úaverage_precision_score)Úbalanced_accuracy_score)Úclass_likelihood_ratios)Úclassification_report)Úcohen_kappa_score)Úconfusion_matrix)Úf1_score)Úfbeta_score)Úhamming_loss)Ú
hinge_loss)Újaccard_score)Úlog_loss)Úmatthews_corrcoef)Úprecision_recall_fscore_support)Úprecision_score)Úrecall_score)Úzero_one_loss)Úbrier_score_loss)Úmultilabel_confusion_matrix)Ú_check_targets)ÚUndefinedMetricWarning)ÚhammingFc                 C   s  | dkrt  ¡ } | j}| j}|r:||dk  ||dk   }}|j\}}t |¡}tdƒ}| |¡ || ||  }}t	|d ƒ}tj
 d¡}tj|| |d| ¡f }tjdddd�}	|	 |d|… |d|… ¡ ||d… ¡}
|rò|
dd…d	f }
|	 ||d… ¡}||d… }|||
fS )
z¼Make some classification predictions on a toy dataset using a SVC

    If binary is True restrict to a binary classification problem instead of a
    multiclass classification problem
    Né   é%   r   éÈ   ÚlinearT)ZkernelZprobabilityÚrandom_stateé   )r   Ú	load_irisÚdataÚtargetÚshapeÚnpÚaranger   ÚshuffleÚintÚrandomÚRandomStateZc_Zrandnr	   ZSVCÚfitZpredict_probaZpredict)ÚdatasetÚbinaryÚXÚyÚ	n_samplesÚ
n_featuresÚpÚrngZhalfZclfZprobas_predÚy_predÚy_true© rG   úb/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/metrics/tests/test_classification.pyÚmake_prediction9   s*    


*rI   c               
   C   s|  t  ¡ } t| dd�\}}}dddddœdd	d
ddœdddddœdddddœddddddœdœ}t||t t| jƒ¡| jdd�}| ¡ | ¡ ks’t	‚|D ]x}|dkrÊt
|| tƒs´t	‚|| || ksÈt	‚q–||  ¡ ||  ¡ ksæt	‚|| D ]}t|| | || | ƒ qîq–t|d d ƒtk�s*t	‚t|d d ƒtk�sDt	‚t|d d ƒtk�s^t	‚t|d d ƒtk�sxt	‚d S ) NF©r=   r>   g§7½éMoê?gUUUUUUé?gh£¾³Qßé?é   )Ú	precisionÚrecallúf1-scoreÚsupportçUUUUUUÕ?gÆcŒ1Æ¸?g433333Ã?é   g³¦¬)kÊÚ?çÍÌÌÌÌÌì?ç“$I’$Iâ?é   gCÜFÁQà?g�¼cÕà?g¿��Æ¢ã?éK   ©rN   rL   rM   rO   gá?gDÖ~WGÞ?g]žè3«pà?)ÚsetosaZ
versicolorZ	virginicaú	macro avgÚaccuracyúweighted avgT)ÚlabelsÚtarget_namesÚoutput_dictrY   rW   rL   rX   rO   )r   r2   rI   r   r6   r7   Úlenr\   ÚkeysÚAssertionErrorÚ
isinstanceÚfloatr   Útyper9   )ÚirisrF   rE   Ú_Úexpected_reportÚreportÚkeyÚmetricrG   rG   rH   Ú,test_classification_report_dictionary_outputi   s`    üüüüüæ"û	rj   c                  C   sØ   t g g dd�} dtjtjtjddœdddddœdœ}t| tƒsBt‚|  ¡ | ¡ ksVt‚|D ]x}|dkrŽt| | tƒsxt‚| | || ksÒt‚qZ| |  ¡ ||  ¡ ksªt‚|| D ]}t|| | | | | ƒ q²qZd S )NT)rF   rE   r]   ç        r   rV   )rY   rX   rZ   rY   )	r   r6   Únanra   Údictr`   r_   rb   r   )rg   rf   rh   ri   rG   rG   rH   Ú2test_classification_report_output_dict_empty_input«   s,    üüørn   Úzero_divisionÚwarnr1   c              	   C   s„   dddgdddg }}t jdd��X}t||| dd� | dkrnt|ƒd	ksLt‚|D ]}d
}|t|jƒksPt‚qPn|rvt‚W 5 Q R X d S )NÚaÚbÚcÚdT©Úrecord)ro   r]   rp   r1   z7Use `zero_division` parameter to control this behavior.)ÚwarningsÚcatch_warningsr   r^   r`   ÚstrÚmessage)ro   rF   rE   rv   ÚitemÚmsgrG   rG   rH   Ú0test_classification_report_zero_division_warningÉ   s       ÿr}   c                  C   sÒ   t  dddgdddgg¡} t  dddgdddgg¡}t| |ƒdksFt‚t| | ƒdksXt‚t||ƒdksjt‚t|t  |¡ƒdks‚t‚t| t  | ¡ƒdksšt‚t| t  | j¡ƒdks´t‚t|t  | j¡ƒdksÎt‚d S ©Nr   r1   ç      à?)r6   Úarrayr   r`   Úlogical_notÚzerosr5   ©Úy1Úy2rG   rG   rH   Ú.test_multilabel_accuracy_score_subset_accuracyÙ   s    r†   c                  C   s  t dd�\} }}t| |d d�\}}}}t|ddgdƒ t|ddgdƒ t|d	d
gdƒ t|ddgƒ i tfdditffD ]�\}}|t| |f|Ž}	t|	ddƒ |t| |f|Ž}
t|
ddƒ |t| |f|Ž}t|d
dƒ t|t	| |fddi|—Žd|	 |
 d|	 |
  dƒ qxd S )NT©r>   ©Úaverageg\�Âõ(\ç?g333333ë?r,   g)\�Âõ(ì?gÃõ(\�Âå?çš™™™™™é?gR¸…ëQè?é   r‰   r>   Úbetaé   é   )
rI   r#   r   r   r   r$   r%   r   r   r   )rF   rE   re   rC   ÚrÚfÚsÚkwargsZ	my_assertÚpsÚrsÚfsrG   rG   rH   Ú%test_precision_recall_f1_score_binaryç   s(    
þýr–   c                   C   s  dt ddgddgƒkst‚dtddgddgƒks4t‚dtddgddgƒksNt‚dtddgddgdd�kslt‚dt ddgddgƒks†t‚dtddgddgƒks t‚dtddgddgƒksºt‚dtddgddgtdƒd�ksÜt‚tddgddgtdƒd�t tddgddgdd�¡k�st‚d S )	Nç      ð?r1   r   ©rŒ   rk   éÿÿÿÿÚinfg     jø@)r$   r`   r%   r   r   rb   ÚpytestÚapproxrG   rG   rG   rH   Ú+test_precision_recall_f_binary_single_class	  s    "ÿr�   c                  C   sè  ddddg} ddddg}t | t d¡d�}t |t d¡d�}| |f||fg}t|ƒD ]¶\}\} }t| |dddddgd d�}td	d
d
dd	g|ƒ t| |dddddgdd�}tt d	d
d
dd	g¡|ƒ dD ]B}|dkrÜ|dkrÜqÆtt| |dddddg|d�t| |d |d�ƒ qÆqTdD ]`}t 	t
¡� t||t d¡|d� W 5 Q R X t 	t
¡� t||t dd¡|d� W 5 Q R X �qt dddgdddgg¡} t dddgdddgg¡}t| |dddgd�\}}	}
}tt ||	|
g¡t dddg¡ƒ d S )Nr1   é   r,   r�   ©Úclassesr   rŽ   ©r[   r‰   rk   r—   r   Úmacro)ÚmicroÚweightedÚsamplesr¥   )Nr¢   r£   r¥   é   r™   ©r‰   r[   ç      è?ç«ªªªªªê?)r   r6   r7   Ú	enumerater%   r   Úmeanr   r›   ÚraisesÚ
ValueErrorr€   r#   )rF   rE   Ú
y_true_binÚ
y_pred_binr3   ÚiÚactualr‰   rC   r�   r�   re   rG   rG   rH   Ú$test_precision_recall_f_extra_labels  sH    þ   
 ÿ   ÿr²   c            	      C   sð   ddddg} ddddg}t | t d¡d�}t |t d¡d�}| |f||fg}t|ƒD ]–\}\} }tt| |ddgd�}tt| |d d�}tddg|d d	�ƒ td
|dd	�ƒ td|dd	�ƒ td|dd	�ƒ dD ]}||d	�||d	�ksÌt‚qÌqTd S )Nr1   r,   rž   r�   rŸ   ©r[   r   r—   rˆ   r¨   r¢   çUUUUUUå?r¤   r£   )r¢   r¤   r£   )	r   r6   r7   rª   r   r%   r   r   r`   )	rF   rE   r®   r¯   r3   r°   Z	recall_13Z
recall_allr‰   rG   rG   rH   Ú&test_precision_recall_f_ignored_labelsJ  s    rµ   c               	   C   sN   t dƒ} |  d¡}| jdddd�}d}tjt|d�� t||ƒ W 5 Q R X d S )Ni”  é
   r   rž   ©Úsizez"multiclass format is not supported©Úmatch)r   ÚrandÚrandintr›   r¬   r­   r   )rD   rE   rF   Úerr_msgrG   rG   rH   Ú3test_average_precision_score_score_non_binary_classa  s    
r¾   c                  C   sJ   dddddddddddg} dddddddddddg}t | |ƒdksFt‚d S )Nr   r1   çš™™™™™¹?çš™™™™™Ù?r   ç333333ã?rR   ©r   r`   ©rF   Úy_scorerG   rG   rH   Ú-test_average_precision_score_duplicate_valuesn  s    rÅ   c                  C   s*   dddg} dddg}t | |ƒdks&t‚d S )Nr   r1   r   rÁ   r—   rÂ   rÃ   rG   rG   rH   Ú(test_average_precision_score_tied_valuesy  s    

rÆ   c               	   C   sŽ   t dd�\} }}t t¡� t| |dd� W 5 Q R X t t¡� t| |ddd� W 5 Q R X t t¡�  tdd	dgd	ddgd
d� W 5 Q R X d S )NTr‡   gš™™™™™¹¿r˜   r,   r>   ©Ú	pos_labelr‰   r   r1   Úmegarˆ   )rI   r›   r¬   r­   r#   )rF   rE   re   rG   rG   rH   Ú+test_precision_recall_fscore_support_errors†  s    rÊ   c               	   C   s>   d} t jt| d��" tdddgdddgddd� W 5 Q R X d S )NzšNote that pos_label \(set to 2\) is ignored when average != 'binary' \(got 'macro'\). You may use labels=\[pos_label\] to specify a single positive class.r¹   r1   r,   r¢   rÇ   )r›   ÚwarnsÚUserWarningr#   ©r|   rG   rG   rH   Ú(test_precision_recall_f_unused_pos_label—  s    ÿ   ÿrÎ   c                  C   sD   t dd�\} }}dd„ }|| |ƒ |dd„ | D ƒdd„ |D ƒƒ d S )NTr‡   c                 S   s¤   t | |ƒ}t|ddgddggƒ | ¡ \}}}}|| ||  }t || ||  ||  ||  ¡}|dkrrdn|| }	t| |ƒ}
t|
|	dd� t|
ddd� d S )	Né   rž   é   é   r   r,   ©Údecimalç=
×£p=â?)r   r   Úflattenr6   Úsqrtr"   r   )rF   rE   ÚcmÚtpÚfpÚfnÚtnÚnumZdenZtrue_mccZmccrG   rG   rH   Útest«  s    
&
z*test_confusion_matrix_binary.<locals>.testc                 S   s   g | ]}t |ƒ‘qS rG   ©ry   ©Ú.0r@   rG   rG   rH   Ú
<listcomp>¹  s     z0test_confusion_matrix_binary.<locals>.<listcomp>©rI   ©rF   rE   re   rÝ   rG   rG   rH   Útest_confusion_matrix_binary§  s    
rä   c                  C   sD   t dd�\} }}dd„ }|| |ƒ |dd„ | D ƒdd„ |D ƒƒ d S )NTr‡   c                 S   s4   t | |ƒ}t|ddgddggddgddgggƒ d S )NrÑ   rÐ   rž   rÏ   ©r(   r   )rF   rE   r×   rG   rG   rH   rÝ   À  s    
z5test_multilabel_confusion_matrix_binary.<locals>.testc                 S   s   g | ]}t |ƒ‘qS rG   rÞ   rß   rG   rG   rH   rá   Å  s     z;test_multilabel_confusion_matrix_binary.<locals>.<listcomp>râ   rã   rG   rG   rH   Ú'test_multilabel_confusion_matrix_binary¼  s    
ræ   c                  C   sJ   t dd�\} }}d	dd„}|| |ƒ |dd„ | D ƒdd„ |D ƒdd� d S )
NFr‡   c                 S   s  t | |ƒ}t|ddgddggddgddggd	d
gddgggƒ |rLdddgndddg}t | ||d�}t|ddgddggd	d
gddggddgddgggƒ |r¨ddddgn
ddddg}t | ||d�}t|ddgddggd	d
gddggddgddggddgddgggƒ d S )Né/   rŽ   r�   é   é&   r¦   é   rž   é   r‹   r,   é   Ú0Ú2Ú1r   r1   r³   Ú3rU   rå   )rF   rE   Ústring_typer×   r[   rG   rG   rH   rÝ   Ì  s*    
 ,ÿ ,ÿüþz9test_multilabel_confusion_matrix_multiclass.<locals>.testc                 S   s   g | ]}t |ƒ‘qS rG   rÞ   rß   rG   rG   rH   rá   è  s     z?test_multilabel_confusion_matrix_multiclass.<locals>.<listcomp>T)rñ   )Frâ   rã   rG   rG   rH   Ú+test_multilabel_confusion_matrix_multiclassÈ  s    

rò   c                  C   sø  ddl m} m} t dddgdddgdddgg¡}t dddgdddgdddgg¡}||ƒ}||ƒ}| |ƒ}| |ƒ}t dddg¡}ddgddggddgddggddgddggg}	|||g}
|||g}|
D ]"}|D ]}t||ƒ}t||	ƒ qÒqÊt||dd�}t|ddgddggddgddggddgddgggƒ t||ddgd�}t|ddgddggddgddgggƒ t||ddgdd	�}t|ddgddggddgddggddgddgggƒ t|||dd
�}t|ddgddggddgddggddgddgggƒ d S )Nr   )Ú
csc_matrixÚ
csr_matrixr1   r,   rž   T©Ú
samplewiser³   )r[   rö   )Úsample_weightrö   r¦   )Zscipy.sparseró   rô   r6   r€   r(   r   )ró   rô   rF   rE   Z
y_true_csrZ
y_pred_csrZ
y_true_cscZ
y_pred_cscr÷   Zreal_cmZtruesÚpredsZ
y_true_tmpZ
y_pred_tmpr×   rG   rG   rH   Ú+test_multilabel_confusion_matrix_multilabelë  s8    "".


4&4   ÿrù   c               	   C   sŒ  t  dddgdddgdddgg¡} t  dddgdddgdddgg¡}tjtdd�� t| |ddgd� W 5 Q R X tjtdd��, t| |dddgddd	gdd	d
ggd� W 5 Q R X d}tjt|d�� t| |dgd� W 5 Q R X d}tjt|d�� t| |dgd� W 5 Q R X tjtdd��  tdddgdddgdd� W 5 Q R X d}tjt|d��0 tdddgdddggdddgdddggƒ W 5 Q R X d S )Nr1   r   zinconsistent numbers of samplesr¹   r,   ©r÷   zshould be a 1d arrayrž   rŽ   r�   z%All labels must be in \[0, n labels\)r™   r³   zSamplewise metricsTrõ   z'multiclass-multioutput is not supported)r6   r€   r›   r¬   r­   r(   )rF   rE   r½   rG   rG   rH   Ú'test_multilabel_confusion_matrix_errors  s*    ""  ÿ$rû   z%normalize, cm_dtype, expected_results)Útruer�   çµùTUUÕ?)Úpredr�   rý   )Úallr�   g��eÇq¼?)Nr°   r,   c                 C   sP   dddgd }t ttdddgƒŽ ƒ}t||| d�}t||ƒ |jj|ksLt‚d S )Nr   r1   r,   r¦   ©Ú	normalize)Úlistr   r   r   r   ÚdtypeÚkindr`   )r  Zcm_dtypeZexpected_resultsÚy_testrE   r×   rG   rG   rH   Útest_confusion_matrix_normalize2  s
    

r  c               	   C   sT   ddddddddg} ddddddddg}t jtdd�� t| |dd� W 5 Q R X d S )Nr   r1   znormalize must be one ofr¹   Tr   )r›   r¬   r­   r   )r  rE   rG   rG   rH   Ú,test_confusion_matrix_normalize_wrong_optionC  s    r  c               	   C   sÂ   ddddddddg} ddddddddg}t | |dd�}| ¡ t d¡ksLt‚t ¡ �  t dt¡ t | |dd�}W 5 Q R X | ¡ t d¡ks�t‚t ¡ �  t dt¡ t || dd� W 5 Q R X d S )	Nr   r1   rü   r   ç       @Úerrorrþ   r—   )	r   Úsumr›   rœ   r`   rw   rx   ÚsimplefilterÚRuntimeWarning)r  rE   Zcm_trueZcm_predrG   rG   rH   Ú,test_confusion_matrix_normalize_single_classJ  s    

r  zparams, warn_msg©rF   rE   z2samples of only one class were seen during testingz:positive_likelihood_ratio ill-defined and being set to nanz+no samples predicted for the positive classz:negative_likelihood_ratio ill-defined and being set to nanz@no samples of the positive class were present in the testing setc              	   C   s(   t jt|d�� tf | Ž W 5 Q R X d S ©Nr¹   )r›   rË   rÌ   r   )ÚparamsZwarn_msgrG   rG   rH   Útest_likelihood_ratios_warnings]  s    1r  zparams, err_msgr,   zeclass_likelihood_ratios only supports binary classification problems, got targets of type: multiclassc              	   C   s(   t jt|d�� tf | Ž W 5 Q R X d S r  )r›   r¬   r­   r   )r  r½   rG   rG   rH   Útest_likelihood_ratios_errors’  s    r  c                  C   sÖ   t  dgd dgd  ¡} t  dgd dgd  dgd  ¡}t| |ƒ\}}t|dƒ t|d	ƒ t| | ƒ\}}t|t jd ƒ t|t  d¡d
d� t  dgd dgd  ¡}t| ||d�\}}t|dƒ t|dƒ d S )Nr1   rž   r   rÑ   r,   r¶   rÐ   g«ªªªªªö?g_B{	í%ä?gê-�™—q=)Zrtolr—   é   rk   r�   rú   gUUUUUU@gÇqÇqÜ?)r6   r€   r   r   r   rl   r‚   )rF   rE   ÚposÚnegr÷   rG   rG   rH   Útest_likelihood_ratios¦  s    $


r  c                  C   s¬  t  dgd dgd  ¡} t  dgd dgd  dgd  dgd  ¡}t| |ƒ}t|dd	d
� |t|| ƒksrt‚t  | dgd ¡} t  |dgd ¡}t| |ddgd�|ks°t‚tt| | ƒdƒ t  dgd dgd  dgd  ¡} t  dgd dgd  dgd  ¡}tt| |ƒddd
� t  dgd dgd  dgd  ¡} t  dgd dgd  dgd  ¡}tt| |ƒddd
� tt| |dd�ddd
� tt| |dd�ddd
� d S )Nr   é(   r1   é<   rT   r¶   é2   gƒÀÊ¡EÖ?rž   rÒ   r,   rŽ   r³   r—   é.   é,   é4   é    é   gÉå?¤é?g+‡ÙÎí?r/   ©Úweightsg®Ø_vOî?Z	quadraticgœ¢#¹ü‡î?)r6   r€   r   r   r`   Úappend)r„   r…   ÚkapparG   rG   rH   Útest_cohen_kappa¿  s*    .
$$$$  ÿr#  c                   C   s4   t dgdgƒdkst‚t ddgddgƒdks0t‚d S )Nr   r1   rk   )r"   r`   rG   rG   rG   rH   Útest_matthews_corrcoef_nanÞ  s    r$  c                  C   sN   t j d¡} | jdddd�}| jdddd�}tt||ƒt  ||¡d dƒ d S )Nr   r,   rT   r·   ©r   r1   r¶   )r6   r:   r;   r¼   r   r"   Zcorrcoef)rD   rF   rE   rG   rG   rH   Ú-test_matthews_corrcoef_against_numpy_corrcoefã  s      ÿr&  c            	         sÒ   t j d¡} | jdddd�}| jdddd�}|  d¡}t|||d�‰ tˆ ƒ‰t‡ ‡fdd„tˆƒD ƒƒ}t‡ ‡fdd„tˆƒD ƒƒ}t  ‡ ‡fd	d„tˆƒD ƒ¡}|t  	|| ¡ }t
|||d�}t||d
ƒ d S )Nr   r,   rT   r·   rú   c              	      sX   g | ]P}t ˆƒD ]B}t ˆƒD ]4}ˆ ||f ˆ ||f  ˆ ||f ˆ ||f   ‘qqqS rG   ©Úrange)rà   ÚkÚmÚl©ÚCÚNrG   rH   rá   ù  s   
 
 ýz9test_matthews_corrcoef_against_jurman.<locals>.<listcomp>c                    s@   g | ]8‰ ˆd d …ˆ f   ¡ t  ‡‡‡ fdd„tˆƒD ƒ¡ ‘qS )Nc                    s.   g | ]&}t ˆƒD ]}|ˆkrˆ ||f ‘qqS rG   r'  ©rà   r�   Úg©r-  r.  r)  rG   rH   rá     s
     
   úDtest_matthews_corrcoef_against_jurman.<locals>.<listcomp>.<listcomp>©r
  r6   r(  ©rà   r,  ©r)  rH   rá     s   þÿc                    s@   g | ]8‰ ˆˆ d d …f   ¡ t  ‡‡‡ fdd„tˆƒD ƒ¡ ‘qS )Nc                    s.   g | ]&}t ˆƒD ]}|ˆkrˆ ||f ‘qqS rG   r'  r/  r1  rG   rH   rá   
  s
     
   r2  r3  r4  r,  r5  rH   rá     s   þÿr¶   )r6   r:   r;   r¼   r»   r   r^   r
  r(  rÖ   r"   r   )	rD   rF   rE   r÷   Zcov_ytypZcov_ytytZcov_ypypZ
mcc_jurmanZmcc_oursrG   r,  rH   Ú%test_matthews_corrcoef_against_jurmaní  s0    
þÿýÿýÿr6  c                  C   sf  t j d¡} dd„ | jdddd�D ƒ}tt||ƒdƒ dd„ |D ƒ}tt||ƒd	ƒ t|d
dgd�}t  |d
d¡}tt||ƒd	ƒ ttddddgddddgƒdƒ tt|d
gt|ƒ ƒdƒ ddddddddddddddddddddg}ddddddddddddddddddddg}tt||ƒdƒ dgd dgd  }t	 
t¡� tt|||d�dƒ W 5 Q R X d S )Nr   c                 S   s   g | ]}|d krdnd‘qS )r   rq   rr   rG   ©rà   r°   rG   rG   rH   rá     s     z*test_matthews_corrcoef.<locals>.<listcomp>r,   rT   r·   r—   c                 S   s   g | ]}|d krdnd ‘qS )rq   rr   rG   r7  rG   rG   rH   rá     s     r™   rq   rr   rŸ   rk   r1   r¶   rú   )r6   r:   r;   r¼   r   r"   r   Úwherer^   r›   r¬   r`   )rD   rF   Z
y_true_invZy_true_inv2Úy_1Úy_2ÚmaskrG   rG   rH   Útest_matthews_corrcoef  s      ,,r<  c            	   	      s®  t j d¡} tdƒ‰ d}‡ fdd„| jd|dd�D ƒ}tt||ƒdƒ ddd	d	d
d
g}d
d
ddd	d	g}tt||ƒdƒ ddd	d	d
d
g}d	d	ddddg}tt||ƒdt  d¡ ƒ dd	d
g}dddg}tt||ƒdƒ dddg}dd	d
g}tt||ƒdƒ dd	d
dd	d
dd	d
g	}d	d	d	d
d
d
dddg	}tt||ƒdƒ ddd	d	d
g}d	d	ddd
g}d	d	d	d	dg}tt|||d�dƒ ddd	d
g}ddd	d
g}d	d	ddg}tt|||d�dƒ d S )Nr   rq   rŽ   c                    s   g | ]}t ˆ | ƒ‘qS rG   )Úchrr7  ©Zord_arG   rH   rá   ;  s     z5test_matthews_corrcoef_multiclass.<locals>.<listcomp>rT   r·   r—   r1   r,   g      à¿iôÿÿÿi€  rž   rk   rú   r™   )r6   r:   r;   Úordr¼   r   r"   rÖ   )	rD   Ú	n_classesrF   Z
y_pred_badZ
y_pred_minrE   r9  r:  r÷   rG   r>  rH   Ú!test_matthews_corrcoef_multiclass7  sD    



 ÿ ÿrA  Ún_pointséd   i'  c                    s˜   t j d¡‰ dd„ }‡ fdd„}t  ddg| ¡}tt||ƒdƒ t  dddg| ¡}tt||ƒdƒ || ƒ\}}tt||ƒdƒ tt||ƒ|||ƒƒ d S )	NišÈ3c                 S   sx   t | |ƒ}|d }|d }|d }t| ƒ}|| | }|| | }|| ||  }	|| d|  d|  }
|	t |
¡ S )N©r1   r1   )r1   r   r%  r1   )r   r^   r6   rÖ   )rF   rE   Zconf_matrixZtrue_posZ	false_posZ	false_negrB  Zpos_rateZactivityZmcc_numeratorZmcc_denominatorrG   rG   rH   Úmcc_safet  s    
z1test_matthews_corrcoef_overflow.<locals>.mcc_safec                    s8   ˆ   | ¡}|dˆ   | ¡d   }|dk}|dk}||fS )Nçš™™™™™É?r   )Zrandom_sample)rB  Zx_trueZx_predrF   rE   ©rD   rG   rH   Ú	random_ys€  s
    
z2test_matthews_corrcoef_overflow.<locals>.random_ysrk   r—   r  )r6   r:   r;   Úrepeatr   r"   )rB  rE  rH  ZarrrF   rE   rG   rG  rH   Útest_matthews_corrcoef_overflowo  s    rJ  c            
   	   C   sR  t dd�\} }}t| |d d�\}}}}t|dddgdƒ t|dd	d
gdƒ t|dddgdƒ t|dddgƒ t| |ddd�}t|ddƒ t| |dd�}t|ddƒ t| |dd�}	t|	ddƒ t| |dd�}t|ddƒ t| |dd�}t|ddƒ t| |dd�}	t|	ddƒ t| |dd�}t|ddƒ t| |dd�}t|ddƒ t| |dd�}	t|	ddƒ t t	¡� t| |dd� W 5 Q R X t t	¡� t| |dd� W 5 Q R X t t	¡� t| |dd� W 5 Q R X t t	¡� t
| |ddd� W 5 Q R X t| |dddgd d�\}}}}t|dddgdƒ t|dd
d gdƒ t|dddgdƒ t|dddgƒ d S )!NFr‡   rˆ   ç�Âõ(\�ê?g…ëQ¸Õ?gáz®GáÚ?r,   gHáz®Gé?g
×£p=
·?rR   gìQ¸…ëé?g333333Ã?rÔ   rK   rQ   rT   r1   r£   rÇ   gö(\�Âõà?r¢   rÁ   gR¸…ëQà?r¤   g®GázÞ?r¥   r   ©r‰   rŒ   r   r¡   g=
×£p=Ú?r¿   )rI   r#   r   r   r$   r%   r   r›   r¬   r­   r   )
rF   rE   re   rC   r�   r�   r‘   r“   r”   r•   rG   rG   rH   Ú)test_precision_recall_f1_score_multiclass‘  sT       ÿrM  r‰   r¥   r£   r¢   r¤   c                 C   s†   t  ddddgg¡}t  ddddgg¡}t||ddddgg | d�\}}}}t|dƒ t|dƒ t|dƒ | d kr‚t|ddddgƒ d S )Nr1   r   rž   r,   )r[   Úwarn_forr‰   )r6   r€   r#   r   )r‰   rF   rE   rC   r�   r�   r‘   rG   rG   rH   Ú;test_precision_refcall_f1_score_multilabel_unordered_labelsË  s      
  ÿ


rO  c            
      C   s  t  dddddddddddddddg¡} t  dddddddddddddddg¡}t| |d d�\}}}}t| |dd�\}}}}|t  |¡ksŽt‚|t  |¡ks t‚|t  |¡ks²t‚t| |dd�\}}}}t  | ¡}	|t j||	d�ksèt‚|t j||	d�ksþt‚|t j||	d�k�st‚d S )Nr   r1   rˆ   r¢   r¤   r  )r6   r€   r#   r«   r`   Zbincountr‰   )
rF   rE   r“   r”   r•   re   rC   r�   r�   rO   rG   rG   rH   Ú.test_precision_recall_f1_score_binary_averagedÚ  s    ((
rP  c               	   C   s’   t jdd�} zrt  ddddddg¡}t  ddddddg¡}tt||dd�ddƒ tt||dd�ddƒ tt||dd�ddƒ W 5 t jf | Ž X d S )	NÚraise)rÿ   r   r1   r,   r¢   rˆ   rk   )r6   Zseterrr€   r   r$   r%   r   )Zold_error_settingsrF   rE   rG   rG   rH   Útest_zero_precision_recallë  s    rR  c                  C   sš   t dd�\} }}t| |ddgd�}t|ddgddggƒ t| |d	dgd�}t|d
d	gddggƒ t | ¡d }t| |d	|gd�}t|d
dgddggƒ d S )NFr‡   r   r1   r³   rè   rŽ   rž   r,   rì   rK   )rI   r   r   r6   Úmax)rF   rE   re   r×   Zextra_labelrG   rG   rH   Ú.test_confusion_matrix_multiclass_subset_labelsü  s    rT  zlabels, err_msgz,'labels' should contains at least one label.rž   rŽ   z.At least one label specified must be in y_truez
empty listzunknown labels)Zidsc              	   C   s<   t dd�\}}}tjt|d�� t||| d� W 5 Q R X d S )NFr‡   r¹   r³   )rI   r›   r¬   r­   r   )r[   r½   rF   rE   re   rG   rG   rH   Útest_confusion_matrix_error  s    	rU  r[   ÚNoner>   Ú
multiclassc                 C   s>   | rt | ƒnd}tj||ftd�}tg g | d�}t||ƒ d S )Nr   ©r  r³   )r^   r6   r‚   r9   r   r   )r[   Zexpected_n_classesÚexpectedr×   rG   rG   rH   Ú*test_confusion_matrix_on_zero_length_input  s    rZ  c                  C   s>  dddg} t  t| ƒ¡}t| | ƒ}|jt jks2t‚t jt jt j	fD ],}t| | |j
|dd�d�}|jt jksBt‚qBt jt jd tfD ],}t| | |j
|dd�d�}|jt jks€t‚q€t jt| ƒdt jd�}t| | |d�}|d dksât‚|d	 d
ksòt‚t jt| ƒdt jd�}t| | |d�}|d dk�s(t‚|d	 dk�s:t‚d S )Nr   r1   F)Úcopyrú   l   ÿÿ rX  ©r   r   rD  l   þÿ l   ÿÿÿÿ éþÿÿÿ)r6   Zonesr^   r   r  Úint64r`   Zbool_Zint32Zuint64ZastypeZfloat32Zfloat64ÚobjectÚfullZuint32)r@   Úweightr×   r  rG   rG   rH   Útest_confusion_matrix_dtype'  s$    

rb  r  ZInt64ZFloat64Úbooleanc                 C   sv   t  d¡}t dddddddddg	¡}|j|| d�}|jdddddddddg	dd�}t||ƒ}t||ƒ}t||ƒ dS )zkChecks that confusion_matrix works with pandas nullable dtypes.

    Non-regression test for gh-25635.
    Úpandasr1   r   rX  r^  N)r›   Zimportorskipr6   r€   ÚSeriesr   r   )r  ÚpdZ	y_ndarrayrF   Zy_predictedÚoutputZexpected_outputrG   rG   rH   Ú%test_confusion_matrix_pandas_nullableB  s    
 

rh  c                  C   sL   t  ¡ } t| dd�\}}}d}t||t t| jƒ¡| jd�}||ksHt‚d S )NFrJ   a|                precision    recall  f1-score   support

      setosa       0.83      0.79      0.81        24
  versicolor       0.33      0.10      0.15        31
   virginica       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
©r[   r\   ©	r   r2   rI   r   r6   r7   r^   r\   r`   ©rd   rF   rE   re   rf   rg   rG   rG   rH   Ú%test_classification_report_multiclassT  s    ürl  c               
   C   sL   dddddddddg	dddddddddg	 } }d}t | |ƒ}||ksHt‚d S )Nr   r1   r,   a|                precision    recall  f1-score   support

           0       0.33      0.33      0.33         3
           1       0.33      0.33      0.33         3
           2       0.33      0.33      0.33         3

    accuracy                           0.33         9
   macro avg       0.33      0.33      0.33         9
weighted avg       0.33      0.33      0.33         9
)r   r`   )rF   rE   rf   rg   rG   rG   rH   Ú.test_classification_report_multiclass_balancedn  s    .
rm  c                  C   s8   t  ¡ } t| dd�\}}}d}t||ƒ}||ks4t‚d S )NFrJ   a|                precision    recall  f1-score   support

           0       0.83      0.79      0.81        24
           1       0.33      0.10      0.15        31
           2       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
)r   r2   rI   r   r`   rk  rG   rG   rH   Ú:test_classification_report_multiclass_with_label_detection€  s
    
rn  c                  C   sN   t  ¡ } t| dd�\}}}d}t||t t| jƒ¡| jdd�}||ksJt‚d S )NFrJ   a|                precision    recall  f1-score   support

      setosa    0.82609   0.79167   0.80851        24
  versicolor    0.33333   0.09677   0.15000        31
   virginica    0.41860   0.90000   0.57143        20

    accuracy                        0.53333        75
   macro avg    0.52601   0.59615   0.50998        75
weighted avg    0.51375   0.53333   0.47310        75
r�   )r[   r\   Údigitsrj  rk  rG   rG   rH   Ú1test_classification_report_multiclass_with_digits”  s    ûrp  c                  C   sz   t dd�\} }}t dddg¡|  } t dddg¡| }d}t| |ƒ}||ksRt‚d}t| |dd	d
gd�}||ksvt‚d S )NFr‡   ÚblueÚgreenÚreda|                precision    recall  f1-score   support

        blue       0.83      0.79      0.81        24
       green       0.33      0.10      0.15        31
         red       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
a|                precision    recall  f1-score   support

           a       0.83      0.79      0.81        24
           b       0.33      0.10      0.15        31
           c       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
rq   rr   rs   ©r\   ©rI   r6   r€   r   r`   )rF   rE   re   rf   rg   rG   rG   rH   Ú7test_classification_report_multiclass_with_string_label¯  s    
rv  c                  C   sN   t dd�\} }}t dddg¡}||  } || }d}t| |ƒ}||ksJt‚d S )NFr‡   u   blueÂ¢u   greenÂ¢u   redÂ¢u                precision    recall  f1-score   support

       blueÂ¢       0.83      0.79      0.81        24
      greenÂ¢       0.33      0.10      0.15        31
        redÂ¢       0.42      0.90      0.57        20

    accuracy                           0.53        75
   macro avg       0.53      0.60      0.51        75
weighted avg       0.51      0.53      0.47        75
ru  ©rF   rE   re   r[   rf   rg   rG   rG   rH   Ú8test_classification_report_multiclass_with_unicode_labelÒ  s    
rx  c                  C   sN   t dd�\} }}t dddg¡}||  } || }d}t| |ƒ}||ksJt‚d S )NFr‡   rq  Zgreengreengreengreengreenrs  a×                             precision    recall  f1-score   support

                     blue       0.83      0.79      0.81        24
greengreengreengreengreen       0.33      0.10      0.15        31
                      red       0.42      0.90      0.57        20

                 accuracy                           0.53        75
                macro avg       0.53      0.60      0.51        75
             weighted avg       0.51      0.53      0.47        75
ru  rw  rG   rG   rH   Ú<test_classification_report_multiclass_with_long_string_labelè  s    
ry  c               	   C   s\   dddddg} dddddg}dddg}d}t jt|d�� t| |ddg|d� W 5 Q R X d S )	Nr   r,   úclass 0úclass 1úclass 2z6labels size, 2, does not match size of target_names, 3r¹   ri  )r›   rË   rÌ   r   )rF   rE   r\   r|   rG   rG   rH   Ú=test_classification_report_labels_target_names_unequal_lengthÿ  s    
r}  c               	   C   sV   dddddg} dddddg}dddg}d}t jt|d�� t| ||d� W 5 Q R X d S )	Nr   r,   rz  r{  r|  zaNumber of classes, 2, does not match size of target_names, 3. Try specifying the labels parameterr¹   rt  )r›   r¬   r­   r   )rF   rE   r\   r½   rG   rG   rH   Ú@test_classification_report_no_labels_target_names_unequal_length	  s    
ÿr~  c                  C   sN   d} d}t d|| dd�\}}t d|| dd�\}}d}t||ƒ}||ksJt‚d S )NrŽ   r  r1   r   )rB   rA   r@  r0   aè                precision    recall  f1-score   support

           0       0.50      0.67      0.57        24
           1       0.51      0.74      0.61        27
           2       0.29      0.08      0.12        26
           3       0.52      0.56      0.54        27

   micro avg       0.50      0.51      0.50       104
   macro avg       0.45      0.51      0.46       104
weighted avg       0.45      0.51      0.46       104
 samples avg       0.46      0.42      0.40       104
)r
   r   r`   )r@  rA   re   rF   rE   rf   rg   rG   rG   rH   Ú%test_multilabel_classification_report  s"       ÿ
   ÿ

r  c                  C   sÒ   t  dddgdddgg¡} t  dddgdddgg¡}t| |ƒdksFt‚t| | ƒdksXt‚t||ƒdksjt‚t|t  |¡ƒdks‚t‚t| t  | ¡ƒdksšt‚t| t  | j¡ƒdks´t‚t|t  | j¡ƒdksÎt‚d S r~   )r6   r€   r&   r`   r�   r‚   r5   rƒ   rG   rG   rH   Ú$test_multilabel_zero_one_loss_subset6  s    r€  c                  C   sV  t  dddgdddgg¡} t  dddgdddgg¡}t  ddg¡}t| |ƒdksTt‚t| | ƒdksft‚t||ƒdksxt‚t|d| ƒdksŽt‚t| d|  ƒdks¤t‚t| t  | j¡ƒdks¾t‚t|t  | j¡ƒdksØt‚t| ||d�dksît‚t| d| |d�d	k�s
t‚t| t  | ¡|d�dk�s(t‚t| d |d ƒt| d |d ƒk�sRt‚d S )
Nr   r1   rž   çUUUUUUÅ?r´   r   rú   gUUUUUUµ?gUUUUUUí?)r6   r€   r   r`   r‚   r5   Ú
zeros_likeÚ
sp_hamming)r„   r…   ÚwrG   rG   rH   Útest_multilabel_hamming_lossD  s    r…  c               	   C   sj  t  dddddg¡} t  dddddg¡}d}tjt|d�� t| |ddd� W 5 Q R X t  dddgdddgg¡} t  dddgdddgg¡}d}tjt|d�� t| |dd	d� W 5 Q R X t  dddddg¡} t  dddddg¡}d
}tjt|d�� t| |dd� W 5 Q R X d}tjt|d�� t| |dd� W 5 Q R X d}tjt|d�� t| |ddd� W 5 Q R X d S )Nr   r1   z>pos_label=2 is not a valid label. It should be one of \[0, 1\]r¹   r>   r,   ©r‰   rÈ   ú•Target is multilabel-indicator but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted', 'samples'\].r™   ú€Target is multiclass but average='binary'. Please choose another average setting, one of \[None, 'micro', 'macro', 'weighted'\].rˆ   zJSamplewise metrics are not available outside of multilabel classification.r¥   zšNote that pos_label \(set to 3\) is ignored when average != 'binary' \(got 'micro'\). You may use labels=\[pos_label\] to specify a single positive class.r£   rž   )r6   r€   r›   r¬   r­   r    rË   rÌ   )rF   rE   r½   Zmsg1Úmsg2Úmsg3r|   rG   rG   rH   Útest_jaccard_score_validationX  s0    ÿÿÿr‹  c              	   C   s$  t  dddgdddgg¡}t  dddgdddgg¡}t||dd�dksJt‚t||dd�dks`t‚t||dd�dksvt‚t|t  |¡dd�dks’t‚t|t  |¡dd�dks®t‚t|t  |j¡dd�dksÌt‚t|t  |j¡dd�dksêt‚t  dddgdddgg¡}t  dddgdddgg¡}tt||dd�dƒ tt||dd�d	ƒ tt||dd�d
ƒ tt||dddgd�dƒ tt||dddgd�dƒ tt||d d�t  dddg¡ƒ t  dddgdddgg¡}t  dddgdddgg¡}tt||dd�dƒ tt||dd�dƒ d}t	j
t|d�� t||dgdd� W 5 Q R X d}t	j
t|d�� t||dgdd� W 5 Q R X d}t	jt|d��6 tt  ddgg¡t  ddgg¡dd�dk�s®t‚W 5 Q R X d}t	jt|d��B tt  ddgddgg¡t  ddgddgg¡dd�dk�st‚W 5 Q R X t| ƒ�r t‚d S )Nr   r1   r¥   rˆ   r¨   r¢   r´   r£   rÁ   g«ªªªªªâ?r,   r§   r   r—   r©   r¤   g      ì?z	Got 4 > 2r¹   rŽ   r¡   z
Got -1 < 0r™   zXJaccard is ill-defined and being set to 0.0 in labels with no true or predicted samples.zXJaccard is ill-defined and being set to 0.0 in samples with no true or predicted labels.)r6   r€   r    r`   r�   r‚   r5   r   r   r›   r¬   r­   rË   r*   r  )Úrecwarnr„   r…   rF   rE   r‰  rŠ  r|   rG   rG   rH   Útest_multilabel_jaccard_score€  sn     ÿ ÿ ÿÿ$ÿÿÿýûÿ	r�  c              	   C   sb  ddddddddg}ddddddddg}dddg}t ƒ }| |¡ | |¡}| |¡}tt||ƒ}tt||ƒ}ddgddgddgdgdgdgd g}	ddgddgddgdgdgdgd g}
dD ]2}t|	|
ƒD ]"\}}t|||d�|||d�ƒ qÈqºt ddgddgddgg¡}t ddgddgddgg¡}t	ƒ � t||d	d
�dk�sFt
‚W 5 Q R X t| ƒ�r^t
‚d S )NÚantÚcatÚbirdr   r1   r,   )r¢   r¤   r£   Nr§   r¤   rˆ   )r   r<   Z	transformr   r    Úzipr   r6   r€   r   r`   r  )rŒ  rF   rE   r[   Zlbr®   r¯   Zmulti_jaccard_scoreZbin_jaccard_scoreZmulti_labels_listZbin_labels_listr‰   Zm_labelZb_labelrG   rG   rH   Útest_multiclass_jaccard_scoreÍ  s:    



ù	$

þ"r’  c              	   C   sÔ   t dgdgdd�dkst‚d}tjt|d��$ t ddgddgdd�dksLt‚W 5 Q R X t dgdgddd�d	ksrt‚t dddddg¡}t dddddg¡}tt ||dd�d
ƒ tt ||ddd�dƒ t| ƒrÐt‚d S )Nr1   r   r>   rˆ   rk   zOJaccard is ill-defined and being set to 0.0 due to no true or predicted samplesr¹   rÇ   r—   r¨   r†  r   )	r    r`   r›   rË   r*   r6   r€   r   r  )rŒ  r|   rF   rE   rG   rG   rH   Ú!test_average_binary_jaccard_scoreò  s    ÿ( ÿr“  c               	   C   sx   t  dddgdddgg¡} t  dddgdddgg¡}d}tjt|d��( t| |ddd�}|t d¡ksjt‚W 5 Q R X d S )	Nr1   r   z�Jaccard is ill-defined and being set to 0.0 in samples with no true or predicted labels. Use `zero_division` parameter to control this behavior.r¹   r¥   rp   ©r‰   ro   rk   )r6   r€   r›   rË   r*   r    rœ   r`   )rF   rE   r|   ÚscorerG   rG   rH   Ú(test_jaccard_score_zero_division_warning	  s    ÿr–  zzero_division, expected_scorer\  )r1   r   c              	   C   sz   t  dddgdddgg¡}t  dddgdddgg¡}t ¡ �" t dt¡ t||d| d�}W 5 Q R X |t |¡ksvt	‚d S )Nr1   r   r	  r¥   r”  )
r6   r€   rw   rx   r  r*   r    r›   rœ   r`   )ro   Zexpected_scorerF   rE   r•  rG   rG   rH   Ú*test_jaccard_score_zero_division_set_value  s    
   ÿr—  c                  C   sf  t  ddddgddddgddddgg¡} t  ddddgddddgddddgg¡}t| |d d�\}}}}t|ddddgdƒ t|ddddgdƒ t|ddddgdƒ t|ddddgdƒ t| |dd d	�}|}t|dd
ddgdƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�s t‚tt| |ddd	�t  |¡ƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�s~t‚tt| |ddd	�d| | d| |  ƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�sêt‚tt| |ddd	�t j||d�ƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�sLt‚tt| |ddd	�dƒ d S )Nr1   r   rˆ   rk   r   r—   r,   r´   ©rŒ   r‰   rK  r¢   g      Ø?ç«ªªªªªÚ?r£   r�   rŽ   r¤   r  r¥   ©	r6   r€   r#   r   r   r   r`   r«   r‰   ©rF   rE   rC   r�   r�   r‘   Úf2rO   rG   rG   rH   Ú+test_precision_recall_f1_score_multilabel_1%  sV    ((


 ÿ


þ


þ


r�  c                  C   sh  t  ddddgddddgddddgg¡} t  ddddgddddgddddgg¡}t| |d d�\}}}}t|ddddgdƒ t|ddddgdƒ t|ddddgdƒ t|ddddgdƒ t| |dd d	�}|}t|dd
ddgdƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�s t‚tt| |ddd	�d| | d| |  ƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�sŒt‚tt| |ddd	�t  |¡ƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�sêt‚tt| |ddd	�t j||d�ƒ t| |dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�sLt‚tt| |ddd	�ddƒ d S )Nr1   r   rˆ   rk   r—   r,   r   g…ëQ¸å?r˜  çš™™™™™á?r£   ç      Ð?r�   rŽ   r¢   g      À?r�  r¤   rP   r  r¥   g¥½Á&SÅ?rš  r›  rG   rG   rH   Ú+test_precision_recall_f1_score_multilabel_2h  s^    ((


þ


 ÿ


þ


  ÿr   c           	      C   s¦  t  ddddgddddgddddgg¡}t  ddddgddddgddddgg¡}| dkr\dnd} t||d | d�\}}}}t|| dddgdƒ t|ddd| gdƒ t|ddddgdƒ t|ddddgdƒ t||dd | d	�}|}t|dd
ddgdƒ t||d| d�\}}}}t|d|  d ƒ t|d|  d ƒ t|dƒ |d k�sFt‚tt||ddd�t  |¡ƒ t||d| d�\}}}}t|dƒ t|dƒ t|dƒ |d k�s¦t‚tt||dd| d	�d| | d| |  ƒ t||d| d�\}}}}t|| dk�rüdndƒ t|dƒ t|dƒ |d k�s$t‚tt||dd| d	�t j||d�ƒ t||dd�\}}}}t|dƒ t|dƒ t|dƒ |d k�sˆt‚tt||dd| d	�ddƒ d S )Nr   r1   r—   rk   r”  r,   r   r´   ©rŒ   r‰   ro   rž  r¢   rŽ   ç      ø?r™  r˜  r£   rS   r�   r¤   r¨   gªªªªªªâ?r  r¥   rˆ   rP   gZd;ßOÕ?rš  )	ro   rF   rE   rC   r�   r�   r‘   rœ  rO   rG   rG   rH   Ú7test_precision_recall_f1_score_with_an_empty_prediction©  s¬    ((   ÿ   ÿ
 ÿ   ÿ


    ÿü   ÿ

    ÿü


    ÿûr£  rŒ   c           
      C   sˆ   t  d¡}t  |¡}tt|||| |d�\}}}}tt||| ||d�}	t|ƒ}t||ƒ t||ƒ t||ƒ |d ksvt‚t|	t|ƒƒ d S )N©rT   rž   ©r‰   rŒ   ro   r¡  )	r6   r‚   r‚  r   r#   r   rb   r   r`   )
rŒ   r‰   ro   rF   rE   rC   r�   r�   r‘   ÚfbetarG   rG   rH   Ú"test_precision_recall_f1_no_labels÷  s0    

úú	


r§  c           	   	   C   s¤   t  d¡}t  |¡}t}t t¡� |||| dd�\}}}}W 5 Q R X t|dƒ t|dƒ t|dƒ |d kspt‚t t¡� t	||| dd�}W 5 Q R X t|dƒ d S )Nr¤  r—   rL  r   )
r6   r‚   r‚  r#   r›   rË   r*   r   r`   r   )	r‰   rF   rE   ÚfuncrC   r�   r�   r‘   r¦  rG   rG   rH   Ú1test_precision_recall_f1_no_labels_check_warnings  s    

"


r©  c                 C   sª   t  d¡}t  |¡}tt||d d| d�\}}}}tt||dd | d�}t| ƒ} t|| | | gdƒ t|| | | gdƒ t|| | | gdƒ t|dddgdƒ t|| | | gdƒ d S )Nr¤  r—   r¥  r¡  r,   r   )r6   r‚   r‚  r   r#   r   rb   r   )ro   rF   rE   rC   r�   r�   r‘   r¦  rG   rG   rH   Ú/test_precision_recall_f1_no_labels_average_none,  s0    


ú     ÿrª  c               	   C   sÆ   t  d¡} t  | ¡}t t¡� t| |d dd�\}}}}W 5 Q R X t|dddgdƒ t|dddgdƒ t|dddgdƒ t|dddgdƒ t t¡� t| |dd d�}W 5 Q R X t|dddgdƒ d S )Nr¤  r1   rL  r   r,   r˜  )	r6   r‚   r‚  r›   rË   r*   r#   r   r   )rF   rE   rC   r�   r�   r‘   r¦  rG   rG   rH   Ú4test_precision_recall_f1_no_labels_average_none_warnN  s     


   ÿr«  c               
   C   s   t t } }dD ]t}d}tj||d��  | dddgdddg|d� W 5 Q R X d}tj||d��  | dddgdddg|d� W 5 Q R X qd	}tj||d��8 | t ddgddgg¡t ddgddgg¡d
d� W 5 Q R X d}tj||d��8 | t ddgddgg¡t ddgddgg¡d
d� W 5 Q R X d}tj||d��8 | t ddgddgg¡t ddgddgg¡dd� W 5 Q R X d}tj||d��8 | t ddgddgg¡t ddgddgg¡dd� W 5 Q R X d}tj||d�� | ddgddgdd� W 5 Q R X d}tj||d�� | ddgddgdd� W 5 Q R X tjdd��^}t d¡ t ddgddgdd� d}t	| 
¡ jƒ|k�svt‚d}t	| 
¡ jƒ|k�s’t‚W 5 Q R X d S )N©Nr¤   r¢   z—Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.r¹   r   r1   r,   rˆ   z�Recall and F-score are ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.z—Precision and F-score are ill-defined and being set to 0.0 in samples with no predicted labels. Use `zero_division` parameter to control this behavior.r¥   z�Recall and F-score are ill-defined and being set to 0.0 in samples with no true labels. Use `zero_division` parameter to control this behavior.z�Precision and F-score are ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.r£   z‡Recall and F-score are ill-defined and being set to 0.0 due to no true samples. Use `zero_division` parameter to control this behavior.r™   r>   Tru   Úalways)r#   r*   r›   rË   r6   r€   rw   rx   r  ry   Úpoprz   r`   )r�   r„  r‰   r|   rv   rG   rG   rH   Útest_prf_warningsj  sV    
ÿ$ÿ&ÿ<ÿ<ÿ<ÿ<ÿ ÿ 
ÿÿr¯  c              	   C   s¦  t }dD ]@}t|dddgdddg|| d� t|dddgdddg|| d� qt|t ddgddgg¡t ddgddgg¡d| d� t|t ddgddgg¡t ddgddgg¡d| d� t|t ddgddgg¡t ddgddgg¡d| d� t|t ddgddgg¡t ddgddgg¡d| d� t|ddgddgd	| d� t|ddgddgd	| d� tjd
d��:}t d¡ t ddgddgd	| d� t|ƒdk�s˜t‚W 5 Q R X d S )Nr¬  r   r1   r,   r”  r¥   r£   r™   r>   Tru   r­  )	r#   r   r6   r€   rw   rx   r  r^   r`   )ro   r�   r‰   rv   rG   rG   rH   Ú)test_prf_no_warnings_if_zero_division_setÍ  s†        ÿ    ÿûû	ûû	    ÿ    ÿ
   ÿr°  c              	   C   sð   t tt ddgddgg¡t ddgddgg¡d| d� tjdd��¤}t d¡ tt ddgddgg¡t ddgddgg¡d| d� | dkr¢t| ¡ j	ƒd	ks²t
‚nt|ƒdks²t
‚tddgddgƒ | dkrât| ¡ j	ƒd	ksât
‚W 5 Q R X d S )
Nr1   r   r£   r”  Tru   r­  rp   zzRecall is ill-defined and being set to 0.0 due to no true samples. Use `zero_division` parameter to control this behavior.)r   r%   r6   r€   rw   rx   r  ry   r®  rz   r`   r^   ©ro   rv   rG   rG   rH   Útest_recall_warnings  s6    û
üÿÿÿÿr²  c              	   C   sð   t jdd��¤}t  d¡ tt ddgddgg¡t ddgddgg¡d| d� | dkrlt| ¡ jƒd	ks|t	‚nt
|ƒdks|t	‚tddgddgƒ | dkr¬t| ¡ jƒd	ks¬t	‚W 5 Q R X ttt ddgddgg¡t ddgddgg¡d| d� d S )
NTru   r­  r1   r   r£   r”  rp   z‚Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.)rw   rx   r  r$   r6   r€   ry   r®  rz   r`   r^   r   r±  rG   rG   rH   Útest_precision_warnings5  s6    
üÿÿÿÿûr³  c              	   C   s.  t jdd���}t  d¡ tttdd�fD ]ô}|t ddgddgg¡t ddgddgg¡d| d	� t|ƒdksrt	‚|t ddgddgg¡t ddgddgg¡d| d	� t|ƒdks¶t	‚|t ddgddgg¡t ddgddgg¡d| d	� | d
k�rt
| ¡ jƒdk�st	‚q*t|ƒdks*t	‚q*W 5 Q R X d S )NTru   r­  r,   r˜   r1   r   r£   r”  rp   z‰F-score is ill-defined and being set to 0.0 due to no true nor predicted samples. Use `zero_division` parameter to control this behavior.)rw   rx   r  r   r   r   r6   r€   r^   r`   ry   r®  rz   )ro   rv   r•  rG   rG   rH   Útest_fscore_warnings]  s:    
üüü
ÿÿ
r´  c            
      C   sÆ   ddddg} ddddg}d}t  dddgdddgdddgg¡}t  dddgdddgdddgg¡}d}| ||f|||ffD ]H\}}}tttttdd�fD ](}	tjt	|d�� |	||ƒ W 5 Q R X q–qxd S )	Nr1   r,   rž   rˆ  r   r‡  r˜   r¹   )
r6   r€   r$   r%   r   r   r   r›   r¬   r­   )
Z	y_true_mcZ	y_pred_mcZmsg_mcZ
y_true_indZ
y_pred_indZmsg_indrF   rE   r|   ri   rG   rG   rH   Ú'test_prf_average_binary_data_non_binary…  s$    ÿ""ÿþ
ürµ  c               *   C   s~  d} d}d}d}d}d}| t  dddgdddgdddgg¡f| t  ddgddgddgg¡f|d	d
dgf|dddgf|dddgf|t  d	gd
gdgg¡f|t  dgdgdgg¡f|t  dgdgdgg¡f|t  dd	gdd
gd	d
gg¡f|t  ddgddgddgg¡fg
}| | f| ||f|||f||| fd || fd ||f|||fd ||fd ||fd | |fd ||fd ||fd ||fd ||fd | |fd ||fd ||fd ||fd | |fd ||fd ||fd i}t|d	d�D �]€\\}}	\}
}z|||
f }W n" tk
�r   ||
|f }Y nX |d k�rªt t¡� t|	|ƒ W 5 Q R X ||
k�rjd ||
¡}tjt|d�� t|	|ƒ W 5 Q R X n>|||| fk�r>d |¡}tjt|d�� t|	|ƒ W 5 Q R X n”t|	|ƒ\}}}||k�sÈt	‚| 
d¡�rö|jdk�sät	‚|jdk�st	‚n t|t  |	¡ƒ t|t  |¡ƒ t t¡� t|	d d… |ƒ W 5 Q R X �q¾ddg}	ddg}d}tjt|d�� t|	|ƒ W 5 Q R X d S )Nzmultilabel-indicatorrW  r>   Z
continuouszmulticlass-multioutputzcontinuous-multioutputr   r1   r,   rž   rk   r¢  r—   r   r  gš™™™™™ñ?g      @)rI  z@Classification metrics can't handle a mix of {0} and {1} targetsr¹   z{0} is not supportedZ
multilabelZcsrr™   )r1   r,   )r   r,   rž   )r,   )r   r,   zÝYou appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead - the MultiLabelBinarizer transformer can convert to this format.)r6   r€   r   ÚKeyErrorr›   r¬   r­   r)   Úformatr`   Ú
startswithr   Zsqueeze)ZINDZMCZBINZCNTZMMCZMCNZEXAMPLESZEXPECTEDZtype1r„   Ztype2r…   rY  r½   Zmerged_typeZy1outZy2outr|   rG   rG   rH   Útest__check_targets¤  s¾    $õ                     ê

 ÿÿ
 ÿr¹  c                  C   s*   ddg} ddg}t | |ƒd dks&t‚d S )Nr   r1   r™   rW  )r)   r`   r  rG   rG   rH   ÚAtest__check_targets_multiclass_with_both_y_true_and_y_pred_binary	  s    rº  c                  C   sp   t  ddddg¡} t  ddddg¡}t| |ƒdks6t‚t  dd	d	dg¡} t  ddddg¡}t| |ƒdkslt‚d S )
Nr™   r1   g      !Àr   r¢  g333333Ó¿ç333333Ó?r   r,   )r6   r€   r   r`   ©rF   Úpred_decisionrG   rG   rH   Útest_hinge_loss_binary	  s    r¾  c                  C   s6  t  ddddgddddgddd	dgdd	ddgd
dddgddd	dgg¡} t  ddddddg¡}t  d| d d  | d d  d| d d  | d d  d| d d  | d d  d| d d  | d d  d| d d  | d d  d| d d  | d d  g¡}t j|dd |d� t  |¡}t|| ƒ|k�s2t‚d S )Nç
×£p=
×?çÃõ(\�ÂÅ¿ç�Âõ(\�â¿ç®Gáz®ï¿gHáz®Gá¿g®Gáz®×¿ç¸…ëQ¸Þ¿ç333333÷¿çR¸…ëQØ¿çáz®GáÀçHáz®Gé¿çHáz®GÑ¿ç¸…ëQ¸Î?r   r1   r,   rž   rŽ   r�   ©Úout©r6   r€   Úclipr«   r   r`   )r½  rF   Údummy_lossesÚdummy_hinge_lossrG   rG   rH   Útest_hinge_loss_multiclass	  s,    





úÿ
úÿ

rÐ  c               	   C   sp   t  ddddg¡} t  ddddgdd	d
dgddddgddddgg¡}d}tjt|d�� t| |ƒ W 5 Q R X d S )Nr   r1   r,   gR¸…ëQô?gœÄ °rh¡?gÃõ(\�Âå¿gffffffö¿rÄ  rÁ  rÅ  rÀ  rÆ  rÇ  rÈ  rÉ  zDPlease include all labels in y_true or pass labels as third argumentr¹   )r6   r€   r›   r¬   r­   r   )rF   r½  Úerror_messagerG   rG   rH   Ú:test_hinge_loss_multiclass_missing_labels_with_labels_none2	  s    



üÿ	ÿrÒ  c               
   C   sÔ   t  dddddddg¡} t  dddddddg¡}d}tjtt |¡d�� t| |d� W 5 Q R X t  ddgddgddgddgddgddgddgg¡}dddg}d}tjtt |¡d�� t| ||d� W 5 Q R X d S )	Nr,   r1   r   z”The shape of pred_decision cannot be 1d arraywith a multiclass target. pred_decision shape must be (n_samples, n_classes), that is (7, 3). Got: (7,)r¹   r¼  z²The shape of pred_decision is not consistent with the number of classes. With a multiclass target, pred_decision shape must be (n_samples, n_classes), that is (7, 3). Got: (7, 2))rF   r½  r[   )r6   r€   r›   r¬   r­   ÚreÚescaper   )rF   r½  rÑ  r[   rG   rG   rH   Ú<test_hinge_loss_multiclass_no_consistent_pred_decision_shapeC	  s    ÿ4
ÿrÕ  c               
   C   s&  t  ddddgddddgddddgddddgddddgg¡} t  d	d
dd
dg¡}t  d	d
ddg¡}t  d
| d	 d	  | d	 d
  d
| d
 d
  | d
 d  d
| d d  | d d  d
| d d
  | d d  d
| d d  | d d  g¡}t j|d	d |d� t  |¡}t|| |d�|k�s"t‚d S )Nr¿  rÀ  rÁ  rÂ  çš™™™™™á¿rÅ  rÃ  rÄ  r   r1   r,   rž   rŽ   rÊ  r³   rÌ  ©r½  rF   r[   rÎ  rÏ  rG   rG   rH   Ú.test_hinge_loss_multiclass_with_missing_labels_	  s*    




ûÿ	ûÿ	
rØ  c               	   C   s  t  dddgdddgdddgdd	d
gdddgg¡} t  dddddg¡}t  dddg¡}t  d| d d  | d d  d| d d  | d d  d| d d  | d d  d| d d  | d d  d| d d  | d d  g¡}t j|dd |d� t  |¡}tt|| |d�|ƒ d S )Nr¿  rÀ  rÁ  g333333Ã¿rÃ  rÄ  rÅ  rÖ  gö(\�Âõè¿gáz®GáÚ¿r   r,   r1   rž   rŽ   rÊ  r³   )r6   r€   rÍ  r«   r   r   r×  rG   rG   rH   Ú@test_hinge_loss_multiclass_missing_labels_only_two_unq_in_y_truey	  s0    ûÿ	ûÿ	
 ÿrÙ  c               
   C   s*  ddddddg} ddddgd	d
ddgddd
dgd	d
ddgddddgddd
dgg}t  d|d d  |d d  d|d d  |d d  d|d d  |d d  d|d d  |d d  d|d d  |d d  d|d d  |d d  g¡}t j|dd |d� t  |¡}t| |ƒ|k�s&t‚d S )Nrq  rr  rs  Úwhiter¿  rÀ  rÁ  rÂ  rÖ  rÅ  rÃ  rÄ  rÆ  rÇ  rÈ  rÉ  r1   r   r,   rž   rŽ   r�   rÊ  rÌ  )rF   r½  rÎ  rÏ  rG   rG   rH   Ú+test_hinge_loss_multiclass_invariance_lists™	  s(    





úúÿ

rÛ  c            	   	   C   st  ddddddg} t  ddgddgddgddgdd	gd
dgg¡}t| |ƒ}t  t t  | ¡dk|d d …df ¡¡ }t||ƒ dddg} dddgdddgdddgg}t| |dd�}t|dƒ | d9 } |d9 }t| |dd�}t|ddd� t  |¡dk}t| |ddd�}t|t| t  |dd¡ƒƒ tddgddgdd�dk�s>t	‚tddgddgdd�t j
k�s`t	‚tddgddgdd�t j
k�s‚t	‚tdddgdddgdddgdddggdd�dk�s¸t	‚tdddgdddgdddgdddggdd�t j
k�sðt	‚dddg} ddgddgddgg}t t¡� t| |ƒ W 5 Q R X ddddg} ddgddgddgddgg}t| |ƒ}t|ddd� ddg} ddgddgg}t  ddgddgg¡}d }tjt|d!�� t| |ƒ W 5 Q R X ddgddgddgg}d"}t|t| |f t  t  |d d …df ¡¡ }t| |ddgd#�}t||ƒ dddg} dddgdddgdddgg}t| |ddd$gd#�}t|d%dd� d S )&NÚnoÚyesr   r¿   rR   g{®Gáz„?g®Gáz®ï?r¨   rŸ  gü©ñÒMbP?g+‡ÙÎ÷ï?r1   r   r,   rF  çffffffæ?rÁ   r»  Tr   gèº•Ê€æ?Fg.Lð—`’@r¦   rÒ   )r  Úeps©rß  rÀ   ÚhamÚspamçL¢7÷œð?zly_true contains only one label \(2\). Please provide the true labels explicitly through the labels argument.r¹   zBFound input variables with inconsistent numbers of samples: [3, 2]r³   rž   g¾PÀv0ñ?)r6   r€   r!   r«   r   Zlogpmfr   ZasarrayrÍ  r`   rš   r›   r¬   r­   Úlog)	rF   rE   ÚlossZ	loss_truerÄ   Z	error_strZtrue_log_lossZcalculated_log_lossZy_score2rG   rG   rH   Útest_log_lossµ	  s`    &ÿ
*


 ""68

ÿ

ræ  c                 C   s:   t jddg| d�}| ¡ }t||dd�}t  |¡s6t‚dS )z¸Check the behaviour of `eps="auto"` that changes depending on the input
    array dtype.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/24315
    r   r1   rX  Úautorà  N)r6   r€   r[  r!   Úisfiniter`   )Zglobal_dtyperF   rE   rå  rG   rG   rH   Útest_log_loss_eps_auto
  s    ré  c                  C   s<   t jddgt jd�} |  ¡ }t| |dd�}t  |¡s8t‚dS )z2Check the behaviour of `eps="auto"` for np.float16r   r1   rX  rç  rà  N)r6   r€   Zfloat16r[  r!   rè  r`   )rF   rE   rå  rG   rG   rH   Útest_log_loss_eps_auto_float16
  s    rê  c            
      C   s²   t  ddddg¡} t  ddgddgddgddgg¡}ttfg}z"d	d
lm}m} | ||f¡ W n tk
rt   Y nX |D ]2\}}|| ƒ||ƒ }}t||ƒ}	t	|	ddd� qzd S )Nrá  râ  rF  rÞ  rÁ   r   rÀ   r¿   r   )re  Ú	DataFramerã  r¦   rÒ   )
r6   r€   r   rd  re  rë  r!  ÚImportErrorr!   r   )
Zy_trZy_prÚtypesre  rë  ZTrueInputTypeZPredInputTyperF   rE   rå  rG   rG   rH   Útest_log_loss_pandas_input
  s    "

rî  c               	   C   s¾  t  ddddddg¡} t  ddddddg¡}t | | ¡d	 t| ƒ }tt| | ƒd
ƒ tt| |ƒ|ƒ ttd|  |ƒ|ƒ ttd	|  d |ƒ|ƒ t t	¡� t| |dd … ƒ W 5 Q R X t t	¡� t| |d ƒ W 5 Q R X t t	¡� t| |d ƒ W 5 Q R X t  ddd	dg¡} t  ddddg¡}d}tjt	|d�� t| |ƒ W 5 Q R X ttdgdgƒdƒ ttdgdgƒdƒ ttdgdgƒdƒ ttdgdgdd�dƒ ttdgdgdd�dƒ d S )Nr   r1   r¿   rŠ   rR   r»  r—   gffffffî?r,   rk   rÁ   rÀ   rF  zMOnly binary classification is supported. The type of the target is multiclassr¹   r™   g{®GázÄ?r¿  ZfooÚbar)rÈ   )
r6   r€   r   Znormr^   r   r'   r›   r¬   r­   )rF   rE   Z
true_scorerÑ  rG   rG   rH   Útest_brier_score_loss+
  s0    ÿrð  c               	   C   s8   d} t jt| d�� tdddgdddgƒ W 5 Q R X d S )Nz%y_pred contains classes not in y_truer¹   r   r1   )r›   rË   rÌ   r   rÍ   rG   rG   rH   Ú#test_balanced_accuracy_score_unseenN
  s    rñ  zy_true,y_predrq   rr   rs   c              	   C   s„   t | |dt | ¡d�}tƒ � t| |ƒ}W 5 Q R X |t |¡ksDt‚t| |dd�}t| t | | d ¡ƒ}||| d|  ks€t‚d S )Nr¢   r§   T)Úadjustedr   r1   )	r%   r6   Úuniquer   r   r›   rœ   r`   Z	full_like)rF   rE   Zmacro_recallZbalancedrò  ZchancerG   rG   rH   Útest_balanced_accuracy_scoreT
  s    	   ÿrô  )NF)™Ú	functoolsr   Ú	itertoolsr   r   r   rw   rÓ  Únumpyr6   Zscipyr   Zscipy.statsr   r›   Zsklearnr   r	   Zsklearn.datasetsr
   Zsklearn.preprocessingr   r   Zsklearn.utils.validationr   Zsklearn.utils._testingr   r   r   r   r   r   Zsklearn.utils._mockingr   Zsklearn.metricsr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   Zsklearn.metrics._classificationr)   Zsklearn.exceptionsr*   Zscipy.spatial.distancer+   rƒ  rI   rj   rn   ÚmarkZparametrizer}   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&  r6  r<  rA  rJ  rM  rO  rP  rR  rT  rU  rZ  rb  rh  rl  rm  rn  rp  rv  rx  ry  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Õ  rØ  rÙ  rÛ  ræ  ré  rê  rî  rð  rñ  rô  rG   rG   rG   rH   Ú<module>   s¸  0B
"

-

#)üþ	
þû
þû
þû
þû
þûÞþ-
þûÿþ

'#8
!:

þú
  ÿ

#

(M%

B
@L

!c
@
&
'
'b
 N	#&&&ýþ