
     h$=              	          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j        d
dgddgdd
gddgddgddgg          Z ej        e          Zg dZ ej        ddgddgddgg          Zg dZ  ej        g dg dg dg dg dg          Z! ej"        e!          Z#g dZ$ ej        g dg dg dg          Z%g dZ& e	j'                    Z(ej)        *                    d           Z+e+,                    e(j-        j.                  Z/e(j0        e/         e(_0        e(j-        e/         e(_-         ej1        e(j0                  e(_0        d Z2ed             Z3d Z4d Z5ed             Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=e j>        ?                    d& e@d'                    e j>        ?                    d(g d)          ed*                                     ZAd+ ZBd, ZCd- ZDd. 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                 z   |                      |                                |           t          j        |          r|                                }n|}|                     ||           t          j        |j                  sJ t          j        |j                  sJ t          | j        |j                                                   t          | j        |j                                                   | j        dk    rGt          j        |j	                  sJ t          | j	        |j	                                                   t          | j
        |j
                   t          |                     |          |                    |                     t          |                     |          |                    |                     t          |                     |          |                    |                     t          | t          j                  rd}n9t          |                     |          |                    |          d           d}t          j        |          rKt#          j        t&          |          5  |                     |           d d d            d S # 1 swxY 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msgs          Y/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/svm/tests/test_sparse.pycheck_svm_model_equalr5   0   s   MM'//##W---   ~~''NN7G$$$?:677777?:011111"J$?$G$G$I$I   i2J4I4Q4Q4S4STTT8##z/00000!)/:3C3K3K3M3MNNNi0*2EFFF,''););F)C)C   ##L11:3O3OPV3W3W   ##L11$$\22   )S_-- GN!##L11:3K3KF3S3SUV	
 	
 	
 G   &]:S111 	& 	&f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&& &s   J..J25J2c            	         t          ddd          \  } }t          j        |           } 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 ]G}|D ]B}t          j        d|d	dd
          }t          j        d|d	dd
          }t          ||g|R   CHdS )z2Check that sparse SVC gives the same result as SVCd   
   r   	n_samplescentersrandom_stateNP   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   SVCr5   )X_blobsy_blobsr   kernelsdatasetr"   clfsp_clfs           r4   test_svcrW   W   s    "C!LLLGW((G 
q!	B	"wss|WRSS\2	DK+	H 322G 9 9 	9 	9F' (-  C W (-  F "#v888888	99 9    c                  J   t          d          \  } }t          j        | dd                   }| d d         |d d         }} t          j        |           }t          j        ddd                              | |          j        }t          j        ddd                              ||          }|j        }t          ||                                           d } ||          } ||          }	|j	        rJ |	j	        rJ t          j        ddd                              ||          }
|
j        }t          |                                |                                           t          |
                    |	          |
                    |                     d S )	NT)
return_X_y2   r7   r   r   )r"   rD   r<   c                 v   g }g }t          dt          | j                            D ]p}t          | j        |dz
  |dz             }|                    | j        |         d d d                    |                    | j        |         d d d                    qt          j        ||| j        f| j	                  S )Nr   r   )shape)
rangelenindptrsliceextendrN   indicesr   rF   r]   )Xnew_datanew_indicesi	row_slices        r4   scramble_indicesz/test_unsorted_indices.<locals>.scramble_indices   s    q#ah--(( 	; 	;AqxAA67IOOAF9-ddd3444qy3DDbD9:::: (K!B!'RRRRrX   )r   r   rF   r   rP   r   r#   r   r   has_sorted_indicesr)   )rd   yr1   X_sparse
coef_dense
sparse_svccoef_sortedri   X_sparse_unsortedX_test_unsortedunsorted_svccoef_unsorteds               r4   test_unsorted_indicesrt   x   s    $'''DAqqCy))FSbS61SbS6qA ##HxTBBBFFq!LLR  dKKKOO! J "Kj+*=*=*?*?@@@S S S )(22&&v..O 333311117(1MMMQQ1 L !&Mm3355{7J7J7L7LMMM  11:3K3KF3S3S    rX   c                  X   d } t          j        d                              t          t                    }t          j        |                               t          t                    }t          |                    t                    |                    t                               d S )Nc                 ,    t          | |j                  S N)r   rI   xrk   s     r4   kfuncz*test_svc_with_custom_kernel.<locals>.kfunc   s    q!#&&&rX   r   r"   )r   rP   r   rG   rH   r   r%   )rz   clf_lin	clf_mylins      r4   test_svc_with_custom_kernelr~      s    ' ' ' gX&&&**433Gu%%%))$22Iwt,,i.?.?.E.EFFFFFrX   c                     dD ]u} t          j        |                               t          j        t          j                  }t          j        |                               t          j                                        t          j                  }t          |j        |j                                                   t          |j	        |j	                                                   t          |
                    t          j                                                  |
                    t          j                             | dk    r,t          |j        |j                                                   wd S )N)r   r?   r@   r{   r   )r   rP   r   rM   rN   rO   r   r   r    r!   r%   r#   )krV   rU   s      r4   test_svc_irisr      s0    ' I I"""&&ty$+>>gQ##DI$5$5$7$7EE! &"9"A"A"C"C	
 	
 	
 	"#.&2C2K2K2M2MNNN!KK	))++,,fnnTY.G.G	
 	
 	
 ==%ci1E1E1G1GHHHI IrX   c                     t          j        ddd          } |                     t          j        t          j                  }t          t          j        |j        j                  |j	        z   }t          ||                    t          j                             |                    t          t                     t          j        t          |j        j                  |j	        z   }|                    t                    }t          |                                |                    t                               t          ||j        |                    t                    dk                        t(                                                                        t          j        g d          }t          |                    t                    |d           d S )Nr   皙?rB   )r"   CrE   r   )      gQr   gQ?      ?r   r   )r   rP   r   rM   rN   rO   r   r#   rI   
intercept_r   r&   rd   rH   npdotr%   ravelclasses_astypeintarray)svcrU   dec
predictionexpecteds        r4   test_sparse_decision_functionr      sZ    'S%
H
H
HC
''$)T[
)
)C
$)SY[
1
1CN
BCc3#8#8#C#CDDD GGAqMMM
&CIK
 
 3>
1CQJciikk3+@+@+C+CDDDCL#"7"7":":Q">!F!Fs!K!K!Q!Q!S!ST   x;;;<<Hc33A66!DDDDDrX   c                  |   t          j                    } t          d d         }t          j        t
                    5  |                     t          |           d d d            n# 1 swxY w Y   |                     t          t                     t          | 	                    t                    t                     d S )Nr   )r   rP   rH   r*   r+   r,   r   rG   r   r%   rI   true_result)rU   rK   s     r4   
test_errorr      s    
'))C	
3B3B	z	"	"  b               GGD!s{{1~~{33333s   A$$A(+A(c                     t          j        d                              t          t                    } t          j        d                              t
          t                    }|j        sJ t          | j        |j        d           t          | j	        |j	        d           t          | 
                    t                    |
                    t
                               |                     t          t                     |                    t          t                     t          | j        |j        d           t          | j	        |j	        d           d S )Nr   r<   r   decimal)r   	LinearSVCr   rd   rH   rG   fit_interceptr   r#   r   r%   X2rK   rJ   )rU   rV   s     r4   test_linearsvcr      s   
-Q
'
'
'
+
+Aq
1
1C]***..tQ77FciqAAAAcnf.?KKKKckk!nnfnnT.B.BCCCGGBOOO
JJubciqAAAAcnf.?KKKKKKrX   c                  P   t          j        d                              t          j        t          j                  } t          j        d                              t          j                                        t          j                  }|j        | j        k    sJ t          |j	        | j	        d           t          |j
        | j
        d           t          |                    t          j                                                  |                     t          j                             t          j        |                     t          j                  d          }t          ||                    t          j                                                             |                                 t!          ||                    t          j                             |                                  t!          ||                     t          j                             d S )Nr   r   r   r   )r   r   r   rM   rN   rO   r   r   r   r#   r   r%   r   argmaxr&   sparsifyr   )rV   rU   preds      r4   test_linearsvc_irisr      s    ]***..ty$+FFF
-Q
'
'
'
+
+DI,=,=,?,?
M
MC 44444ciqAAAAcnf.?KKKKDI%%''((&..*C*C  
 9V--di88!<<DdCKK	0A0A0C0C$D$DEEE LLNNNtS[[33444
OOtV^^DI6677777rX   c                     t          ddddgd          \  } }t          j        |           } t          j                    t          j        d          t          j                    fD ]}|                    ddi	           |	                    | d d
         |d d
                    |
                    | d
d                    }t          j        ||d
d          k              dk    sJ d S )N   r7   g-?gK7A`?r   )r:   
n_featuresweightsr<   r      )class_weight      )r
   r   rF   r   LogisticRegressionr   r   rP   
set_paramsr   r%   r   sum)X_y_rU   y_preds       r4   test_weightr     s     #u~A  FB 
	2		B'))1%%%		 0 0
 	QF+++4C4"TcT(###RX&&vf344())R/////0 0rX   c                     t          j                    } |                     t          t                     t          |                     t          d         g          dg           dgdz  dgdz  z   }|                     t          t          |           t          |                     t          d         g          dg           d S )Nr   r   r   r   r8   )sample_weight       @)r   rP   r   rG   rH   r   r%   rd   )rU   r   s     r4   test_sample_weightsr   &  s    
'))CGGD!s{{AaD6**SE222EAIq(MGGD!=G111s{{AaD6**SE22222rX   c                  B    t          j        t          j                   d S rw   )r   'test_dense_liblinear_intercept_handlingr   r    rX   r4   (test_sparse_liblinear_intercept_handlingr   1  s    4S]CCCCCrX   datasets_indexr   r"   r>   c                 p   t          ddd          \  }}t          j        |          }t          d t          gt
          d t          g|d d         d |dd          gt          j        d t          j        gg}||          }t          j
        d|          }t          j
        d|          }t          ||g|R   d S )Nr7   r8   r   r9   r=   r   )rC   r"   )r   r   rF   rG   rI   rJ   rL   rM   rN   r   r(   r5   )r   r"   rQ   _r   rT   rU   rV   s           r4   test_sparse_oneclasssvmr   6  s     c2AFFFJGQ((G	tQ	b	"tWRSS\*	D$)$	H ~&G
/&
1
1
1C_1V444F#v0000000rX   c                     t          j        g d          } t          j        g d          }t          j        g d          }t          j        | ||f          }t          j        g d          }t	          j        d                              |                                |          }t	          j        d                              t          j        |          |          }t          |j
        |j
                                                   t          |j        |j                                                   d S )N)g!FO?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{   )r   r   r   rF   r   rP   r   r   
coo_matrixr   r    r!   )rN   rc   r`   rd   rk   rU   rV   s          r4   test_sparse_realdatar   J  s4   
 8AAABBDh~~~&&GXR	
 R	
 R	
T TFj 	4&122A
Q	
 Q	
 Q	
S	 S	Aj '
"
"
"
&
&qyy{{A
6
6CWH%%%))&*;A*>*>BBFs+V-D-L-L-N-NOOOs~v'8'@'@'B'BCCCCCrX   c                     t          j        dd dd          } t          j        |           }|                    t
          t                     |                    t
                    }|                    t
                     t          j        dd dd          }|                    t          t                                        t                    }t          ||           d S )Nr   c                     | |j         z  S rw   rI   rx   s     r4   <lambda>z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>  s    QS rX   Tr   )r   r"   rD   r<   c                 6    t          j        | |j                  S rw   )r   r   rI   rx   s     r4   r   z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>  s    13 rX   )r   rP   r	   cloner   rG   rH   r%   r)   rd   r   )abr   r-   
pred_denses        r4   *test_sparse_svc_clone_with_callable_kernelr     s     	!00dQRSSSA
1AEE$NNN99T??DOOD
//TPQ  I q!$$,,Q//Jz4(((((rX   c                      t          j        dd ddd          } d}t          j        t          |          5  |                     t          t                     d d d            d S # 1 swxY w Y   d S )Nr   c                     | |j         z  S rw   r   rx   s     r4   r   ztest_timeout.<locals>.<lambda>  s    QS rX   Tr   )r   r"   rD   r<   max_iterzoSolver terminated early \(max_iter=1\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r   )r   rP   r*   warnsr   r   rG   rH   )spwarning_msgs     r4   test_timeoutr     s    	
((dUV
 
 
B	:  
(	<	<	<  
tQ                 s   !A&&A*-A*c                     t          j        ddd          } t          t                    5  |                     t
          t                                        t
                    }d d d            n# 1 swxY w Y   t          j        ddd          } t          t                    5  |                     t
          t                                        t
                    }d d d            n# 1 swxY w Y   t          ||           d S )NTr   r   )rD   r   r<   )category)	r   rP   r   r   r   rd   rH   r)   r   )r   proba_1proba_2s      r4   test_consistent_probar   !  sP   D11===A	"4	5	5	5 / /%%1++++A../ / / / / / / / / / / / / / /D11===A	"4	5	5	5 / /%%1++++A../ / / / / / / / / / / / / / /gw/////s#   9A22A69A6)9C..C25C2)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   rd   
lil_matrixrG   rH   rI   r   r   
dok_matrixrJ   rK   rL   true_result2	load_irisrM   randomRandomStaterngpermutationrO   sizepermrN   rF   r5   rW   rt   r~   r   r   r   r   r   r   r   r   markparametrizer^   r   r   r   r   r   r   rX   r4   <module>r      s        G G G G G G G G       5 5 5 5 5 5 5 5 5 5 5 5 I I I I I I I I I I & & & & & & 1 1 1 1 1 1 1 1 1 1 1 1 A A A A A A A A BHr2hR2r(QFQFQFCDDvBHr2hAA'((ii RX										  	"__RX|||YYY			233yy xiA
t{'((IdO	k$Fdi((	$& $& $&N 9 9 9@+ + +\G G G I I I"E E E4	4 	4 	4L L L&8 8 840 0 0$3 3 3D D D
 )558844#G#G#GHH1 1  IH 541"vD vD vDr) ) )$	 	 	0 0 0 0 0rX   