a
    h=                     @   s  d dl Zd dl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mZmZmZ d dlmZ d d	lmZmZmZ ed
dgddgdd
gddgddgddggZg dZ eddgddgddggZ!g dZ"eg dg dg dg dg dgZ#g dZ$eg dg dg dgZ%g dZ&e' Z(ej)*d Z+e+,e(j-j.Z/e(j0e/ e(_0e(j-e/ e(_-eddd d\Z1Z2dd Z3eej45dee e!ge#e$e%ge1dd  e2dd  e1d d ge(j0e(j-e(j0ggej45d!g d"ej45d#ee d$d% Z6ej45d&ed'd( Z7ej45d)ed*d+ Z8eej45d&eej45d!g d,d-d. Z9ej45d&ed/d0 Z:ej45d)ed1d2 Z;ej45d3e<eed4d5 Z=ej45d&ed6d7 Z>ej45d&ed8d9 Z?ej45d)ed:d; Z@d<d= ZAej45dede!ge#de%ge1dd  de1d d ge(j0de(j0ggej45d!g d"ej45d#ee ed>d? ZBej45d&ed@dA ZCej45d)edBdC ZDej45d)edDdE ZEdFdG ZFdS )H    N)sparse)basedatasetslinear_modelsvm)load_digits
make_blobsmake_classification)ConvergenceWarning)test_svm)assert_allcloseassert_array_almost_equalassert_array_equalignore_warningsskip_if_32bit)safe_sparse_dot)CSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS      )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   d   
   )	n_samplesZcentersrandom_statec                 C   sz  t | }| | | t|r.| }n|}||| t|jsNJ t|js^J t| j|j  t| j|j  | j	dkrt|j
sJ t| j
|j
  t| j|j t| ||| t| ||| t| ||| t| tjrd}nt| |||dd d}t|rvtjt|d | | W d    n1 sl0    Y  d S )Nlinearz>cannot use sparse input in 'OneClassSVM' trained on dense data   decimalz6cannot use sparse input in 'SVC' trained on dense datamatch)r   clonefittoarrayr   issparsesupport_vectors_
dual_coef_r   kernelcoef_r   Zsupport_predictdecision_function
isinstancer   OneClassSVMpredict_probapytestraises
ValueError)	dense_svmX_trainy_trainX_testZ
sparse_svmZX_test_densemsg r9   Y/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/svm/tests/test_sparse.pycheck_svm_model_equal4   sB    



r;   zX_train, y_train, X_testP   r*   )r   polyrbfZsigmoidsparse_containerc                 C   s.   || } t jd|dddd}t|| || dS )z3Check that sparse SVC gives the same result as SVC.r   Tr   ovo)gammar*   probabilityr   decision_function_shapeN)r   SVCr;   r5   r6   r7   r*   r?   clfr9   r9   r:   test_svc^   s    rG   csr_containerc                    s   t dd\}} |dd }|d d |d d  }} |}tjdddd||j}tjdddd||}|j}t||   fdd	}||}	||}
|	jrJ |
jrJ tjdddd|	|}|j}t| |  t||
|| d S )
NT)Z
return_X_y2   r   r   r   )r*   rB   r   c                    s   g }g }t dt| jD ]R}t| j|d |d   }|| j| d d d  || j| d d d  q ||| jf| jdS )Nr   r   )shape)rangelenindptrsliceextenddataindicesrJ   )XZnew_dataZnew_indicesiZ	row_slicerH   r9   r:   scramble_indices   s    z/test_unsorted_indices.<locals>.scramble_indices)	r   r   rD   r%   r+   r   r&   Zhas_sorted_indicesr0   )rH   rR   yr7   ZX_sparseZ
coef_denseZ
sparse_svcZcoef_sortedrU   ZX_sparse_unsortedZX_test_unsortedZunsorted_svcZcoef_unsortedr9   rT   r:   test_unsorted_indicesx   s0    	

rW   lil_containerc                 C   sR   dd }| t }tjdd|t}tj|d|t}t|||| d S )Nc                 S   s   t | |jS N)r   TxrV   r9   r9   r:   kfunc   s    z*test_svc_with_custom_kernel.<locals>.kfuncr   r*   rR   r   rD   r%   Yr   r,   )rX   r]   X_spZclf_linZ	clf_mylinr9   r9   r:   test_svc_with_custom_kernel   s
    rb   )r   r=   r>   c                 C   s   | t j}tj|d|t j}tj|dt jt j}t|j|j  t|j	|j	  t|
t j|
| |dkrt|j|j  d S )Nr^   r   )irisrP   r   rD   r%   targetr   r(   r&   r)   r,   r+   )rH   r*   iris_data_spsp_clfrF   r9   r9   r:   test_svc_iris   s    
rg   c                 C   s   | t j}tjdddd}||t j}t||jj|j	 }t
||| |tt tt|jj|j	 }|t}t
| |t t
||j|tdkt   tg d}t|t|dd d S )	Nr   皙?r@   )r*   CrC   r   )      gQrj   gQ?      ?rk   r   r    )rc   rP   r   rD   r%   rd   r   r+   rZ   
intercept_r   r-   rR   r`   npdotr,   ZravelZclasses_Zastypeintarrayr   )rH   re   ZsvcrF   decZ
predictionexpectedr9   r9   r:   test_sparse_decision_function   s    

rs   c                 C   sr   t  }| t}td d }tt ||| W d    n1 sH0    Y  ||t t|	t
t d S )Nr   )r   rD   rR   r`   r1   r2   r3   r%   r   r,   rZ   true_result)rX   rF   ra   Y2r9   r9   r:   
test_error   s    *rv   zlil_container, dok_containerc                 C   s   | t }|t}tjddt t}tjdd|t}|jsBJ t|j|jdd t|j	|j	dd t
|t || |tt ||t t|j|jdd t|j	|j	dd d S )Nr   r   r   r    )rR   X2r   	LinearSVCr%   r`   fit_interceptr   r+   rl   r   r,   ru   )rX   Zdok_containerra   ZX2_sprF   rf   r9   r9   r:   test_linearsvc   s    
r{   c                 C   s   | t j}tjdd|t j}tjddt jt j}|j|jksHJ t|j|jdd t|j	|j	dd t
|t j|| tj||dd}t
||t j |  t||| |  t||| d S )Nr   rw   r   r    )Zaxis)rc   rP   r   ry   r%   rd   rz   r   r+   rl   r   r,   rm   Zargmaxr-   Zsparsifyr   )rH   re   rf   rF   predr9   r9   r:   test_linearsvc_iris  s    
r}   c                 C   s   t ddddgdd\}}| |}t tjddt fD ]`}|jddid	 ||d d
 |d d
  ||d
d  }t	
||d
d  kdks:J q:d S )N   r   g-?gK7A`?r   )r   Z
n_featuresweightsr   rw      )Zclass_weight      )r	   r   ZLogisticRegressionr   ry   rD   Z
set_paramsr%   r,   rm   sum)rH   ZX_Zy_rF   Zy_predr9   r9   r:   test_weight   s    

r   c                 C   st   | t }t }||t t|t d gdg dgd dgd  }|j|t|d t|t d gdg d S )Nr   rk   rh   r   r   )sample_weight       @r_   )rX   ra   rF   r   r9   r9   r:   test_sample_weights3  s    r   c                   C   s   t tj d S rY   )r   Z'test_dense_liblinear_intercept_handlingr   ry   r9   r9   r9   r:   (test_sparse_liblinear_intercept_handlingA  s    r   c                 C   s(   || } t jd|d}t|| || d S )Nr   )rA   r*   )r   r/   r;   rE   r9   r9   r:   test_sparse_oneclasssvmF  s    r   c                 C   s   t g d}t jg dt jd}t jdgd dgd  dgd	  d
gd  t jd}| |||f}t g d}tjdd| |}tjdd| |}t|j	|j	  t|j
|j
  d S )N)g!FO?gJ:o?g[?g?)   r   #      )Zdtyper      r       r   &   r   r   )Prk           r   r   rk   rk   rk   r   r   r   rk   r   r   r   r   r         @r   r   r   rk   rk   r   r   r   r   r   r   rk   r   r   rk   r   r   rk   r   r   r   rk   r   r   rk   r   r   r   r   rk   r   r   r   r   r   r   r   r   rk   r   r   r   r   r   rk   r   rk   r   r   r   r   r   r   rk   r   rk   rk   r   rk   r   rk   rk   r   r   r^   )rm   rp   Zint32r   rD   r%   r&   Ztocoor   r(   r)   )rH   rP   rQ   rM   rR   rV   rF   rf   r9   r9   r:   test_sparse_realdataZ  s    4Ur   c                 C   s~   t jddd ddd}t|}| t}||t ||}|| t jddd ddd}|ttt}t	|| d S )Nr   c                 S   s
   | |j  S rY   rZ   r[   r9   r9   r:   <lambda>      z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>Tr   )ri   r*   rB   r   c                 S   s   t | |jS rY   )rm   rn   rZ   r[   r9   r9   r:   r     r   )
r   rD   r   r$   rR   r%   r`   r,   r0   r   )rX   abra   r|   r4   Z
pred_denser9   r9   r:   *test_sparse_svc_clone_with_callable_kernel  s    


r   c                 C   s^   t jddd dddd}d}tjt|d  || tt W d    n1 sP0    Y  d S )	Nr   c                 S   s
   | |j  S rY   r   r[   r9   r9   r:   r     r   ztest_timeout.<locals>.<lambda>Tr   )ri   r*   rB   r   max_iterzoSolver terminated early \(max_iter=1\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r"   )r   rD   r1   Zwarnsr
   r%   rR   r`   )rX   spZwarning_msgr9   r9   r:   test_timeout  s    r   c                  C   s   t jdddd} ttd" | ttt}W d    n1 sB0    Y  t jdddd} ttd" | ttt}W d    n1 s0    Y  t|| d S )NTr   r   )rB   r   r   )category)	r   rD   r   r
   r%   rR   r`   r0   r   )r   Zproba_1Zproba_2r9   r9   r:   test_consistent_proba  s    00r   )Gnumpyrm   r1   Zscipyr   Zsklearnr   r   r   r   Zsklearn.datasetsr   r   r	   Zsklearn.exceptionsr
   Zsklearn.svm.testsr   Zsklearn.utils._testingr   r   r   r   r   Zsklearn.utils.extmathr   Zsklearn.utils.fixesr   r   r   rp   rR   r`   rZ   rt   rx   ru   ZT2Ztrue_result2Z	load_irisrc   randomZRandomStaterngZpermutationrd   sizepermrP   ZX_blobsZy_blobsr;   markZparametrizerG   rW   rb   rg   rs   rv   zipr{   r}   r   r   r   r   r   r   r   r   r9   r9   r9   r:   <module>   s   .	* 	
.








	
j

