
    h-                     r    S SK rS SKJrJrJrJrJrJr  S SK	J
r
  S SKJr  S rS rS rS r " S	 S
\
5      rg)    N)compute_logisticcompute_probitcompute_softmax_zerologisticsoftmaxsoftmax_zero)OpRunAiOnnxMl)	SVMCommonc                    [        SU 5      n[        R                  " X 4UR                  S9n[        R                  " U 4UR                  S9n[        R                  " U 4UR                  S9nSU -  n[	        SU 5       H  nSU -  XW'   US U2U4   S-  R                  5       X7U4'   US U2U4   X7S U24'   X7U4==   XS-   S 2U4   S-  R                  5       -  ss'   XS-   S 2U4   * XUS-   S 24   -  X7US-   S 24'   M     [	        U5       H  nX5-  US S & XT-  R                  5       n	Sn
[	        SU 5       H'  n[        R                  " XG   U	-
  5      nX:  d  M%  Un
M)     X:  a    U$ [	        U 5       HZ  nXG   * U	-   X7U4   -  nXW==   U-  ss'   XXXw4   -  SXG   -  -   -  -   SU-   S-  -  n	USU-   -  nXLX7S S 24   -  -   SU-   -  US S & M\     M     U$ )Nd   dtypeg{Gzt?r   g      ?      )maxnpemptyr   rangesumabs)kRmax_iterQQpPepst_pQp	max_errorerrordiffs                g/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/aionnxml/op_svm_classifier.pymulticlass_probabilityr%      s   3{H
!qww'A	1$agg	&B
!QWW%A
!)C1a[QwRaRU8q=%%'Q$RaRU8RaR%	Q$A!egqjMQ&++--q57A:a!eg:6QUW*  8_1vlln	q!AFF253;'E !	  ? H qAUFSLAdG+DDDLD!$!be)!;<<TaOCTMAa4.(QX6BqE  ( H    c                 ,    X-  U-   nS[        U5      -
  $ )Nr   )r   )scoreprobaprobbvals       r$   sigmoid_probabilityr,   :   s    
-%
C$$$r&   c                    U S:  at  US:X  a9  U Vs/ s H  n[        U5      PM     nn[        R                  " XQR                  S9$ US:X  a  [	        U5      $ US:X  a  [        U5      $ US:X  a  [        U5      $ U$ U S:X  Gaw  US:X  a,  [        R                  " [        US   5      /UR                  S9$ US	;   a*  [        R                  " SUS   -
  US   /UR                  S9$ US
;   a  US:X  a:  [        R                  " [	        US   * 5      [	        US   5      /UR                  S9$ US:X  a1  [        [        R                  " US   * US   /UR                  S95      $ US:X  a1  [        [        R                  " US   * US   /UR                  S95      $ US:X  a  [        SU< S35      e[        R                  " US   * US   /UR                  S9$ [        R                  " US   /UR                  S9$ [        SU  S35      es  snf )Nr   PROBITr   LOGISTICSOFTMAXSOFTMAX_ZEROr   r   )r   r   )r      zpost_transform=z not applicable here.z
n_classes=z not supported.)
r   r   arrayr   r   r   r   r   RuntimeErrorNotImplementedError)	n_classesscorespost_transformadd_second_classr(   ress         r$   write_scoresr;   @   s   A~X%6<=fU>%(fC=88C||44Z'F##Y&6?"^+'//A~X%88^F1I67v||LLv%88Q]F1I6fllKKv%+xxvayj)8F1I+>?v||  *rxx&)VAY(?v||TUU/#HHvayj&)4FLLI  )"%n%77LM  88fQiZ36<<HHxx6<<88

9+_E
FF? >s   Hc                     Sn[        U5      S:X  a6  SnU(       d'  U(       a  U S:  a  US   U4$ U S:  a  U(       d  XA   U4$ XA   U4$ U S:  a  XW4$ Xg4$ )Nr   g      ?r   r   )len)
max_weightmaxclass	has_probaweights_are_all_positive_classlabelsposclassnegclasswrite_additional_scoress           r$   set_score_svmrG   e   s{     !
;1"#(Z3->"1~'>>>A~&?",.EEE$&===A~00,,r&   c                   L    \ rS rSrS rS rS rS r           S	S jrSr	g)
SVMClassifier|   c                    / n[        U5       HY  nU R                  R                  XU   U5      nU R                  R                  R                  S   U-   nUR                  U5        M[     [        R                  " XQR                  S9$ )Nr   r   )	r   _svm
kernel_dotattsrhoappendr   r3   r   )	selfXcoefsclass_count_kernel_type_r7   jdr(   s	            r$   _run_linearSVMClassifier._run_linear}   sn    |$A		$$Qa,?AIINN&&q)A-EMM%  % xxgg..r&   c           	         Sn/ n	[        U5       H1  n
U	R                  U R                  R                  XU
   U5      5        M3     [        R
                  " U	5      n[        R                  " U4UR                  S9n/ n[        U5       GH  nXn   nU R                  R                  R                  U   n[        US-   U5       H  n
Xj   nU R                  R                  R                  U
   n[        R                  " XzS-
  XU-   24   XUU-    5      n[        R                  " X~UUU-   24   UUUU-    5      nU R                  R                  R                  U   U-   U-   nUR                  U5        US:  a  X==   S-  ss'   OX==   S-  ss'   US-  nM     GM     U[        R
                  " XR                  S94$ )Nr   r   r   )r   rP   rL   rM   r   r3   zerosr   rN   vectors_per_classdotrO   )rQ   rR   svvector_count_rU   rT   starting_vector_rS   evalskernels_listrV   kernelsvotesr7   isi_i
class_i_scsi_j
class_j_scs1s2ss                         r$   _run_svmSVMClassifier._run_svm   s    }%A		 4 4Q1| LM &((<(,8|$A#&D99!<J1q5,/'*!YY^^==a@
VVa%z(9!99:4*#45 VVTD:$5556D4*#45
 IINN&&u-2R7a q5HMHHMH
' 0	 %0 bhhvWW555r&   c                    [         R                  " X"4UR                  S9nSn[        U5       H  n[        US-   U5       H  n[	        X   U R
                  R                  R                  U   U R
                  R                  R                  U   5      n[        US5      n[        US5      nXXV4'   SU-
  X6U4'   US-  nM     M     [        X#5      $ )Nr   r   r   gHz>gP?)r   r[   r   r   r,   rL   rN   prob_aprob_br   minr%   )	rQ   r7   rT   probsp2indexre   rV   val1val2s	            r$   _probabilitiesSVMClassifier._probabilities   s    ((L7v||L|$A1q5,/*MIINN))%0IINN))%0
 4(4*. $ !D1
 0 % &l<<r&   c           	         SnUb*  [        U5      S:  a  [        R                  " U5      nX   nO[        R                  " U5      nX'   nSnU R                  R                  R
                  R                  S:X  a  [        UUUUUSS5      u  pOUb  [        U5      S:  a  XW   n	OUn	[        UR                  X R                  R                  R                  U5      n
X4$ )Nr   r=   r   )
r>   r   argmaxrL   rN   rO   sizerG   r;   r8   )rQ   rd   r7   rB   rA   classlabels_intsr?   	max_classrF   label
new_scoress              r$   _compute_final_scores#SVMClassifier._compute_final_scores   s     
Ua		%(I)J		&)I*J"$99>>""a'-:) .*E* )c2B.Ca.G$/EE!KK!>!>@W

   r&   Nc                 T   [        UUUUUU	U
UUS9	nXl        Sn[        [        U=(       d    U=(       d    / 5      S5      n/ nUR                  R
                  b3  UR                  R
                   H  nUR                  U5        UU-  nM     US:  ag  SnUR                  R                  R                  US45      nUR                  R                  nUR                  R                  R                  SU45      nO+SnSnUR                  R                  R                  US45      n[        UR                  R                  5      S:  nUS:X  av  US:X  ap  [        R                  " UR                  S   U4UR                  S9n[!        UR                  S   5       H#  nU R#                  UU   UUU5      nUUUS S 24'   M%     S nO[        R                  " UR                  S   XS-
  -  S	-  4UR                  S9n[        R                  " UR                  S   U4UR                  S9n[!        UR                  S   5       H2  nU R%                  UU   WUUUUU5      u  nnUUUS S 24'   UUUS S 24'   M4     UR                  R&                  b  [        UR                  R&                  5      S:  at  US:X  an  [        R                  " UR                  S   U4UR                  S9n[!        UR                  S   5       H!  nU R)                  UU   U5      nUUUS S 24'   M#     S
nOUnSnS n/ n[!        UR                  S   5       H{  nU R+                  Uc  S OUU   UU   UUU5      u  n n!Uc8  [        R                  " UR                  S   U!R,                  4UR                  S9nU!UUS S 24'   UR                  U 5        M}     Ub;  [        U5      S:  a,  [        R.                  " U V"s/ s H  n"UU"   PM
     sn"5      U4$ [        R.                  " U[        R0                  S9U4$ s  sn"f )N)	coefficientskernel_paramskernel_typer8   rp   rq   rO   support_vectorsr\   r   r   SVM_SVCr=   
SVM_LINEARLINEARr   r   TF)r
   rL   r   r>   rN   r\   rP   r   reshaper   r   rr   r   r   shaper   r   rX   rm   rp   rw   r   r{   r3   int64)#rQ   rR   r|   classlabels_stringsr   r   r   r8   rp   rq   rO   r   r\   svmr_   rT   r`   vcmoder^   rU   rS   rB   r:   nr7   rd   voterl   rA   final_scoreslabelsr~   r   re   s#                                      r$   _runSVMClassifier._run   s    %'#)+/

 	3/L3FL"MqQ88%%1hh00 ''6# 1 1D))11="2EFB88//LHH))112}2EFE  D#LHH))11<2DEE$'(=(=$>!$C! A$,"6((AGGAJ5QWWEC1771:&))!A$|\R"AqD	 ' E((\A-=>!CDAGGC HHaggaj,7qwwGE1771:&#}}aD!  $ f #AqD	"ad ' HHOO'CHHOO$q(	!XXsyy|\:!''JF6<<?+''A= q!t , IFI v||A'A $ : :58q	) !E: #!xxZ__(EQWWU!+LAMM%  ( *s3F/G!/KHHfEf1!4fEFUUrxx0,?? Fs   (P%)rL   )NNNNNNNNNNN)
__name__
__module____qualname____firstlineno__rX   rm   rw   r   r   __static_attributes__ r&   r$   rI   rI   |   sB    /$6L=$!F  n@r&   rI   )numpyr   .onnx.reference.ops.aionnxml._common_classifierr   r   r   r   r   r   ,onnx.reference.ops.aionnxml._op_run_aionnxmlr	   )onnx.reference.ops.aionnxml.op_svm_helperr
   r%   r,   r;   rG   rI   r   r&   r$   <module>r      sD      G ?#L%"GJ-.O@M O@r&   