U
    qh@                     @  s@   d dl mZ d dlmZ d dlZG dd dZG dd dZdS )    )annotations)AnyNc                   @  s4   e Zd Zdd ZddddddZdd	d
dZdS )SVMAttributesc                 C  s
   g | _ d S )N)_names)self r   M/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/aionnxml/op_svm_helper.py__init__   s    zSVMAttributes.__init__strr   None)namevaluereturnc                 C  sL   t |tr<|dkr<|dkr,tj|tjd}ntj|tjd}t| || d S )N>   kernel_params>   vectors_per_classdtype)
isinstancelistnparrayZint64Zfloat32setattr)r   r   r   r   r   r   add   s
    zSVMAttributes.addr   c              	   C  s8   dg}| j D ] }|d| dt| |  qd|S )NZ
Attributesz  =
)r   appendgetattrjoin)r   rowsr   r   r   r   __str__   s    
zSVMAttributes.__str__N)__name__
__module____qualname__r	   r   r    r   r   r   r   r      s   r   c                   @  sJ   e Zd ZdZdd ZddddZddddd	d
dZdddddZdS )	SVMCommonzBase class for SVM.c                 K  sv   t  | _| D ]\}}| j|| q| jjr`| jjd | _| jjd | _t| jjd | _nd| _d| _d| _d S )Nr                 )	r   attsitemsr   r   gamma_coef0_intdegree_)r   kwargsr   r   r   r   r   r	   !   s    zSVMCommon.__init__r
   r   c                 C  s"   dd| j  t| jg}d|S )NZTreeEnsemblezroot_index=r   )Z
root_indexr
   r(   r   )r   r   r   r   r   r    0   s    zSVMCommon.__str__z
np.ndarray)pApBkernelr   c                 C  s   |  }|dkr6t||}|| j | j }|| j S |dkrdt||}|| j | j }t|S |dkr|| }||  }t| j | S |dkrt||S t	d|dd S )NZpolyZsigmoidZrbfZlinearzUnexpected kernel=.)
lowerr   dotr*   r+   r-   tanhsumexp
ValueError)r   r/   r0   r1   ksZdiffr   r   r   
kernel_dot4   s     

zSVMCommon.kernel_dot)Xr   c           
      C  s$  | j jdkr0d}| j j}| j j| j jdf}nd}d}tj|jd df|jd}t	|jd D ]}d}|dkrt	| j jD ].}| 
|| || |}	|| j j| |	 7 }q||| j jd 7 }n.|dkr| 
|| | j j|}|| j jd 7 }| j jr|dkrdnd||df< q`|||df< q`|S )	Nr   ZSVM_SVCZ
SVM_LINEARZLINEARr%   r   r'   )r(   Z
n_supportsZkernel_typeZsupport_vectorsZreshaper   emptyshaper   ranger;   ZcoefficientsrhoZ	one_class)
r   r<   Zmode_Zkernel_type_svznr:   jdr   r   r   run_regF   s*    
zSVMCommon.run_regN)r!   r"   r#   __doc__r	   r    r;   rG   r   r   r   r   r$      s
   r$   )
__future__r   typingr   Znumpyr   r   r$   r   r   r   r   <module>   s   