o
    ×tBhû=  ã                	   @   sR  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 d d	l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e e¡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!e "e!¡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 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<d0d1„ Z=e j> ?d2e@d3ƒ¡e j> ?d4g d5¢¡ed6d7„ ƒƒƒZAd8d9„ ZBd:d;„ ZCd<d=„ ZDd>d?„ ZEdS )@é    N)Úassert_array_almost_equalÚassert_array_equal)Úsparse)ÚdatasetsÚsvmÚlinear_modelÚbase)Úmake_classificationÚload_digitsÚ
make_blobs)Útest_svm)ÚConvergenceWarning)Úsafe_sparse_dot)Úignore_warningsÚskip_if_32bitéþÿÿÿéÿÿÿÿé   é   )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   c                 C   sn  |   | ¡ |¡ t |¡r| ¡ }n|}|  ||¡ t |j¡s"J ‚t |j¡s*J ‚t| j|j ¡ ƒ t| j|j ¡ ƒ | jdkrRt |j	¡sIJ ‚t| j	|j	 ¡ ƒ t| j
|j
ƒ t|  |¡| |¡ƒ t|  |¡| |¡ƒ t|  |¡| |¡ƒ t| tjƒrƒd}nt|  |¡| |¡dƒ d}t |¡rµtjt|d |  |¡ W d   ƒ d S 1 s®w   Y  d S 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   Ú
isspmatrixÚissparseÚsupport_vectors_Ú
dual_coef_r   ÚkernelÚcoef_Úsupport_ÚpredictÚdecision_functionÚ
isinstancer   ÚOneClassSVMÚpredict_probaÚpytestÚraisesÚ
ValueError)Ú	dense_svmÚ
sparse_svmÚX_trainÚy_trainÚX_testÚX_test_denseÚmsg© r2   út/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/svm/tests/test_sparse.pyÚcheck_svm_model_equal0   sH   

ÿ
ÿÿþÿ
"ÿÿr4   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}g d¢}|D ]$}|D ]}tjd|d	dd
d}tjd|d	dd
d}t||g|¢R Ž  q9q5dS )z2Check that sparse SVC gives the same result as SVCéd   é
   r   ©Ú	n_samplesÚcentersÚrandom_stateNéP   ©r   ÚpolyÚrbfÚsigmoidr   TÚovo)Úgammar    Úprobabilityr:   Údecision_function_shape)r   r   Ú
csr_matrixÚX_spÚYÚTÚX2_spÚY2ÚT2ÚirisÚdataÚtargetr   ÚSVCr4   )ÚX_blobsÚy_blobsr   ÚkernelsÚdatasetr    ÚclfÚsp_clfr2   r2   r3   Útest_svcW   s6   
 üûûñÿrU   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	rVJ ‚|	j	r[J ‚tjdddd ||¡}
|
j}t| ¡ | ¡ ƒ t| 
|	¡| 
|¡ƒ d S )
NT)Ú
return_X_yé2   r5   r   r   )r    rB   r:   c                 S   s„   g }g }t dt| jƒƒD ])}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ÚextendrL   Úindicesr   rD   rX   )ÚXÚnew_dataÚnew_indicesÚiÚ	row_slicer2   r2   r3   Úscramble_indicesŒ   s   z/test_unsorted_indices.<locals>.scramble_indices)r
   r   rD   r   rN   r   r!   r   r   Úhas_sorted_indicesr'   )r_   Úyr/   ÚX_sparseÚ
coef_denseÚ
sparse_svcÚcoef_sortedrd   ÚX_sparse_unsortedÚX_test_unsortedÚunsorted_svcÚcoef_unsortedr2   r2   r3   Útest_unsorted_indicesx   s0   
ÿÿ	

ÿÿro   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   rG   ©Úxrf   r2   r2   r3   Úkfunc§   s   z*test_svc_with_custom_kernel.<locals>.kfuncr   ©r    )r   rN   r   rE   rF   r   r#   )rs   Úclf_linÚ	clf_mylinr2   r2   r3   Útest_svc_with_custom_kernel¦   s   rw   c                  C   sž   dD ]J} 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rLt|j|j ¡ ƒ qd S )N)r   r=   r>   rt   r   )r   rN   r   rK   rL   rM   r   r   r   r   r#   r!   )ÚkrT   rS   r2   r2   r3   Útest_svc_iris¯   s   ÿÿ€ôry   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 g d¢¡}t
| t¡|dƒ d S )Nr   çš™™™™™¹?r@   )r    ÚCrC   r   )ç      ð¿g…ëQ¸å¿r|   g…ëQ¸å?ç      ð?r}   r   )r   rN   r   rK   rL   rM   r   r!   rG   Ú
intercept_r   r$   r_   rF   ÚnpÚdotr#   ÚravelÚclasses_ÚastypeÚintÚarray)ÚsvcrS   ÚdecÚ
predictionÚexpectedr2   r2   r3   Útest_sparse_decision_functionÁ   s   
ÿrŠ   c                  C   sê   t  t¡ tjdd tt¡ W d   ƒ n1 sw   Y  tjdd} t  t¡ |  t	t¡ W d   ƒ n1 s;w   Y  td d… }t  t¡ |  t	|¡ W d   ƒ n1 s\w   Y  t ¡ } |  t	t¡ t
|  t¡tƒ d S )Nr   )r{   ç        )Únu)r(   r)   r*   r   rN   r   r_   rF   ÚNuSVCrE   r   r#   rG   Útrue_result)rS   rI   r2   r2   r3   Ú
test_errorÛ   s   ÿÿÿr   c                  C   s¬   t jdd tt¡} t jdd tt¡}|jsJ ‚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 )Nr   ©r:   r   ©Údecimal)r   Ú	LinearSVCr   r_   rF   rE   Úfit_interceptr   r!   r~   r#   ÚX2rI   rH   )rS   rT   r2   r2   r3   Útest_linearsvcï   s   
r–   c                  C   sè   t jdd tj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¡ƒ t |  tj¡d¡}t|| tj ¡ ¡ƒ | ¡  t|| tj¡ƒ |  ¡  t||  tj¡ƒ d S )Nr   r   r   r‘   )r   r“   r   rK   rL   rM   r   r”   r   r!   r~   r#   r   Úargmaxr$   Úsparsifyr   )rT   rS   Úpredr2   r2   r3   Útest_linearsvc_iris  s   ÿrš   c                  C   s¢   t ddddgdd\} }t | ¡} 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sNJ ‚qd S )NéÈ   r5   g-²ï§ê?gÇK7‰A`Å?r   )r8   Ú
n_featuresÚweightsr:   r   é   )Úclass_weighté´   é   )r	   r   rD   r   ÚLogisticRegressionr   r“   rN   Ú
set_paramsr   r#   r   Úsum)ÚX_Úy_rS   Úy_predr2   r2   r3   Ú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   r}   rz   r   r6   )Úsample_weightç       @)r   rN   r   rE   rF   r   r#   r_   )rS   r©   r2   r2   r3   Útest_sample_weights.  s   r«   c                   C   s   t  tj¡ d S rp   )r   Ú'test_dense_liblinear_intercept_handlingr   r“   r2   r2   r2   r3   Ú(test_sparse_liblinear_intercept_handling9  s   r­   Údatasets_indexr   r    r<   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||g|¢R Ž  d S )Nr5   r6   r   r7   r;   r   )rA   r    )r   r   rD   rE   rG   rH   rJ   rK   rL   r   r&   r4   )r®   r    rO   Ú_r   rR   rS   rT   r2   r2   r3   Útest_sparse_oneclasssvm>  s   
ür°   c                  C   s¢   t  g d¢¡} t  g d¢¡}t  g d¢¡}t | ||f¡}t  g d¢¡}tjdd | ¡ |¡}tjdd t |¡|¡}t	|j
|j
 ¡ ƒ t	|j|j ¡ ƒ d S )N)g!ã“F³O£?gJ:oú°¹?g[“òƒˆˆ?gýñÖù·›?)é   rž   é#   é   )Qr   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   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   r   r   r   r   )Pr}   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´   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}   r}   r´   r   rt   )r   r…   r   rD   r   rN   r   r   Ú
coo_matrixr   r   r   )rL   r^   r[   r_   rf   rS   rT   r2   r2   r3   Útest_sparse_realdataR  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   ó
   | |j  S rp   ©rG   rq   r2   r2   r3   Ú<lambda>  ó   
 z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>Tr   )r{   r    rB   r:   c                 S   s   t  | |j¡S rp   )r   r€   rG   rq   r2   r2   r3   r¹     s    )r   rN   r   Úcloner   rE   rF   r#   r'   r_   r   )ÚaÚbr™   r+   Ú
pred_denser2   r2   r3   Ú*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·   rp   r¸   rq   r2   r2   r3   r¹     rº   ztest_timeout.<locals>.<lambda>Tr   )r{   r    rB   r:   Úmax_iterzoSolver terminated early \(max_iter=1\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r   )r   rN   r(   Úwarnsr   r   rE   rF   )ÚspÚwarning_msgr2   r2   r3   Ú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   rN   r   r   r   r_   rF   r'   r   )r¼   Úproba_1Úproba_2r2   r2   r3   Útest_consistent_proba)  s   ÿÿrÈ   )Fr(   Únumpyr   Únumpy.testingr   r   Úscipyr   Úsklearnr   r   r   r   Úsklearn.datasetsr	   r
   r   Úsklearn.svm.testsr   Úsklearn.exceptionsr   Úsklearn.utils.extmathr   Úsklearn.utils._testingr   r   r…   r_   Ú
lil_matrixrE   rF   rG   rŽ   r•   Ú
dok_matrixrH   rI   rJ   Útrue_result2Ú	load_irisrK   ÚrandomÚRandomStateÚrngÚpermutationrM   ÚsizeÚpermrL   rD   r4   rU   ro   rw   ry   rŠ   r   r–   rš   r¨   r«   r­   ÚmarkÚparametrizerY   r°   r¶   r¿   rÄ   rÈ   r2   r2   r2   r3   Ú<module>   sp    .
ûÿ
	'
 .	
 :