U
    9%eA                     @   s  d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZm Z m!Z!m"Z" e	e#d dgdd ggZ$d e$ddd f< e
e	eeefe%e&ej'ej(e)ej*ffddZ+e
ej,-dj.dddd dgdd ggd dgge$fe+d dgdd gge+d d gd d gge+d dggddgddgge#ddgddgge#ddgddggee#ddgddggfdd ddddddddg
e#dd dgej#dd dgej'dej#dd dgej(dej#dd dge)dej#dd dgej*de#dgd gdggee#dd dgd ddgdddge#dddgej#dddge/dej#dddge/dgdd ddgddddggddgddgge#dd ddgddddggej#dd ddgddddggej'dej#dd ddgddddggej(dej#dd ddgddddgge)dej#dd ddgddddggej*dfe+dd ddgddddgge
e	fe&ej'ej(e)ej*fde#ddgddgge#ddgddggej#ddgddgge/de#dd dggee#dd dggfd dgddgg d ge#d dddd d d dddg
ej#d dddd d d dddg
e%dej#d dddd d d dddg
ej'dej#d dddd d d dddg
ej(dej#d dddd d d dddg
e)dej#d dddd d d dddg
ej*de#d gdggee#d gdggddgddgdgddgddge#ddgddgej#ddge/dgdgd d ge#d gd ggej#d gd ggej*dge#d d gd d ggej#d d gd d ggej*de#d d ggfe+d d gd d gge
e	fe)ej*fde+d d gge
e	fe)ej*fdg gej#g ge/dd!gej#e#g e#dddgge/de#g e#dddggdddhddhge0dddge0ddggddd"d dige#d e#g g ge#d dgddggddgd#d$ggggd%Z1dddhddd"dgdgd"de0dddgdgZ2dgdgd dggd!dd"gej#g ddggd&deej#g ddggd&dgZ3d'd( Z4d)d* Z5d+d, Z6d-d. Z7d/d0 Z8d1d2 Z9d3d4 Z:d5d6 Z;ej<=d7d8d9d:gd;d< Z>d=d> Z?d?d@ Z@dAdB ZAdS )C    )productN)
coo_matrix
csc_matrix
csr_matrix
dok_matrixissparse
lil_matrix)datasets)ShuffleSplit)SVC)assert_allcloseassert_array_almost_equalassert_array_equal)_NotAnArray)_safe_split)_ovr_decision_functioncheck_classification_targetsclass_distributionis_multilabeltype_of_targetunique_labels   c                    s    fdd|D S )Nc                    s"   g | ]} D ]}||d qqS )dtype ).0Zmatrix_typer   dtypesmatrixr   b/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/utils/tests/test_multiclass.py
<listcomp>+   s    z$_generate_sparse.<locals>.<listcomp>r   )r   matrix_typesr   r   r   r   _generate_sparse&   s    r"   *      )
   r%   )size      r   abcd)r!   r      abcdefgh㈵>      ?r   )r   r         )multilabel-indicator
multiclassmulticlass-multioutputbinary
continuouscontinuous-multioutputunknownobjectc                	   C   s  t t t  W 5 Q R X tttdtd tttdtd ttdddgtdddg tttdddgdddgdddggtd tttdddgdddggtd ttdddgtdtd ttdd	d
td t t tdddgt	d W 5 Q R X t t tt	dt	d W 5 Q R X ttt	dt	dtd d S )Nr%   r*   r   r$   r   r)   r/   )r   r   r$   r   )r$   r   )r/   r/   )r/   r*   )r*   r/   )
pytestraises
ValueErrorr   r   rangenpZarangearrayZonesr   r   r   r   test_unique_labels   s"     $ *   rD   c                  C   s   dD ]} t |  D ]}t| qqtD ]"}tt t| W 5 Q R X q$dD ]0}t | D ]"}tt t| W 5 Q R X qXqLd S )N)r8   r6   r5   )r;   r9   r:   r7   )EXAMPLESr   NON_ARRAY_LIKE_EXAMPLESr>   r?   r@   )formatyexampley_typer   r   r   test_unique_labels_non_specific   s    rK   c               
   C   s  t td td td  } | D ]H\}}tt t|| W 5 Q R X tt t|| W 5 Q R X qtt tddggddgg W 5 Q R X tt tddg W 5 Q R X tt tddgdd	gg W 5 Q R X tt tdd
gdd	gg W 5 Q R X d S )Nr5   r6   r8   r   r$   r+   r.   1r)   2)r   rE   r>   r?   r@   r   )Zmix_clf_formatZy_multilabelZy_multiclassr   r   r   test_unique_labels_mixed_types   s"      rN   c                     s  t  D ]\} }| dkrd}nd}|D ]ԉ | dkr@t r@d}nd}t st drt jdkrt jjdkrt j	d d	kr· fd
dt
ttttfD }|D ] }|t|kstd||f qt rވ   |t ks&td |f q&qd S )N)r5   TFr5   Z	__array__r$   Zbiufr   r   c                    s   g | ]}| qS r   r   )r   Zsparse_matrixrI   r   r   r      s   z&test_is_multilabel.<locals>.<listcomp>zis_multilabel(%r) should be %s)rE   itemsr   hasattrrB   Zasarrayndimr   kindshaper   r   r   r   r   r   AssertionErrorZtoarray)groupgroup_examplesZ	dense_expZ
sparse_expZexamples_sparseZexmpl_sparser   rO   r   test_is_multilabel  sL    



rX   c                  C   sf   t  D ]X} | dkrJt |  D ]*}d}tjt|d t| W 5 Q R X qqt |  D ]}t| qRqd S )N)r;   r9   r:   zUnknown label type: match)rE   keysr>   r?   r@   r   )rJ   rI   msgr   r   r   !test_check_classification_targets1  s    r]   c               
   C   s   t  D ]4\} }|D ]&}t|| kstd|| t|f qqtD ]*}d}tjt|d t| W 5 Q R X qBtD ]*}d}tjt|d t| W 5 Q R X qrd S )Nz'type_of_target(%r) should be %r, got %rz6Expected array-like \(array or non-string sequence\).*rY   zYou 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.)	rE   rP   r   rU   rF   r>   r?   r@   MULTILABEL_SEQUENCES)rV   rW   rI   Z	msg_regexr\   r   r   r   test_type_of_target>  s&    
r_   c               	   C   sP   t d} | jdtjtjdtjg}d}t jt|d t| W 5 Q R X d S )Npandasr   z1y cannot be class 'SparseSeries' or 'SparseArray'rY   )	r>   importorskipZarraysZSparseArrayrB   nanr?   r@   r   )pdrH   r\   r   r   r   !test_type_of_target_pandas_sparseX  s
    
rd   c                  C   s   t d} dD ]R}| jdddddg|d}t|d	ks:t| jddddg|d}t|d
kstq| jddgddggdd}t|dkst| jddgddggdd}t|dkst| jddgddggdd}t|dkstdS )z<Check that type_of_target works with pandas nullable dtypes.r`   )Int32Float32r   r   r$   r)   r*   r   r6   r8   gffffff?g@rf   r:   re   r5   r7   N)r>   ra   Seriesr   rU   Z	DataFrame)rc   r   y_truer   r   r   #test_type_of_target_pandas_nullablea  s    
ri   r   ZInt64ZFloat64booleanc              
   C   sf   t d}|jdddddddddg	| d}|jdddddddddg	dd}t||}t|ddg dS )zgChecks that unique_labels work with pandas nullable dtypes.

    Non-regression test for gh-25634.
    r`   r   r   r   Zint64N)r>   ra   rg   r   r   )r   rc   rh   Zy_predictedlabelsr   r   r   "test_unique_labels_pandas_nullablev  s
    
  
rl   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ddddgg} t dd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ddg}t ddddd	g}tj|||fd
d}t| \}}}t|\}}	}
dddgdddgdgdgg}ddddg}dddgdddgdgdgg}t| jd D ]r}t|| ||  t|| ||  t|| ||  t|| ||  t|	| ||  t|
| ||  q4t| ddddddg\}}}t| ddddddg\}}	}
dddgdddgdgdgg}t| jd D ]r}t|| ||  t|| ||  t|| ||  t|| ||  t|	| ||  t|
| ||  q
d S )Nr   r   r$   r)   r*   r/   r3         )r3   r*   )rT   r2   gUUUUUU?gUUUUUU?      ?       @gqq?gqq?)rB   rC   spr   r   rA   rT   r   )rH   dataindicesZindptrZy_spclasses	n_classesZclass_priorZ
classes_spZn_classes_spZclass_prior_spZclasses_expectedZn_classes_expectedZclass_prior_expectedkr   r   r   test_class_distribution  sR    





,, 
 
rw   c                  C   s   t  } t dd}t }|j|j }}t||j}tddd}t	|
|d \}}t| |||\}	}
t||||\}}t|t|	|	j t|
| t| ||||\}}t|||||\}}t|t||	j t|| d S )NZprecomputed)Zkernelg      ?r   )Z	test_sizeZrandom_state)r   r	   Z	load_irisrr   targetrB   dotTr
   listsplitr   r   )ZclfZclfpZirisXrH   KZcvtraintestZX_trainZy_trainZK_trainZy_train2ZX_testZy_testZK_testZy_test2r   r   r   'test_safe_split_with_precomputed_kernel  s    

r   c                     s  t dddg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d	d
dgg dt } t dddgdddgdddgdddgg}t|| dd t ddddg}tt j| dd| | d | d kst fddtdD }t| |dd d S )Nr   r   g 7yAro   rp   g      g      g      @g      g?r2   r)   r$   )Zatol)Zaxis)r$   r$   )r)   r$   c                    s4   g | ],}t t| gt | gd  qS r=   )r   rB   rC   )r   iZconfidencesru   Zpredictionsr   r   r      s     z.test_ovr_decision_function.<locals>.<listcomp>r*   gư>)rB   rC   r   r   r   ZargmaxrU   rA   )Z
dec_valuesZvotesZexpected_predictionZdec_values_oner   r   r   test_ovr_decision_function  s    *"*r   )B	itertoolsr   numpyrB   r>   Zscipy.sparsesparserq   r   r   r   r   r   r   Zsklearnr	   Zsklearn.model_selectionr
   Zsklearn.svmr   Zsklearn.utils._testingr   r   r   Zsklearn.utils.estimator_checksr   Zsklearn.utils.metaestimatorsr   Zsklearn.utils.multiclassr   r   r   r   r   r   rC   Zsparse_multilable_explicit_zeroboolintZint8Zuint8floatZfloat32r"   randomZRandomStaterandintr<   	frozensetrE   rF   r^   rD   rK   rN   rX   r]   r_   rd   ri   markZparametrizerl   rw   r   r   r   r   r   r   <module>   s   	 	
"" " "" ""$s
-	
3