U
    ^»{jm=  ã                	   @   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r¤t |j	¡s’t‚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/bwave/python/venv/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 SVCéd   é
   r   ©Ú	n_samplesZcentersÚrandom_stateNéP   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	r¬t
‚|	j	r¶t
‚tjdddd� ||¡}
|
j}t| ¡ | ¡ ƒ t| |	¡| |¡ƒ d S )
NT)Z
return_X_yé2   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-²�ï§ê?gÇK7‰A`Å?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!ã“F³O£?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   .

ûÿ	
"
'
 .	
 :