# Why divided by zero error happens while using wave kernel in SVM?

Asked by At

My dataset is divided into two groups. one is for training (with shape of [3850,5]) and the other is for testing (with shape of [1050,5]). I used this code for defining wave kernel (you can find it in this paper) function:

``````import numpy as np
from scipy.spatial.distance import cdist
from sklearn import svm
import pandas as pd

def wave_kernel(mat_v, mat_u):
deg = 80
teta = np.deg2rad(deg)
v = cdist(mat_v, mat_u, 'euclidean')
return (teta/v) * np.sin(v/teta)
``````

and use this code for predicting labels (and see how well kernel works):

``````data = pd.read_csv('data.csv')
features = ['feat1', 'feat2', 'feat3', 'feat4', 'feat5']
X_train = data[features].iloc[:3850].values
X_test =  data[features].iloc[3850:].values

y_train = data['label'].iloc[:3850].values
y_test =  data['label'].iloc[3850:].values

def RE(y_true, y_pred):
# Calculating Relative error
return np.mean(np.abs((y_true - y_pred) / y_true))

svr = svm.SVR(kernel=wave_kernel)
y_pred = svr.fit(X_train, y_train).predict(X_test)
a = RE(y_test, y_pred)
print(a)
``````

After I run the code, the code encounters a Run Time Error which says:

``````RuntimeWarning: divide by zero encountered in true_divide
``````

and another one following first one

``````RuntimeWarning: invalid value encountered in multiply
``````

I really don't know what that error is for because it does not explicitly mention the line.

I have used the kernel function separately with matrices to see if the error happens inside the function but that worked fine.

I can't figure out what to do. please help me out!