o
    ia=                     @   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s'J t|js/J t| j|j  t| j|j  | j	dkrWt|j
sNJ t| j
|j
  t| j|j t| ||| t| ||| t| ||| t| tjrd}nt| |||dd d}t|rtjt|d | | W d    d S 1 sw   Y  d S 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   l/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/svm/tests/test_sparse.pycheck_svm_model_equal4   sF   




"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ddd} |}tjddd	d
||j}tjddd	d
||}|j}t|| fi |  fdd}	|	|}
|	|}|
jr`J |jreJ tjddd	d
|
|}|j}t| | fi | t|	||	|fi | d S )NT)Z
return_X_y2   r   g-q=g+=)ZrtolZatolr   r   )r*   rB   r   c                    s   g }g }t dt| jD ])}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   dictr   rD   r%   r+   r   r&   Zhas_sorted_indicesr0   )rH   rR   yr7   ZtolsZX_sparseZ
coef_denseZ
sparse_svcZcoef_sortedrU   ZX_sparse_unsortedZX_test_unsortedZunsorted_svcZcoef_unsortedr9   rT   r:   test_unsorted_indicesx   s8   	


rX   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xrW   r9   r9   r:   kfunc   s   z*test_svc_with_custom_kernel.<locals>.kfuncr   r*   rR   r   rD   r%   Yr   r,   )rY   r^   X_spZclf_linZ	clf_mylinr9   r9   r:   test_svc_with_custom_kernel   s
   rc   )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rIt|j|j  d S 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   
rh   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rk   gQ?      ?rl   r   r    )rd   rP   r   rD   r%   re   r   r+   r[   
intercept_r   r-   rR   ra   npdotr,   ZravelZclasses_Zastypeintarrayr   )rH   rf   ZsvcrF   decZ
predictionexpectedr9   r9   r:   test_sparse_decision_function   s   

rt   c                 C   sr   t  }| t}td d }tt ||| W d    n1 s$w   Y  ||t t|	t
t d S )Nr   )r   rD   rR   ra   r1   r2   r3   r%   r   r,   r[   true_result)rY   rF   rb   Y2r9   r9   r:   
test_error   s   rw   zlil_container, dok_containerc                 C   s   | t }|t}tjddt t}tjdd|t}|js!J 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%   ra   fit_interceptr   r+   rm   r   r,   rv   )rY   Zdok_containerrb   ZX2_sprF   rg   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s$J 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   rx   r   r    )Zaxis)rd   rP   r   rz   r%   re   r{   r   r+   rm   r   r,   rn   Zargmaxr-   Zsparsifyr   )rH   rf   rg   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 ]0}|jddid	 ||d d
 |d d
  ||d
d  }t	
||d
d  kdksMJ qd S )N   r   g-?gK7A`?r   )r   Z
n_featuresweightsr   rx      )Zclass_weight      )r	   r   ZLogisticRegressionr   rz   rD   Z
set_paramsr%   r,   rn   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   rl   ri   r   r   )sample_weight       @r`   )rY   rb   rF   r   r9   r9   r:   test_sample_weights6  s   r   c                   C   s   t tj d S rZ   )r   Z'test_dense_liblinear_intercept_handlingr   rz   r9   r9   r9   r:   (test_sparse_liblinear_intercept_handlingD  s   r   c                 C   s(   || } t jd|d}t|| || d S )Nr   )rA   r*   )r   r/   r;   rE   r9   r9   r:   test_sparse_oneclasssvmI  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   )Prl           r   r   rl   rl   rl   r   r   r   rl   r   r   r   r   r         @r   r   r   rl   rl   r   r   r   r   r   r   rl   r   r   rl   r   r   rl   r   r   r   rl   r   r   rl   r   r   r   r   rl   r   r   r   r   r   r   r   r   rl   r   r   r   r   r   rl   r   rl   r   r   r   r   r   r   rl   r   rl   rl   r   rl   r   rl   rl   r   r   r_   )rn   rq   Zint32r   rD   r%   r&   Ztocoor   r(   r)   )rH   rP   rQ   rM   rR   rW   rF   rg   r9   r9   r:   test_sparse_realdata]  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   
   | |j  S rZ   r[   r\   r9   r9   r:   <lambda>     
 z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>Tr   )rj   r*   rB   r   c                 S   s   t | |jS rZ   )rn   ro   r[   r\   r9   r9   r:   r     s    )
r   rD   r   r$   rR   r%   ra   r,   r0   r   )rY   abrb   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    d S 1 s)w   Y  d S )	Nr   c                 S   r   rZ   r   r\   r9   r9   r:   r     r   ztest_timeout.<locals>.<lambda>Tr   )rj   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   ra   )rY   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 s!w   Y  t jdddd} ttd | ttt}W d    n1 sGw   Y  t|| d S )NTr   r   )rB   r   r   )category)	r   rD   r   r
   r%   rR   ra   r0   r   )r   Zproba_1Zproba_2r9   r9   r:   test_consistent_proba  s   r   )Gnumpyrn   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   rq   rR   ra   r[   ru   ry   rv   ZT2Ztrue_result2Z	load_irisrd   randomZRandomStaterngZpermutationre   sizepermrP   ZX_blobsZy_blobsr;   markZparametrizerG   rX   rc   rh   rt   rw   zipr|   r~   r   r   r   r   r   r   r   r   r9   r9   r9   r:   <module>   s    .	* 	
1








	
j

