
    {Kg=                        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j<                  d
dgddgdd
gddgddgddgg      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#g dZ$ ej<                  g dg dg dg      Z%g dZ& ejN                         Z(ejR                  jU                  d       Z+e+jY                  e(jZ                  j\                        Z/e(j`                  e/   e(_0        e(jZ                  e/   e(_-         eddd       \  Z1Z2d Z3eejh                  jk                  dee e!ge#e$e%ge1dd e2dd e1dd ge(j`                  e(jZ                  e(j`                  gg      ejh                  jk                  d g d!      ejh                  jk                  d"eez         d#                             Z6ejh                  jk                  d$e      d%        Z7ejh                  jk                  d&e      d'        Z8eejh                  jk                  d$e      ejh                  jk                  d g d(      d)                      Z9ejh                  jk                  d$e      d*        Z:ejh                  jk                  d&e      d+        Z;ejh                  jk                  d, e<ee            d-        Z=ejh                  jk                  d$e      d.        Z>ejh                  jk                  d$e      d/        Z?ejh                  jk                  d&e      d0        Z@d1 ZAejh                  jk                  dede!ge#de%ge1dd de1dd ge(j`                  de(j`                  gg      ejh                  jk                  d g d!      ejh                  jk                  d"eez         ed2                             ZBejh                  jk                  d$e      d3        ZCejh                  jk                  d&e      d4        ZDejh                  jk                  d&e      d5        ZEd6 ZFy)7    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                 Z   t        j                  |       }| j                  |j                         |       t	        j
                  |      r|j                         }n|}|j                  ||       t	        j
                  |j                        sJ t	        j
                  |j                        sJ t        | j                  |j                  j                                t        | j                  |j                  j                                | j                  dk(  rOt	        j
                  |j                        sJ t        | j                  |j                  j                                t        | j                  |j                         t        | j                  |      |j                  |             t        | j                  |      |j                  |             t        | j                  |      |j                  |             t        | t         j"                        rd}n.t        | j%                  |      |j%                  |      d       d}t	        j
                  |      r6t'        j(                  t*        |      5  | j                  |       d d d        y y # 1 sw Y   y xY w)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msgs          a/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/svm/tests/test_sparse.pycheck_svm_model_equalr@   4   s    I&JMM'//#W-v~~'NN7G$??:66777??:00111I..
0K0K0S0S0UVI((**?*?*G*G*IJ8#z//000!)//:3C3C3K3K3MNI&&
(;(;<I%%l3Z5G5G5OP##L1:3O3OPV3W ##L1$$\2 )S__-N!##L1$$V,	

 Gv]]:S1f% 21 11s   J!!J*zX_train, y_train, X_testP   r-   )r!   polyrbfsigmoidsparse_containerc                 d     ||       } t        j                  d|ddd      }t        || ||       y)z3Check that sparse SVC gives the same result as SVC.r   Tr   ovo)gammar-   probabilityr   decision_function_shapeN)r   SVCr@   r9   r:   r;   r-   rE   clfs         r?   test_svcrN   ^   s;     w'G
'' %C #w8    csr_containerc                     t        d      \  }}  |dd       }|d d |d d }}  |      }t        j                  ddd      j                  ||      j                  }t        j                  ddd      j                  ||      }|j                  }t        ||j                                 fd} ||      }	 ||      }
|	j                  rJ |
j                  rJ t        j                  ddd      j                  |	|      }|j                  }t        |j                         |j                                t        |j                  |
      |j                  |             y )	NT)
return_X_y2   r   r!   r   )r-   rI   r   c                 \   g }g }t        dt        | j                              D ]e  }t        | j                  |dz
  |dz     }|j	                  | j
                  |   d d d          |j	                  | j                  |   d d d          g  ||| j                  f| j                        S )Nr   r   )shape)rangelenindptrsliceextenddataindicesrU   )Xnew_datanew_indicesi	row_slicerP   s        r?   scramble_indicesz/test_unsorted_indices.<locals>.scramble_indices   s    q#ahh-(AqxxAA67IOOAFF9-dd34qyy3DbD9: ) hQXX>aggNNrO   )	r   r   rK   r(   r.   r   r)   has_sorted_indicesr4   )rP   r]   yr;   X_sparse
coef_dense
sparse_svccoef_sortedrb   X_sparse_unsortedX_test_unsortedunsorted_svccoef_unsorteds   `            r?   test_unsorted_indicesrm   x   sW   
 $'DAq1R9%FSb61Sb6qAQHxTBFFq!LRR  dKOO!J ""KJ 3 3 56O )2&v.O 3333111177(1MQQ1L !&&MM))+[-@-@-BC  1:3K3KF3SrO   lil_containerc                    d } | t               }t        j                  d      j                  |t              }t        j                  |      j                  |t              }t        |j                  |      |j                  |             y )Nc                 .    t        | |j                        S N)r   Txrd   s     r?   kfuncz*test_svc_with_custom_kernel.<locals>.kfunc   s    q!##&&rO   r!   r-   r]   r   rK   r(   Yr   r0   )rn   ru   X_spclf_lin	clf_mylins        r?   test_svc_with_custom_kernelr|      sg    ' DggX&**43Gu%))$2Iwt,i.?.?.EFrO   )r!   rB   rC   c                     | t         j                        }t        j                  |      j	                  |t         j
                        }t        j                  |      j	                  t         j                  t         j
                        }t        |j                  |j                  j                                t        |j                  |j                  j                                t        |j                  t         j                        |j                  |             |dk(  r/t        |j                  |j                  j                                y y )Nrv   r!   )irisr[   r   rK   r(   targetr   r+   r)   r,   r0   r.   )rP   r-   iris_data_spsp_clfrM   s        r?   test_svc_irisr      s    
 !+LWWF#''dkkBF
''
 
$
$TYY
<CC((&*A*A*I*I*KLCNNF$5$5$=$=$?@CKK		*FNN<,HI		6<<#7#7#9: rO   c                 n    | t         j                        }t        j                  ddd      }|j	                  |t         j
                        }t        ||j                  j                        |j                  z   }t        ||j                  |             |j	                  t        t               t        j                  t        |j                  j                        |j                  z   }|j!                  t              }t        |j#                         |j                  t                     t        ||j$                  |j                  t              dkD  j'                  t(              j#                                   t        j*                  g d      }t-        |j                  t              |d       y )	Nr!   皙?rG   )r-   CrJ   r   )      gQr   gQ?      ?r   r   r#   )r~   r[   r   rK   r(   r   r   r.   rr   
intercept_r   r1   r]   rx   npdotr0   ravelclasses_astypeintarrayr   )rP   r   svcrM   dec
predictionexpecteds          r?   test_sparse_decision_functionr      s$    !+L
''S%
HC
'',
,C
,		
4s~~
ECC..|<= GGAqM
&&CIIKK
 3>>
1CQJCIIK!6!6q!9:CLL#"7"7":Q">!F!Fs!K!Q!Q!ST xx;<Hc33A6!LrO   c                 H   t        j                         } | t              }t        d d }t	        j
                  t              5  |j                  ||       d d d        |j                  |t               t        |j                  t              t               y # 1 sw Y   CxY w)Nr   )r   rK   r]   rx   r5   r6   r7   r(   r   r0   rr   true_result)rn   rM   ry   Y2s       r?   
test_errorr      sn     '')CD	
3BB	z	"b 
# GGD!s{{1~{3	 
#	"s   BB!zlil_container, dok_containerc                     | t               } |t              }t        j                  d      j	                  t         t
              }t        j                  d      j	                  |t
              }|j                  sJ t        |j                  |j                  d       t        |j                  |j                  d       t        |j                  t               |j                  |             |j	                  t        t               |j	                  |t               t        |j                  |j                  d       t        |j                  |j                  d       y )Nr   r   r"   r#   )r]   X2r   	LinearSVCr(   rx   fit_interceptr   r.   r   r   r0   r   )rn   dok_containerry   X2_sprM   r   s         r?   test_linearsvcr      s    
 D"E
--Q
'
+
+Aq
1C]]*..tQ7FciiqAcnnf.?.?KCKKNFNN4$89GGBO
JJubciiqAcnnf.?.?KrO   c                     | t         j                        }t        j                  d      j	                  |t         j
                        }t        j                  d      j	                  t         j                  t         j
                        }|j                  |j                  k(  sJ t        |j                  |j                  d       t        |j                  |j                  d       t        |j                  t         j                        |j                  |             t        j                  |j                  |      d      }t        ||j                  t         j                               |j                          t!        ||j                  |             |j                          t!        ||j                  |             y )Nr   r   r   r#   )axis)r~   r[   r   r   r(   r   r   r   r.   r   r   r0   r   argmaxr1   sparsifyr   )rP   r   r   rM   preds        r?   test_linearsvc_irisr     s'    !+L]]*..|T[[IF
--Q
'
+
+DIIt{{
CC 4 4444ciiqAcnnf.?.?KCKK		*FNN<,HI 99V--l;!DDD#++dii01 LLNtS[[67
OOtV^^L9:rO   c                    t        ddddgd      \  }} | |      }t        j                         t        j                  d      t        j
                         fD ]b  }|j                  ddi	       |j                  |d d
 |d d
        |j                  |d
d        }t        j                  ||d
d  k(        dk\  rbJ  y )N   r   g-?gK7A`?r   )r   
n_featuresweightsr   r      )class_weight      )r
   r   LogisticRegressionr   r   rK   
set_paramsr(   r0   r   sum)rP   X_y_rM   y_preds        r?   test_weightr      s     !#u~AFB 
r	B'')1%	
 	QF+4C"Tc(#RX&vvf34()R///rO   c                 J    | t               }t        j                         }|j                  |t               t        |j                  t         d   g      dg       dgdz  dgdz  z   }|j                  |t        |       t        |j                  t         d   g      dg       y )Nr   r   r   r   r   )sample_weight       @rw   )rn   ry   rM   r   s       r?   test_sample_weightsr   3  s     D
'')CGGD!s{{AaD6*SE2EAIq(MGGD!=G1s{{AaD6*SE2rO   c                  J    t        j                  t        j                         y rq   )r   'test_dense_liblinear_intercept_handlingr   r    rO   r?   (test_sparse_liblinear_intercept_handlingr   A  s    44S]]CrO   c                 ^     ||       } t        j                  d|      }t        || ||       y )Nr   )rH   r-   )r   r3   r@   rL   s         r?   test_sparse_oneclasssvmr   F  s,     w'G
//&
1C#w8rO   c                    t        j                  g d      }t        j                  g dt         j                        }t        j                  dgdz  dgdz  z   dgd	z  z   d
gdz  z   t         j                        } | |||f      }t        j                  g d      }t        j                  d      j                  |j                         |      }t        j                  d      j                  |j                         |      }t        |j                  |j                  j                                t        |j                  |j                  j                                y )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!   rv   )r   r   int32r   rK   r(   r)   tocoor   r+   r,   )rP   r[   r\   rX   r]   rd   rM   r   s           r?   test_sparse_realdatar   Z  s   
 88ABD hh~RXX6GXXqcAgb(A383qcAg=RXXNFtWf-.A
Q	
S	Aj ''
"
&
&qyy{A
6CWWH%))!'')Q7Fs++V-D-D-L-L-NOs~~v'8'8'@'@'BCrO   c                    t        j                  dd dd      }t        j                  |      } | t              }|j                  |t               |j                  |      }|j                  |       t        j                  dd dd      }|j                  t        t              j                  t              }t        ||       y )Nr   c                      | |j                   z  S rq   rr   rs   s     r?   <lambda>z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>  s    QSSrO   Tr   )r   r-   rI   r   c                 B    t        j                  | |j                        S rq   )r   r   rr   rs   s     r?   r   z<test_sparse_svc_clone_with_callable_kernel.<locals>.<lambda>  s    133rO   )
r   rK   r   r'   r]   r(   rx   r0   r4   r   )rn   abry   r   r8   
pred_denses          r?   *test_sparse_svc_clone_with_callable_kernelr     s     	!0dQRSA

1ADEE$N99T?DOOD
/TPQI q!$,,Q/Jz4(rO   c                     t        j                  dd ddd      }d}t        j                  t        |      5  |j                   | t              t               d d d        y # 1 sw Y   y xY w)Nr   c                      | |j                   z  S rq   r   rs   s     r?   r   ztest_timeout.<locals>.<lambda>  s    QSSrO   Tr   )r   r-   rI   r   max_iterzoSolver terminated early \(max_iter=1\).  Consider pre-processing your data with StandardScaler or MinMaxScaler.r%   )r   rK   r5   warnsr   r(   r]   rx   )rn   spwarning_msgs      r?   test_timeoutr     sW    	
(dUV
B	:  
(	<
}Q# 
=	<	<s   !A##A,c                     t        j                  ddd      } t        t              5  | j	                  t
        t              j                  t
              }d d d        t        j                  ddd      } t        t              5  | j	                  t
        t              j                  t
              }d d d        t               y # 1 sw Y   txY w# 1 sw Y   "xY w)NTr   r   )rI   r   r   )category)	r   rK   r   r   r(   r]   rx   r4   r   )r   proba_1proba_2s      r?   test_consistent_probar     s    D11=A	"4	5%%1+++A. 
6D11=A	"4	5%%1+++A. 
6GW% 
6	5 
6	5s   .C
.C
CC)Gnumpyr   r5   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   r]   rx   rr   r   r   r   T2true_result2	load_irisr~   randomRandomStaterngpermutationr   sizepermr[   X_blobsy_blobsr@   markparametrizerN   rm   r|   r   r   r   zipr   r   r   r   r   r   r   r   r   r   r   rO   r?   <module>r      s      5 5 I I 1 &  2  BHHr2hR2r(QFQFQFCDBHHr2hAA'( RXX RXX|Y	23xiiA
t{{''(IIdO	kk$RaH '&T 	
Aq		R	"ws|WRS\2	DKK+	 #GH+^n-LM9 N I 9 .9+ :+\ .9G :G .9#<=; > : ; .9M :M6 .9
4 :
4 "C$GLL, .9; :;2 .90 :0$ .9
3 :
3D
 	
D!	T2	"tWRS\*	D$))$	 #GH+^n-LM9  N I9 .9gD :gDT .9) :)& .9	$ :	$&rO   