a
    �ù»jý>  ã                   @   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j4 5dee e!ge#e$e%ge1dd … e2dd … e1d d… ge(j0e(j-e(j0gg¡ej4 5d!g d"¢¡ej4 5d#ee ¡d$d%„ ƒƒƒƒZ6ej4 5d&e¡d'd(„ ƒZ7ej4 5d)e¡d*d+„ ƒZ8eej4 5d&e¡ej4 5d!g d,¢¡d-d.„ ƒƒƒZ9ej4 5d&e¡d/d0„ ƒZ:ej4 5d)e¡d1d2„ ƒZ;ej4 5d3e<eeƒ¡d4d5„ ƒZ=ej4 5d&e¡d6d7„ ƒZ>ej4 5d&e¡d8d9„ ƒZ?ej4 5d)e¡d:d;„ ƒZ@d<d=„ ZAej4 5dede!ge#de%ge1dd … de1d d… ge(j0de(j0gg¡ej4 5d!g d"¢¡ej4 5d#ee ¡ed>d?„ ƒƒƒƒZBej4 5d&e¡d@dA„ ƒZCej4 5d)e¡dBdC„ ƒZDej4 5d)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r®t |j
¡sœJ ‚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   úCE:\soccer\ml_env\Lib\site-packages\sklearn/svm/tests/test_sparse.pyÚcheck_svm_model_equal4   sB    



ÿþýr;   zX_train, y_train, X_testéP   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r¬J ‚|
jr¶J ‚tjdddd� |	|¡}|j}t| ¡ | ¡ ƒ t| |
¡| |¡ƒ d S )
NT)Z
return_X_yé2   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rŽt|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-²�ï§ê?gÇK7‰A`Å?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!ã“F³O£?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 sŽ0    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

