o
    ?Hh=                     @   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_samples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   support_predictdecision_function
isinstancer   OneClassSVMpredict_probapytestraises
ValueError)	dense_svmX_trainy_trainX_test
sparse_svmX_test_densemsg r=   ]/home/air/sanwanet/gpt-api/venv/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rbf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?   r7   r8   r9   r+   rD   clfr=   r=   r>   test_svc^   s   rL   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rVJ |
jr[J tjdddd|	|}|j}t| |  t||
|| d S )
NT)
return_X_y2   r   r   r   )r+   rG   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indicesrP   )Xnew_datanew_indicesi	row_slicerM   r=   r>   scramble_indices   s   z/test_unsorted_indices.<locals>.scramble_indices)	r   r   rI   r&   r,   r   r'   has_sorted_indicesr2   )rM   rX   yr9   X_sparse
coef_dense
sparse_svccoef_sortedr^   X_sparse_unsortedX_test_unsortedunsorted_svccoef_unsortedr=   r]   r>   test_unsorted_indicesx   s0   	

ri   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xr`   r=   r=   r>   kfunc   s   z*test_svc_with_custom_kernel.<locals>.kfuncr   r+   rX   r   rI   r&   Yr   r.   )rj   ro   X_spclf_lin	clf_mylinr=   r=   r>   test_svc_with_custom_kernel   s
   rv   )r   rA   rB   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 )Nrp   r   )irisrV   r   rI   r&   targetr   r)   r'   r*   r.   r,   )rM   r+   iris_data_spsp_clfrK   r=   r=   r>   test_svc_iris   s   
r{   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   皙?rE   )r+   CrH   r   )      gQr~   gQ?      ?r   r   r!   )rw   rV   r   rI   r&   rx   r   r,   rl   
intercept_r   r/   rX   rr   npdotr.   ravelclasses_astypeintarrayr   )rM   ry   svcrK   dec
predictionexpectedr=   r=   r>   test_sparse_decision_function   s   

r   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   rI   rX   rr   r3   r4   r5   r&   r   r.   rl   true_result)rj   rK   rs   Y2r=   r=   r>   
test_error   s   r   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!   )rX   X2r   	LinearSVCr&   rr   fit_interceptr   r,   r   r   r.   r   )rj   dok_containerrs   X2_sprK   rz   r=   r=   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   r   r   r!   )axis)rw   rV   r   r   r&   rx   r   r   r,   r   r   r.   r   argmaxr/   sparsifyr   )rM   ry   rz   rK   predr=   r=   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   
n_featuresweightsr   r      )class_weight      )r	   r   LogisticRegressionr   r   rI   
set_paramsr&   r.   r   sum)rM   X_y_rK   y_predr=   r=   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   r   r|   r   r   )sample_weight       @rq   )rj   rs   rK   r   r=   r=   r>   test_sample_weights3  s   r   c                   C   s   t tj d S rk   )r   'test_dense_liblinear_intercept_handlingr   r   r=   r=   r=   r>   (test_sparse_liblinear_intercept_handlingA  s   r   c                 C   s(   || } t jd|d}t|| || d S )Nr   )rF   r+   )r   r1   r?   rJ   r=   r=   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   #      )dtyper      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   rp   )r   r   int32r   rI   r&   r'   tocoor   r)   r*   )rM   rV   rW   rS   rX   r`   rK   rz   r=   r=   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   
   | |j  S rk   rl   rm   r=   r=   r>   <lambda>     
 z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>Tr   )r}   r+   rG   r   c                 S   s   t | |jS rk   )r   r   rl   rm   r=   r=   r>   r     s    )
r   rI   r   r%   rX   r&   rr   r.   r2   r   )rj   abrs   r   r6   
pred_denser=   r=   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   rk   r   rm   r=   r=   r>   r     r   ztest_timeout.<locals>.<lambda>Tr   )r}   r+   rG   r   max_iterzoSolver terminated early \(max_iter=1\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r#   )r   rI   r3   warnsr
   r&   rX   rr   )rj   spwarning_msgr=   r=   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   )rG   r   r   )category)	r   rI   r   r
   r&   rX   rr   r2   r   )r   proba_1proba_2r=   r=   r>   test_consistent_proba  s   r   )Gnumpyr   r3   scipyr   sklearnr   r   r   r   sklearn.datasetsr   r   r	   sklearn.exceptionsr
   sklearn.svm.testsr   sklearn.utils._testingr   r   r   r   r   sklearn.utils.extmathr   sklearn.utils.fixesr   r   r   r   rX   rr   rl   r   r   r   T2true_result2	load_irisrw   randomRandomStaterngpermutationrx   sizepermrV   X_blobsy_blobsr?   markparametrizerL   ri   rv   r{   r   r   zipr   r   r   r   r   r   r   r   r   r   r=   r=   r=   r>   <module>   s    .	* 	
.








	
j

