U
    -em=                  	   @   sx  d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZ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 d d	lmZ ed
dgddgdd
gddgddgddggZeeZddddddgZeddgddgddggZdddgZ ed d d gdddgdd d gd d dgdddggZ!e"e!Z#dddddgZ$edddgdddgdddggZ%dddgZ&e
' Z(ej)*d Z+e+,e(j-j.Z/e(j0e/ e(_0e(j-e/ e(_-e1e(j0e(_0dd Z2edd Z3dd Z4dd Z5edd Z6dd Z7dd Z8dd Z9dd  Z:d!d" Z;d#d$ Z<d%d& Z=ej>?d'e@d(ej>?d)d*d+d,d-ged.d/ ZAd0d1 ZBd2d3 ZCd4d5 ZDd6d7 ZEdS )8    N)assert_array_almost_equalassert_array_equal)sparse)basedatasetslinear_modelsvm)load_digits
make_blobsmake_classification)ConvergenceWarning)test_svm)ignore_warningsskip_if_32bit)safe_sparse_dot         c              	   C   sX  |  | | t|r$| }n|}| || t|jsDtt|jsTtt| j|j  t| j|j  | jdkrt|j	stt| j	|j	  t| j
|j
 t| ||| t| ||| t| ||| t| tjrd}nt| |||d d}t|rTtjt|d | | W 5 Q R X d S )Nlinearz>cannot use sparse input in 'OneClassSVM' trained on dense data   z6cannot use sparse input in 'SVC' trained on dense datamatch)fittoarrayr   issparsesupport_vectors_AssertionError
dual_coef_r   kernelcoef_Zsupport_predictdecision_function
isinstancer   OneClassSVMpredict_probapytestraises
ValueError)	dense_svmZ
sparse_svmZX_trainZy_trainX_testZX_test_densemsg r-   ^/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sklearn/svm/tests/test_sparse.pycheck_svm_model_equal.   sN    

 
    r/   c               	   C   s   t dddd\} }t| } tttgtttg| dd |dd | dd gt	j
t	jt	j
gg}ddd	d
g}|D ]F}|D ]<}tjd|dddd}tjd|dddd}t||f|  qvqndS )z2Check that sparse SVC gives the same result as SVCd   
   r   	n_samplesZcentersrandom_stateNP   r   polyrbfsigmoidr   Tovo)gammar    probabilityr4   decision_function_shape)r
   r   
csr_matrixX_spYTX2_spY2T2irisdatatargetr   SVCr/   )X_blobsZy_blobsr   Zkernelsdatasetr    clfsp_clfr-   r-   r.   test_svcU   s2    
 rL   c                  C   s   t dd\} }t| dd }| d d |d d  } }t| }tjdddd| |j}tjdddd||}|j}t||  dd	 }||}||}	|j	rt
|	j	rt
tjdddd||}
|
j}t| |  t||	|| d S )
NT)Z
return_X_y2   r0   r   r   )r    r;   r4   c                 S   s   g }g }t dt| jD ]R}t| j|d |d   }|| j| d d d  || j| d d d  qtj||| jf| j	dS )Nr   r   )shape)
rangelenindptrsliceextendrE   indicesr   r=   rN   )XZnew_dataZnew_indicesiZ	row_slicer-   r-   r.   scramble_indices   s    z/test_unsorted_indices.<locals>.scramble_indices)r	   r   r=   r   rG   r   r!   r   r   Zhas_sorted_indicesr   r&   )rU   yr+   ZX_sparseZ
coef_denseZ
sparse_svcZcoef_sortedrW   ZX_sparse_unsortedZX_test_unsortedZunsorted_svcZcoef_unsortedr-   r-   r.   test_unsorted_indicesv   s6    
 	

  rY   c                  C   sJ   dd } t jddtt}t j| dtt}t|t|t d S )Nc                 S   s   t | |jS N)r   r@   xrX   r-   r-   r.   kfunc   s    z*test_svc_with_custom_kernel.<locals>.kfuncr   r    )r   rG   r   r>   r?   r   r"   )r]   Zclf_linZ	clf_mylinr-   r-   r.   test_svc_with_custom_kernel   s    r_   c                  C   s   dD ]} t j| dtjtj}t j| dtj tj}t|j|j  t|j	|j	  t|
tj |
tj | dkrt|j|j  qd S )N)r   r6   r7   r^   r   )r   rG   r   rD   rE   rF   r   r   r   r   r"   r!   )krK   rJ   r-   r-   r.   test_svc_iris   s      
ra   c                  C   s   t jdddd} | tjtj}ttj|jj|j	 }t
||tj |tt tt|jj|j	 }|t}t
| |t t
||j|tdkt   tddddd	d	g}t
|t|d
 d S )Nr   皙?r9   )r    Cr<   r   g      gQgQ?      ?r   )r   rG   r   rD   rE   rF   r   r!   r@   
intercept_r   r#   rU   r?   npdotr"   ZravelZclasses_Zastypeintarray)ZsvcrJ   decZ
predictionexpectedr-   r-   r.   test_sparse_decision_function   s    
 rl   c               	   C   sV   t  } td d }tt | t| W 5 Q R X | tt t| 	t
t d S )Nr   )r   rG   r?   r'   r(   r)   r   r>   r   r"   r@   true_result)rJ   rB   r-   r-   r.   
test_error   s    rn   c                  C   s   t jdddtt} t jdddtt}|js6tt| j	|j	dd t| j
|j
dd t| t|t | tt |tt t| j	|j	dd t| j
|j
dd d S )Nautor   Zdualr4   r   decimal)r   	LinearSVCr   rU   r?   r>   fit_interceptr   r   r!   re   r"   X2rB   rA   )rJ   rK   r-   r-   r.   test_linearsvc   s    
rv   c                  C   s   t jdddtjtj} t jdddtj tj}|j| jksHtt	|j
| j
dd t	|j| jdd t	|tj | tj t| tjd}t	||tj  |  t||tj |   t|| tj d S )Nro   r   rp   r   rq   )r   rs   r   rD   rE   rF   r   rt   r   r   r!   re   r"   rf   Zargmaxr#   Zsparsifyr   )rK   rJ   predr-   r-   r.   test_linearsvc_iris   s$      
rx   c                  C   s   t ddddgdd\} }t| } t tjdddt fD ]`}|jdd	id
 |	| d d |d d  |
| dd  }t||dd  kdks>tq>d S )N   r0   g-?gK7A`?r   )r3   Z
n_featuresweightsr4   ro   rp      )Zclass_weight      )r   r   r=   r   ZLogisticRegressionr   rs   rG   Z
set_paramsr   r"   rf   sumr   )ZX_Zy_rJ   Zy_predr-   r-   r.   test_weight  s       

r   c                  C   sl   t  } | tt t| td gdg dgd dgd  }| jtt|d t| td gdg d S )Nr   rd   rb   r   r1   )sample_weight       @)r   rG   r   r>   r?   r   r"   rU   )rJ   r   r-   r-   r.   test_sample_weights&  s    r   c                   C   s   t tj d S rZ   )r   Z'test_dense_liblinear_intercept_handlingr   rs   r-   r-   r-   r.   (test_sparse_liblinear_intercept_handling1  s    r   datasets_indexr   r    r   r6   r7   r8   c                 C   s   t dddd\}}t|}td tgtd tg|d d d |dd  gtjd tjgg}||  }t	j
d|d}t	j
d|d}t||f|  d S )Nr0   r1   r   r2   r5   r   )r:   r    )r
   r   r=   r>   r@   rA   rC   rD   rE   r   r%   r/   )r   r    rH   _r   rI   rJ   rK   r-   r-   r.   test_sparse_oneclasssvm6  s    
r   c               S   C   s  t 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
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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gQ}t| ||f}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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ddddddddddddddddddddgP}tjdd| |}tjddt||}t	|j
|j
  t	|j|j  d S )Ng!FO?gJ:o?g[?g?   r{   #      r   r   r   r   rd   g        r   g      @r   r^   )rf   ri   r   r=   r   rG   r   r   Z
coo_matrixr   r   r   )rE   rT   rQ   rU   rX   rJ   rK   r-   r-   r.   test_sparse_realdataJ  s\   UUr   c                  C   sv   t jddd ddd} t| }|tt |t}|t t jddd ddd}|t	tt	}t
|| d S )Nr   c                 S   s
   | |j  S rZ   r@   r[   r-   r-   r.   <lambda>      z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>Tr   )rc   r    r;   r4   c                 S   s   t | |jS rZ   )rf   rg   r@   r[   r-   r-   r.   r     r   )r   rG   r   cloner   r>   r?   r"   r&   rU   r   )abrw   r*   Z
pred_denser-   r-   r.   *test_sparse_svc_clone_with_callable_kernel  s    


   r   c               	   C   sF   t jddd dddd} d}tjt|d | tt W 5 Q R X d S )	Nr   c                 S   s
   | |j  S rZ   r   r[   r-   r-   r.   r     r   ztest_timeout.<locals>.<lambda>Tr   )rc   r    r;   r4   max_iterzoSolver terminated early \(max_iter=1\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r   )r   rG   r'   Zwarnsr   r   r>   r?   )spZwarning_msgr-   r-   r.   test_timeout  s        r   c               	   C   s~   t jdddd} ttd | ttt}W 5 Q R X t jdddd} ttd | ttt}W 5 Q R X t|| d S )NTr   r   )r;   r   r4   )category)	r   rG   r   r   r   rU   r?   r&   r   )r   Zproba_1Zproba_2r-   r-   r.   test_consistent_proba!  s    r   )Fnumpyrf   r'   Znumpy.testingr   r   Zscipyr   Zsklearnr   r   r   r   Zsklearn.datasetsr	   r
   r   Zsklearn.exceptionsr   Zsklearn.svm.testsr   Zsklearn.utils._testingr   r   Zsklearn.utils.extmathr   ri   rU   Z
lil_matrixr>   r?   r@   rm   ru   Z
dok_matrixrA   rB   rC   Ztrue_result2Z	load_irisrD   randomZRandomStaterngZpermutationrF   sizepermrE   r=   r/   rL   rY   r_   ra   rl   rn   rv   rx   r   r   r   markZparametrizerO   r   r   r   r   r   r-   r-   r-   r.   <module>   sn   .

	
"
'
 .	
 :